diff --git a/openair2/LAYER2/MAC/config.c b/openair2/LAYER2/MAC/config.c index 7ee78d697e..68e9e52eb8 100755 --- a/openair2/LAYER2/MAC/config.c +++ b/openair2/LAYER2/MAC/config.c @@ -727,55 +727,54 @@ config_dedicated_scell(int Mod_idP, } -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 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, #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) - int pbch_repetition, + int pbch_repetition, #endif - rnti_t rntiP, - LTE_BCCH_BCH_Message_t * mib, - LTE_RadioResourceConfigCommonSIB_t * - radioResourceConfigCommon, + rnti_t rntiP, + LTE_BCCH_BCH_Message_t * mib, + LTE_RadioResourceConfigCommonSIB_t * + radioResourceConfigCommon, #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) - LTE_RadioResourceConfigCommonSIB_t * - radioResourceConfigCommon_BR, + LTE_RadioResourceConfigCommonSIB_t * + radioResourceConfigCommon_BR, #endif - struct LTE_PhysicalConfigDedicated - *physicalConfigDedicated, + struct LTE_PhysicalConfigDedicated + *physicalConfigDedicated, #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - LTE_SCellToAddMod_r10_t * sCellToAddMod_r10, - //struct LTE_PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10, + LTE_SCellToAddMod_r10_t * sCellToAddMod_r10, + //struct LTE_PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10, #endif - 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 + 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 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) - , uint8_t MBMS_Flag, - LTE_MBSFN_AreaInfoList_r9_t * mbsfn_AreaInfoList, - LTE_PMCH_InfoList_r9_t * pmch_InfoList + , uint8_t MBMS_Flag, + LTE_MBSFN_AreaInfoList_r9_t * mbsfn_AreaInfoList, + LTE_PMCH_InfoList_r9_t * pmch_InfoList #endif #if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0)) - , - LTE_SystemInformationBlockType1_v1310_IEs_t * - sib1_v13ext + , + LTE_SystemInformationBlockType1_v1310_IEs_t * + sib1_v13ext #endif - ) { - + ) { + int i; int UE_id = -1; @@ -897,36 +896,18 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP, if (logicalChannelConfig != NULL) { // check for eMTC specific things UE_id = find_UE_id(Mod_idP, rntiP); - if (UE_id == -1) { - LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, - __LINE__, __FUNCTION__); - } else { - if (logicalChannelConfig) { - UE_list-> - UE_template[CC_idP][UE_id].lcgidmap - [logicalChannelIdentity] = - *logicalChannelConfig-> - ul_SpecificParameters->logicalChannelGroup; - UE_list-> - UE_template[CC_idP][UE_id].lcgidpriority - [logicalChannelIdentity]= - logicalChannelConfig->ul_SpecificParameters->priority; - - } else - UE_list-> - UE_template[CC_idP][UE_id].lcgidmap - [logicalChannelIdentity] = 0; - } + AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + if (logicalChannelConfig) { + UE_list->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = *logicalChannelConfig->ul_SpecificParameters->logicalChannelGroup; + UE_list->UE_template[CC_idP][UE_id].lcgidpriority[logicalChannelIdentity] = logicalChannelConfig->ul_SpecificParameters->priority; + } else UE_list->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = 0; } - - + if (physicalConfigDedicated != NULL) { UE_id = find_UE_id(Mod_idP, rntiP); - - if (UE_id == -1) - LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); - else - UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated = physicalConfigDedicated; + AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated = physicalConfigDedicated; + LOG_I(MAC,"Added physicalConfigDedicated %p for %d.%d\n",physicalConfigDedicated,CC_idP,UE_id); } @@ -934,27 +915,19 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP, if (sCellToAddMod_r10 != NULL) { UE_id = find_UE_id(Mod_idP, rntiP); - if (UE_id == -1) - LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, - __LINE__, __FUNCTION__); - else - config_dedicated_scell(Mod_idP, rntiP, sCellToAddMod_r10); + AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP); + config_dedicated_scell(Mod_idP, rntiP, sCellToAddMod_r10); } #endif - - - 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; + RC.mac[Mod_idP]->common_channels[0].num_sf_allocation_pattern = 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]; + 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, diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c index eec5a52b81..18c49c92b7 100755 --- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c @@ -1704,7 +1704,7 @@ schedule_ue_spec(module_id_t module_idP, int slice_idxP, format2A); break; default: - LOG_W(MAC, "Unsupported transmission mode %d\n", get_tmode(module_idP, CC_id, UE_id)); + AssertFatal(1==0,"Unsupported transmission mode %d\n", get_tmode(module_idP, CC_id, UE_id)); aggregation = 2; } } diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c index 9c6efc60b6..a26f658dd8 100755 --- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c @@ -2272,7 +2272,7 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP) eNB_MAC_INST *eNB = RC.mac[module_idP]; COMMON_channels_t *cc = &eNB->common_channels[CC_idP]; - struct LTE_PhysicalConfigDedicated *physicalConfigDedicated = &eNB->UE_list.physicalConfigDedicated[CC_idP][UE_idP]; + struct LTE_PhysicalConfigDedicated *physicalConfigDedicated = eNB->UE_list.UE_template[CC_idP][UE_idP].physicalConfigDedicated; if (physicalConfigDedicated == NULL) { // RRCConnectionSetup not received by UE yet AssertFatal(cc->p_eNB <= 2, "p_eNB is %d, should be <2\n", @@ -2280,8 +2280,8 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP) return (cc->p_eNB); } else { AssertFatal(physicalConfigDedicated->antennaInfo != NULL, - "antennaInfo is null for CCId %d, UEid %d\n", CC_idP, - UE_idP); + "antennaInfo (mod_id %d) is null for CCId %d, UEid %d, physicalConfigDedicated %p\n", module_idP,CC_idP, + UE_idP,physicalConfigDedicated); AssertFatal(physicalConfigDedicated->antennaInfo->present != LTE_PhysicalConfigDedicated__antennaInfo_PR_NOTHING, @@ -2290,7 +2290,7 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP) if (physicalConfigDedicated->antennaInfo->present == LTE_PhysicalConfigDedicated__antennaInfo_PR_explicitValue) { - return (physicalConfigDedicated->antennaInfo-> + return (1+physicalConfigDedicated->antennaInfo-> choice.explicitValue.transmissionMode); } else if (physicalConfigDedicated->antennaInfo->present == LTE_PhysicalConfigDedicated__antennaInfo_PR_defaultValue) { diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h index 27b0485c46..c8497a123c 100644 --- a/openair2/LAYER2/MAC/mac.h +++ b/openair2/LAYER2/MAC/mac.h @@ -1070,44 +1070,40 @@ typedef struct { } SBMAP_CONF; /*! \brief UE list used by eNB to order UEs/CC for scheduling*/ typedef struct { - /// Dedicated information for UEs - struct PhysicalConfigDedicated - *physicalConfigDedicated[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; - /// DLSCH pdu - DLSCH_PDU DLSCH_pdu[NFAPI_CC_MAX][2][MAX_MOBILES_PER_ENB]; - /// DCI template and MAC connection parameters for UEs - UE_TEMPLATE UE_template[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; - /// DCI template and MAC connection for RA processes - int pCC_id[MAX_MOBILES_PER_ENB]; - /// sorted downlink component carrier for the scheduler - int ordered_CCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; - /// number of downlink active component carrier - int numactiveCCs[MAX_MOBILES_PER_ENB]; - /// sorted uplink component carrier for the scheduler - int ordered_ULCCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; - /// number of uplink active component carrier - int numactiveULCCs[MAX_MOBILES_PER_ENB]; - /// number of downlink active component carrier - uint8_t dl_CC_bitmap[MAX_MOBILES_PER_ENB]; - /// eNB to UE statistics - eNB_UE_STATS eNB_UE_stats[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; - /// scheduling control info - UE_sched_ctrl UE_sched_ctrl[MAX_MOBILES_PER_ENB]; - int next[MAX_MOBILES_PER_ENB]; - int head; - int next_ul[MAX_MOBILES_PER_ENB]; - int head_ul; - int avail; - int num_UEs; - boolean_t active[MAX_MOBILES_PER_ENB]; - - /// Sorting criteria for the UE list in the MAC preprocessor - uint16_t sorting_criteria[MAX_NUM_SLICES][CR_NUM]; - uint16_t first_rb_offset[NFAPI_CC_MAX][MAX_NUM_SLICES]; - - int assoc_dl_slice_idx[MAX_MOBILES_PER_ENB]; - int assoc_ul_slice_idx[MAX_MOBILES_PER_ENB]; - + DLSCH_PDU DLSCH_pdu[NFAPI_CC_MAX][2][MAX_MOBILES_PER_ENB]; + /// DCI template and MAC connection parameters for UEs + UE_TEMPLATE UE_template[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; + /// DCI template and MAC connection for RA processes + int pCC_id[MAX_MOBILES_PER_ENB]; + /// sorted downlink component carrier for the scheduler + int ordered_CCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; + /// number of downlink active component carrier + int numactiveCCs[MAX_MOBILES_PER_ENB]; + /// sorted uplink component carrier for the scheduler + int ordered_ULCCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; + /// number of uplink active component carrier + int numactiveULCCs[MAX_MOBILES_PER_ENB]; + /// number of downlink active component carrier + uint8_t dl_CC_bitmap[MAX_MOBILES_PER_ENB]; + /// eNB to UE statistics + eNB_UE_STATS eNB_UE_stats[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; + /// scheduling control info + UE_sched_ctrl UE_sched_ctrl[MAX_MOBILES_PER_ENB]; + int next[MAX_MOBILES_PER_ENB]; + int head; + int next_ul[MAX_MOBILES_PER_ENB]; + int head_ul; + int avail; + int num_UEs; + boolean_t active[MAX_MOBILES_PER_ENB]; + + /// Sorting criteria for the UE list in the MAC preprocessor + uint16_t sorting_criteria[MAX_NUM_SLICES][CR_NUM]; + uint16_t first_rb_offset[NFAPI_CC_MAX][MAX_NUM_SLICES]; + + int assoc_dl_slice_idx[MAX_MOBILES_PER_ENB]; + int assoc_ul_slice_idx[MAX_MOBILES_PER_ENB]; + } UE_list_t; /*! \brief deleting control information*/ diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index ab80705edc..693c6be0e8 100755 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -2855,6 +2855,8 @@ do_RRCConnectionSetup( //assign_enum(&physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode, // AntennaInfoDedicated__transmissionMode_tm2); + LOG_D(RRC,"physicalConfigDedicated2 %p, physicalConfigDedicated2->antennaInfo %p => %d\n",physicalConfigDedicated2,physicalConfigDedicated2->antennaInfo,transmission_mode); + switch (transmission_mode) { default: LOG_W(RRC,"At RRCConnectionSetup Transmission mode can only take values 1 or 2! Defaulting to 1!\n");