From 1e8719c18307a58136f99d4aad02228c6f3e6f90 Mon Sep 17 00:00:00 2001 From: laurent Date: Tue, 20 Sep 2022 10:15:14 +0200 Subject: [PATCH] first-fix-rrc-mac-interface --- openair1/PHY/CODING/3gpplte_turbo_decoder.c | 2 +- .../PHY/CODING/3gpplte_turbo_decoder_sse.c | 2 +- .../CODING/3gpplte_turbo_decoder_sse_16bit.c | 4 +- openair1/PHY/CODING/crc_byte.c | 4 +- .../lte_dl_mbsfn_channel_estimation.c | 4 +- openair2/ENB_APP/enb_config.c | 56 +-- openair2/F1AP/f1ap_du_rrc_message_transfer.c | 78 +-- openair2/LAYER2/MAC/config.c | 375 ++++++-------- openair2/LAYER2/MAC/mac_proto.h | 77 +-- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 27 +- openair2/LAYER2/PDCP_v10.1.0/pdcp.h | 1 - openair2/RRC/LTE/rrc_defs.h | 3 +- openair2/RRC/LTE/rrc_eNB.c | 360 ++++---------- openair2/RRC/LTE/rrc_eNB_M2AP.c | 468 ++++++------------ openair3/M3AP/m3ap_MME_interface_management.c | 8 +- 15 files changed, 493 insertions(+), 976 deletions(-) diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder.c b/openair1/PHY/CODING/3gpplte_turbo_decoder.c index 572127a5e0..52860e096f 100644 --- a/openair1/PHY/CODING/3gpplte_turbo_decoder.c +++ b/openair1/PHY/CODING/3gpplte_turbo_decoder.c @@ -901,7 +901,7 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y, llr_t *yp = y; unsigned short i,pi; unsigned char iteration_cnt=0; - unsigned int crc,oldcrc; + uint32_t crc, oldcrc; unsigned char crc_len,temp; if (crc_type > 3) { diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c index 9d4e6a312a..547ea11db7 100644 --- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c +++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c @@ -1898,7 +1898,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y, __m128i *yp128; unsigned int i,j,iind;//,pi; unsigned char iteration_cnt=0; - unsigned int crc,oldcrc,crc_len; + uint32_t crc, oldcrc, crc_len; uint8_t temp; __m128i tmp128[(n+8)>>3]; __m128i tmp, zeros=_mm_setzero_si128(); diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c index a91519d010..12ecc959c6 100644 --- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c +++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c @@ -1001,7 +1001,7 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y, llr_t *s,*s1,*s2,*yp1,*yp2,*yp; unsigned int i,j,iind;//,pi; unsigned char iteration_cnt=0; - unsigned int crc,oldcrc,crc_len; + uint32_t crc, oldcrc, crc_len; uint8_t temp; #if defined(__x86_64__) || defined(__i386__) __m128i *yp128; @@ -1308,7 +1308,7 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y, // check status on output if (iteration_cnt>1) { - oldcrc= *((unsigned int *)(&decoded_bytes[(n>>3)-crc_len])); + memcpy(&oldcrc, &decoded_bytes[(n >> 3) - crc_len], sizeof(oldcrc)); switch (crc_type) { case CRC24_A: diff --git a/openair1/PHY/CODING/crc_byte.c b/openair1/PHY/CODING/crc_byte.c index 471b26fe24..604c316093 100644 --- a/openair1/PHY/CODING/crc_byte.c +++ b/openair1/PHY/CODING/crc_byte.c @@ -298,11 +298,11 @@ crc8 (unsigned char * inptr, int bitlen) resbit = (bitlen % 8); while (octetlen-- > 0) { - crc = crc8Table[(*inptr++) ^ (crc >> 24)] << 24; + crc = ((unsigned int)crc8Table[(*inptr++) ^ (crc >> 24)]) << 24; } if (resbit > 0) - crc = (crc << resbit) ^ (crc8Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 24); + crc = (crc << resbit) ^ ((unsigned int)(crc8Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))]) << 24); return crc; } diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c index 4ad050ccea..05e27de1a6 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c @@ -289,8 +289,8 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue, ch[13] = (short)(((int)pil[6]*rxF[1] + (int)pil[7]*rxF[0])>>15); ch[14] = ch[12]>>1; ch[15] = ch[13]>>1; - ch[10] = (ch[8]/3)+(ch[12]<<1)/3; - ch[11] = (ch[9]/3)+(ch[13]<<1)/3; + ch[10] = (ch[8] / 3) + (ch[12] * 2) / 3; + ch[11] = (ch[9] / 3) + (ch[13] * 2) / 3; /* printf("rb %d: pil3 (%d,%d) x (%d,%d) = (%d,%d)\n", rb,pil[6],pil[7],rxF[0],rxF[1],ch[12],ch[13]);*/ // ------------------------5th pilot------------------------ diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index 390700db58..94ebd6409f 100644 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -3076,43 +3076,25 @@ void configure_du_mac(int inst) { eNB_RRC_INST *rrc = RC.rrc[inst]; rrc_eNB_carrier_data_t *carrier = &rrc->carrier[0]; LOG_I(ENB_APP,"Configuring MAC/L1 %d, carrier->sib2 %p\n",inst,&carrier->sib2->radioResourceConfigCommon); - rrc_mac_config_req_eNB(inst, 0, - carrier->physCellId, - carrier->p_eNB, - carrier->Ncp, - carrier->sib1->freqBandIndicator, - carrier->dl_CarrierFreq, - carrier->pbch_repetition, - 0, // rnti - (LTE_BCCH_BCH_Message_t *) &carrier->mib, - (LTE_RadioResourceConfigCommonSIB_t *) &carrier->sib2->radioResourceConfigCommon, - (LTE_RadioResourceConfigCommonSIB_t *) &carrier->sib2_BR->radioResourceConfigCommon, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - carrier->sib1->tdd_Config, - NULL, - &carrier->sib1->schedulingInfoList, - carrier->ul_CarrierFreq, - carrier->sib2->freqInfo.ul_Bandwidth, - &carrier->sib2->freqInfo.additionalSpectrumEmission, - (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, - carrier->MBMS_flag, - (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, - (LTE_PMCH_InfoList_r9_t *) NULL, - NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.physCellId = carrier->physCellId; + tmp.p_eNB = carrier->p_eNB; + tmp.Ncp = carrier->Ncp; + tmp.eutra_band = carrier->sib1->freqBandIndicator; + tmp.dl_CarrierFreq = carrier->dl_CarrierFreq; + tmp.pbch_repetition = carrier->pbch_repetition; + tmp.mib = &carrier->mib; + tmp.radioResourceConfigCommon = &carrier->sib2->radioResourceConfigCommon; + tmp.LTE_radioResourceConfigCommon_BR = &carrier->sib2_BR->radioResourceConfigCommon; + tmp.tdd_Config = carrier->sib1->tdd_Config; + tmp.schedulingInfoList = &carrier->sib1->schedulingInfoList; + tmp.ul_CarrierFreq = carrier->ul_CarrierFreq; + tmp.ul_Bandwidth = carrier->sib2->freqInfo.ul_Bandwidth; + tmp.additionalSpectrumEmission = &carrier->sib2->freqInfo.additionalSpectrumEmission; + tmp.mbsfn_SubframeConfigList = carrier->sib2->mbsfn_SubframeConfigList; + tmp.MBMS_Flag = carrier->MBMS_flag; + tmp.mbsfn_AreaInfoList = &carrier->sib13->mbsfn_AreaInfoList_r9; + rrc_mac_config_req_eNB(inst, &tmp); } void handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) { diff --git a/openair2/F1AP/f1ap_du_rrc_message_transfer.c b/openair2/F1AP/f1ap_du_rrc_message_transfer.c index c0f8b79839..e9279c6ac0 100644 --- a/openair2/F1AP/f1ap_du_rrc_message_transfer.c +++ b/openair2/F1AP/f1ap_du_rrc_message_transfer.c @@ -256,38 +256,13 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, if (radioResourceConfigDedicated->mac_MainConfig) mac_MainConfig = &radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue; - - rrc_mac_config_req_eNB( - ctxt.instance, - 0, //primaryCC_id, - 0,0,0,0,0,0, - ctxt.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - radioResourceConfigDedicated->physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - mac_MainConfig, - 1, - SRB1_logicalChannelConfig, - NULL, // measGapConfig, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL - , 0, (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL - , - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.rnti = ctxt.rnti; + tmp.physicalConfigDedicated = radioResourceConfigDedicated->physicalConfigDedicated; + tmp.mac_MainConfig = mac_MainConfig; + tmp.logicalChannelIdentity = 1; + tmp.logicalChannelConfig = SRB1_logicalChannelConfig; + rrc_mac_config_req_eNB(ctxt.instance, &tmp); break; } // case @@ -433,37 +408,14 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, if (DRB_configList->list.array[i]->logicalChannelIdentity) { DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->logicalChannelIdentity; } - - rrc_mac_config_req_eNB( - ctxt.instance, - 0,0,0,0,0,0, - 0, - ue_context_p->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - mac_MainConfig, - DRB2LCHAN[i], - DRB_configList->list.array[i]->logicalChannelConfig, - measGapConfig, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL - , 0, (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.rnti = ue_context_p->ue_context.rnti; + tmp.physicalConfigDedicated = physicalConfigDedicated; + tmp.mac_MainConfig = mac_MainConfig; + tmp.logicalChannelIdentity = DRB2LCHAN[i]; + tmp.logicalChannelConfig = DRB_configList->list.array[i]->logicalChannelConfig; + tmp.measGapConfig = measGapConfig; + rrc_mac_config_req_eNB(ctxt.instance, &tmp); } } else { // remove LCHAN from MAC/PHY AssertFatal(1==0,"Can't handle this yet in DU\n"); diff --git a/openair2/LAYER2/MAC/config.c b/openair2/LAYER2/MAC/config.c index 91f4197bfe..dfc1d28daa 100644 --- a/openair2/LAYER2/MAC/config.c +++ b/openair2/LAYER2/MAC/config.c @@ -735,160 +735,114 @@ config_dedicated_scell(int Mod_idP, LTE_SCellToAddMod_r10_t *sCellToAddMod_r10) { } - -int rrc_mac_config_req_eNB(module_id_t Mod_idP, - int CC_idP, - int physCellId, - int p_eNB, - int Ncp, int eutra_band, uint32_t dl_CarrierFreq, - int pbch_repetition, - rnti_t rntiP, - LTE_BCCH_BCH_Message_t *mib, - LTE_RadioResourceConfigCommonSIB_t * - radioResourceConfigCommon, - LTE_RadioResourceConfigCommonSIB_t *radioResourceConfigCommon_BR, - struct LTE_PhysicalConfigDedicated - *physicalConfigDedicated, - LTE_SCellToAddMod_r10_t *sCellToAddMod_r10, - LTE_MeasObjectToAddMod_t **measObj, - LTE_MAC_MainConfig_t *mac_MainConfig, - long logicalChannelIdentity, - LTE_LogicalChannelConfig_t *logicalChannelConfig, - LTE_MeasGapConfig_t *measGapConfig, - LTE_TDD_Config_t *tdd_Config, - LTE_MobilityControlInfo_t *mobilityControlInfo, - LTE_SchedulingInfoList_t *schedulingInfoList, - uint32_t ul_CarrierFreq, - long *ul_Bandwidth, - LTE_AdditionalSpectrumEmission_t * - additionalSpectrumEmission, - struct LTE_MBSFN_SubframeConfigList - *mbsfn_SubframeConfigList, - uint8_t MBMS_Flag, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList, - LTE_PMCH_InfoList_r9_t *pmch_InfoList, - LTE_SystemInformationBlockType1_v1310_IEs_t *sib1_v13ext, - uint8_t FeMBMS_Flag, - LTE_BCCH_DL_SCH_Message_MBMS_t *mib_fembms, - LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo_fembms, - struct LTE_NonMBSFN_SubframeConfig_r14 *nonMBSFN_SubframeConfig, - LTE_SystemInformationBlockType1_MBMS_r14_t *sib1_mbms_r14_fembms, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms, - LTE_MBSFNAreaConfiguration_r9_t*mbms_AreaConfig - ) { +int rrc_mac_config_req_eNB(module_id_t Mod_idP, rrc_mac_config_req_eNB_t *param) +{ int i; int UE_id = -1; eNB_MAC_INST *eNB = RC.mac[Mod_idP]; UE_info_t *UE_info= &eNB->UE_info; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_IN); - LOG_D(MAC, "RC.mac:%p mib:%p\n", RC.mac, mib); - if (mib != NULL) { + if (param->mib != NULL) { if (RC.mac == NULL) l2_init_eNB(); //mac_top_init_eNB(); - RC.mac[Mod_idP]->common_channels[CC_idP].mib = mib; - RC.mac[Mod_idP]->common_channels[CC_idP].physCellId = physCellId; - RC.mac[Mod_idP]->common_channels[CC_idP].p_eNB = p_eNB; - RC.mac[Mod_idP]->common_channels[CC_idP].Ncp = Ncp; - RC.mac[Mod_idP]->common_channels[CC_idP].eutra_band = eutra_band; - RC.mac[Mod_idP]->common_channels[CC_idP].dl_CarrierFreq = dl_CarrierFreq; + eNB->common_channels[param->CC_id].mib = param->mib; + eNB->common_channels[param->CC_id].physCellId = param->physCellId; + eNB->common_channels[param->CC_id].p_eNB = param->p_eNB; + eNB->common_channels[param->CC_id].Ncp = param->Ncp; + eNB->common_channels[param->CC_id].eutra_band = param->eutra_band; + eNB->common_channels[param->CC_id].dl_CarrierFreq = param->dl_CarrierFreq; LOG_A(MAC, - "Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d,Nid_cell %d,p %d,DL freq %u,phich_config.resource %d, phich_config.duration %d)\n", + "Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d,Nid_cell %d,p %d,DL freq %u,phich_config.resource %ld, phich_config.duration %ld)\n", Mod_idP, - CC_idP, - eutra_band, - to_prb((int)mib->message.dl_Bandwidth), - physCellId, - p_eNB, - dl_CarrierFreq, - (int)mib->message.phich_Config.phich_Resource, - (int)mib->message.phich_Config.phich_Duration); - config_mib(Mod_idP,CC_idP, - eutra_band, - mib->message.dl_Bandwidth, - &mib->message.phich_Config, - physCellId, - Ncp, - p_eNB, - dl_CarrierFreq, - ul_CarrierFreq, - pbch_repetition - ); - mac_init_cell_params(Mod_idP,CC_idP); + param->CC_id, + param->eutra_band, + to_prb(param->mib->message.dl_Bandwidth), + param->physCellId, + param->p_eNB, + param->dl_CarrierFreq, + param->mib->message.phich_Config.phich_Resource, + param->mib->message.phich_Config.phich_Duration); + config_mib(Mod_idP, + param->CC_id, + param->eutra_band, + param->mib->message.dl_Bandwidth, + ¶m->mib->message.phich_Config, + param->physCellId, + param->Ncp, + param->p_eNB, + param->dl_CarrierFreq, + param->ul_CarrierFreq, + param->pbch_repetition); + mac_init_cell_params(Mod_idP, param->CC_id); - if (schedulingInfoList!=NULL) { - RC.mac[Mod_idP]->common_channels[CC_idP].tdd_Config = tdd_Config; - RC.mac[Mod_idP]->common_channels[CC_idP].schedulingInfoList = schedulingInfoList; - config_sib1(Mod_idP,CC_idP,tdd_Config); + if (param->schedulingInfoList != NULL) { + eNB->common_channels[param->CC_id].tdd_Config = param->tdd_Config; + eNB->common_channels[param->CC_id].schedulingInfoList = param->schedulingInfoList; + config_sib1(Mod_idP, param->CC_id, param->tdd_Config); } //TODO MBMS this must be passed through function /*if (schedulingInfoList_MBMS!=NULL) { - RC.mac[Mod_idP]->common_channels[CC_idP].schedulingInfoList_MBMS = schedulingInfoList_MBMS; - config_sib1_mbms(Mod_idP,CC_idP,tdd_Config); + eNB->common_channels[param->CC_id].schedulingInfoList_MBMS = schedulingInfoList_MBMS; + config_sib1_mbms(Mod_idP,param->CC_id,tdd_Config); }*/ - if (sib1_v13ext != NULL) { - RC.mac[Mod_idP]->common_channels[CC_idP].sib1_v13ext = sib1_v13ext; + if (param->sib1_ext_r13 != NULL) { + eNB->common_channels[param->CC_id].sib1_v13ext = param->sib1_ext_r13; } - AssertFatal(radioResourceConfigCommon != NULL, "radioResourceConfigCommon is null\n"); + AssertFatal(param->radioResourceConfigCommon != NULL, "radioResourceConfigCommon is null\n"); LOG_I(MAC, "[CONFIG]SIB2/3 Contents (partial)\n"); - LOG_I(MAC, "[CONFIG]pusch_config_common.n_SB = %ld\n", - radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.n_SB); - LOG_I(MAC, "[CONFIG]pusch_config_common.hoppingMode = %ld\n", - radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.hoppingMode); - LOG_I(MAC, "[CONFIG]pusch_config_common.pusch_HoppingOffset = %ld\n", - radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.pusch_HoppingOffset); - LOG_I(MAC, "[CONFIG]pusch_config_common.enable64QAM = %d\n", - radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.enable64QAM); - LOG_I(MAC, "[CONFIG]pusch_config_common.groupHoppingEnabled = %d\n", - radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupHoppingEnabled); - LOG_I(MAC, "[CONFIG]pusch_config_common.groupAssignmentPUSCH = %ld\n", - radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH); - LOG_I(MAC, "[CONFIG]pusch_config_common.sequenceHoppingEnabled = %d\n", - radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled); - LOG_I(MAC, "[CONFIG]pusch_config_common.cyclicShift = %ld\n", - radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift); - AssertFatal(radioResourceConfigCommon->rach_ConfigCommon.maxHARQ_Msg3Tx > 0, - "radioResourceconfigCommon %d == 0\n", - (int) radioResourceConfigCommon->rach_ConfigCommon.maxHARQ_Msg3Tx); - RC.mac[Mod_idP]->common_channels[CC_idP].radioResourceConfigCommon = radioResourceConfigCommon; - RC.mac[Mod_idP]->common_channels[CC_idP].radioResourceConfigCommon_BR = radioResourceConfigCommon_BR; + LOG_I(MAC, "[CONFIG]pusch_config_common.n_SB = %ld\n", param->radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.n_SB); + LOG_I(MAC, "[CONFIG]pusch_config_common.hoppingMode = %ld\n", param->radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.hoppingMode); + LOG_I(MAC, "[CONFIG]pusch_config_common.pusch_HoppingOffset = %ld\n", param->radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.pusch_HoppingOffset); + LOG_I(MAC, "[CONFIG]pusch_config_common.enable64QAM = %d\n", param->radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.enable64QAM); + LOG_I(MAC, "[CONFIG]pusch_config_common.groupHoppingEnabled = %d\n", param->radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupHoppingEnabled); + LOG_I(MAC, "[CONFIG]pusch_config_common.groupAssignmentPUSCH = %ld\n", param->radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH); + LOG_I(MAC, "[CONFIG]pusch_config_common.sequenceHoppingEnabled = %d\n", param->radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled); + LOG_I(MAC, "[CONFIG]pusch_config_common.cyclicShift = %ld\n", param->radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift); + AssertFatal(param->radioResourceConfigCommon->rach_ConfigCommon.maxHARQ_Msg3Tx > 0, "radioResourceconfigCommon %ld == 0\n", param->radioResourceConfigCommon->rach_ConfigCommon.maxHARQ_Msg3Tx); + eNB->common_channels[param->CC_id].radioResourceConfigCommon = param->radioResourceConfigCommon; + eNB->common_channels[param->CC_id].radioResourceConfigCommon_BR = param->LTE_radioResourceConfigCommon_BR; - if (ul_CarrierFreq > 0) RC.mac[Mod_idP]->common_channels[CC_idP].ul_CarrierFreq = ul_CarrierFreq; + if (param->ul_CarrierFreq > 0) + eNB->common_channels[param->CC_id].ul_CarrierFreq = param->ul_CarrierFreq; - if (ul_Bandwidth) RC.mac[Mod_idP]->common_channels[CC_idP].ul_Bandwidth = *ul_Bandwidth; - else RC.mac[Mod_idP]->common_channels[CC_idP].ul_Bandwidth = RC.mac[Mod_idP]->common_channels[CC_idP].mib->message.dl_Bandwidth; + if (param->ul_Bandwidth) + eNB->common_channels[param->CC_id].ul_Bandwidth = *param->ul_Bandwidth; + else + eNB->common_channels[param->CC_id].ul_Bandwidth = eNB->common_channels[param->CC_id].mib->message.dl_Bandwidth; - config_sib2(Mod_idP, CC_idP, radioResourceConfigCommon, - radioResourceConfigCommon_BR, - NULL, ul_Bandwidth, additionalSpectrumEmission, - mbsfn_SubframeConfigList, - mib->message.dl_Bandwidth); + config_sib2(Mod_idP, + param->CC_id, + param->radioResourceConfigCommon, + param->LTE_radioResourceConfigCommon_BR, + NULL, + param->ul_Bandwidth, + param->additionalSpectrumEmission, + param->mbsfn_SubframeConfigList, + param->mib->message.dl_Bandwidth); } // mib != NULL - if (mobilityControlInfo !=NULL) { - if ((UE_id = add_new_ue(Mod_idP, CC_idP, - rntiP, -1, - 0 - )) == -1) { + if (param->mobilityControlInfo != NULL) { + if ((UE_id = add_new_ue(Mod_idP, param->CC_id, param->rnti, -1, 0)) == -1) { LOG_E(MAC, "%s:%d: fatal\n", __FILE__, __LINE__); abort(); } } - if (logicalChannelIdentity > 0) { // is SRB1,2 or DRB - if ((UE_id = find_UE_id(Mod_idP, rntiP)) < 0) { - LOG_E(MAC,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + if (param->logicalChannelIdentity > 0) { // is SRB1,2 or DRB + if ((UE_id = find_UE_id(Mod_idP, param->rnti)) < 0) { + LOG_E(MAC, "Configuration received for unknown UE (%x), shouldn't happen\n", param->rnti); return(-1); } int idx = -1; UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; for (int i = 0; i < sched_ctrl->dl_lc_num; ++i) { - if (sched_ctrl->dl_lc_ids[i] == logicalChannelIdentity) { + if (sched_ctrl->dl_lc_ids[i] == param->logicalChannelIdentity) { /* TODO this might also mean we have to remove it, not clear */ idx = i; break; @@ -896,190 +850,169 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP, } if (idx < 0) { sched_ctrl->dl_lc_num++; - sched_ctrl->dl_lc_ids[sched_ctrl->dl_lc_num-1] = logicalChannelIdentity; + sched_ctrl->dl_lc_ids[sched_ctrl->dl_lc_num - 1] = param->logicalChannelIdentity; sched_ctrl->dl_lc_bytes[sched_ctrl->dl_lc_num-1] = 0; - LOG_I(MAC, "UE %d RNTI %x adding LC %ld idx %d to scheduling control (total %d)\n", UE_id, rntiP, logicalChannelIdentity, sched_ctrl->dl_lc_num-1, sched_ctrl->dl_lc_num); - if (logicalChannelIdentity == 1) { // if it is SRB1, add SRB2 directly because RRC does not indicate this separately + LOG_I(MAC, "UE %d RNTI %x adding LC %ld idx %d to scheduling control (total %d)\n", UE_id, param->rnti, param->logicalChannelIdentity, sched_ctrl->dl_lc_num - 1, sched_ctrl->dl_lc_num); + if (param->logicalChannelIdentity == 1) { // if it is SRB1, add SRB2 directly because RRC does not indicate this separately sched_ctrl->dl_lc_num++; sched_ctrl->dl_lc_ids[sched_ctrl->dl_lc_num-1] = 2; sched_ctrl->dl_lc_bytes[sched_ctrl->dl_lc_num-1] = 0; - LOG_I(MAC, "UE %d RNTI %x adding LC 2 idx %d to scheduling control (total %d)\n", UE_id, rntiP, sched_ctrl->dl_lc_num-1, sched_ctrl->dl_lc_num); + LOG_I(MAC, "UE %d RNTI %x adding LC 2 idx %d to scheduling control (total %d)\n", UE_id, param->rnti, sched_ctrl->dl_lc_num - 1, sched_ctrl->dl_lc_num); } } } // SRB2_lchan_config->choice.explicitValue.ul_SpecificParameters->logicalChannelGroup - if (logicalChannelConfig != NULL) { // check for eMTC specific things - UE_id = find_UE_id(Mod_idP, rntiP); + if (param->logicalChannelConfig != NULL) { // check for eMTC specific things + UE_id = find_UE_id(Mod_idP, param->rnti); if (UE_id<0) { - LOG_E(MAC,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + LOG_E(MAC, "Configuration received for unknown UE (%x), shouldn't happen\n", param->rnti); return(-1); } - if (logicalChannelConfig) { - UE_info->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = *logicalChannelConfig->ul_SpecificParameters->logicalChannelGroup; - UE_info->UE_template[CC_idP][UE_id].lcgidpriority[logicalChannelIdentity] = logicalChannelConfig->ul_SpecificParameters->priority; - } else UE_info->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = 0; + if (param->logicalChannelConfig) { + UE_info->UE_template[param->CC_id][UE_id].lcgidmap[param->logicalChannelIdentity] = *param->logicalChannelConfig->ul_SpecificParameters->logicalChannelGroup; + UE_info->UE_template[param->CC_id][UE_id].lcgidpriority[param->logicalChannelIdentity] = param->logicalChannelConfig->ul_SpecificParameters->priority; + } else + UE_info->UE_template[param->CC_id][UE_id].lcgidmap[param->logicalChannelIdentity] = 0; } - if (physicalConfigDedicated != NULL) { - UE_id = find_UE_id(Mod_idP, rntiP); + if (param->physicalConfigDedicated != NULL) { + UE_id = find_UE_id(Mod_idP, param->rnti); if (UE_id<0) { - LOG_E(MAC,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + LOG_E(MAC, "Configuration received for unknown UE (%x), shouldn't happen\n", param->rnti); return(-1); } - UE_info->UE_template[CC_idP][UE_id].physicalConfigDedicated = physicalConfigDedicated; - LOG_I(MAC,"Added physicalConfigDedicated %p for %d.%d\n",physicalConfigDedicated,CC_idP,UE_id); + UE_info->UE_template[param->CC_id][UE_id].physicalConfigDedicated = param->physicalConfigDedicated; + LOG_I(MAC, "Added physicalConfigDedicated %p for %d.%d\n", param->physicalConfigDedicated, param->CC_id, UE_id); } - if (sCellToAddMod_r10 != NULL) { + if (param->sCellToAddMod_r10 != NULL) { if (UE_id<0) { - LOG_E(MAC,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + LOG_E(MAC, "Configuration received for unknown UE (%x), shouldn't happen\n", param->rnti); return(-1); } - AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); - config_dedicated_scell(Mod_idP, rntiP, sCellToAddMod_r10); + AssertFatal(UE_id >= 0, "Configuration received for unknown UE (%x), shouldn't happen\n", param->rnti); + config_dedicated_scell(Mod_idP, param->rnti, param->sCellToAddMod_r10); } - if (mbsfn_SubframeConfigList != NULL) { - LOG_I(MAC, - "[eNB %d][CONFIG] Received %d subframe allocation pattern for MBSFN\n", - Mod_idP, mbsfn_SubframeConfigList->list.count); - RC.mac[Mod_idP]->common_channels[0].num_sf_allocation_pattern = mbsfn_SubframeConfigList->list.count; + if (param->mbsfn_SubframeConfigList != NULL) { + LOG_I(MAC, "[eNB %d][CONFIG] Received %d subframe allocation pattern for MBSFN\n", Mod_idP, param->mbsfn_SubframeConfigList->list.count); + eNB->common_channels[0].num_sf_allocation_pattern = param->mbsfn_SubframeConfigList->list.count; - for (i = 0; i < mbsfn_SubframeConfigList->list.count; i++) { - RC.mac[Mod_idP]->common_channels[0].mbsfn_SubframeConfig[i] = mbsfn_SubframeConfigList->list.array[i]; - LOG_I(MAC, - "[eNB %d][CONFIG] MBSFN_SubframeConfig[%d] pattern is %x\n", - Mod_idP, i, - RC.mac[Mod_idP]-> - common_channels[0].mbsfn_SubframeConfig[i]-> - subframeAllocation.choice.oneFrame.buf[0]); + for (i = 0; i < param->mbsfn_SubframeConfigList->list.count; i++) { + eNB->common_channels[0].mbsfn_SubframeConfig[i] = param->mbsfn_SubframeConfigList->list.array[i]; + LOG_I(MAC, "[eNB %d][CONFIG] MBSFN_SubframeConfig[%d] pattern is %x\n", Mod_idP, i, eNB->common_channels[0].mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0]); } - RC.mac[Mod_idP]->common_channels[0].MBMS_flag = MBMS_Flag; - config_sib2_mbsfn_part(Mod_idP,0,mbsfn_SubframeConfigList); + eNB->common_channels[0].MBMS_flag = param->MBMS_Flag; + config_sib2_mbsfn_part(Mod_idP, 0, param->mbsfn_SubframeConfigList); } - if (nonMBSFN_SubframeConfig != NULL) { + if (param->nonMBSFN_SubframeConfig != NULL) { LOG_D(MAC, "[eNB %d][CONFIG] Received a non MBSFN subframe allocation pattern (%x,%x):%x for FeMBMS-CAS\n", - Mod_idP, nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0],nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1], - nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1]>>7 ); - //RC.mac[Mod_idP]->common_channels[0].non_mbsfn_SubframeConfig = (int)(nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]<<1) | (int)(nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1]>>7); - RC.mac[Mod_idP]->common_channels[0].non_mbsfn_SubframeConfig = nonMBSFN_SubframeConfig; - nfapi_config_request_t *cfg = &RC.mac[Mod_idP]->config[CC_idP]; + Mod_idP, + param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0], + param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1], + param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0] << 1 | param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1] >> 7); + // eNB->common_channels[0].non_mbsfn_SubframeConfig = (int)(nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]<<1) | (int)(nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1]>>7); + eNB->common_channels[0].non_mbsfn_SubframeConfig = param->nonMBSFN_SubframeConfig; + nfapi_config_request_t *cfg = &eNB->config[param->CC_id]; cfg->fembms_config.non_mbsfn_config_flag.value = 1; cfg->fembms_config.non_mbsfn_config_flag.tl.tag = NFAPI_FEMBMS_CONFIG_NON_MBSFN_FLAG_TAG; cfg->num_tlv++; - cfg->fembms_config.non_mbsfn_subframeconfig.value = (nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1]>>7); + cfg->fembms_config.non_mbsfn_subframeconfig.value = (param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0] << 1 | param->nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[1] >> 7); cfg->fembms_config.non_mbsfn_subframeconfig.tl.tag = NFAPI_FEMBMS_CONFIG_NON_MBSFN_SUBFRAMECONFIG_TAG; cfg->num_tlv++; - cfg->fembms_config.radioframe_allocation_period.value = nonMBSFN_SubframeConfig->radioFrameAllocationPeriod_r14; + cfg->fembms_config.radioframe_allocation_period.value = param->nonMBSFN_SubframeConfig->radioFrameAllocationPeriod_r14; cfg->fembms_config.radioframe_allocation_period.tl.tag = NFAPI_FEMBMS_CONFIG_RADIOFRAME_ALLOCATION_PERIOD_TAG; cfg->num_tlv++; - cfg->fembms_config.radioframe_allocation_offset.value = nonMBSFN_SubframeConfig->radioFrameAllocationOffset_r14; + cfg->fembms_config.radioframe_allocation_offset.value = param->nonMBSFN_SubframeConfig->radioFrameAllocationOffset_r14; cfg->fembms_config.radioframe_allocation_offset.tl.tag = NFAPI_FEMBMS_CONFIG_RADIOFRAME_ALLOCATION_OFFSET_TAG; cfg->num_tlv++; //We need to reuse current MCH scheduler //TOCHECK whether we can simply reuse current mbsfn_SubframeConfig stuff - RC.mac[Mod_idP]->common_channels[0].FeMBMS_flag = FeMBMS_Flag; + eNB->common_channels[0].FeMBMS_flag = param->FeMBMS_Flag; } - if (mbsfn_AreaInfoList != NULL) { + if (param->mbsfn_AreaInfoList != NULL) { // One eNB could be part of multiple mbsfn syc area, this could change over time so reset each time - LOG_I(MAC,"[eNB %d][CONFIG] Received %d MBSFN Area Info\n", Mod_idP, mbsfn_AreaInfoList->list.count); - RC.mac[Mod_idP]->common_channels[0].num_active_mbsfn_area = mbsfn_AreaInfoList->list.count; + LOG_I(MAC, "[eNB %d][CONFIG] Received %d MBSFN Area Info\n", Mod_idP, param->mbsfn_AreaInfoList->list.count); + eNB->common_channels[0].num_active_mbsfn_area = param->mbsfn_AreaInfoList->list.count; - for (i =0; i< mbsfn_AreaInfoList->list.count; i++) { - RC.mac[Mod_idP]->common_channels[0].mbsfn_AreaInfo[i] = mbsfn_AreaInfoList->list.array[i]; - LOG_I(MAC,"[eNB %d][CONFIG] MBSFN_AreaInfo[%d]: MCCH Repetition Period = %ld\n", Mod_idP,i, - RC.mac[Mod_idP]->common_channels[0].mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9); - // config_sib13(Mod_idP,0,i,RC.mac[Mod_idP]->common_channels[0].mbsfn_AreaInfo[i]->mbsfn_AreaId_r9); - config_sib13(Mod_idP,0,i,RC.mac[Mod_idP]->common_channels[0].mbsfn_AreaInfo[i]->mbsfn_AreaId_r9); + for (i = 0; i < param->mbsfn_AreaInfoList->list.count; i++) { + eNB->common_channels[0].mbsfn_AreaInfo[i] = param->mbsfn_AreaInfoList->list.array[i]; + LOG_I(MAC, "[eNB %d][CONFIG] MBSFN_AreaInfo[%d]: MCCH Repetition Period = %ld\n", Mod_idP, i, eNB->common_channels[0].mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9); + // config_sib13(Mod_idP,0,i,eNB->common_channels[0].mbsfn_AreaInfo[i]->mbsfn_AreaId_r9); + config_sib13(Mod_idP, 0, i, eNB->common_channels[0].mbsfn_AreaInfo[i]->mbsfn_AreaId_r9); } } - if(mbms_AreaConfig != NULL) { - RC.mac[Mod_idP]->common_channels[0].commonSF_AllocPeriod_r9 = mbms_AreaConfig->commonSF_AllocPeriod_r9; - LOG_I(MAC, "[eNB %d][CONFIG] LTE_MBSFNAreaConfiguration_r9_t(%p) commonSF_AllocPeriod_r9(%d)\n",Mod_idP,mbms_AreaConfig, RC.mac[Mod_idP]->common_channels[0].commonSF_AllocPeriod_r9); - for(i=0; i < mbms_AreaConfig->commonSF_Alloc_r9.list.count; i++){ - RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = mbms_AreaConfig->commonSF_Alloc_r9.list.array[i]; - LOG_I(RRC,"[eNB %d][CONFIG] MBSFNArea[%d] commonSF_Alloc_r9: radioframeAllocationPeriod(%ldn),radioframeAllocationOffset(%ld), subframeAllocation(%x)\n" - ,Mod_idP,i - ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationPeriod - ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationOffset - ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0]); + if (param->mbms_AreaConfiguration != NULL) { + eNB->common_channels[0].commonSF_AllocPeriod_r9 = param->mbms_AreaConfiguration->commonSF_AllocPeriod_r9; + LOG_I(MAC, "[eNB %d][CONFIG] commonSF_AllocPeriod_r9(%d)\n", Mod_idP, eNB->common_channels[0].commonSF_AllocPeriod_r9); + for (i = 0; i < param->mbms_AreaConfiguration->commonSF_Alloc_r9.list.count; i++) { + eNB->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = param->mbms_AreaConfiguration->commonSF_Alloc_r9.list.array[i]; + LOG_I(RRC, + "[eNB %d][CONFIG] MBSFNArea[%d] commonSF_Alloc_r9: radioframeAllocationPeriod(%ldn),radioframeAllocationOffset(%ld), subframeAllocation(%x)\n", + Mod_idP, + i, + eNB->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationPeriod, + eNB->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationOffset, + eNB->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0]); } } - if (pmch_InfoList != NULL) { + if (param->pmch_InfoList != NULL) { // LOG_I(MAC,"DUY: lcid when entering rrc_mac config_req is %02d\n",(pmch_InfoList->list.array[0]->mbms_SessionInfoList_r9.list.array[0]->logicalChannelIdentity_r9)); - LOG_I(MAC, "[CONFIG] Number of PMCH in this MBSFN Area %d\n", - pmch_InfoList->list.count); + LOG_I(MAC, "[CONFIG] Number of PMCH in this MBSFN Area %d\n", param->pmch_InfoList->list.count); - for (i = 0; i < pmch_InfoList->list.count; i++) { - RC.mac[Mod_idP]->common_channels[0].pmch_Config[i] = - &pmch_InfoList->list.array[i]->pmch_Config_r9; - LOG_I(MAC, - "[CONFIG] PMCH[%d]: This PMCH stop (sf_AllocEnd_r9) at subframe %ldth\n", - i, - RC.mac[Mod_idP]->common_channels[0]. - pmch_Config[i]->sf_AllocEnd_r9); - LOG_I(MAC, "[CONFIG] PMCH[%d]: mch_Scheduling_Period = %ld\n", - i, - RC.mac[Mod_idP]->common_channels[0]. - pmch_Config[i]->mch_SchedulingPeriod_r9); - LOG_I(MAC, "[CONFIG] PMCH[%d]: dataMCS = %ld\n", i, - RC.mac[Mod_idP]->common_channels[0]. - pmch_Config[i]->dataMCS_r9); + for (i = 0; i < param->pmch_InfoList->list.count; i++) { + eNB->common_channels[0].pmch_Config[i] = ¶m->pmch_InfoList->list.array[i]->pmch_Config_r9; + LOG_I(MAC, "[CONFIG] PMCH[%d]: This PMCH stop (sf_AllocEnd_r9) at subframe %ldth\n", i, eNB->common_channels[0].pmch_Config[i]->sf_AllocEnd_r9); + LOG_I(MAC, "[CONFIG] PMCH[%d]: mch_Scheduling_Period = %ld\n", i, eNB->common_channels[0].pmch_Config[i]->mch_SchedulingPeriod_r9); + LOG_I(MAC, "[CONFIG] PMCH[%d]: dataMCS = %ld\n", i, eNB->common_channels[0].pmch_Config[i]->dataMCS_r9); // MBMS session info list in each MCH - RC.mac[Mod_idP]->common_channels[0].mbms_SessionList[i] = - &pmch_InfoList->list.array[i]->mbms_SessionInfoList_r9; - LOG_I(MAC, "PMCH[%d] Number of session (MTCH) is: %d\n", i, - RC.mac[Mod_idP]->common_channels[0]. - mbms_SessionList[i]->list.count); - for(int ii=0; ii < RC.mac[Mod_idP]->common_channels[0].mbms_SessionList[i]->list.count;ii++){ - LOG_I(MAC, "PMCH[%d] MBMS Session[%d] is: %lu\n", i,ii, - RC.mac[Mod_idP]->common_channels[0].mbms_SessionList[i]->list.array[ii]->logicalChannelIdentity_r9); - } + eNB->common_channels[0].mbms_SessionList[i] = ¶m->pmch_InfoList->list.array[i]->mbms_SessionInfoList_r9; + LOG_I(MAC, "PMCH[%d] Number of session (MTCH) is: %d\n", i, eNB->common_channels[0].mbms_SessionList[i]->list.count); + for (int ii = 0; ii < eNB->common_channels[0].mbms_SessionList[i]->list.count; ii++) { + LOG_I(MAC, "PMCH[%d] MBMS Session[%d] is: %lu\n", i, ii, eNB->common_channels[0].mbms_SessionList[i]->list.array[ii]->logicalChannelIdentity_r9); + } } } - LOG_D(MAC, "%s() %s:%d RC.mac[Mod_idP]->if_inst->PHY_config_req:%p\n", __FUNCTION__, __FILE__, __LINE__, RC.mac[Mod_idP]->if_inst->PHY_config_req); + LOG_D(MAC, "%s() %s:%d eNB->if_inst->PHY_config_req:%p\n", __FUNCTION__, __FILE__, __LINE__, eNB->if_inst->PHY_config_req); // if in nFAPI mode - if ( - (NFAPI_MODE == NFAPI_MODE_PNF ||NFAPI_MODE == NFAPI_MODE_VNF) && - (RC.mac[Mod_idP]->if_inst->PHY_config_req == NULL) - ) { - while(RC.mac[Mod_idP]->if_inst->PHY_config_req == NULL) { - // DJP AssertFatal(RC.mac[Mod_idP]->if_inst->PHY_config_req != NULL,"if_inst->phy_config_request is null\n"); + if ((NFAPI_MODE == NFAPI_MODE_PNF || NFAPI_MODE == NFAPI_MODE_VNF) && (eNB->if_inst->PHY_config_req == NULL)) { + while (eNB->if_inst->PHY_config_req == NULL) { + // DJP AssertFatal(eNB->if_inst->PHY_config_req != NULL,"if_inst->phy_config_request is null\n"); usleep(100 * 1000); LOG_I(MAC, "Waiting for PHY_config_req\n"); } } - if (radioResourceConfigCommon != NULL) { + if (param->radioResourceConfigCommon != NULL) { PHY_Config_t phycfg; phycfg.Mod_id = Mod_idP; - phycfg.CC_id = CC_idP; - phycfg.cfg = &RC.mac[Mod_idP]->config[CC_idP]; + phycfg.CC_id = param->CC_id; + phycfg.cfg = &eNB->config[param->CC_id]; - if (RC.mac[Mod_idP]->if_inst->PHY_config_req) RC.mac[Mod_idP]->if_inst->PHY_config_req(&phycfg); + if (eNB->if_inst->PHY_config_req) + eNB->if_inst->PHY_config_req(&phycfg); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT); } - RC.mac[Mod_idP]->scheduler_mode = global_scheduler_mode; + eNB->scheduler_mode = global_scheduler_mode; return(0); } - //----------------------------------------------------------------------------- /* * Configure local CDRX timers and thresholds following the drx_configuration input diff --git a/openair2/LAYER2/MAC/mac_proto.h b/openair2/LAYER2/MAC/mac_proto.h index 889c727fdd..6e9d36e242 100644 --- a/openair2/LAYER2/MAC/mac_proto.h +++ b/openair2/LAYER2/MAC/mac_proto.h @@ -915,43 +915,46 @@ int generate_dlsch_header(unsigned char *mac_header, @param mbms_AreaConfiguration pointer to eMBMS MBSFN Area Configuration */ -int rrc_mac_config_req_eNB(module_id_t module_idP, - int CC_id, - int physCellId, - int p_eNB, - int Ncp, - int eutra_band, uint32_t dl_CarrierFreq, - int pbch_repetition, - rnti_t rntiP, - LTE_BCCH_BCH_Message_t *mib, - LTE_RadioResourceConfigCommonSIB_t *radioResourceConfigCommon, - LTE_RadioResourceConfigCommonSIB_t *LTE_radioResourceConfigCommon_BR, - struct LTE_PhysicalConfigDedicated *physicalConfigDedicated, - LTE_SCellToAddMod_r10_t *sCellToAddMod_r10, - LTE_MeasObjectToAddMod_t **measObj, - LTE_MAC_MainConfig_t *mac_MainConfig, - long logicalChannelIdentity, - LTE_LogicalChannelConfig_t *logicalChannelConfig, - LTE_MeasGapConfig_t *measGapConfig, - LTE_TDD_Config_t *tdd_Config, - LTE_MobilityControlInfo_t *mobilityControlInfo, - LTE_SchedulingInfoList_t *schedulingInfoList, - uint32_t ul_CarrierFreq, - long *ul_Bandwidth, - LTE_AdditionalSpectrumEmission_t *additionalSpectrumEmission, - struct LTE_MBSFN_SubframeConfigList *mbsfn_SubframeConfigList, - uint8_t MBMS_Flag, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList, - LTE_PMCH_InfoList_r9_t *pmch_InfoList, - LTE_SystemInformationBlockType1_v1310_IEs_t *sib1_ext_r13, - uint8_t FeMBMS_Flag, - LTE_BCCH_DL_SCH_Message_MBMS_t *mib_fembms, - LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo_fembms, - struct LTE_NonMBSFN_SubframeConfig_r14 *nonMBSFN_SubframeConfig, - LTE_SystemInformationBlockType1_MBMS_r14_t *sib1_mbms_r14_fembms, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms, - LTE_MBSFNAreaConfiguration_r9_t * mbms_AreaConfiguration - ); +typedef struct { + int CC_id; + int physCellId; + int p_eNB; + int Ncp; + int eutra_band; + uint32_t dl_CarrierFreq; + int pbch_repetition; + rnti_t rnti; + LTE_BCCH_BCH_Message_t *mib; + LTE_RadioResourceConfigCommonSIB_t *radioResourceConfigCommon; + LTE_RadioResourceConfigCommonSIB_t *LTE_radioResourceConfigCommon_BR; + struct LTE_PhysicalConfigDedicated *physicalConfigDedicated; + LTE_SCellToAddMod_r10_t *sCellToAddMod_r10; + LTE_MeasObjectToAddMod_t **measObj; + LTE_MAC_MainConfig_t *mac_MainConfig; + long logicalChannelIdentity; + LTE_LogicalChannelConfig_t *logicalChannelConfig; + LTE_MeasGapConfig_t *measGapConfig; + LTE_TDD_Config_t *tdd_Config; + LTE_MobilityControlInfo_t *mobilityControlInfo; + LTE_SchedulingInfoList_t *schedulingInfoList; + uint32_t ul_CarrierFreq; + long *ul_Bandwidth; + LTE_AdditionalSpectrumEmission_t *additionalSpectrumEmission; + struct LTE_MBSFN_SubframeConfigList *mbsfn_SubframeConfigList; + uint8_t MBMS_Flag; + LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList; + LTE_PMCH_InfoList_r9_t *pmch_InfoList; + LTE_SystemInformationBlockType1_v1310_IEs_t *sib1_ext_r13; + uint8_t FeMBMS_Flag; + LTE_BCCH_DL_SCH_Message_MBMS_t *mib_fembms; + LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo_fembms; + struct LTE_NonMBSFN_SubframeConfig_r14 *nonMBSFN_SubframeConfig; + LTE_SystemInformationBlockType13_r9_t *sib1_mbms_r14_fembms; + LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms; + LTE_MBSFNAreaConfiguration_r9_t *mbms_AreaConfiguration; +} rrc_mac_config_req_eNB_t; + +int rrc_mac_config_req_eNB(module_id_t module_idP, rrc_mac_config_req_eNB_t *); /** \brief RRC eNB Configuration primitive for PHY/MAC. Allows configuration of PHY/MAC resources based on System Information (SI), RRCConnectionSetup and RRCConnectionReconfiguration messages. @param Mod_id Instance ID of ue diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index ccee837403..d9cf4eac3d 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -596,9 +596,16 @@ bool pdcp_data_req(protocol_ctxt_t *ctxt_pP, * so we return true afterwards */ - for (pdcp_uid=0; pdcp_uid< MAX_MOBILES_PER_ENB; pdcp_uid++) { - if (pdcp_enb[ctxt_pP->module_id].rnti[pdcp_uid] == ctxt_pP->rnti ) - break; + if (ctxt_pP->enb_flag == ENB_FLAG_NO) + pdcp_uid = 0; + else + for (pdcp_uid = 0; pdcp_uid < MAX_MOBILES_PER_ENB; pdcp_uid++) + if (pdcp_enb[ctxt_pP->module_id].rnti[pdcp_uid] == ctxt_pP->rnti) + break; + + if (pdcp_uid == MAX_MOBILES_PER_ENB) { + LOG_W(PDCP, "stats on not recorded rnti: %x\n", ctxt_pP->rnti); + pdcp_uid = 0; } LOG_D(PDCP,"ueid %d lcid %d tx seq num %d\n", pdcp_uid, (int)(rb_idP+rb_offset), current_sn); @@ -1158,10 +1165,16 @@ pdcp_data_ind( } /* Update PDCP statistics */ - for (pdcp_uid=0; pdcp_uid< MAX_MOBILES_PER_ENB; pdcp_uid++) { - if (pdcp_enb[ctxt_pP->module_id].rnti[pdcp_uid] == ctxt_pP->rnti ) { - break; - } + if (ctxt_pP->enb_flag == ENB_FLAG_NO) + pdcp_uid = 0; + else + for (pdcp_uid = 0; pdcp_uid < MAX_MOBILES_PER_ENB; pdcp_uid++) + if (pdcp_enb[ctxt_pP->module_id].rnti[pdcp_uid] == ctxt_pP->rnti) + break; + + if (pdcp_uid == MAX_MOBILES_PER_ENB) { + LOG_W(PDCP, "stats on not recorded rnti: %x\n", ctxt_pP->rnti); + pdcp_uid = 0; } Pdcp_stats_rx[ctxt_pP->module_id][pdcp_uid][rb_idP+rb_offset]++; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index 8cbc49d756..898bf984de 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -123,7 +123,6 @@ extern uint32_t Pdcp_stats_rx_outoforder[MAX_eNB][MAX_MOBILES_PER_ENB][NB_RB_MAX void pdcp_update_perioidical_stats(const protocol_ctxt_t *const ctxt_pP); - /*Packet Probing for agent PDCP*/ //uint64_t *pdcp_packet_counter; //uint64_t *pdcp_size_packet; diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h index f5841b09f8..4d1dfaf5aa 100644 --- a/openair2/RRC/LTE/rrc_defs.h +++ b/openair2/RRC/LTE/rrc_defs.h @@ -704,8 +704,7 @@ typedef struct { LTE_BCCH_DL_SCH_Message_t systemInformation; LTE_BCCH_DL_SCH_Message_t systemInformation_BR; LTE_BCCH_BCH_Message_MBMS_t mib_fembms; - LTE_BCCH_DL_SCH_Message_MBMS_t siblock1_MBMS; - LTE_BCCH_DL_SCH_Message_MBMS_t systemInformation_MBMS; + LTE_BCCH_DL_SCH_Message_MBMS_t siblock1_MBMS; LTE_SchedulingInfo_MBMS_r14_t schedulingInfo_MBMS; LTE_PLMN_IdentityInfo_t PLMN_identity_info_MBMS[6]; LTE_MCC_MNC_Digit_t dummy_mcc_MBMS[6][3], dummy_mnc_MBMS[6][3]; diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index e227a3e75b..f9d314f992 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -464,48 +464,38 @@ init_SI( if (NODE_IS_MONOLITHIC(rrc->node_type)) { LOG_D(RRC, "About to call rrc_mac_config_req_eNB for ngran_eNB\n"); - rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, - carrier->physCellId, - carrier->p_eNB, - carrier->Ncp, - carrier->sib1->freqBandIndicator, - carrier->dl_CarrierFreq, - carrier->pbch_repetition, - 0, // rnti - (LTE_BCCH_BCH_Message_t *) &carrier->mib, - (LTE_RadioResourceConfigCommonSIB_t *) &carrier->sib2->radioResourceConfigCommon, - (LTE_RadioResourceConfigCommonSIB_t *) &carrier->sib2_BR->radioResourceConfigCommon, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - carrier->sib1->tdd_Config, - NULL, - &carrier->sib1->schedulingInfoList, - carrier->ul_CarrierFreq, - carrier->sib2->freqInfo.ul_Bandwidth, - &carrier->sib2->freqInfo.additionalSpectrumEmission, - (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, - carrier->MBMS_flag, - (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, - (LTE_PMCH_InfoList_r9_t *) NULL, - sib1_v13ext, - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag, - (carrier->sib1_MBMS==NULL?(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL:(LTE_BCCH_DL_SCH_Message_MBMS_t *)carrier->sib1_MBMS),//(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (carrier->sib1_MBMS==NULL - ? (struct LTE_NonMBSFN_SubframeConfig_r14 *)NULL - : (struct LTE_NonMBSFN_SubframeConfig_r14 *)carrier->sib1_MBMS->nonMBSFN_SubframeConfig_r14),//(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (carrier->sib1_MBMS==NULL - ? (LTE_SystemInformationBlockType1_MBMS_r14_t *)NULL - : (LTE_SystemInformationBlockType1_MBMS_r14_t *)carrier->sib1_MBMS->systemInformationBlockType13_r14),//(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (carrier->sib1_MBMS==NULL - ? (LTE_MBSFN_AreaInfoList_r9_t *)NULL - : (LTE_MBSFN_AreaInfoList_r9_t *)&carrier->sib1_MBMS->systemInformationBlockType13_r14->mbsfn_AreaInfoList_r9),//(LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *)NULL - ); + rrc_mac_config_req_eNB_t tmp = { + .CC_id = CC_id, + .physCellId = carrier->physCellId, + .p_eNB = carrier->p_eNB, + .Ncp = carrier->Ncp, + .eutra_band = carrier->sib1->freqBandIndicator, + .dl_CarrierFreq = carrier->dl_CarrierFreq, + .pbch_repetition = carrier->pbch_repetition, + .mib = &carrier->mib, + .radioResourceConfigCommon = &carrier->sib2->radioResourceConfigCommon, + .tdd_Config = carrier->sib1->tdd_Config, + .schedulingInfoList = &carrier->sib1->schedulingInfoList, + .ul_CarrierFreq = carrier->ul_CarrierFreq, + .ul_Bandwidth = carrier->sib2->freqInfo.ul_Bandwidth, + .additionalSpectrumEmission = &carrier->sib2->freqInfo.additionalSpectrumEmission, + .mbsfn_SubframeConfigList = carrier->sib2->mbsfn_SubframeConfigList, + .MBMS_Flag = carrier->MBMS_flag, + .sib1_ext_r13 = sib1_v13ext, + .FeMBMS_Flag = RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag, + .mib_fembms = &carrier->siblock1_MBMS, + }; + if (carrier->sib2_BR) + tmp.LTE_radioResourceConfigCommon_BR = &carrier->sib2_BR->radioResourceConfigCommon; + if (carrier->sib13) + tmp.mbsfn_AreaInfoList = &carrier->sib13->mbsfn_AreaInfoList_r9; + if (carrier->sib1_MBMS) { + tmp.nonMBSFN_SubframeConfig = carrier->sib1_MBMS->nonMBSFN_SubframeConfig_r14; + tmp.sib1_mbms_r14_fembms = carrier->sib1_MBMS->systemInformationBlockType13_r14; + if (carrier->sib1_MBMS->systemInformationBlockType13_r14) + tmp.mbsfn_AreaInfoList_fembms = &carrier->sib1_MBMS->systemInformationBlockType13_r14->mbsfn_AreaInfoList_r9; + } + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } /* set flag to indicate that cell information is configured. This is required @@ -564,34 +554,10 @@ init_MCCH( // LOG_I(RRC, "DUY: serviceID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->tmgi_r9.serviceId_r9.buf[2]); // LOG_I(RRC, "DUY: session ID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->sessionId_r9->buf[0]); if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(enb_mod_idP, CC_id, - 0,0,0,0,0, 0, 0,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL, 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9), - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.pmch_InfoList = &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9; + rrc_mac_config_req_eNB(enb_mod_idP, &tmp); } //LOG_I(RRC,"DUY: lcid after rrc_mac_config_req is %02d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->logicalChannelIdentity_r9); @@ -1363,43 +1329,14 @@ rrc_eNB_generate_RRCConnectionReestablishment( PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) { - rrc_mac_config_req_eNB(module_id, - ue_context->primaryCC_id, - 0, - 0, - 0, - 0, - 0, - 0, - rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated * ) ue_context->physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context->mac_MainConfig, - 1, - SRB1_logicalChannelConfig, - ue_context->measGapConfig, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, - NULL, - NULL, - (LTE_MBSFN_SubframeConfigList_t *) NULL, 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *) NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context->primaryCC_id; + tmp.physicalConfigDedicated = ue_context->physicalConfigDedicated; + tmp.mac_MainConfig = ue_context->mac_MainConfig; + tmp.logicalChannelIdentity = 1; + tmp.logicalChannelConfig = SRB1_logicalChannelConfig; + tmp.measGapConfig = ue_context->measGapConfig; + rrc_mac_config_req_eNB(module_id, &tmp); break; } } // if ((*SRB_configList)->list.array[cnt]->srb_Identity == 1) @@ -4785,38 +4722,14 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct LOG_D(RRC, "handover_config [FRAME %05d][RRC_eNB][MOD %02d][][--- MAC_CONFIG_REQ (SRB1 UE %x) --->][MAC_eNB][MOD %02d][]\n", ctxt_pP->frame, ctxt_pP->module_id, ue_context_pP->ue_context.rnti, ctxt_pP->module_id); - rrc_mac_config_req_eNB( - ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - 0,0,0,0,0,0, - ue_context_pP->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - ue_context_pP->ue_context.physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_pP->ue_context.mac_MainConfig, - 1, - NULL,//SRB1_logicalChannelConfig, - ue_context_pP->ue_context.measGapConfig, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *) NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, - NULL, - NULL, - (LTE_MBSFN_SubframeConfigList_t *) NULL, - 0, (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context_pP->ue_context.primaryCC_id; + tmp.rnti = ue_context_pP->ue_context.rnti; + tmp.physicalConfigDedicated = ue_context_pP->ue_context.physicalConfigDedicated; + tmp.mac_MainConfig = ue_context_pP->ue_context.mac_MainConfig; + tmp.logicalChannelIdentity = 1; + tmp.measGapConfig = ue_context_pP->ue_context.measGapConfig; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); // Configure target eNB SRB2 /// SRB2 SRB2_config = CALLOC(1, sizeof(*SRB2_config)); @@ -5446,38 +5359,15 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc // Add a new user (called during the HO procedure) LOG_I(RRC, "rrc_eNB_target_add_ue_handover module_id %d rnti %d\n", ctxt_pP->module_id, ctxt_pP->rnti); // Configure MAC for the target - rrc_mac_config_req_eNB( - ctxt_pP->module_id, - ue_context_p->ue_context.primaryCC_id, - 0,0,0,0,0, 0, - ue_context_p->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - ue_context_p->ue_context.physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_p->ue_context.mac_MainConfig, - 1, - NULL,//SRB1_logicalChannelConfig, - ue_context_p->ue_context.measGapConfig, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *) ue_context_p->ue_context.mobilityInfo, - (LTE_SchedulingInfoList_t *) NULL, - 0, - NULL, - NULL, - (LTE_MBSFN_SubframeConfigList_t *) NULL, 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context_p->ue_context.primaryCC_id; + tmp.rnti = ue_context_p->ue_context.rnti; + tmp.physicalConfigDedicated = ue_context_p->ue_context.physicalConfigDedicated; + tmp.mac_MainConfig = ue_context_p->ue_context.mac_MainConfig; + tmp.logicalChannelIdentity = 1; + tmp.measGapConfig = ue_context_p->ue_context.measGapConfig; + tmp.mobilityControlInfo = ue_context_p->ue_context.mobilityInfo; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } //----------------------------------------------------------------------------- @@ -5655,43 +5545,15 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( } if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - 0, - 0, - 0, - 0, - 0, - 0, - ue_context_pP->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - ue_context_pP->ue_context.physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_pP->ue_context.mac_MainConfig, - DRB2LCHAN[i], - DRB_configList->list.array[i]->logicalChannelConfig, - ue_context_pP->ue_context.measGapConfig, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, - NULL, - NULL, - (LTE_MBSFN_SubframeConfigList_t *) NULL, 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *) NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context_pP->ue_context.primaryCC_id; + tmp.rnti = ue_context_pP->ue_context.rnti; + tmp.physicalConfigDedicated = ue_context_pP->ue_context.physicalConfigDedicated; + tmp.mac_MainConfig = ue_context_pP->ue_context.mac_MainConfig; + tmp.logicalChannelIdentity = DRB2LCHAN[i]; + tmp.logicalChannelConfig = DRB_configList->list.array[i]->logicalChannelConfig; + tmp.measGapConfig = ue_context_pP->ue_context.measGapConfig; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } } else { // remove LCHAN from MAC/PHY if (DRB_configList->list.array[i]->logicalChannelIdentity) { @@ -5702,44 +5564,13 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - 0, - 0, - 0, - 0, - 0, - 0, - ue_context_pP->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - ue_context_pP->ue_context.physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *) NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_pP->ue_context.mac_MainConfig, - DRB2LCHAN[i], - (LTE_LogicalChannelConfig_t *) NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, - NULL, - NULL, - NULL, - 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *) NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context_pP->ue_context.primaryCC_id; + tmp.rnti = ue_context_pP->ue_context.rnti; + tmp.physicalConfigDedicated = ue_context_pP->ue_context.physicalConfigDedicated; + tmp.mac_MainConfig = ue_context_pP->ue_context.mac_MainConfig; + tmp.logicalChannelIdentity = DRB2LCHAN[i]; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } } // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0) } // end if (DRB_configList->list.array[i]) @@ -5875,34 +5706,15 @@ rrc_eNB_generate_RRCConnectionSetup( PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - 0,0,0,0,0, 0, - ue_context_pP->ue_context.rnti, - (LTE_BCCH_BCH_Message_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - ue_context_pP->ue_context.physicalConfigDedicated, - (LTE_SCellToAddMod_r10_t *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - ue_context_pP->ue_context.mac_MainConfig, - 1, - SRB1_logicalChannelConfig, - ue_context_pP->ue_context.measGapConfig, - (LTE_TDD_Config_t *) NULL, - NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL, - 0, (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t *) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = ue_context_pP->ue_context.primaryCC_id; + tmp.rnti = ue_context_pP->ue_context.rnti; + tmp.physicalConfigDedicated = ue_context_pP->ue_context.physicalConfigDedicated; + tmp.mac_MainConfig = ue_context_pP->ue_context.mac_MainConfig; + tmp.logicalChannelIdentity = 1; + tmp.logicalChannelConfig = SRB1_logicalChannelConfig; + tmp.measGapConfig = ue_context_pP->ue_context.measGapConfig; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); break; } } diff --git a/openair2/RRC/LTE/rrc_eNB_M2AP.c b/openair2/RRC/LTE/rrc_eNB_M2AP.c index 5516308a10..9b59dba045 100644 --- a/openair2/RRC/LTE/rrc_eNB_M2AP.c +++ b/openair2/RRC/LTE/rrc_eNB_M2AP.c @@ -357,43 +357,15 @@ static void rrc_M2AP_init_MCCH( RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESS_COUNTING[sync_area].Active = 1; } + if (NODE_IS_MONOLITHIC(rrc->node_type)) { + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.pmch_InfoList = &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9; + tmp.mbms_AreaConfiguration = RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message; + rrc_mac_config_req_eNB(enb_mod_idP, &tmp); + } - if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(enb_mod_idP, CC_id, - 0,0,0,0,0, - 0, - 0,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL - , - 0, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9), - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*)(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message) - ); - } - - return; + return; } @@ -414,56 +386,31 @@ static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib13_part=NULL; LTE_MBSFN_SubframeConfigList_t *MBSFNSubframeConfigList/*,*MBSFNSubframeConfigList_copy*/; - asn_enc_rval_t enc_rval; - - LTE_BCCH_DL_SCH_Message_t *bcch_message = &RC.rrc[Mod_id]->carrier[CC_id].systemInformation; - LTE_BCCH_DL_SCH_Message_MBMS_t *bcch_message_fembms = &RC.rrc[Mod_id]->carrier[CC_id].siblock1_MBMS; - uint8_t *buffer; - uint8_t *buffer_fembms; - LTE_SystemInformationBlockType2_t **sib2; - - - LTE_MBSFN_AreaInfoList_r9_t *MBSFNArea_list/*,*MBSFNArea_list_copy*/; - LTE_SystemInformationBlockType13_r9_t **sib13 = &RC.rrc[Mod_id]->carrier[CC_id].sib13; - struct LTE_MBSFN_AreaInfo_r9 *MBSFN_Area1; - - LTE_SystemInformationBlockType1_MBMS_r14_t **sib1_MBMS = &RC.rrc[Mod_id]->carrier[CC_id].sib1_MBMS; + asn_enc_rval_t enc_rval; + LTE_BCCH_DL_SCH_Message_t *bcch_message = &RC.rrc[Mod_id]->carrier[CC_id].systemInformation; + LTE_BCCH_DL_SCH_Message_MBMS_t *bcch_message_fembms = &RC.rrc[Mod_id]->carrier[CC_id].siblock1_MBMS; + LTE_MBSFN_AreaInfoList_r9_t *MBSFNArea_list /*,*MBSFNArea_list_copy*/; + LTE_SystemInformationBlockType13_r9_t *sib13 = RC.rrc[Mod_id]->carrier[CC_id].sib13; + if (!sib13) { + LOG_I(RRC, "[eNB %d] sib13 is null, it should get created\n", Mod_id); + } + struct LTE_MBSFN_AreaInfo_r9 *MBSFN_Area1; + uint8_t *encoded_buffer; if(ctxt_pP->brOption){ - buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23_BR; - sib2 = &RC.rrc[Mod_id]->carrier[CC_id].sib2_BR; - LOG_I(RRC,"Running SIB2/3 Encoding for eMTC\n"); - + AssertFatal(RC.rrc[Mod_id]->carrier[CC_id].SIB23_BR, "[eNB %d] sib2 is null, exiting\n", Mod_id); + encoded_buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23_BR; + LOG_I(RRC, "Running SIB2/3 Encoding for eMTC\n"); }else { - buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23; - sib2 = &RC.rrc[Mod_id]->carrier[CC_id].sib2; + AssertFatal(RC.rrc[Mod_id]->carrier[CC_id].SIB23, "[eNB %d] sib2 is null, exiting\n", Mod_id); + encoded_buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23; } - buffer_fembms = RC.rrc[Mod_id]->carrier[CC_id].SIB1_MBMS; - - - if (bcch_message) { - //memset(bcch_message,0,sizeof(LTE_BCCH_DL_SCH_Message_t)); - } else { - LOG_E(RRC,"[eNB %d] BCCH_MESSAGE is null, exiting\n", Mod_id); - exit(-1); - } - - if (!sib2) { - LOG_E(RRC,"[eNB %d] sib2 is null, exiting\n", Mod_id); - exit(-1); - } - - if(!sib13){ - LOG_I(RRC,"[eNB %d] sib13 is null, it should get created\n",Mod_id); - } - - - if(!sib1_MBMS){ + if (!RC.rrc[Mod_id]->carrier[CC_id].sib1_MBMS) { LOG_I(RRC,"[eNB %d] sib1_MBMS is null, it should get created\n",Mod_id); } @@ -498,34 +445,35 @@ static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( break; case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920: break; - case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920: - *sib13=&typeandinfo->choice.sib13_v920; - (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9=LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; - (*sib13)->notificationConfig_r9.notificationOffset_r9=0; - (*sib13)->notificationConfig_r9.notificationSF_Index_r9=1; - // MBSFN-AreaInfoList - MBSFNArea_list= &(*sib13)->mbsfn_AreaInfoList_r9;//CALLOC(1,sizeof(*MBSFNArea_list)); - memset(MBSFNArea_list,0,sizeof(*MBSFNArea_list)); + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920: + sib13 = &typeandinfo->choice.sib13_v920; + RC.rrc[Mod_id]->carrier[CC_id].sib13 = sib13; + sib13->notificationConfig_r9.notificationRepetitionCoeff_r9 = LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; + sib13->notificationConfig_r9.notificationOffset_r9 = 0; + sib13->notificationConfig_r9.notificationSF_Index_r9 = 1; + // MBSFN-AreaInfoList + MBSFNArea_list = &sib13->mbsfn_AreaInfoList_r9; // CALLOC(1,sizeof(*MBSFNArea_list)); + memset(MBSFNArea_list, 0, sizeof(*MBSFNArea_list)); - for( j=0; j < m2ap_setup_resp->num_mcch_config_per_mbsfn; j++){ - // MBSFN Area 1 - MBSFN_Area1= CALLOC(1, sizeof(*MBSFN_Area1)); - MBSFN_Area1->mbsfn_AreaId_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].mbsfn_area; - MBSFN_Area1->non_MBSFNregionLength= m2ap_setup_resp->mcch_config_per_mbsfn[j].pdcch_length; - MBSFN_Area1->notificationIndicator_r9= 0; - MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].repetition_period;//LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; - MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].offset; // in accordance with mbsfn subframe configuration in sib2 - MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].modification_period; + for (j = 0; j < m2ap_setup_resp->num_mcch_config_per_mbsfn; j++) { + // MBSFN Area 1 + MBSFN_Area1 = CALLOC(1, sizeof(*MBSFN_Area1)); + MBSFN_Area1->mbsfn_AreaId_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[j].mbsfn_area; + MBSFN_Area1->non_MBSFNregionLength = m2ap_setup_resp->mcch_config_per_mbsfn[j].pdcch_length; + MBSFN_Area1->notificationIndicator_r9 = 0; + MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[j].repetition_period; // LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; + MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[j].offset; // in accordance with mbsfn subframe configuration in sib2 + MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[j].modification_period; - // Subframe Allocation Info - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1); - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1; - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=m2ap_setup_resp->mcch_config_per_mbsfn[j].subframe_allocation_info<<2; // FDD: SF1 - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2; - MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].mcs; - ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); - } - break; + // Subframe Allocation Info + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf = MALLOC(1); + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size = 1; + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0] = m2ap_setup_resp->mcch_config_per_mbsfn[j].subframe_allocation_info << 2; // FDD: SF1 + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused = 2; + MBSFN_Area1->mcch_Config_r9.signallingMCS_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[j].mcs; + ASN_SEQUENCE_ADD(&MBSFNArea_list->list, MBSFN_Area1); + } + break; case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib14_v1130: break; case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib15_v1130: @@ -548,110 +496,99 @@ static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( break; case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib26_v1530: break; - case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2: + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2: - LOG_I(RRC,"Adding MBSFN subframe Configuration 1 to SIB2, %p %p\n",&typeandinfo->choice.sib2,*sib2); + LOG_I(RRC, "Adding MBSFN subframe Configuration 1 to SIB2\n"); - for(j=0; j < m2ap_mbms_scheduling_information->num_mbms_area_config_list ; j++) { + for (j = 0; j < m2ap_mbms_scheduling_information->num_mbms_area_config_list; j++) { + (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList = CALLOC(1, sizeof(struct LTE_MBSFN_SubframeConfigList)); + MBSFNSubframeConfigList = (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList; - (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct LTE_MBSFN_SubframeConfigList)); - MBSFNSubframeConfigList = (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList; + for (l = 0; l < m2ap_mbms_scheduling_information->mbms_area_config_list[j].num_mbms_sf_config_list; l++) { + LTE_MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1; + sib2_mbsfn_SubframeConfig1 = CALLOC(1, sizeof(*sib2_mbsfn_SubframeConfig1)); + memset((void *)sib2_mbsfn_SubframeConfig1, 0, sizeof(*sib2_mbsfn_SubframeConfig1)); - for(l=0; l < m2ap_mbms_scheduling_information->mbms_area_config_list[j].num_mbms_sf_config_list; l++){ - LTE_MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1; - sib2_mbsfn_SubframeConfig1= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig1)); - memset((void *)sib2_mbsfn_SubframeConfig1,0,sizeof(*sib2_mbsfn_SubframeConfig1)); + sib2_mbsfn_SubframeConfig1->radioframeAllocationPeriod = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_period; + sib2_mbsfn_SubframeConfig1->radioframeAllocationOffset = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_offset; - sib2_mbsfn_SubframeConfig1->radioframeAllocationPeriod = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_period; - sib2_mbsfn_SubframeConfig1->radioframeAllocationOffset = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_offset; + if (m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].is_four_sf) { + LOG_I(RRC, "is_four_sf\n"); + sib2_mbsfn_SubframeConfig1->subframeAllocation.present = LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf = MALLOC(3); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size = 3; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused = 0; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = + ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation >> 8) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = + ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation >> 16) & 0xFF); - if(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].is_four_sf){ - LOG_I(RRC,"is_four_sf\n"); - sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; + } else { + LOG_I(RRC, "is_one_sf\n"); + sib2_mbsfn_SubframeConfig1->subframeAllocation.present = LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf = MALLOC(1); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size = 1; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused = 2; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = (m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation << 2); + } - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(3); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 3; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 0; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation) & 0xFF); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>8) & 0xFF); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>16) & 0xFF); - - }else{ - LOG_I(RRC,"is_one_sf\n"); - sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 2; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation<<2); - - - } - - ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig1); - } - } - - break; + ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig1); + } + } + break; } } + if (sib13 == NULL) { + LTE_SystemInformationBlockType13_r9_t *sib13 = RC.rrc[Mod_id]->carrier[CC_id].sib13; - if(*sib13==NULL){ sib13_part = CALLOC(1,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); memset(sib13_part,0,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); sib13_part->present = LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920; - *sib13 = &sib13_part->choice.sib13_v920; + sib13 = &sib13_part->choice.sib13_v920; + RC.rrc[Mod_id]->carrier[CC_id].sib13 = sib13; - (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9=LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; - (*sib13)->notificationConfig_r9.notificationOffset_r9=0; - (*sib13)->notificationConfig_r9.notificationSF_Index_r9=1; + sib13->notificationConfig_r9.notificationRepetitionCoeff_r9 = LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; + sib13->notificationConfig_r9.notificationOffset_r9 = 0; + sib13->notificationConfig_r9.notificationSF_Index_r9 = 1; - // MBSFN-AreaInfoList - MBSFNArea_list= &(*sib13)->mbsfn_AreaInfoList_r9;//CALLOC(1,sizeof(*MBSFNArea_list)); - memset(MBSFNArea_list,0,sizeof(*MBSFNArea_list)); + // MBSFN-AreaInfoList + MBSFNArea_list = &sib13->mbsfn_AreaInfoList_r9; // CALLOC(1,sizeof(*MBSFNArea_list)); + memset(MBSFNArea_list, 0, sizeof(*MBSFNArea_list)); - for( i=0; i < m2ap_setup_resp->num_mcch_config_per_mbsfn; i++){ - // MBSFN Area 1 - MBSFN_Area1= CALLOC(1, sizeof(*MBSFN_Area1)); - MBSFN_Area1->mbsfn_AreaId_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].mbsfn_area; - MBSFN_Area1->non_MBSFNregionLength= m2ap_setup_resp->mcch_config_per_mbsfn[i].pdcch_length; - MBSFN_Area1->notificationIndicator_r9= 0; - MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].repetition_period;//LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; - MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].offset; // in accordance with mbsfn subframe configuration in sib2 - MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].modification_period; - - // Subframe Allocation Info - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1); - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1; - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=m2ap_setup_resp->mcch_config_per_mbsfn[i].subframe_allocation_info<<2; // FDD: SF1 - MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2; - MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].mcs; - ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); - } + for (i = 0; i < m2ap_setup_resp->num_mcch_config_per_mbsfn; i++) { + // MBSFN Area 1 + MBSFN_Area1 = CALLOC(1, sizeof(*MBSFN_Area1)); + MBSFN_Area1->mbsfn_AreaId_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[i].mbsfn_area; + MBSFN_Area1->non_MBSFNregionLength = m2ap_setup_resp->mcch_config_per_mbsfn[i].pdcch_length; + MBSFN_Area1->notificationIndicator_r9 = 0; + MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[i].repetition_period; // LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; + MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[i].offset; // in accordance with mbsfn subframe configuration in sib2 + MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[i].modification_period; - ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part); + // Subframe Allocation Info + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf = MALLOC(1); + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size = 1; + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0] = m2ap_setup_resp->mcch_config_per_mbsfn[i].subframe_allocation_info << 2; // FDD: SF1 + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused = 2; + MBSFN_Area1->mcch_Config_r9.signallingMCS_r9 = m2ap_setup_resp->mcch_config_per_mbsfn[i].mcs; + ASN_SEQUENCE_ADD(&MBSFNArea_list->list, MBSFN_Area1); + } - } - - *sib1_MBMS = &bcch_message_fembms->message.choice.c1.choice.systemInformationBlockType1_MBMS_r14; - - - if((*sib1_MBMS)->systemInformationBlockType13_r14==NULL){ - (*sib1_MBMS)->systemInformationBlockType13_r14 = CALLOC(1,sizeof(struct LTE_SystemInformationBlockType13_r9)); - memset((*sib1_MBMS)->systemInformationBlockType13_r14,0,sizeof(struct LTE_SystemInformationBlockType13_r9)); + ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part); } + RC.rrc[Mod_id]->carrier[CC_id].sib1_MBMS = &bcch_message_fembms->message.choice.c1.choice.systemInformationBlockType1_MBMS_r14; + LTE_SystemInformationBlockType1_MBMS_r14_t *sib1_MBMS = RC.rrc[Mod_id]->carrier[CC_id].sib1_MBMS; + if (sib1_MBMS->systemInformationBlockType13_r14 == NULL) + sib1_MBMS->systemInformationBlockType13_r14 = CALLOC(1, sizeof(*sib1_MBMS->systemInformationBlockType13_r14)); + memcpy(sib1_MBMS->systemInformationBlockType13_r14, sib13, sizeof(*sib13)); - memcpy((*sib1_MBMS)->systemInformationBlockType13_r14,*sib13,sizeof(struct LTE_SystemInformationBlockType13_r9)); - - enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, - NULL, - (void *)bcch_message_fembms, - buffer_fembms, - 100); + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, NULL, (void *)bcch_message_fembms, RC.rrc[Mod_id]->carrier[CC_id].SIB1_MBMS, 100); AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", enc_rval.failed_type->name, enc_rval.encoded); @@ -666,11 +603,7 @@ static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( //xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message, (void *)bcch_message); - enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message, - NULL, - (void *)bcch_message, - buffer, - 900); + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message, NULL, (void *)bcch_message, encoded_buffer, 900); AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", enc_rval.failed_type->name, enc_rval.encoded); @@ -684,42 +617,15 @@ static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( carrier->MBMS_flag =1; if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, - 0,0,0,0,0, - 0, - 0xfffd,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, - (LTE_AdditionalSpectrumEmission_t *)NULL, - (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, - carrier->MBMS_flag, - (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, - (LTE_PMCH_InfoList_r9_t *) NULL - , - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL - , - carrier->FeMBMS_flag, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*) NULL - ); - } + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.rnti = 0xfffd; + tmp.mbsfn_SubframeConfigList = carrier->sib2->mbsfn_SubframeConfigList; + tmp.MBMS_Flag = carrier->MBMS_flag; + tmp.mbsfn_AreaInfoList = &carrier->sib13->mbsfn_AreaInfoList_r9; + tmp.FeMBMS_Flag = carrier->FeMBMS_flag; + rrc_mac_config_req_eNB(Mod_id, &tmp); + } RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = ((enc_rval.encoded+7)/8); @@ -969,40 +875,12 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2( carrier->MBMS_flag =1; if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, - 0,0,0,0,0, - 0, - 0,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, - (LTE_AdditionalSpectrumEmission_t *)NULL, - (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, - carrier->MBMS_flag, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*) NULL - ); - } + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.mbsfn_SubframeConfigList = carrier->sib2->mbsfn_SubframeConfigList; + tmp.MBMS_Flag = carrier->MBMS_flag; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); + } RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = ((enc_rval.encoded+7)/8); @@ -1143,38 +1021,11 @@ for( i=0; i < m2ap_setup_resp->num_mcch_config_per_mbsfn; i++){ } if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, - 0,0,0,0,0, - 0, - 0,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, NULL, (LTE_MBSFN_SubframeConfigList_t *) NULL - , - 0, - (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.mbsfn_AreaInfoList = &carrier->sib13->mbsfn_AreaInfoList_r9; + tmp.MBMS_Flag = carrier->MBMS_flag; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = ((enc_rval.encoded+7)/8); @@ -1423,39 +1274,12 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2_SIB13( carrier->MBMS_flag =1; if (NODE_IS_MONOLITHIC(rrc->node_type)) { - rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, - 0,0,0,0,0, - 0, - 0,//rnti - (LTE_BCCH_BCH_Message_t *)NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (LTE_RadioResourceConfigCommonSIB_t *) NULL, - (struct LTE_PhysicalConfigDedicated *)NULL, - (LTE_SCellToAddMod_r10_t *)NULL, - //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, - (LTE_MeasObjectToAddMod_t **) NULL, - (LTE_MAC_MainConfig_t *) NULL, - 0, - (struct LTE_LogicalChannelConfig *)NULL, - (LTE_MeasGapConfig_t *) NULL, - (LTE_TDD_Config_t *) NULL, - (LTE_MobilityControlInfo_t *)NULL, - (LTE_SchedulingInfoList_t *) NULL, - 0, NULL, - (LTE_AdditionalSpectrumEmission_t *)NULL, - (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, - carrier->MBMS_flag, - (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, - (LTE_PMCH_InfoList_r9_t *) NULL, - (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL, - (LTE_MBSFNAreaConfiguration_r9_t*) NULL - ); + rrc_mac_config_req_eNB_t tmp = {0}; + tmp.CC_id = CC_id; + tmp.mbsfn_SubframeConfigList = carrier->sib2->mbsfn_SubframeConfigList; + tmp.MBMS_Flag = carrier->MBMS_flag; + tmp.mbsfn_AreaInfoList = &carrier->sib13->mbsfn_AreaInfoList_r9; + rrc_mac_config_req_eNB(ctxt_pP->module_id, &tmp); } RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = ((enc_rval.encoded+7)/8); diff --git a/openair3/M3AP/m3ap_MME_interface_management.c b/openair3/M3AP/m3ap_MME_interface_management.c index fd50e80618..038a0721d1 100644 --- a/openair3/M3AP/m3ap_MME_interface_management.c +++ b/openair3/M3AP/m3ap_MME_interface_management.c @@ -190,10 +190,10 @@ int MME_send_MBMS_SESSION_START_REQUEST(instance_t instance/*, uint32_t assoc_id //tnl_information->iPMCAddress.buf[2] //tnl_information->iPMCAddress.buf[3] //tnl_information->iPMCAddress.buf.size = 4; - uint32_t ip= (224<<24) | (0) << 16 | (0) << 8 | (2); - INT32_TO_OCTET_STRING(ip,&tnl_information->iPMCAddress); - ip= (224<<24) | (0) << 16 | (0) << 8 | (2); - INT32_TO_OCTET_STRING(ip,&tnl_information->iPSourceAddress); + uint32_t ip = (224U << 24) | (0) << 16 | (0) << 8 | (2); + INT32_TO_OCTET_STRING(ip, &tnl_information->iPMCAddress); + ip = (224U << 24) | (0) << 16 | (0) << 8 | (2); + INT32_TO_OCTET_STRING(ip, &tnl_information->iPSourceAddress); } ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); /* optional */