Commit 180f9787 authored by Swetank Srivastava's avatar Swetank Srivastava Committed by Vijay C

sync issue fix for portman, sys task and rrc

parent 73a46650
...@@ -472,6 +472,7 @@ int logInit (void) ...@@ -472,6 +472,7 @@ int logInit (void)
register_log_component("ENB_APP","log",ENB_APP); register_log_component("ENB_APP","log",ENB_APP);
register_log_component("ENB_SS","log",ENB_SS); register_log_component("ENB_SS","log",ENB_SS);
register_log_component("ENB_SS_PORTMAN","log",ENB_SS_PORTMAN); register_log_component("ENB_SS_PORTMAN","log",ENB_SS_PORTMAN);
register_log_component("ENB_SS_PORTMAN_ACP","log",ENB_SS_PORTMAN_ACP);
register_log_component("ENB_SS_SYS_TASK","log",ENB_SS_SYS_TASK); register_log_component("ENB_SS_SYS_TASK","log",ENB_SS_SYS_TASK);
register_log_component("ENB_SS_SRB_ACP","log",ENB_SS_SRB_ACP); register_log_component("ENB_SS_SRB_ACP","log",ENB_SS_SRB_ACP);
register_log_component("ENB_SS_SYSIND","log",ENB_SS_SYSIND); register_log_component("ENB_SS_SYSIND","log",ENB_SS_SYSIND);
......
...@@ -172,6 +172,7 @@ extern "C" { ...@@ -172,6 +172,7 @@ extern "C" {
#define DEBUG_ENB_SS_VNG (1<<30) #define DEBUG_ENB_SS_VNG (1<<30)
#define DEBUG_ENB_SS_VTP (1<<31) #define DEBUG_ENB_SS_VTP (1<<31)
#define DEBUG_ENB_SS_VT_TIMER (1<<32) #define DEBUG_ENB_SS_VT_TIMER (1<<32)
#define DEBUG_ENB_SS_PORTMAN_ACP (1<<33)
#define LOG_MASKMAP_INIT {\ #define LOG_MASKMAP_INIT {\
{"PRACH", DEBUG_PRACH},\ {"PRACH", DEBUG_PRACH},\
...@@ -192,6 +193,7 @@ extern "C" { ...@@ -192,6 +193,7 @@ extern "C" {
{"UE_TIMING", UE_TIMING},\ {"UE_TIMING", UE_TIMING},\
{"ENB_SS", DEBUG_ENB_SS},\ {"ENB_SS", DEBUG_ENB_SS},\
{"ENB_SS_PORTMAN", DEBUG_ENB_SS_PORTMAN},\ {"ENB_SS_PORTMAN", DEBUG_ENB_SS_PORTMAN},\
{"ENB_SS_PORTMAN_ACP", DEBUG_ENB_SS_PORTMAN_ACP},\
{"ENB_SS_SYS_TASK", DEBUG_ENB_SS_SYS_TASK},\ {"ENB_SS_SYS_TASK", DEBUG_ENB_SS_SYS_TASK},\
{"ENB_SS_SRB_ACP", DEBUG_ENB_SS_SRB_ACP},\ {"ENB_SS_SRB_ACP", DEBUG_ENB_SS_SRB_ACP},\
{"ENB_SS_SYSIND", DEBUG_ENB_SS_SYSIND},\ {"ENB_SS_SYSIND", DEBUG_ENB_SS_SYSIND},\
...@@ -253,6 +255,7 @@ typedef enum { ...@@ -253,6 +255,7 @@ typedef enum {
ENB_APP, ENB_APP,
ENB_SS, ENB_SS,
ENB_SS_PORTMAN, ENB_SS_PORTMAN,
ENB_SS_PORTMAN_ACP,
ENB_SS_SYS_TASK, ENB_SS_SYS_TASK,
ENB_SS_SRB_ACP, ENB_SS_SRB_ACP,
ENB_SS_SYSIND, ENB_SS_SYSIND,
......
...@@ -655,6 +655,27 @@ ID = LEGACY_ENB_SS_PORTMAN_TRACE ...@@ -655,6 +655,27 @@ ID = LEGACY_ENB_SS_PORTMAN_TRACE
GROUP = ALL:LEGACY_ENB_SS_PORTMAN:LEGACY_GROUP_TRACE:LEGACY GROUP = ALL:LEGACY_ENB_SS_PORTMAN:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_INFO
DESC = ENB_SS_PORTMAN_ACP legacy logs - info level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_ERROR
DESC = ENB_SS_PORTMAN_ACP legacy logs - error level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_WARNING
DESC = ENB_SS_PORTMAN_ACP legacy logs - warning level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_DEBUG
DESC = ENB_SS_PORTMAN_ACP legacy logs - debug level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_TRACE
DESC = ENB_SS_PORTMAN_ACP legacy logs - trace level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_SYS_TASK_INFO ID = LEGACY_ENB_SS_SYS_TASK_INFO
DESC = ENB_SS_SYS_TASK legacy logs - info level DESC = ENB_SS_SYS_TASK legacy logs - info level
GROUP = ALL:LEGACY_ENB_SS_SYS_TASK:LEGACY_GROUP_INFO:LEGACY GROUP = ALL:LEGACY_ENB_SS_SYS_TASK:LEGACY_GROUP_INFO:LEGACY
......
...@@ -327,6 +327,7 @@ void *rrc_enb_process_msg(void *); ...@@ -327,6 +327,7 @@ void *rrc_enb_process_msg(void *);
TASK_DEF(TASK_M3AP_MCE, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_M3AP_MCE, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SCTP, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_SCTP, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_SS_PORTMAN, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN_ACP, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_SS_PORTMAN_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SYS, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_SYS, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SYS_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \ TASK_DEF(TASK_SYS_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \
......
...@@ -62,7 +62,10 @@ int create_tasks(uint32_t enb_nb) { ...@@ -62,7 +62,10 @@ int create_tasks(uint32_t enb_nb) {
if (RC.ss.mode >= SS_SOFTMODEM) if (RC.ss.mode >= SS_SOFTMODEM)
{ {
rc = itti_create_task(TASK_SS_PORTMAN, ss_eNB_port_man_task, NULL); rc = itti_create_task(TASK_SS_PORTMAN, ss_eNB_port_man_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for SS manager failed\n");
rc = itti_create_task(TASK_SS_PORTMAN_ACP, ss_eNB_port_man_acp_task, NULL);
AssertFatal(rc >= 0, "Create task for SS manager failed\n"); AssertFatal(rc >= 0, "Create task for SS manager failed\n");
rc = itti_create_task(TASK_SYS, ss_eNB_sys_task, NULL); rc = itti_create_task(TASK_SYS, ss_eNB_sys_task, NULL);
......
...@@ -54,9 +54,12 @@ MESSAGE_DEF(RRC_STATE_IND, MESSAGE_PRIORITY_MED, RrcStateInd, ...@@ -54,9 +54,12 @@ MESSAGE_DEF(RRC_STATE_IND, MESSAGE_PRIORITY_MED, RrcStateInd,
//-------------------------------------------------------------------------------------------// //-------------------------------------------------------------------------------------------//
// eNB: ENB_APP -> RRC messages // eNB: ENB_APP -> RRC messages
MESSAGE_DEF(RRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, RrcConfigurationReq, rrc_configuration_req) MESSAGE_DEF(RRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, RrcConfigurationReq, rrc_configuration_req)
MESSAGE_DEF(RRC_CONFIGURATION_CNF, MESSAGE_PRIORITY_MED, RrcConfigurationCnf, rrc_configuration_cnf)
MESSAGE_DEF(RRC_RBLIST_CFG_REQ, MESSAGE_PRIORITY_MED, RrcRblistCfgReq, rrc_rblist_cfg_req) MESSAGE_DEF(RRC_RBLIST_CFG_REQ, MESSAGE_PRIORITY_MED, RrcRblistCfgReq, rrc_rblist_cfg_req)
MESSAGE_DEF(RRC_RBLIST_CFG_CNF, MESSAGE_PRIORITY_MED, RrcRblistCfgCnf, rrc_rblist_cfg_cnf)
MESSAGE_DEF(RRC_UE_CAT_INFO, MESSAGE_PRIORITY_MED, rrcUECatInfo, rrc_ue_cat_info) MESSAGE_DEF(RRC_UE_CAT_INFO, MESSAGE_PRIORITY_MED, rrcUECatInfo, rrc_ue_cat_info)
MESSAGE_DEF(RRC_AS_SECURITY_CONFIG_REQ, MESSAGE_PRIORITY_MED, RrcAsSecurityConfigReq, rrc_as_security_config_req) MESSAGE_DEF(RRC_AS_SECURITY_CONFIG_REQ, MESSAGE_PRIORITY_MED, RrcAsSecurityConfigReq, rrc_as_security_config_req)
MESSAGE_DEF(RRC_AS_SECURITY_CONFIG_CNF, MESSAGE_PRIORITY_MED, RrcAsSecurityConfigCnf, rrc_as_security_config_cnf)
MESSAGE_DEF(NBIOTRRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, NbIoTRrcConfigurationReq, nbiotrrc_configuration_req) MESSAGE_DEF(NBIOTRRC_CONFIGURATION_REQ, MESSAGE_PRIORITY_MED, NbIoTRrcConfigurationReq, nbiotrrc_configuration_req)
// gNB: gNB_APP -> RRC messages // gNB: gNB_APP -> RRC messages
......
...@@ -83,12 +83,15 @@ ...@@ -83,12 +83,15 @@
#define RRC_STATE_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_state_ind #define RRC_STATE_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_state_ind
#define RRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_configuration_req #define RRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_configuration_req
#define RRC_CONFIGURATION_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_configuration_cnf
#define RRC_RBLIST_CFG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_rblist_cfg_req #define RRC_RBLIST_CFG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_rblist_cfg_req
#define RRC_RBLIST_CFG_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_rblist_cfg_cnf
#define RRC_UE_CAT_INFO(mSGpTR) (mSGpTR)->ittiMsg.rrc_ue_cat_info #define RRC_UE_CAT_INFO(mSGpTR) (mSGpTR)->ittiMsg.rrc_ue_cat_info
#define RRC_AS_SECURITY_CONFIG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_as_security_config_req #define RRC_AS_SECURITY_CONFIG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_as_security_config_req
#define RRC_AS_SECURITY_CONFIG_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_as_security_config_cnf
#define NBIOTRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nbiotrrc_configuration_req #define NBIOTRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nbiotrrc_configuration_req
...@@ -167,6 +170,10 @@ typedef struct RrcAsSecurityConfigReq_s { ...@@ -167,6 +170,10 @@ typedef struct RrcAsSecurityConfigReq_s {
int rnti; int rnti;
}RrcAsSecurityConfigReq; }RrcAsSecurityConfigReq;
typedef struct RrcAsSecurityConfigCnf_s {
bool status;
}RrcAsSecurityConfigCnf;
enum ue_CategoryDL_v1310_e { enum ue_CategoryDL_v1310_e {
ue_CategoryDL_v1310_e_n17 = 0, ue_CategoryDL_v1310_e_n17 = 0,
ue_CategoryDL_v1310_e_m1 = 1, ue_CategoryDL_v1310_e_m1 = 1,
...@@ -228,6 +235,10 @@ typedef struct RrcRblistCfgReq_s { ...@@ -228,6 +235,10 @@ typedef struct RrcRblistCfgReq_s {
rb_info rb_list[MAX_RBS]; rb_info rb_list[MAX_RBS];
} RrcRblistCfgReq; } RrcRblistCfgReq;
typedef struct RrcRblistCfgCnf_s {
bool status;
}RrcRblistCfgCnf;
typedef struct RrcStateInd_s { typedef struct RrcStateInd_s {
Rrc_State_t state; Rrc_State_t state;
Rrc_Sub_State_t sub_state; Rrc_Sub_State_t sub_state;
...@@ -575,6 +586,11 @@ typedef struct RrcConfigurationReq_s { ...@@ -575,6 +586,11 @@ typedef struct RrcConfigurationReq_s {
} RrcConfigurationReq; } RrcConfigurationReq;
typedef struct RrcConfigurationCnf_s
{
bool status;
}RrcConfigurationCnf;
#define MAX_NUM_NBIOT_CELEVELS 3 #define MAX_NUM_NBIOT_CELEVELS 3
typedef struct NbIoTRrcConfigurationReq_s { typedef struct NbIoTRrcConfigurationReq_s {
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#define SS_SYS_PROXY_MSG_CNF(mSGpTR) (mSGpTR)->ittiMsg.udp_data_ind #define SS_SYS_PROXY_MSG_CNF(mSGpTR) (mSGpTR)->ittiMsg.udp_data_ind
#define SS_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_paging_ind #define SS_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_paging_ind
#define SS_NR_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_nr_paging_ind #define SS_NR_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_nr_paging_ind
#define SS_PAGING_CNF(mSGpTR) (mSGpTR)->ittiMsg.ss_paging_cnf
#define SS_L1MACIND_CTRL(mSGpTR) (mSGpTR)->ittiMsg.ss_l1macind_ctrl #define SS_L1MACIND_CTRL(mSGpTR) (mSGpTR)->ittiMsg.ss_l1macind_ctrl
#define SS_ULGRANT_INFO(mSGpTR) (mSGpTR)->ittiMsg.ss_ulgrant_info #define SS_ULGRANT_INFO(mSGpTR) (mSGpTR)->ittiMsg.ss_ulgrant_info
......
...@@ -495,7 +495,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -495,7 +495,6 @@ rx_sdu(const module_id_t enb_mod_idP,
} }
UE_template_ptr->ul_SR = 1; UE_template_ptr->ul_SR = 1;
LOG_D(MAC, "swetank: fxn:%s line:%d rnti:%d ul_SR=1\n", __FUNCTION__, __LINE__, UE_RNTI(enb_mod_idP, UE_id));
UE_scheduling_control->crnti_reconfigurationcomplete_flag = 1; UE_scheduling_control->crnti_reconfigurationcomplete_flag = 1;
UE_info->UE_template[UE_PCCID(enb_mod_idP, UE_id)][UE_id].configured = 1; UE_info->UE_template[UE_PCCID(enb_mod_idP, UE_id)][UE_id].configured = 1;
cancel_ra_proc(enb_mod_idP, cancel_ra_proc(enb_mod_idP,
...@@ -559,7 +558,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -559,7 +558,6 @@ rx_sdu(const module_id_t enb_mod_idP,
} }
UE_template_ptr->ul_SR = 1; UE_template_ptr->ul_SR = 1;
LOG_D(MAC, "swetank: fxn:%s line:%d rnti:%d ul_SR=1\n", __FUNCTION__, __LINE__, UE_RNTI(enb_mod_idP, UE_id));
UE_scheduling_control->crnti_reconfigurationcomplete_flag = 1; UE_scheduling_control->crnti_reconfigurationcomplete_flag = 1;
} else { } else {
cancel_ra_proc(enb_mod_idP, CC_idP, frameP, current_rnti); cancel_ra_proc(enb_mod_idP, CC_idP, frameP, current_rnti);
...@@ -1897,7 +1895,6 @@ schedule_ulsch_rnti(module_id_t module_idP, ...@@ -1897,7 +1895,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
//uint8_t aggregation = 2; //uint8_t aggregation = 2;
int sched_frame = frameP; int sched_frame = frameP;
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (sched_subframeP < subframeP) { if (sched_subframeP < subframeP) {
sched_frame++; sched_frame++;
...@@ -1924,7 +1921,6 @@ schedule_ulsch_rnti(module_id_t module_idP, ...@@ -1924,7 +1921,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) {
if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0) if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0)
{ {
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
continue; continue;
} }
...@@ -2552,7 +2548,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2552,7 +2548,6 @@ schedule_ulsch_ss(module_id_t module_idP,
uint8_t ue_found = 0; uint8_t ue_found = 0;
/* Note: RC.nb_mac_CC[module_idP] should be lower than or equal to NFAPI_CC_MAX */ /* Note: RC.nb_mac_CC[module_idP] should be lower than or equal to NFAPI_CC_MAX */
LOG_D(MAC, "swetank: num CC:%d\n", RC.nb_mac_CC[module_idP]);
for (int CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++, cc++) { for (int CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++, cc++) {
/* MultiCell: Common channels modify for multiple CC */ /* MultiCell: Common channels modify for multiple CC */
cc = &RC.mac[module_idP]->common_channels[CC_id]; cc = &RC.mac[module_idP]->common_channels[CC_id];
...@@ -2568,7 +2563,7 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2568,7 +2563,7 @@ schedule_ulsch_ss(module_id_t module_idP,
if (ue_found == 0) if (ue_found == 0)
{ {
LOG_D(MAC, "%s No UE found\n", __FUNCTION__); LOG_D(MAC, "%s No UE found\n", __FUNCTION__);
return; continue;
} }
/* if schedule is false, it means SFN/SF for ULGrant had not yet arrived */ /* if schedule is false, it means SFN/SF for ULGrant had not yet arrived */
...@@ -2584,7 +2579,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2584,7 +2579,6 @@ schedule_ulsch_ss(module_id_t module_idP,
switch (subframeP) { switch (subframeP) {
case 0: case 0:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if ((tdd_sfa == 0) || (tdd_sfa == 3)) if ((tdd_sfa == 0) || (tdd_sfa == 3))
sched_subframe = 4; sched_subframe = 4;
else if (tdd_sfa == 6) else if (tdd_sfa == 6)
...@@ -2595,7 +2589,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2595,7 +2589,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 1: case 1:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if ((tdd_sfa == 0) || (tdd_sfa == 1)) if ((tdd_sfa == 0) || (tdd_sfa == 1))
sched_subframe = 7; sched_subframe = 7;
else if (tdd_sfa == 6) else if (tdd_sfa == 6)
...@@ -2606,11 +2599,9 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2606,11 +2599,9 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 2: // Don't schedule UL in subframe 2 for TDD case 2: // Don't schedule UL in subframe 2 for TDD
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
return; return;
case 3: case 3:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (tdd_sfa == 2) if (tdd_sfa == 2)
sched_subframe = 7; sched_subframe = 7;
else else
...@@ -2619,7 +2610,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2619,7 +2610,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 4: case 4:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (tdd_sfa == 1) if (tdd_sfa == 1)
sched_subframe = 8; sched_subframe = 8;
else else
...@@ -2628,7 +2618,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2628,7 +2618,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 5: case 5:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (tdd_sfa == 0) if (tdd_sfa == 0)
sched_subframe = 9; sched_subframe = 9;
else if (tdd_sfa == 6) else if (tdd_sfa == 6)
...@@ -2639,7 +2628,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2639,7 +2628,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 6: case 6:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (tdd_sfa == 0 || tdd_sfa == 1) if (tdd_sfa == 0 || tdd_sfa == 1)
sched_subframe = 2; sched_subframe = 2;
else if (tdd_sfa == 6) else if (tdd_sfa == 6)
...@@ -2650,11 +2638,9 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2650,11 +2638,9 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 7: case 7:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
return; return;
case 8: case 8:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if ((tdd_sfa >= 2) && (tdd_sfa <= 5)) if ((tdd_sfa >= 2) && (tdd_sfa <= 5))
sched_subframe = 2; sched_subframe = 2;
else else
...@@ -2663,7 +2649,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2663,7 +2649,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
case 9: case 9:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if ((tdd_sfa == 1) || (tdd_sfa == 3) || (tdd_sfa == 4)) if ((tdd_sfa == 1) || (tdd_sfa == 3) || (tdd_sfa == 4))
sched_subframe = 3; sched_subframe = 3;
else if (tdd_sfa == 6) else if (tdd_sfa == 6)
...@@ -2674,7 +2659,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2674,7 +2659,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break; break;
default: default:
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
return; return;
} }
} }
...@@ -2687,9 +2671,7 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2687,9 +2671,7 @@ schedule_ulsch_ss(module_id_t module_idP,
int emtc_active[5]; int emtc_active[5];
memset(emtc_active, 0, 5 * sizeof(int)); memset(emtc_active, 0, 5 * sizeof(int));
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
schedule_ulsch_rnti_emtc(module_idP, frameP, subframeP, sched_subframe, emtc_active); schedule_ulsch_rnti_emtc(module_idP, frameP, subframeP, sched_subframe, emtc_active);
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
if (is_prach_subframe0(cc->tdd_Config!=NULL ? cc->tdd_Config->subframeAssignment : 0,cc->tdd_Config!=NULL ? 1 : 0, if (is_prach_subframe0(cc->tdd_Config!=NULL ? cc->tdd_Config->subframeAssignment : 0,cc->tdd_Config!=NULL ? 1 : 0,
cc->radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex, cc->radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex,
...@@ -2704,7 +2686,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2704,7 +2686,6 @@ schedule_ulsch_ss(module_id_t module_idP,
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
cc->vrb_map_UL[start_rb + i] = 1; cc->vrb_map_UL[start_rb + i] = 1;
} }
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
/* HACK: let's remove the PUCCH from available RBs /* HACK: let's remove the PUCCH from available RBs
* we suppose PUCCH size is: * we suppose PUCCH size is:
...@@ -2740,7 +2721,6 @@ schedule_ulsch_ss(module_id_t module_idP, ...@@ -2740,7 +2721,6 @@ schedule_ulsch_ss(module_id_t module_idP,
exit(1); exit(1);
} }
LOG_D(MAC, "swetank: fxn:%s line:%d\n", __FUNCTION__, __LINE__);
schedule_ulsch_rnti(module_idP, CC_id, frameP, subframeP, sched_subframe); schedule_ulsch_rnti(module_idP, CC_id, frameP, subframeP, sched_subframe);
} }
......
...@@ -257,7 +257,7 @@ void free_LTE_PagingRecord_t(LTE_PagingRecord_t * ptr) ...@@ -257,7 +257,7 @@ void free_LTE_PagingRecord_t(LTE_PagingRecord_t * ptr)
} }
} }
uint8_t do_MIB_FeMBMS(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t additionalNonMBSFN, uint32_t frame) { int do_MIB_FeMBMS(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t additionalNonMBSFN, uint32_t frame) {
asn_enc_rval_t enc_rval; asn_enc_rval_t enc_rval;
LTE_BCCH_BCH_Message_MBMS_t *mib_fembms=&carrier->mib_fembms; LTE_BCCH_BCH_Message_MBMS_t *mib_fembms=&carrier->mib_fembms;
frame=198; frame=198;
...@@ -461,7 +461,7 @@ uint8_t do_MIB_SL(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, ...@@ -461,7 +461,7 @@ uint8_t do_MIB_SL(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,
return((enc_rval.encoded+7)/8); return((enc_rval.encoded+7)/8);
} }
uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, int do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier,
int Mod_id,int CC_id, int Mod_id,int CC_id,
RrcConfigurationReq *configuration RrcConfigurationReq *configuration
) { ) {
......
...@@ -136,6 +136,37 @@ pthread_mutex_t lock_ue_freelist; ...@@ -136,6 +136,37 @@ pthread_mutex_t lock_ue_freelist;
uint8_t ul_sqn,dl_sqn; uint8_t ul_sqn,dl_sqn;
void rrc_send_cnf_to_ss(MessageDef *msg_p)
{
MessageDef *message_p = NULL;
instance_t instance = ITTI_MSG_DESTINATION_INSTANCE(msg_p);
LOG_I(RRC,"Sending confirmation to SYS_TASK for message:%s\n", ITTI_MSG_NAME(msg_p));
switch (ITTI_MSG_ID(msg_p))
{
case RRC_CONFIGURATION_REQ:
message_p = itti_alloc_new_message(TASK_RRC_ENB, instance, RRC_CONFIGURATION_CNF);
RRC_CONFIGURATION_CNF(message_p).status = 1;
break;
case RRC_AS_SECURITY_CONFIG_REQ:
message_p = itti_alloc_new_message(TASK_RRC_ENB, instance, RRC_AS_SECURITY_CONFIG_CNF);
RRC_AS_SECURITY_CONFIG_CNF(message_p).status = 1;
break;
case RRC_RBLIST_CFG_REQ:
message_p = itti_alloc_new_message(TASK_RRC_ENB, instance, RRC_RBLIST_CFG_CNF);
RRC_RBLIST_CFG_CNF(message_p).status = 1;
break;
default:
LOG_E(RRC, "fxn:%s Received invalid message type\n", __FUNCTION__);
break;
}
itti_send_msg_to_task(TASK_SYS, instance, message_p);
LOG_I(RRC, "Sent Message to SYS_TASK\n");
}
void void
openair_rrc_on( openair_rrc_on(
const protocol_ctxt_t *const ctxt_pP const protocol_ctxt_t *const ctxt_pP
...@@ -9741,6 +9772,8 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -9741,6 +9772,8 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
case RRC_CONFIGURATION_REQ: case RRC_CONFIGURATION_REQ:
LOG_I(RRC, "[eNB %ld] Received %s : %p\n", instance, msg_name_p, &RRC_CONFIGURATION_REQ(msg_p)); LOG_I(RRC, "[eNB %ld] Received %s : %p\n", instance, msg_name_p, &RRC_CONFIGURATION_REQ(msg_p));
openair_rrc_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p)); openair_rrc_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p));
if (RC.ss.mode >= SS_SOFTMODEM)
rrc_send_cnf_to_ss(msg_p);
break; break;
/* Messages from F1AP task */ /* Messages from F1AP task */
...@@ -9799,7 +9832,6 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -9799,7 +9832,6 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
RLC_SDU_INDICATION(msg_p).message_id); RLC_SDU_INDICATION(msg_p).message_id);
break; break;
//#ifdef ENB_SS
case SS_RRC_PDU_REQ: case SS_RRC_PDU_REQ:
if (RC.ss.mode >= SS_SOFTMODEM) if (RC.ss.mode >= SS_SOFTMODEM)
{ {
...@@ -10044,42 +10076,49 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -10044,42 +10076,49 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
pdcp_data_req(&ctxt, SRB_FLAG_NO, SS_DRB_PDU_REQ(msg_p).drb_id, 0, 0, SS_DRB_PDU_REQ(msg_p).sdu_size, SS_DRB_PDU_REQ(msg_p).sdu, PDCP_TRANSMISSION_MODE_DATA, NULL, NULL); pdcp_data_req(&ctxt, SRB_FLAG_NO, SS_DRB_PDU_REQ(msg_p).drb_id, 0, 0, SS_DRB_PDU_REQ(msg_p).sdu_size, SS_DRB_PDU_REQ(msg_p).sdu, PDCP_TRANSMISSION_MODE_DATA, NULL, NULL);
break; break;
case RRC_AS_SECURITY_CONFIG_REQ: case RRC_AS_SECURITY_CONFIG_REQ:
LOG_A(RRC,"[eNB %ld] Received %s : %p, Integrity_Algo: %d, Ciphering_Algo: %ld \n",instance, msg_name_p, &RRC_AS_SECURITY_CONFIG_REQ(msg_p),RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.integrity_algorithm,RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.ciphering_algorithm); LOG_A(RRC,"[eNB %ld] Received %s : %p, Integrity_Algo: %d, Ciphering_Algo: %ld \n",
if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isIntegrityInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.kRRCint) instance,
{ msg_name_p,
printf("kRRCint in RRC:\n"); &RRC_AS_SECURITY_CONFIG_REQ(msg_p),
for(int i=0;i<32;i++) RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.integrity_algorithm,
RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.ciphering_algorithm);
if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isIntegrityInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.kRRCint)
{ {
LOG_D(RRC,"kRRCint in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.kRRCint[i]); printf("kRRCint in RRC:\n");
for(int i=0;i<32;i++)
{
LOG_D(RRC,"kRRCint in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Integrity.kRRCint[i]);
}
printf("\n");
} }
printf("\n"); if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isCipheringInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kRRCenc)
}
if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isCipheringInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kRRCenc)
{
printf("kRRCenc in RRC:\n");
for(int j=0;j<16;j++)
{ {
LOG_D(RRC,"kRRCenc in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kRRCenc[j]); printf("kRRCenc in RRC:\n");
for(int j=0;j<16;j++)
{
LOG_D(RRC,"kRRCenc in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kRRCenc[j]);
}
printf("\n");
} }
printf("\n"); if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isCipheringInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kUPenc)
}
if(RRC_AS_SECURITY_CONFIG_REQ(msg_p).isCipheringInfoPresent && RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kUPenc)
{
LOG_D(RRC,"kUPenc in RRC:\n");
for(int k=0;k<16;k++)
{ {
LOG_D(RRC,"kUPenc in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kUPenc[k]); LOG_D(RRC,"kUPenc in RRC:\n");
for(int k=0;k<16;k++)
{
LOG_D(RRC,"kUPenc in RRC: %02x\n",RRC_AS_SECURITY_CONFIG_REQ(msg_p).Ciphering.kUPenc[k]);
}
LOG_D(RRC,"\n");
} }
LOG_D(RRC,"\n"); PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
} instance,
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, ENB_FLAG_YES,
instance, RRC_AS_SECURITY_CONFIG_REQ(msg_p).rnti,
ENB_FLAG_YES, msg_p->ittiMsgHeader.lte_time.frame,
RRC_AS_SECURITY_CONFIG_REQ(msg_p).rnti, msg_p->ittiMsgHeader.lte_time.slot);
msg_p->ittiMsgHeader.lte_time.frame, rrc_eNB_as_security_configuration_req(&ctxt, ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_AS_SECURITY_CONFIG_REQ(msg_p));
msg_p->ittiMsgHeader.lte_time.slot); rrc_send_cnf_to_ss(msg_p);
rrc_eNB_as_security_configuration_req(&ctxt, ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_AS_SECURITY_CONFIG_REQ(msg_p));
break; break;
case SS_SS_PAGING_IND: case SS_SS_PAGING_IND:
...@@ -10092,6 +10131,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -10092,6 +10131,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
case RRC_RBLIST_CFG_REQ: case RRC_RBLIST_CFG_REQ:
LOG_A(RRC, "[eNB %ld] Received %s : %p, RB Count:%d\n", instance, msg_name_p, &RRC_RBLIST_CFG_REQ(msg_p),RRC_RBLIST_CFG_REQ(msg_p).rb_count); LOG_A(RRC, "[eNB %ld] Received %s : %p, RB Count:%d\n", instance, msg_name_p, &RRC_RBLIST_CFG_REQ(msg_p),RRC_RBLIST_CFG_REQ(msg_p).rb_count);
rrc_eNB_rblist_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_RBLIST_CFG_REQ(msg_p)); rrc_eNB_rblist_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_RBLIST_CFG_REQ(msg_p));
rrc_send_cnf_to_ss(msg_p);
break; break;
default: default:
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#define _SS_ENB_CONTEXT_ #define _SS_ENB_CONTEXT_
#include "SidlCommon.h" #include "SidlCommon.h"
#include "SIDL_EUTRA_SYSTEM_PORT.h"
#if 0 #if 0
#define SYS_L LOG_SYS(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__) #define SYS_L LOG_SYS(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__)
#define SRB_L LOG_SRB(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__) #define SRB_L LOG_SRB(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__)
...@@ -62,6 +62,15 @@ typedef struct SS_Cell_Context_s{ ...@@ -62,6 +62,15 @@ typedef struct SS_Cell_Context_s{
uint16_t ss_rnti_g; uint16_t ss_rnti_g;
} SS_Cell_Context_t; } SS_Cell_Context_t;
typedef struct sys_cnf_info
{
enum ConfirmationResult_Type_Sel resType;
bool resVal;
enum SystemConfirm_Type_Sel cnfType;
uint8_t msg_buffer[1000];
uint8_t cnfFlag;
}sys_cnf_info_t;
typedef struct SSConfigContext_s { typedef struct SSConfigContext_s {
/** List of Cells */ /** List of Cells */
SS_Cell_Context_t SSCell_list[8]; SS_Cell_Context_t SSCell_list[8];
...@@ -73,8 +82,8 @@ typedef struct SSConfigContext_s { ...@@ -73,8 +82,8 @@ typedef struct SSConfigContext_s {
ss_set_timinfo_t vtinfo; ss_set_timinfo_t vtinfo;
hash_table_t *vt_timer_table ; // key is SFN_SF hash_table_t *vt_timer_table ; // key is SFN_SF
bool send_atten_cnf; bool send_atten_cnf;
sys_cnf_info_t sys_cnf;
/** TODO: To add more */ /** TODO: To add more */
} SSConfigContext_t; } SSConfigContext_t;
typedef enum { typedef enum {
......
...@@ -63,6 +63,23 @@ enum MsgUserId ...@@ -63,6 +63,23 @@ enum MsgUserId
}; };
extern SSConfigContext_t SS_context; extern SSConfigContext_t SS_context;
pthread_cond_t sys_confirm_done_cond;
pthread_mutex_t sys_confirm_done_mutex;
int sys_confirm_done=-1;
static void wait_sys_confirm(char *thread_name) {
LOG_I(ENB_SS_PORTMAN_ACP, "Entry in fxn:%s\n",__FUNCTION__);
LOG_I(ENB_SS_PORTMAN_ACP, "waiting for SYS CONFRIM DONE Indication (%s)\n",thread_name);
pthread_mutex_lock( &sys_confirm_done_mutex );
while ( sys_confirm_done < 0 )
pthread_cond_wait( &sys_confirm_done_cond, &sys_confirm_done_mutex );
pthread_mutex_unlock(&sys_confirm_done_mutex );
LOG_I(ENB_SS_PORTMAN_ACP, "Received SYS CONFIRM (%s)\n", thread_name);
LOG_I(ENB_SS_PORTMAN_ACP, "Exit from fxn:%s\n",__FUNCTION__);
}
/* /*
* Function : ss_dumpReqMsg * Function : ss_dumpReqMsg
* Description: Function for print the received message * Description: Function for print the received message
...@@ -286,7 +303,7 @@ void ss_port_man_send_data( ...@@ -286,7 +303,7 @@ void ss_port_man_send_data(
void ss_eNB_port_man_init(void) void ss_eNB_port_man_init(void)
{ {
IpAddress_t ipaddr; IpAddress_t ipaddr;
LOG_A(ENB_SS_PORTMAN, "Starting System Simulator Manager\n"); LOG_A(ENB_SS_PORTMAN_ACP, "Starting System Simulator Manager\n");
const char *hostIp; const char *hostIp;
hostIp = RC.ss.hostIp; hostIp = RC.ss.hostIp;
...@@ -311,11 +328,11 @@ void ss_eNB_port_man_init(void) ...@@ -311,11 +328,11 @@ void ss_eNB_port_man_init(void)
int ret = acpServerInitWithCtx(ipaddr, port, msgTable, aSize, &ctx_g); int ret = acpServerInitWithCtx(ipaddr, port, msgTable, aSize, &ctx_g);
if (ret < 0) if (ret < 0)
{ {
LOG_A(ENB_SS_PORTMAN, "Connection failure err=%d\n", ret); LOG_A(ENB_SS_PORTMAN_ACP, "Connection failure err=%d\n", ret);
return; return;
} }
int fd1 = acpGetSocketFd(ctx_g); int fd1 = acpGetSocketFd(ctx_g);
LOG_A(ENB_SS_PORTMAN, "Connection performed : %d\n", fd1); LOG_A(ENB_SS_PORTMAN_ACP, "Connection performed : %d\n", fd1);
//itti_subscribe_event_fd(TASK_SS_PORTMAN, fd1); //itti_subscribe_event_fd(TASK_SS_PORTMAN, fd1);
...@@ -338,7 +355,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx) ...@@ -338,7 +355,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
size_t msgSize = size; //2 size_t msgSize = size; //2
unsigned char *buffer = (unsigned char *)acpMalloc(size); unsigned char *buffer = (unsigned char *)acpMalloc(size);
assert(buffer); assert(buffer);
LOG_D(ENB_SS_PORTMAN, "Entry in fxn:%s\n", __FUNCTION__); LOG_D(ENB_SS_PORTMAN_ACP, "Entry in fxn:%s\n", __FUNCTION__);
int userId = acpRecvMsg(ctx, &msgSize, buffer); int userId = acpRecvMsg(ctx, &msgSize, buffer);
// Error handling // Error handling
...@@ -349,23 +366,23 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx) ...@@ -349,23 +366,23 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
// Message not mapped to user id, // Message not mapped to user id,
// this error should not appear on server side for the messages // this error should not appear on server side for the messages
// received from clients // received from clients
LOG_E(GNB_APP, "Error: Message not mapped to user id\n"); LOG_E(ENB_SS_PORTMAN_ACP, "Error: Message not mapped to user id\n");
} }
else if (userId == -ACP_ERR_SIDL_FAILURE) else if (userId == -ACP_ERR_SIDL_FAILURE)
{ {
// Server returned service error, // Server returned service error,
// this error should not appear on server side for the messages // this error should not appear on server side for the messages
// received from clients // received from clients
LOG_E(GNB_APP, "Error: Server returned service error \n"); LOG_E(ENB_SS_PORTMAN_ACP, "Error: Server returned service error \n");
SidlStatus sidlStatus = -1; SidlStatus sidlStatus = -1;
acpGetMsgSidlStatus(msgSize, buffer, &sidlStatus); acpGetMsgSidlStatus(msgSize, buffer, &sidlStatus);
acpFree(buffer); acpFree(buffer);
} }
else if (userId == -ACP_PEER_DISCONNECTED){ else if (userId == -ACP_PEER_DISCONNECTED){
LOG_E(GNB_APP, "[SS_SRB] Error: Peer ordered shutdown\n"); LOG_E(ENB_SS_PORTMAN_ACP, "Error: Peer ordered shutdown\n");
} }
else if (userId == -ACP_PEER_CONNECTED){ else if (userId == -ACP_PEER_CONNECTED){
LOG_A(GNB_APP, "[SS_SRB] Peer connection established\n"); LOG_A(ENB_SS_PORTMAN_ACP, " Peer connection established\n");
} }
else else
{ {
...@@ -378,7 +395,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx) ...@@ -378,7 +395,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
//Send Dummy Wake up ITTI message to SRB task. //Send Dummy Wake up ITTI message to SRB task.
if (RC.ss.mode >= SS_SOFTMODEM && SS_context.SSCell_list[cell_index_pm].State >= SS_STATE_CELL_ACTIVE) if (RC.ss.mode >= SS_SOFTMODEM && SS_context.SSCell_list[cell_index_pm].State >= SS_STATE_CELL_ACTIVE)
{ {
LOG_A(ENB_SS_PORTMAN,"Sending Wake up signal/SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB task \n", SS_RRC_PDU_IND); LOG_A(ENB_SS_PORTMAN_ACP,"Sending Wake up signal/SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB task \n", SS_RRC_PDU_IND);
MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_RRC_PDU_IND); MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_RRC_PDU_IND);
if (message_p) if (message_p)
{ {
...@@ -392,58 +409,62 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx) ...@@ -392,58 +409,62 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
int send_res = itti_send_msg_to_task(TASK_SS_SRB, 0, message_p); int send_res = itti_send_msg_to_task(TASK_SS_SRB, 0, message_p);
if (send_res < 0) if (send_res < 0)
{ {
LOG_E(ENB_SS_PORTMAN, "Error in sending Wake up signal /SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB\n", SS_RRC_PDU_IND); LOG_E(ENB_SS_PORTMAN_ACP, "Error in sending Wake up signal /SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB\n", SS_RRC_PDU_IND);
} }
} }
} }
} }
else else
{ {
LOG_A(ENB_SS_PORTMAN, "received msg %d from the client.\n", userId);
if (acpSysProcessDecSrv(ctx, buffer, msgSize, &req) != 0) LOG_A(ENB_SS_PORTMAN_ACP, "received msg %d from the client.\n", userId);
if (acpSysProcessDecSrv(ctx, buffer, msgSize, &req) != 0)
{
acpFree(buffer);
return;
}
ss_dumpReqMsg(req);
if (userId == MSG_SysProcess_userId)
{
bool ret_Val = false;
struct SYSTEM_CTRL_REQ *sys_req = (struct SYSTEM_CTRL_REQ *)req;
if (sys_req->Request.d == SystemRequest_Type_EnquireTiming)
{ {
acpFree(buffer); LOG_I(ENB_SS_PORTMAN_ACP, "Received EnquireTiming\n");
return; ret_Val = ss_eNB_port_man_handle_enquiryTiming(sys_req);
if (ret_Val == false)
LOG_E(ENB_SS_PORTMAN_ACP, "Error Sending EnquiryTiming Respone to TTCN\n");
} }
ss_dumpReqMsg(req); else
if (userId == MSG_SysProcess_userId)
{ {
bool ret_Val = false; int rc = 0;
struct SYSTEM_CTRL_REQ *sys_req = (struct SYSTEM_CTRL_REQ *)req; MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_SYS_PORT_MSG_IND);
if (sys_req->Request.d == SystemRequest_Type_EnquireTiming) if (message_p)
{
LOG_I(ENB_SS_PORTMAN, "Locked the mutex for enq Timing\n");
LOG_I(ENB_SS_PORTMAN, "Received EnquireTiming\n");
ret_Val = ss_eNB_port_man_handle_enquiryTiming(sys_req);
if (ret_Val == false)
LOG_E(ENB_SS_PORTMAN, "Error Sending EnquiryTiming Respone to TTCN\n");
}
else
{ {
MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_SYS_PORT_MSG_IND); SS_SYS_PORT_MSG_IND(message_p).req = (struct SYSTEM_CTRL_REQ *)malloc(sizeof(struct SYSTEM_CTRL_REQ));
if (message_p) if (SS_SYS_PORT_MSG_IND(message_p).req == NULL)
{
LOG_E(ENB_SS_PORTMAN_ACP, "Error allocating memory for SYSTEM CTRL REQ\n");
return;
}
memset(SS_SYS_PORT_MSG_IND(message_p).req, 0, sizeof(struct SYSTEM_CTRL_REQ));
memcpy(SS_SYS_PORT_MSG_IND(message_p).req, req, sizeof(struct SYSTEM_CTRL_REQ));
SS_SYS_PORT_MSG_IND(message_p).userId = userId;
rc = itti_send_msg_to_task(TASK_SYS, 0, message_p);
if (rc == 0 )
{ {
SS_SYS_PORT_MSG_IND(message_p).req = (struct SYSTEM_CTRL_REQ *)malloc(sizeof(struct SYSTEM_CTRL_REQ)); sys_confirm_done = -1;
if (SS_SYS_PORT_MSG_IND(message_p).req == NULL) /* wait for signal */
{ wait_sys_confirm("TASK_SYS");
LOG_E(ENB_SS_PORTMAN, "Error allocating memory for SYSTEM CTRL REQ\n");
return;
}
memset(SS_SYS_PORT_MSG_IND(message_p).req, 0, sizeof(struct SYSTEM_CTRL_REQ));
memcpy(SS_SYS_PORT_MSG_IND(message_p).req, req, sizeof(struct SYSTEM_CTRL_REQ));
SS_SYS_PORT_MSG_IND(message_p).userId = userId;
if (SS_SYS_PORT_MSG_IND(message_p).req)
itti_send_msg_to_task(TASK_SYS, 0, message_p);
} }
} }
sys_req = NULL;
} }
sys_req = NULL;
}
} }
acpSysProcessFreeSrv(req); acpSysProcessFreeSrv(req);
LOG_D(ENB_SS_PORTMAN, "Exit from fxn:%s\n", __FUNCTION__); LOG_D(ENB_SS_PORTMAN_ACP, "Exit from fxn:%s\n", __FUNCTION__);
acpFree(buffer); acpFree(buffer);
return; return;
...@@ -463,7 +484,7 @@ void *ss_port_man_process_itti_msg(void *notUsed) ...@@ -463,7 +484,7 @@ void *ss_port_man_process_itti_msg(void *notUsed)
MessageDef *received_msg = NULL; MessageDef *received_msg = NULL;
int result; int result;
LOG_D(ENB_SS_PORTMAN, "Entry in fxn:%s\n", __FUNCTION__); LOG_D(ENB_SS_PORTMAN, "Entry in fxn:%s\n", __FUNCTION__);
itti_poll_msg(TASK_SS_PORTMAN, &received_msg); itti_receive_msg(TASK_SS_PORTMAN, &received_msg);
if (received_msg != NULL) if (received_msg != NULL)
{ {
LOG_A(ENB_SS_PORTMAN, "Received a message id : %d \n", LOG_A(ENB_SS_PORTMAN, "Received a message id : %d \n",
...@@ -502,7 +523,6 @@ void *ss_port_man_process_itti_msg(void *notUsed) ...@@ -502,7 +523,6 @@ void *ss_port_man_process_itti_msg(void *notUsed)
received_msg = NULL; received_msg = NULL;
} }
ss_eNB_read_from_socket(ctx_g);
LOG_D(ENB_SS_PORTMAN, "Exit from fxn:%s\n", __FUNCTION__); LOG_D(ENB_SS_PORTMAN, "Exit from fxn:%s\n", __FUNCTION__);
return NULL; return NULL;
} }
...@@ -517,13 +537,25 @@ void *ss_port_man_process_itti_msg(void *notUsed) ...@@ -517,13 +537,25 @@ void *ss_port_man_process_itti_msg(void *notUsed)
* newState: No impact on state machine. * newState: No impact on state machine.
* *
*/ */
void *ss_eNB_port_man_task(void *arg) void *ss_eNB_port_man_eNB_task(void *arg)
{
while (1)
{
/* Now handle notifications for other sockets */
ss_port_man_process_itti_msg(NULL);
}
return NULL;
}
void *ss_eNB_port_man_acp_task(void *arg)
{ {
ss_eNB_port_man_init(); ss_eNB_port_man_init();
while (1) while (1)
{ {
/* Now handle notifications for other sockets */ /* Now handle notifications for other sockets */
(void)ss_port_man_process_itti_msg(NULL); ss_eNB_read_from_socket(ctx_g);
} }
return NULL; return NULL;
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include "acpSys.h" #include "acpSys.h"
void ss_eNB_port_man_init(void); void ss_eNB_port_man_init(void);
void *ss_eNB_port_man_task(void *arg); void *ss_eNB_port_man_eNB_task(void *arg);
void *ss_eNB_port_man_acp_task(void *arg); void *ss_eNB_port_man_acp_task(void *arg);
bool ss_eNB_port_man_handle_enquiryTiming(struct SYSTEM_CTRL_REQ *sys_req); bool ss_eNB_port_man_handle_enquiryTiming(struct SYSTEM_CTRL_REQ *sys_req);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment