improvements in selecting DL MCS table
This commit is contained in:
@@ -3727,12 +3727,36 @@ int16_t fill_dmrs_mask(const NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Posi
|
|||||||
return l_prime;
|
return l_prime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t get_pdsch_mcs_table(long *mcs_Table, int dci_format, int rnti_type, int ss_type)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Set downlink MCS table (Semi-persistend scheduling ignored for now)
|
||||||
|
uint8_t mcsTableIdx = 0; // default value
|
||||||
|
if (mcs_Table &&
|
||||||
|
*mcs_Table == NR_PDSCH_Config__mcs_Table_qam256 &&
|
||||||
|
dci_format == NR_DL_DCI_FORMAT_1_1 &&
|
||||||
|
rnti_type == NR_RNTI_C)
|
||||||
|
mcsTableIdx = 1;
|
||||||
|
else if (rnti_type != NR_RNTI_MCS_C &&
|
||||||
|
mcs_Table &&
|
||||||
|
*mcs_Table == NR_PDSCH_Config__mcs_Table_qam64LowSE &&
|
||||||
|
ss_type == NR_SearchSpace__searchSpaceType_PR_ue_Specific)
|
||||||
|
mcsTableIdx = 2;
|
||||||
|
else if (rnti_type == NR_RNTI_MCS_C)
|
||||||
|
mcsTableIdx = 2;
|
||||||
|
|
||||||
|
LOG_D(NR_MAC,"DL MCS Table Index: %d\n", mcsTableIdx);
|
||||||
|
return mcsTableIdx;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t get_pusch_mcs_table(long *mcs_Table,
|
uint8_t get_pusch_mcs_table(long *mcs_Table,
|
||||||
int is_tp,
|
int is_tp,
|
||||||
int dci_format,
|
int dci_format,
|
||||||
int rnti_type,
|
int rnti_type,
|
||||||
int target_ss,
|
int target_ss,
|
||||||
bool config_grant) {
|
bool config_grant)
|
||||||
|
{
|
||||||
|
|
||||||
// implementing 6.1.4.1 in 38.214
|
// implementing 6.1.4.1 in 38.214
|
||||||
if (mcs_Table != NULL) {
|
if (mcs_Table != NULL) {
|
||||||
|
|||||||
@@ -151,6 +151,8 @@ uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
|
|||||||
|
|
||||||
int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig,long transformPrecoder);
|
int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig,long transformPrecoder);
|
||||||
|
|
||||||
|
uint8_t get_pdsch_mcs_table(long *mcs_Table, int dci_format, int rnti_type, int ss_type);
|
||||||
|
|
||||||
int get_format0(uint8_t index, uint8_t unpaired,frequency_range_t);
|
int get_format0(uint8_t index, uint8_t unpaired,frequency_range_t);
|
||||||
|
|
||||||
int64_t *get_prach_config_info(frequency_range_t freq_range,
|
int64_t *get_prach_config_info(frequency_range_t freq_range,
|
||||||
|
|||||||
@@ -2445,17 +2445,6 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac,
|
|||||||
UL_BWP->initial_BWPSize = NRRIV2BW(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
UL_BWP->initial_BWPSize = NRRIV2BW(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
UL_BWP->initial_BWPStart = NRRIV2PRBOFFSET(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
UL_BWP->initial_BWPStart = NRRIV2PRBOFFSET(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth, MAX_BWP_SIZE);
|
||||||
|
|
||||||
// Set downlink MCS table
|
|
||||||
if (DL_BWP->pdsch_Config &&
|
|
||||||
DL_BWP->pdsch_Config->mcs_Table) {
|
|
||||||
if (*DL_BWP->pdsch_Config->mcs_Table == 0)
|
|
||||||
DL_BWP->mcsTableIdx = 1;
|
|
||||||
else
|
|
||||||
DL_BWP->mcsTableIdx = 2;
|
|
||||||
} else
|
|
||||||
DL_BWP->mcsTableIdx = 0;
|
|
||||||
LOG_D(NR_MAC,"DL MCS Table Index: %d\n",DL_BWP->mcsTableIdx);
|
|
||||||
|
|
||||||
if (UL_BWP->pusch_Config == NULL || !UL_BWP->pusch_Config->transformPrecoder)
|
if (UL_BWP->pusch_Config == NULL || !UL_BWP->pusch_Config->transformPrecoder)
|
||||||
UL_BWP->transform_precoding = !scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder;
|
UL_BWP->transform_precoding = !scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder;
|
||||||
else
|
else
|
||||||
@@ -2539,14 +2528,17 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac,
|
|||||||
DL_BWP->dci_format = NR_DL_DCI_FORMAT_1_0;
|
DL_BWP->dci_format = NR_DL_DCI_FORMAT_1_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set uplink MCS table
|
// Set MCS tables
|
||||||
long *mcs_Table = NULL;
|
long *dl_mcs_Table = DL_BWP->pdsch_Config ? DL_BWP->pdsch_Config->mcs_Table : NULL;
|
||||||
if (UL_BWP->pusch_Config)
|
DL_BWP->mcsTableIdx = get_pdsch_mcs_table(dl_mcs_Table, DL_BWP->dci_format, NR_RNTI_C, target_ss);
|
||||||
mcs_Table = UL_BWP->transform_precoding ?
|
|
||||||
UL_BWP->pusch_Config->mcs_Table :
|
|
||||||
UL_BWP->pusch_Config->mcs_TableTransformPrecoder;
|
|
||||||
|
|
||||||
UL_BWP->mcs_table = get_pusch_mcs_table(mcs_Table,
|
long *ul_mcs_Table = NULL;
|
||||||
|
if (UL_BWP->pusch_Config)
|
||||||
|
ul_mcs_Table = UL_BWP->transform_precoding ?
|
||||||
|
UL_BWP->pusch_Config->mcs_Table :
|
||||||
|
UL_BWP->pusch_Config->mcs_TableTransformPrecoder;
|
||||||
|
|
||||||
|
UL_BWP->mcs_table = get_pusch_mcs_table(ul_mcs_Table,
|
||||||
UL_BWP->transform_precoding ? 0 : 1,
|
UL_BWP->transform_precoding ? 0 : 1,
|
||||||
UL_BWP->dci_format,
|
UL_BWP->dci_format,
|
||||||
NR_RNTI_C,
|
NR_RNTI_C,
|
||||||
|
|||||||
Reference in New Issue
Block a user