first-fix-rrc-mac-interface
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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------------------------
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
+154
-221
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]++;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
+86
-274
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+146
-322
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user