Commit 7900864f authored by Raymond Knopp's avatar Raymond Knopp

testing after integration of eMTC

parent 55ed97eb
...@@ -727,55 +727,54 @@ config_dedicated_scell(int Mod_idP, ...@@ -727,55 +727,54 @@ config_dedicated_scell(int Mod_idP,
} }
int int rrc_mac_config_req_eNB(module_id_t Mod_idP,
rrc_mac_config_req_eNB(module_id_t Mod_idP, int CC_idP,
int CC_idP, int physCellId,
int physCellId, int p_eNB,
int p_eNB, int Ncp, int eutra_band, uint32_t dl_CarrierFreq,
int Ncp, int eutra_band, uint32_t dl_CarrierFreq,
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
int pbch_repetition, int pbch_repetition,
#endif #endif
rnti_t rntiP, rnti_t rntiP,
LTE_BCCH_BCH_Message_t * mib, LTE_BCCH_BCH_Message_t * mib,
LTE_RadioResourceConfigCommonSIB_t * LTE_RadioResourceConfigCommonSIB_t *
radioResourceConfigCommon, radioResourceConfigCommon,
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
LTE_RadioResourceConfigCommonSIB_t * LTE_RadioResourceConfigCommonSIB_t *
radioResourceConfigCommon_BR, radioResourceConfigCommon_BR,
#endif #endif
struct LTE_PhysicalConfigDedicated struct LTE_PhysicalConfigDedicated
*physicalConfigDedicated, *physicalConfigDedicated,
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
LTE_SCellToAddMod_r10_t * sCellToAddMod_r10, LTE_SCellToAddMod_r10_t * sCellToAddMod_r10,
//struct LTE_PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10, //struct LTE_PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
#endif #endif
LTE_MeasObjectToAddMod_t ** measObj, LTE_MeasObjectToAddMod_t ** measObj,
LTE_MAC_MainConfig_t * mac_MainConfig, LTE_MAC_MainConfig_t * mac_MainConfig,
long logicalChannelIdentity, long logicalChannelIdentity,
LTE_LogicalChannelConfig_t * logicalChannelConfig, LTE_LogicalChannelConfig_t * logicalChannelConfig,
LTE_MeasGapConfig_t * measGapConfig, LTE_MeasGapConfig_t * measGapConfig,
LTE_TDD_Config_t * tdd_Config, LTE_TDD_Config_t * tdd_Config,
LTE_MobilityControlInfo_t * mobilityControlInfo, LTE_MobilityControlInfo_t * mobilityControlInfo,
LTE_SchedulingInfoList_t * schedulingInfoList, LTE_SchedulingInfoList_t * schedulingInfoList,
uint32_t ul_CarrierFreq, uint32_t ul_CarrierFreq,
long *ul_Bandwidth, long *ul_Bandwidth,
LTE_AdditionalSpectrumEmission_t * LTE_AdditionalSpectrumEmission_t *
additionalSpectrumEmission, additionalSpectrumEmission,
struct LTE_MBSFN_SubframeConfigList struct LTE_MBSFN_SubframeConfigList
*mbsfn_SubframeConfigList *mbsfn_SubframeConfigList
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
, uint8_t MBMS_Flag, , uint8_t MBMS_Flag,
LTE_MBSFN_AreaInfoList_r9_t * mbsfn_AreaInfoList, LTE_MBSFN_AreaInfoList_r9_t * mbsfn_AreaInfoList,
LTE_PMCH_InfoList_r9_t * pmch_InfoList LTE_PMCH_InfoList_r9_t * pmch_InfoList
#endif #endif
#if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0))
, ,
LTE_SystemInformationBlockType1_v1310_IEs_t * LTE_SystemInformationBlockType1_v1310_IEs_t *
sib1_v13ext sib1_v13ext
#endif #endif
) { ) {
int i; int i;
int UE_id = -1; int UE_id = -1;
...@@ -897,36 +896,18 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP, ...@@ -897,36 +896,18 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP,
if (logicalChannelConfig != NULL) { // check for eMTC specific things if (logicalChannelConfig != NULL) { // check for eMTC specific things
UE_id = find_UE_id(Mod_idP, rntiP); UE_id = find_UE_id(Mod_idP, rntiP);
if (UE_id == -1) { AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP);
LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, if (logicalChannelConfig) {
__LINE__, __FUNCTION__); UE_list->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = *logicalChannelConfig->ul_SpecificParameters->logicalChannelGroup;
} else { UE_list->UE_template[CC_idP][UE_id].lcgidpriority[logicalChannelIdentity] = logicalChannelConfig->ul_SpecificParameters->priority;
if (logicalChannelConfig) { } else UE_list->UE_template[CC_idP][UE_id].lcgidmap[logicalChannelIdentity] = 0;
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) { if (physicalConfigDedicated != NULL) {
UE_id = find_UE_id(Mod_idP, rntiP); UE_id = find_UE_id(Mod_idP, rntiP);
AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP);
if (UE_id == -1) UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated = physicalConfigDedicated;
LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); LOG_I(MAC,"Added physicalConfigDedicated %p for %d.%d\n",physicalConfigDedicated,CC_idP,UE_id);
else
UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated = physicalConfigDedicated;
} }
...@@ -934,27 +915,19 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP, ...@@ -934,27 +915,19 @@ rrc_mac_config_req_eNB(module_id_t Mod_idP,
if (sCellToAddMod_r10 != NULL) { if (sCellToAddMod_r10 != NULL) {
UE_id = find_UE_id(Mod_idP, rntiP); UE_id = find_UE_id(Mod_idP, rntiP);
if (UE_id == -1) AssertFatal(UE_id>=0,"Configuration received for unknown UE (%x), shouldn't happen\n",rntiP);
LOG_E(MAC, "%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, config_dedicated_scell(Mod_idP, rntiP, sCellToAddMod_r10);
__LINE__, __FUNCTION__);
else
config_dedicated_scell(Mod_idP, rntiP, sCellToAddMod_r10);
} }
#endif #endif
if (mbsfn_SubframeConfigList != NULL) { if (mbsfn_SubframeConfigList != NULL) {
LOG_I(MAC, LOG_I(MAC,
"[eNB %d][CONFIG] Received %d subframe allocation pattern for MBSFN\n", "[eNB %d][CONFIG] Received %d subframe allocation pattern for MBSFN\n",
Mod_idP, mbsfn_SubframeConfigList->list.count); Mod_idP, mbsfn_SubframeConfigList->list.count);
RC.mac[Mod_idP]->common_channels[0].num_sf_allocation_pattern = RC.mac[Mod_idP]->common_channels[0].num_sf_allocation_pattern = mbsfn_SubframeConfigList->list.count;
mbsfn_SubframeConfigList->list.count;
for (i = 0; i < mbsfn_SubframeConfigList->list.count; i++) { for (i = 0; i < mbsfn_SubframeConfigList->list.count; i++) {
RC.mac[Mod_idP]->common_channels[0].mbsfn_SubframeConfig[i] = RC.mac[Mod_idP]->common_channels[0].mbsfn_SubframeConfig[i] = mbsfn_SubframeConfigList->list.array[i];
mbsfn_SubframeConfigList->list.array[i];
LOG_I(MAC, LOG_I(MAC,
"[eNB %d][CONFIG] MBSFN_SubframeConfig[%d] pattern is %x\n", "[eNB %d][CONFIG] MBSFN_SubframeConfig[%d] pattern is %x\n",
Mod_idP, i, Mod_idP, i,
......
...@@ -1704,7 +1704,7 @@ schedule_ue_spec(module_id_t module_idP, int slice_idxP, ...@@ -1704,7 +1704,7 @@ schedule_ue_spec(module_id_t module_idP, int slice_idxP,
format2A); format2A);
break; break;
default: 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; aggregation = 2;
} }
} }
......
...@@ -2272,7 +2272,7 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP) ...@@ -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]; eNB_MAC_INST *eNB = RC.mac[module_idP];
COMMON_channels_t *cc = &eNB->common_channels[CC_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 if (physicalConfigDedicated == NULL) { // RRCConnectionSetup not received by UE yet
AssertFatal(cc->p_eNB <= 2, "p_eNB is %d, should be <2\n", 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) ...@@ -2280,8 +2280,8 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP)
return (cc->p_eNB); return (cc->p_eNB);
} else { } else {
AssertFatal(physicalConfigDedicated->antennaInfo != NULL, AssertFatal(physicalConfigDedicated->antennaInfo != NULL,
"antennaInfo is null for CCId %d, UEid %d\n", CC_idP, "antennaInfo (mod_id %d) is null for CCId %d, UEid %d, physicalConfigDedicated %p\n", module_idP,CC_idP,
UE_idP); UE_idP,physicalConfigDedicated);
AssertFatal(physicalConfigDedicated->antennaInfo->present != AssertFatal(physicalConfigDedicated->antennaInfo->present !=
LTE_PhysicalConfigDedicated__antennaInfo_PR_NOTHING, LTE_PhysicalConfigDedicated__antennaInfo_PR_NOTHING,
...@@ -2290,7 +2290,7 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP) ...@@ -2290,7 +2290,7 @@ uint8_t get_tmode(module_id_t module_idP, int CC_idP, int UE_idP)
if (physicalConfigDedicated->antennaInfo->present == if (physicalConfigDedicated->antennaInfo->present ==
LTE_PhysicalConfigDedicated__antennaInfo_PR_explicitValue) { LTE_PhysicalConfigDedicated__antennaInfo_PR_explicitValue) {
return (physicalConfigDedicated->antennaInfo-> return (1+physicalConfigDedicated->antennaInfo->
choice.explicitValue.transmissionMode); choice.explicitValue.transmissionMode);
} else if (physicalConfigDedicated->antennaInfo->present == } else if (physicalConfigDedicated->antennaInfo->present ==
LTE_PhysicalConfigDedicated__antennaInfo_PR_defaultValue) { LTE_PhysicalConfigDedicated__antennaInfo_PR_defaultValue) {
......
...@@ -1070,44 +1070,40 @@ typedef struct { ...@@ -1070,44 +1070,40 @@ typedef struct {
} SBMAP_CONF; } SBMAP_CONF;
/*! \brief UE list used by eNB to order UEs/CC for scheduling*/ /*! \brief UE list used by eNB to order UEs/CC for scheduling*/
typedef struct { typedef struct {
/// Dedicated information for UEs DLSCH_PDU DLSCH_pdu[NFAPI_CC_MAX][2][MAX_MOBILES_PER_ENB];
struct PhysicalConfigDedicated /// DCI template and MAC connection parameters for UEs
*physicalConfigDedicated[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; UE_TEMPLATE UE_template[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB];
/// DLSCH pdu /// DCI template and MAC connection for RA processes
DLSCH_PDU DLSCH_pdu[NFAPI_CC_MAX][2][MAX_MOBILES_PER_ENB]; int pCC_id[MAX_MOBILES_PER_ENB];
/// DCI template and MAC connection parameters for UEs /// sorted downlink component carrier for the scheduler
UE_TEMPLATE UE_template[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; int ordered_CCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB];
/// DCI template and MAC connection for RA processes /// number of downlink active component carrier
int pCC_id[MAX_MOBILES_PER_ENB]; int numactiveCCs[MAX_MOBILES_PER_ENB];
/// sorted downlink component carrier for the scheduler /// sorted uplink component carrier for the scheduler
int ordered_CCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; int ordered_ULCCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB];
/// number of downlink active component carrier /// number of uplink active component carrier
int numactiveCCs[MAX_MOBILES_PER_ENB]; int numactiveULCCs[MAX_MOBILES_PER_ENB];
/// sorted uplink component carrier for the scheduler /// number of downlink active component carrier
int ordered_ULCCids[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; uint8_t dl_CC_bitmap[MAX_MOBILES_PER_ENB];
/// number of uplink active component carrier /// eNB to UE statistics
int numactiveULCCs[MAX_MOBILES_PER_ENB]; eNB_UE_STATS eNB_UE_stats[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB];
/// number of downlink active component carrier /// scheduling control info
uint8_t dl_CC_bitmap[MAX_MOBILES_PER_ENB]; UE_sched_ctrl UE_sched_ctrl[MAX_MOBILES_PER_ENB];
/// eNB to UE statistics int next[MAX_MOBILES_PER_ENB];
eNB_UE_STATS eNB_UE_stats[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB]; int head;
/// scheduling control info int next_ul[MAX_MOBILES_PER_ENB];
UE_sched_ctrl UE_sched_ctrl[MAX_MOBILES_PER_ENB]; int head_ul;
int next[MAX_MOBILES_PER_ENB]; int avail;
int head; int num_UEs;
int next_ul[MAX_MOBILES_PER_ENB]; boolean_t active[MAX_MOBILES_PER_ENB];
int head_ul;
int avail; /// Sorting criteria for the UE list in the MAC preprocessor
int num_UEs; uint16_t sorting_criteria[MAX_NUM_SLICES][CR_NUM];
boolean_t active[MAX_MOBILES_PER_ENB]; uint16_t first_rb_offset[NFAPI_CC_MAX][MAX_NUM_SLICES];
/// Sorting criteria for the UE list in the MAC preprocessor int assoc_dl_slice_idx[MAX_MOBILES_PER_ENB];
uint16_t sorting_criteria[MAX_NUM_SLICES][CR_NUM]; int assoc_ul_slice_idx[MAX_MOBILES_PER_ENB];
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; } UE_list_t;
/*! \brief deleting control information*/ /*! \brief deleting control information*/
......
...@@ -2855,6 +2855,8 @@ do_RRCConnectionSetup( ...@@ -2855,6 +2855,8 @@ do_RRCConnectionSetup(
//assign_enum(&physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode, //assign_enum(&physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode,
// AntennaInfoDedicated__transmissionMode_tm2); // AntennaInfoDedicated__transmissionMode_tm2);
LOG_D(RRC,"physicalConfigDedicated2 %p, physicalConfigDedicated2->antennaInfo %p => %d\n",physicalConfigDedicated2,physicalConfigDedicated2->antennaInfo,transmission_mode);
switch (transmission_mode) { switch (transmission_mode) {
default: default:
LOG_W(RRC,"At RRCConnectionSetup Transmission mode can only take values 1 or 2! Defaulting to 1!\n"); LOG_W(RRC,"At RRCConnectionSetup Transmission mode can only take values 1 or 2! Defaulting to 1!\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment