Commit 3a26b6a0 authored by Vadym Furmanchuk's avatar Vadym Furmanchuk

bug #127933 [L3 SIMU] TC 8.5.1.1 - problem with RRC connection re-establishment

Added handling cellIdentity in sys_add_reconfig_cell()
parent 98744cd9
...@@ -391,7 +391,7 @@ typedef struct Cell_ActiveParam_s { ...@@ -391,7 +391,7 @@ typedef struct Cell_ActiveParam_s {
// eNB: ENB_APP -> RRC messages // eNB: ENB_APP -> RRC messages
typedef struct RrcConfigurationReq_s { typedef struct RrcConfigurationReq_s {
uint32_t cell_identity; uint32_t cell_identity[MAX_NUM_CCs];
uint16_t tac[MAX_NUM_CCs]; uint16_t tac[MAX_NUM_CCs];
long cellBarred[MAX_NUM_CCs]; long cellBarred[MAX_NUM_CCs];
long intraFreqReselection[MAX_NUM_CCs]; long intraFreqReselection[MAX_NUM_CCs];
......
...@@ -361,8 +361,8 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc) { ...@@ -361,8 +361,8 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc) {
// In the configuration file it is in seconds. For RRC it has to be in milliseconds // In the configuration file it is in seconds. For RRC it has to be in milliseconds
RRCcfg->rrc_inactivity_timer_thres = (*ENBParamList.paramarray[i][ENB_RRC_INACTIVITY_THRES_IDX].uptr) * 1000; RRCcfg->rrc_inactivity_timer_thres = (*ENBParamList.paramarray[i][ENB_RRC_INACTIVITY_THRES_IDX].uptr) * 1000;
RRCcfg->cell_identity = enb_id;
for(int M=0; M < MAX_NUM_CCs; M++) { for(int M=0; M < MAX_NUM_CCs; M++) {
RRCcfg->cell_identity[M] = enb_id;
RRCcfg->tac[M] = *ENBParamList.paramarray[i][ENB_TRACKING_AREA_CODE_IDX].uptr; RRCcfg->tac[M] = *ENBParamList.paramarray[i][ENB_TRACKING_AREA_CODE_IDX].uptr;
RRCcfg->cellBarred[M] = LTE_SystemInformationBlockType1__cellAccessRelatedInfo__cellBarred_notBarred; RRCcfg->cellBarred[M] = LTE_SystemInformationBlockType1__cellAccessRelatedInfo__cellBarred_notBarred;
RRCcfg->intraFreqReselection[M] = LTE_SystemInformationBlockType1__cellAccessRelatedInfo__intraFreqReselection_allowed; RRCcfg->intraFreqReselection[M] = LTE_SystemInformationBlockType1__cellAccessRelatedInfo__intraFreqReselection_allowed;
......
...@@ -998,12 +998,11 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier, ...@@ -998,12 +998,11 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
(*sib1)->cellAccessRelatedInfo.trackingAreaCode.size = 2; (*sib1)->cellAccessRelatedInfo.trackingAreaCode.size = 2;
(*sib1)->cellAccessRelatedInfo.trackingAreaCode.bits_unused = 0; (*sib1)->cellAccessRelatedInfo.trackingAreaCode.bits_unused = 0;
// 28 bits // 28 bits
/* MultiCell: Now using "configuration->Need Cell[CC_id]" except "configuration->cell identity" for multiple CC */
if(NULL == (*sib1)->cellAccessRelatedInfo.cellIdentity.buf){(*sib1)->cellAccessRelatedInfo.cellIdentity.buf = MALLOC(8);} if(NULL == (*sib1)->cellAccessRelatedInfo.cellIdentity.buf){(*sib1)->cellAccessRelatedInfo.cellIdentity.buf = MALLOC(8);}
(*sib1)->cellAccessRelatedInfo.cellIdentity.buf[0] = (configuration->Nid_cell[CC_id] >> 20) & 0xff; (*sib1)->cellAccessRelatedInfo.cellIdentity.buf[0] = (configuration->cell_identity[CC_id] >> 20) & 0xff;
(*sib1)->cellAccessRelatedInfo.cellIdentity.buf[1] = (configuration->Nid_cell[CC_id] >> 12) & 0xff; (*sib1)->cellAccessRelatedInfo.cellIdentity.buf[1] = (configuration->cell_identity[CC_id] >> 12) & 0xff;
(*sib1)->cellAccessRelatedInfo.cellIdentity.buf[2] = (configuration->Nid_cell[CC_id] >> 4) & 0xff; (*sib1)->cellAccessRelatedInfo.cellIdentity.buf[2] = (configuration->cell_identity[CC_id] >> 4) & 0xff;
(*sib1)->cellAccessRelatedInfo.cellIdentity.buf[3] = (configuration->Nid_cell[CC_id] << 4) & 0xf0; (*sib1)->cellAccessRelatedInfo.cellIdentity.buf[3] = (configuration->cell_identity[CC_id] << 4) & 0xf0;
(*sib1)->cellAccessRelatedInfo.cellIdentity.size=4; (*sib1)->cellAccessRelatedInfo.cellIdentity.size=4;
(*sib1)->cellAccessRelatedInfo.cellIdentity.bits_unused=4; (*sib1)->cellAccessRelatedInfo.cellIdentity.bits_unused=4;
......
...@@ -703,6 +703,12 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req) ...@@ -703,6 +703,12 @@ int sys_add_reconfig_cell(struct SYSTEM_CTRL_REQ *req)
RRC_CONFIGURATION_REQ(msg_p).tac[cell_index] += (SIB1_CELL_ACCESS_REL_INFO.trackingAreaCode[i] << (15 - i)); RRC_CONFIGURATION_REQ(msg_p).tac[cell_index] += (SIB1_CELL_ACCESS_REL_INFO.trackingAreaCode[i] << (15 - i));
} }
LOG_A(ENB_SS_SYS_TASK, "[SIB1] tac: 0x%x\n", RRC_CONFIGURATION_REQ(msg_p).tac[cell_index]); LOG_A(ENB_SS_SYS_TASK, "[SIB1] tac: 0x%x\n", RRC_CONFIGURATION_REQ(msg_p).tac[cell_index]);
RRC_CONFIGURATION_REQ(msg_p).cell_identity[cell_index] = 0;
for (int i = 0; i < 28; i++)
{
RRC_CONFIGURATION_REQ(msg_p).cell_identity[cell_index] += (SIB1_CELL_ACCESS_REL_INFO.cellIdentity[i] << (27 - i));
}
LOG_A(ENB_SS_SYS_TASK, "[SIB1] Cell Identity: 0x%x\n", RRC_CONFIGURATION_REQ(msg_p).cell_identity[cell_index]);
RRC_CONFIGURATION_REQ(msg_p).cellBarred[cell_index] = SIB1_CELL_ACCESS_REL_INFO.cellBarred; RRC_CONFIGURATION_REQ(msg_p).cellBarred[cell_index] = SIB1_CELL_ACCESS_REL_INFO.cellBarred;
RRC_CONFIGURATION_REQ(msg_p).intraFreqReselection[cell_index] = SIB1_CELL_ACCESS_REL_INFO.intraFreqReselection; RRC_CONFIGURATION_REQ(msg_p).intraFreqReselection[cell_index] = SIB1_CELL_ACCESS_REL_INFO.intraFreqReselection;
} }
......
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