added selection of LTE or BL/CE SIB1/2 configuration

This commit is contained in:
Raymond Knopp
2017-07-26 16:49:17 -07:00
parent 33e6766d41
commit 64ee15062f
6 changed files with 4117 additions and 2958 deletions
+104 -92
View File
@@ -83,15 +83,85 @@ typedef struct RrcStateInd_s {
Rrc_Sub_State_t sub_state;
} RrcStateInd;
typedef struct RadioResourceConfig_s {
long prach_root;
long prach_config_index;
BOOLEAN_t prach_high_speed;
long prach_zero_correlation;
long prach_freq_offset;
long pucch_delta_shift;
long pucch_nRB_CQI;
long pucch_nCS_AN;
#if !defined(Rel10) && !defined(Rel14)
long pucch_n1_AN;
#endif
long pdsch_referenceSignalPower;
long pdsch_p_b;
long pusch_n_SB;
long pusch_hoppingMode;
long pusch_hoppingOffset;
BOOLEAN_t pusch_enable64QAM;
BOOLEAN_t pusch_groupHoppingEnabled;
long pusch_groupAssignment;
BOOLEAN_t pusch_sequenceHoppingEnabled;
long pusch_nDMRS1;
long phich_duration;
long phich_resource;
BOOLEAN_t srs_enable;
long srs_BandwidthConfig;
long srs_SubframeConfig;
BOOLEAN_t srs_ackNackST;
BOOLEAN_t srs_MaxUpPts;
long pusch_p0_Nominal;
long pusch_alpha;
long pucch_p0_Nominal;
long msg3_delta_Preamble;
long ul_CyclicPrefixLength;
e_DeltaFList_PUCCH__deltaF_PUCCH_Format1 pucch_deltaF_Format1;
e_DeltaFList_PUCCH__deltaF_PUCCH_Format1b pucch_deltaF_Format1b;
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2 pucch_deltaF_Format2;
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2a pucch_deltaF_Format2a;
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2b pucch_deltaF_Format2b;
long rach_numberOfRA_Preambles;
BOOLEAN_t rach_preamblesGroupAConfig;
long rach_sizeOfRA_PreamblesGroupA;
long rach_messageSizeGroupA;
e_RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB rach_messagePowerOffsetGroupB;
long rach_powerRampingStep;
long rach_preambleInitialReceivedTargetPower;
long rach_preambleTransMax;
long rach_raResponseWindowSize;
long rach_macContentionResolutionTimer;
long rach_maxHARQ_Msg3Tx;
long bcch_modificationPeriodCoeff;
long pcch_defaultPagingCycle;
long pcch_nB;
long ue_TimersAndConstants_t300;
long ue_TimersAndConstants_t301;
long ue_TimersAndConstants_t310;
long ue_TimersAndConstants_t311;
long ue_TimersAndConstants_n310;
long ue_TimersAndConstants_n311;
long ue_TransmissionMode;
#ifdef Rel14
//SIB2 BR Options
long* preambleTransMax_CE_r13;
BOOLEAN_t prach_ConfigCommon_v1310;
BOOLEAN_t* mpdcch_startSF_CSS_RA_r13;
long mpdcch_startSF_CSS_RA_r13_val;
long* prach_HoppingOffset_r13;
#endif
} RadioResourceConfig;
// eNB: ENB_APP -> RRC messages
typedef struct RrcConfigurationReq_s {
uint32_t cell_identity;
uint32_t cell_identity;
uint16_t tac;
uint16_t tac;
uint16_t mcc;
uint16_t mnc;
uint8_t mnc_digit_length;
uint16_t mcc;
uint16_t mnc;
uint8_t mnc_digit_length;
paging_drx_t default_drx;
@@ -107,102 +177,44 @@ typedef struct RrcConfigurationReq_s {
int16_t Nid_cell[MAX_NUM_CCs];// for testing, change later
int16_t N_RB_DL[MAX_NUM_CCs];// for testing, change later
int nb_antenna_ports[MAX_NUM_CCs];
long prach_root[MAX_NUM_CCs];
long prach_config_index[MAX_NUM_CCs];
BOOLEAN_t prach_high_speed[MAX_NUM_CCs];
long prach_zero_correlation[MAX_NUM_CCs];
long prach_freq_offset[MAX_NUM_CCs];
long pucch_delta_shift[MAX_NUM_CCs];
long pucch_nRB_CQI[MAX_NUM_CCs];
long pucch_nCS_AN[MAX_NUM_CCs];
#if !defined(Rel10) && !defined(Rel14)
long pucch_n1_AN[MAX_NUM_CCs];
#endif
long pdsch_referenceSignalPower[MAX_NUM_CCs];
long pdsch_p_b[MAX_NUM_CCs];
long pusch_n_SB[MAX_NUM_CCs];
long pusch_hoppingMode[MAX_NUM_CCs];
long pusch_hoppingOffset[MAX_NUM_CCs];
BOOLEAN_t pusch_enable64QAM[MAX_NUM_CCs];
BOOLEAN_t pusch_groupHoppingEnabled[MAX_NUM_CCs];
long pusch_groupAssignment[MAX_NUM_CCs];
BOOLEAN_t pusch_sequenceHoppingEnabled[MAX_NUM_CCs];
long pusch_nDMRS1[MAX_NUM_CCs];
long phich_duration[MAX_NUM_CCs];
long phich_resource[MAX_NUM_CCs];
BOOLEAN_t srs_enable[MAX_NUM_CCs];
long srs_BandwidthConfig[MAX_NUM_CCs];
long srs_SubframeConfig[MAX_NUM_CCs];
BOOLEAN_t srs_ackNackST[MAX_NUM_CCs];
BOOLEAN_t srs_MaxUpPts[MAX_NUM_CCs];
long pusch_p0_Nominal[MAX_NUM_CCs];
long pusch_alpha[MAX_NUM_CCs];
long pucch_p0_Nominal[MAX_NUM_CCs];
long msg3_delta_Preamble[MAX_NUM_CCs];
long ul_CyclicPrefixLength[MAX_NUM_CCs];
e_DeltaFList_PUCCH__deltaF_PUCCH_Format1 pucch_deltaF_Format1[MAX_NUM_CCs];
e_DeltaFList_PUCCH__deltaF_PUCCH_Format1b pucch_deltaF_Format1b[MAX_NUM_CCs];
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2 pucch_deltaF_Format2[MAX_NUM_CCs];
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2a pucch_deltaF_Format2a[MAX_NUM_CCs];
e_DeltaFList_PUCCH__deltaF_PUCCH_Format2b pucch_deltaF_Format2b[MAX_NUM_CCs];
long rach_numberOfRA_Preambles[MAX_NUM_CCs];
BOOLEAN_t rach_preamblesGroupAConfig[MAX_NUM_CCs];
long rach_sizeOfRA_PreamblesGroupA[MAX_NUM_CCs];
long rach_messageSizeGroupA[MAX_NUM_CCs];
e_RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB rach_messagePowerOffsetGroupB[MAX_NUM_CCs];
long rach_powerRampingStep[MAX_NUM_CCs];
long rach_preambleInitialReceivedTargetPower[MAX_NUM_CCs];
long rach_preambleTransMax[MAX_NUM_CCs];
long rach_raResponseWindowSize[MAX_NUM_CCs];
long rach_macContentionResolutionTimer[MAX_NUM_CCs];
long rach_maxHARQ_Msg3Tx[MAX_NUM_CCs];
long bcch_modificationPeriodCoeff[MAX_NUM_CCs];
long pcch_defaultPagingCycle[MAX_NUM_CCs];
long pcch_nB[MAX_NUM_CCs];
long ue_TimersAndConstants_t300[MAX_NUM_CCs];
long ue_TimersAndConstants_t301[MAX_NUM_CCs];
long ue_TimersAndConstants_t310[MAX_NUM_CCs];
long ue_TimersAndConstants_t311[MAX_NUM_CCs];
long ue_TimersAndConstants_n310[MAX_NUM_CCs];
long ue_TimersAndConstants_n311[MAX_NUM_CCs];
long ue_TransmissionMode[MAX_NUM_CCs];
RadioResourceConfig radioresourceconfig[MAX_NUM_CCs];
#ifdef Rel14
RadioResourceConfig radioresourceconfig_BR[MAX_NUM_CCs];
//MIB
long schedulingInfoSIB1_BR_r13[MAX_NUM_CCs];
long schedulingInfoSIB1_BR_r13[MAX_NUM_CCs];
//SIB1 BR options
uint16_t* hyperSFN_r13[MAX_NUM_CCs];
long* eDRX_Allowed_r13[MAX_NUM_CCs];
BOOLEAN_t cellSelectionInfoCE_r13[MAX_NUM_CCs];
long q_RxLevMinCE_r13[MAX_NUM_CCs];
long* q_QualMinRSRQ_CE_r13[MAX_NUM_CCs];
BOOLEAN_t bandwidthReducedAccessRelatedInfo_r13[MAX_NUM_CCs];
long si_WindowLength_BR_r13[MAX_NUM_CCs];
long si_RepetitionPattern_r13[MAX_NUM_CCs];
BOOLEAN_t fdd_DownlinkOrTddSubframeBitmapBR_r13[MAX_NUM_CCs];
uint64_t fdd_DownlinkOrTddSubframeBitmapBR_val_r13[MAX_NUM_CCs];
uint16_t fdd_UplinkSubframeBitmapBR_r13[MAX_NUM_CCs];
long startSymbolBR_r13[MAX_NUM_CCs];
long si_HoppingConfigCommon_r13[MAX_NUM_CCs];
long* si_ValidityTime_r13[MAX_NUM_CCs];
BOOLEAN_t freqHoppingParametersDL_r13[MAX_NUM_CCs];
long* mpdcch_pdsch_HoppingNB_r13[MAX_NUM_CCs];
BOOLEAN_t interval_DLHoppingConfigCommonModeA_r13[MAX_NUM_CCs];
long interval_DLHoppingConfigCommonModeA_r13_val[MAX_NUM_CCs];
BOOLEAN_t interval_DLHoppingConfigCommonModeB_r13[MAX_NUM_CCs];
long interval_DLHoppingConfigCommonModeB_r13_val[MAX_NUM_CCs];
long* mpdcch_pdsch_HoppingOffset_r13[MAX_NUM_CCs];
uint16_t* hyperSFN_r13[MAX_NUM_CCs];
long* eDRX_Allowed_r13[MAX_NUM_CCs];
BOOLEAN_t cellSelectionInfoCE_r13[MAX_NUM_CCs];
long q_RxLevMinCE_r13[MAX_NUM_CCs];
long* q_QualMinRSRQ_CE_r13[MAX_NUM_CCs];
BOOLEAN_t bandwidthReducedAccessRelatedInfo_r13[MAX_NUM_CCs];
long si_WindowLength_BR_r13[MAX_NUM_CCs];
long si_RepetitionPattern_r13[MAX_NUM_CCs];
BOOLEAN_t fdd_DownlinkOrTddSubframeBitmapBR_r13[MAX_NUM_CCs];
uint64_t fdd_DownlinkOrTddSubframeBitmapBR_val_r13[MAX_NUM_CCs];
uint16_t fdd_UplinkSubframeBitmapBR_r13[MAX_NUM_CCs];
long startSymbolBR_r13[MAX_NUM_CCs];
long si_HoppingConfigCommon_r13[MAX_NUM_CCs];
long* si_ValidityTime_r13[MAX_NUM_CCs];
BOOLEAN_t freqHoppingParametersDL_r13[MAX_NUM_CCs];
long* mpdcch_pdsch_HoppingNB_r13[MAX_NUM_CCs];
BOOLEAN_t interval_DLHoppingConfigCommonModeA_r13[MAX_NUM_CCs];
long interval_DLHoppingConfigCommonModeA_r13_val[MAX_NUM_CCs];
BOOLEAN_t interval_DLHoppingConfigCommonModeB_r13[MAX_NUM_CCs];
long interval_DLHoppingConfigCommonModeB_r13_val[MAX_NUM_CCs];
long* mpdcch_pdsch_HoppingOffset_r13[MAX_NUM_CCs];
//SIB2 BR Options
long* preambleTransMax_CE_r13[MAX_NUM_CCs];
BOOLEAN_t prach_ConfigCommon_v1310[MAX_NUM_CCs];
BOOLEAN_t* mpdcch_startSF_CSS_RA_r13[MAX_NUM_CCs];
long mpdcch_startSF_CSS_RA_r13_val[MAX_NUM_CCs];
long* prach_HoppingOffset_r13[MAX_NUM_CCs];
#endif
} RrcConfigurationReq;
// UE: NAS -> RRC messages
+2833 -1769
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+12 -2
View File
@@ -75,10 +75,17 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
@param Mod_id Instance of eNB
@param Component carrier Component carrier to configure
@param configuration Pointer Configuration Request structure
@param br_flag Do for BL/CE UE configuration
@return size of encoded bit stream in bytes*/
uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,int Mod_id,int CC_id, RrcConfigurationReq *configuration
);
uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,int Mod_id,int CC_id
#if defined(ENABLE_ITTI)
,RrcConfigurationReq *configuration
#endif
#ifdef Rel14
,int br_flag
#endif
);
/**
\brief Generate a default configuration for SIB2/SIB3 in one System Information PDU (eNB).
@@ -95,6 +102,9 @@ uint8_t do_SIB23(uint8_t Mod_id,
int CC_id
#if defined(ENABLE_ITTI)
, RrcConfigurationReq *configuration
#endif
#ifdef Rel14
, int br_flag
#endif
);
+2 -1
View File
@@ -475,7 +475,9 @@ typedef struct {
uint32_t pbch_repetition;
BCCH_BCH_Message_t mib;
BCCH_DL_SCH_Message_t siblock1;
BCCH_DL_SCH_Message_t siblock1_BR;
BCCH_DL_SCH_Message_t systemInformation;
BCCH_DL_SCH_Message_t systemInformation_BR;
// SystemInformation_t systemInformation;
SystemInformationBlockType1_t *sib1;
SystemInformationBlockType2_t *sib2;
@@ -483,7 +485,6 @@ typedef struct {
#ifdef Rel14
SystemInformationBlockType1_t *sib1_BR;
SystemInformationBlockType2_t *sib2_BR;
SystemInformationBlockType2_t *sib3_BR;
#endif
#if defined(Rel10) || defined(Rel14)
SystemInformationBlockType13_r9_t *sib13;
+47 -17
View File
@@ -127,8 +127,6 @@ init_SI(
)
//-----------------------------------------------------------------------------
{
uint8_t SIwindowsize = 1;
uint16_t SIperiod = 8;
#if defined(Rel10) || defined(Rel14)
int i;
#endif
@@ -149,14 +147,14 @@ init_SI(
#endif
LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n",
configuration->N_RB_DL[CC_id],
configuration->phich_resource[CC_id],
configuration->phich_duration[CC_id]);
(int)configuration->radioresourceconfig[CC_id].phich_resource,
(int)configuration->radioresourceconfig[CC_id].phich_duration);
do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
#ifdef ENABLE_ITTI
configuration->N_RB_DL[CC_id],
configuration->phich_resource[CC_id],
configuration->phich_duration[CC_id],
configuration->schedulingInfoSIB1_BR_r13[CC_id]
(int)configuration->radioresourceconfig[CC_id].phich_resource,
(int)configuration->radioresourceconfig[CC_id].phich_duration,
configuration->schedulingInfoSIB1_BR_r13[CC_id]
#else
50, 0, 0, 1
#endif
@@ -172,11 +170,24 @@ init_SI(
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
#if defined(ENABLE_ITTI)
, configuration
#endif
#ifdef Rel14
,0
#endif
);
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
#ifdef Rel14
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_BR = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
#if defined(ENABLE_ITTI)
, configuration
#endif
,1
);
#endif
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23 = (uint8_t*) malloc16(64);
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23!=NULL,"cannot allocate memory for SIB");
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = do_SIB23(
@@ -185,11 +196,30 @@ init_SI(
CC_id
#if defined(ENABLE_ITTI)
, configuration
#endif
#ifdef Rel14
,0
#endif
);
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255");
#ifdef Rel14
if (configuration->schedulingInfoSIB1_BR_r13[CC_id]>0) {
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23_BR = (uint8_t*) malloc16(64);
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23_BR!=NULL,"cannot allocate memory for SIB");
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23_BR = do_SIB23(
ctxt_pP->module_id,
CC_id,
#if defined(ENABLE_ITTI)
configuration,
#endif
0);
}
else {
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23_BR = 0;
}
#endif
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" SIB2/3 Contents (partial)\n",
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
@@ -1679,9 +1709,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
//TODO: change TM for secondary CC in SCelltoaddmodlist
if (*physicalConfigDedicated) {
if ((*physicalConfigDedicated)->antennaInfo) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.transmissionMode = rrc_inst->configuration.ue_TransmissionMode[0];
LOG_D(RRC,"Setting transmission mode to %ld+1\n",rrc_inst->configuration.ue_TransmissionMode[0]);
if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm3) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.transmissionMode = rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode;
LOG_D(RRC,"Setting transmission mode to %ld+1\n",rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode);
if (rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm3) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
@@ -1691,7 +1721,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
}
else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) {
else if (rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm4) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
@@ -1702,7 +1732,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm4.bits_unused=2;
}
else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) {
else if (rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm5) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
@@ -1712,7 +1742,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.size=1;
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm5.bits_unused=4;
}
else if (rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6) {
else if (rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm6) {
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction=
CALLOC(1,sizeof(AntennaInfoDedicated__codebookSubsetRestriction_PR));
(*physicalConfigDedicated)->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
@@ -1727,9 +1757,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
LOG_E(RRC,"antenna_info not present in physical_config_dedicated. Not reconfiguring!\n");
}
if ((*physicalConfigDedicated)->cqi_ReportConfig) {
if ((rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm4) ||
(rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm5) ||
(rrc_inst->configuration.ue_TransmissionMode[0]==AntennaInfoDedicated__transmissionMode_tm6)) {
if ((rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm4) ||
(rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm5) ||
(rrc_inst->configuration.radioresourceconfig[0].ue_TransmissionMode==AntennaInfoDedicated__transmissionMode_tm6)) {
//feedback mode needs to be set as well
//TODO: I think this is taken into account in the PHY automatically based on the transmission mode variable
printf("setting cqi reporting mode to rm31\n");