Commit e7403759 authored by Vijay Chadachan's avatar Vijay Chadachan Committed by Vijay C

Fix for FATALS observed in the MAC

parent 52b35ba4
......@@ -1010,6 +1010,8 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP, rrc_mac_config_req_eNB_t *param)
}
eNB->scheduler_mode = global_scheduler_mode;
//Set the number of MAC_CC to current configured CC value
*RC.nb_mac_CC= RC.nb_CC[0];
return(0);
}
......@@ -1049,7 +1051,7 @@ void eNB_Config_Local_DRX(instance_t Mod_id,
return;
}
/* Modify scheduling control structure according to DRX configuration: doesn't support every configurations! */
/* Modify scheduling control structure according to DRX configuration: doesn't support every configurations! */
UE_scheduling_control->cdrx_configured = false; // will be set to true when receiving RRC Reconfiguration Complete
UE_scheduling_control->cdrx_waiting_ack = true; // waiting for RRC Reconfiguration Complete message
UE_scheduling_control->in_active_time = false;
......
......@@ -91,7 +91,7 @@ void schedule_SRS(module_id_t module_idP,
LTE_SoundingRS_UL_ConfigCommon_t *soundingRS_UL_ConfigCommon = NULL;
struct LTE_SoundingRS_UL_ConfigDedicated *soundingRS_UL_ConfigDedicated = NULL;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
soundingRS_UL_ConfigCommon = &(cc[CC_id].radioResourceConfigCommon->soundingRS_UL_ConfigCommon);
/* Check if SRS is enabled in this frame/subframe */
......@@ -196,7 +196,7 @@ void schedule_CSI(module_id_t module_idP,
nfapi_ul_config_request_body_t *ul_req = NULL;
UE_sched_ctrl_t *UE_scheduling_control = NULL;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
for (UE_id = 0; UE_id < MAX_MOBILES_PER_ENB; UE_id++) {
......@@ -311,7 +311,7 @@ schedule_SR (module_id_t module_idP,
nfapi_ul_config_sr_information sr;
memset(&sr, 0, sizeof(sr));
for (int CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (int CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
eNB->UL_req[CC_id].sfn_sf = (frameP << 4) + subframeP;
for (int UE_id = 0; UE_id < MAX_MOBILES_PER_ENB; UE_id++) {
......@@ -533,7 +533,7 @@ copy_ulreq(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) {
int CC_id;
eNB_MAC_INST *mac = RC.mac[module_idP];
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
nfapi_ul_config_request_t *ul_req_tmp = &mac->UL_req_tmp[CC_id][subframeP];
nfapi_ul_config_request_t *ul_req = &mac->UL_req[CC_id];
nfapi_ul_config_request_pdu_t *ul_req_pdu = ul_req->ul_config_request_body.ul_config_pdu_list;
......@@ -594,7 +594,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
eNB->frame = frameP;
eNB->subframe = subframeP;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
mbsfn_status[CC_id] = 0;
/* Clear vrb_maps */
memset(cc[CC_id].vrb_map, 0, 100);
......@@ -620,7 +620,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
}
}
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
/* Refresh UE list based on UEs dropped by PHY in previous subframe */
for (UE_id = 0; UE_id < MAX_MOBILES_PER_ENB; UE_id++) {
if (UE_info->active[CC_id][UE_id]) {
......@@ -988,7 +988,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
}
int do_fembms_si=0;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
if (cc[CC_id].MBMS_flag > 0) {
start_meas(&RC.mac[module_idP]->schedule_mch);
int(*schedule_mch)(module_id_t module_idP, uint8_t CC_id, frame_t frameP, sub_frame_t subframe) = NULL;
......@@ -1011,7 +1011,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
if (RC.ss.mode >= SS_SOFTMODEM) {
schedule_ulsch_p = schedule_ulsch_ss;
schedule_ue_spec_p = schedule_dlsch_ss;
}
}
else if (eNB->scheduler_mode == SCHED_MODE_DEFAULT) {
schedule_ulsch_p = schedule_ulsch;
schedule_ue_spec_p = schedule_dlsch;
......@@ -1082,7 +1082,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
}
/* Allocate CCEs for good after scheduling is done */
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
if (cc[CC_id].tdd_Config == NULL || !(is_UL_sf(&cc[CC_id],subframeP))) {
int rc = allocate_CCEs(module_idP, CC_id, frameP, subframeP, 2);
if (rc < 0)
......
......@@ -1283,7 +1283,7 @@ schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) {
uint8_t i;
start_meas(&mac->schedule_ra);
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
// skip UL component carriers if TDD
if (is_UL_sf(&cc[CC_id], subframeP) == 1)
continue;
......@@ -1402,7 +1402,7 @@ initiate_ra_proc(module_id_t module_idP,
static int drnti_def[]={ 0xbda7, 0x71da, 0x9c40, 0xc350, 0x2710, 0x4e20, 0x7530, 0x1388, 0x3a98, 0x61a8, 0x88b8, 0xafc8, 0xd6d8, 0x1b58, 0x4268, 0x6978 };
for (int j=0; j<MAX_MOBILES_PER_ENB && j< (sizeof(drnti_def)/sizeof(int));j++)
drnti[j]=drnti_def[j];
int nb_ue = 0;
for (int j = 0; j < MAX_MOBILES_PER_ENB; j++) {
......
......@@ -95,7 +95,7 @@ schedule_SIB1_MBMS(module_id_t module_idP,
int k = 0, rvidx;
uint16_t sfn_sf = frameP<<4|subframeP;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
vrb_map = (void *) &cc->vrb_map;
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
......@@ -327,7 +327,7 @@ schedule_SIB1_BR(module_id_t module_idP,
int k = 0, rvidx;
uint16_t sfn_sf = frameP<<4|subframeP;
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
vrb_map = (void *) &cc->vrb_map;
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
......@@ -558,7 +558,7 @@ schedule_SI_BR(module_id_t module_idP, frame_t frameP,
int rvidx;
int absSF = (frameP*10)+subframeP;
for (CC_id=0; CC_id<RC.nb_CC[module_idP]; CC_id++) {
for (CC_id=0; CC_id<RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
vrb_map = (void *)&cc->vrb_map;
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
......@@ -753,7 +753,7 @@ schedule_SI_MBMS(module_id_t module_idP, frame_t frameP,
// Only schedule LTE System Information in subframe 0
if (subframeP == 0) {
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
//printf("*cc->sib1_MBMS->si_WindowLength_r14 %d \n", *cc->sib1_MBMS->si_WindowLength_r14);
vrb_map = (void *) &cc->vrb_map;
......@@ -950,7 +950,7 @@ schedule_fembms_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframe
AssertFatal(subframeP == 0, "Subframe must be 0\n");
AssertFatal((frameP & 15) == 0, "Frame must be a multiple of 16\n");
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
dl_config_request = &eNB->DL_req[CC_id];
dl_req = &dl_config_request->dl_config_request_body;
cc = &eNB->common_channels[CC_id];
......@@ -1009,7 +1009,7 @@ schedule_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) {
AssertFatal(subframeP == 0, "Subframe must be 0\n");
AssertFatal((frameP & 3) == 0, "Frame must be a multiple of 4\n");
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
dl_config_request = &eNB->DL_req[CC_id];
dl_req = &dl_config_request->dl_config_request_body;
cc = &eNB->common_channels[CC_id];
......@@ -1077,7 +1077,7 @@ schedule_SI(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
// Only schedule LTE System Information in subframe 5
if (subframeP == 5) {
for (CC_id = 0; CC_id < RC.nb_CC[module_idP]; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
cc = &eNB->common_channels[CC_id];
vrb_map = (void *) &cc->vrb_map;
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
......
......@@ -129,7 +129,7 @@ void ss_port_man_send_cnf(struct SYSTEM_CTRL_CNF recvCnf)
cnf.Common.Result.d = recvCnf.Common.Result.d;
cnf.Common.Result.v.Success = recvCnf.Common.Result.v.Success;
cnf.Confirm.d = recvCnf.Confirm.d;
LOG_A(ENB_SS_PORTMAN, "Attn CNF received cellId %d result %d type %d \n",
LOG_A(ENB_SS_PORTMAN, "SYS_CNF received cellId %d result %d type %d \n",
cnf.Common.CellId,cnf.Common.Result.d, recvCnf.Confirm.d);
switch (recvCnf.Confirm.d)
{
......@@ -380,10 +380,10 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
}
else if (userId == -ACP_PEER_DISCONNECTED){
LOG_E(ENB_SS_PORTMAN_ACP, "Error: Peer ordered shutdown\n");
}
}
else if (userId == -ACP_PEER_CONNECTED){
LOG_A(ENB_SS_PORTMAN_ACP, " Peer connection established\n");
}
}
else
{
return;
......@@ -523,6 +523,9 @@ void *ss_port_man_process_itti_msg(void *notUsed)
received_msg = NULL;
}
/* Now handle notifications for other sockets */
ss_eNB_read_from_socket(ctx_g);
LOG_D(ENB_SS_PORTMAN, "Exit from fxn:%s\n", __FUNCTION__);
return NULL;
}
......@@ -539,6 +542,7 @@ void *ss_port_man_process_itti_msg(void *notUsed)
*/
void *ss_eNB_port_man_eNB_task(void *arg)
{
ss_eNB_port_man_init();
while (1)
{
/* Now handle notifications for other sockets */
......@@ -551,11 +555,12 @@ void *ss_eNB_port_man_eNB_task(void *arg)
void *ss_eNB_port_man_acp_task(void *arg)
{
ss_eNB_port_man_init();
// ss_eNB_port_man_init();
while (1)
{
/* Now handle notifications for other sockets */
ss_eNB_read_from_socket(ctx_g);
// ss_eNB_read_from_socket(ctx_g);
sleep(1000);
}
return NULL;
......@@ -609,8 +614,8 @@ bool ss_eNB_port_man_handle_enquiryTiming(struct SYSTEM_CTRL_REQ *sys_req)
return false;
}
LOG_A(ENB_SS_PORTMAN, "enquiryTiming CNF sent successfully for SFN:%d SF:%d\n",
cnf.Common.TimingInfo.v.SubFrame.SFN.v.Number,
LOG_A(ENB_SS_PORTMAN, "enquiryTiming CNF sent successfully for SFN:%d SF:%d\n",
cnf.Common.TimingInfo.v.SubFrame.SFN.v.Number,
cnf.Common.TimingInfo.v.SubFrame.Subframe.v.Number);
acpFree(buffer);
return true;
......
......@@ -830,7 +830,7 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
{
if (AddOrReconfigure->Active.d == true)
{
do
do
{
if (AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.d == true)
{
......@@ -854,14 +854,14 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
else if (AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.d == UL_GrantConfig_Type_Periodic)
{
SS_ULGRANT_INFO(msg_p).ulGrantType = PERIODIC_PRESENT;
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.ULGrantPeriodType =
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.d;
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.ULGrantPeriodType =
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.d;
LOG_I(ENB_SS_SYS_TASK, "ULGrantPeriodType:%d\n", SS_ULGRANT_INFO(msg_p).periodiGrantInfo.ULGrantPeriodType);
if (AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.d == ULGrant_Period_Type_Duration)
{
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.period.duration =
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.v.Duration;
LOG_I(ENB_SS_SYS_TASK, "Received Periodic ULGrant type ULGrant_Period_Type_Duration: %d received:%d cell_index:%d\n",
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.period.duration =
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.v.Duration;
LOG_I(ENB_SS_SYS_TASK, "Received Periodic ULGrant type ULGrant_Period_Type_Duration: %d received:%d cell_index:%d\n",
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.period.duration,
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.Period.v.Duration,
cell_index);
......@@ -877,7 +877,7 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
{
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.Continuous = 1;
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.NumOfCycles = 0;
LOG_I(ENB_SS_SYS_TASK, "line:%d Continuous:%d NumOfCycles:%d\n",
LOG_I(ENB_SS_SYS_TASK, "line:%d Continuous:%d NumOfCycles:%d\n",
__LINE__,
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.Continuous,
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.NumOfCycles);
......@@ -887,7 +887,7 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.NumOfCycles =
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.v.Periodic.NoOfRepetitions.v.NumOfCycles;
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.Continuous = 0;
LOG_I(ENB_SS_SYS_TASK, "line:%d Continuous:%d NumOfCycles:%d\n",
LOG_I(ENB_SS_SYS_TASK, "line:%d Continuous:%d NumOfCycles:%d\n",
__LINE__,
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.Continuous,
SS_ULGRANT_INFO(msg_p).periodiGrantInfo.transRepType.NumOfCycles);
......@@ -902,7 +902,7 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
}
else
{
LOG_A(ENB_SS_SYS_TASK, "ULGrantType %d is not supported. Current supported ULGrant is OnSR_Reception & periodic only \n",
LOG_A(ENB_SS_SYS_TASK, "ULGrantType %d is not supported. Current supported ULGrant is OnSR_Reception & periodic only \n",
AddOrReconfigure->Active.v.CcchDcchDtchConfig.v.UL.v.UL_GrantConfig.v.d);
}
}
......@@ -963,7 +963,7 @@ static void send_sys_cnf(enum ConfirmationResult_Type_Sel resType,
if (message_p)
{
LOG_A(ENB_SS_SYS_TASK, "Send SS_SYS_PORT_MSG_CNF\n");
LOG_A(ENB_SS_SYS_TASK, "Send SS_SYS_PORT_MSG_CNF cnf_Type %d, res_Type %d\n",cnfType,resType);
msgCnf->Common.CellId = SS_context.SSCell_list[cell_index].eutra_cellId;
msgCnf->Common.Result.d = resType;
msgCnf->Common.Result.v.Success = resVal;
......@@ -1082,8 +1082,8 @@ int sys_handle_cell_config_req(struct SYSTEM_CTRL_REQ *req)
} else {
RC.nb_CC[0] ++;
//Set the number of MAC_CC to current configured CC value
*RC.nb_mac_CC= RC.nb_CC[0];
//*RC.nb_mac_CC= RC.nb_CC[0];
LOG_I (ENB_SS_SYS_TASK,"[SYS] CC-MGMT nb_cc is incremented current Configured CC are %d current CC_index %d nb_mac_CC %d\n",
RC.nb_CC[0],cell_index,*RC.nb_mac_CC);
}
......@@ -1102,7 +1102,7 @@ int sys_handle_cell_config_req(struct SYSTEM_CTRL_REQ *req)
default:
LOG_A(ENB_SS_SYS_TASK, "CellConfigRequest INVALID Type receivied\n");
}
if (reqCnfFlag_g == true)
{
SS_context.sys_cnf.resType = resType;
......@@ -2202,7 +2202,7 @@ static void sys_handle_as_security_req(struct SYSTEM_CTRL_REQ *req)
SS_context.sys_cnf.resVal = resVal;
SS_context.sys_cnf.cnfType = cnfType;
SS_context.sys_cnf.cnfFlag = 1;
memset((void *)SS_context.sys_cnf.msg_buffer, 0, 1000);
memset((void *)SS_context.sys_cnf.msg_buffer, 0, 1000);
}
// send_sys_cnf(resType, resVal, cnfType, NULL);
}
......@@ -2561,7 +2561,7 @@ void *ss_eNB_sys_process_itti_msg(void *notUsed)
{
LOG_A(ENB_SS_SYS_TASK, "Not hanled SYS_PORT message received \n");
}
if (SS_SYS_PORT_MSG_IND(received_msg).req)
free(SS_SYS_PORT_MSG_IND(received_msg).req);
......
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