Update the ul_prbblacklist based on SRS measurements and an ul_prbblack_SNR_threshold
This commit is contained in:
@@ -58,6 +58,7 @@
|
|||||||
#define CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY "ulsch_max_frame_inactivity"
|
#define CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY "ulsch_max_frame_inactivity"
|
||||||
#define CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10 "pusch_TargetSNRx10"
|
#define CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10 "pusch_TargetSNRx10"
|
||||||
#define CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10 "pucch_TargetSNRx10"
|
#define CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10 "pucch_TargetSNRx10"
|
||||||
|
#define CONFIG_STRING_MACRLC_UL_PRBBLACK_SNR_THRESHOLD "ul_prbblack_SNR_threshold"
|
||||||
#define CONFIG_STRING_MACRLC_PUCCHFAILURETHRES "pucch_FailureThres"
|
#define CONFIG_STRING_MACRLC_PUCCHFAILURETHRES "pucch_FailureThres"
|
||||||
#define CONFIG_STRING_MACRLC_PUSCHFAILURETHRES "pusch_FailureThres"
|
#define CONFIG_STRING_MACRLC_PUSCHFAILURETHRES "pusch_FailureThres"
|
||||||
#define CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER "dl_bler_target_upper"
|
#define CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER "dl_bler_target_upper"
|
||||||
@@ -93,6 +94,7 @@
|
|||||||
{CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY, NULL, 0, uptr:NULL, defintval:10, TYPE_UINT, 0}, \
|
{CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY, NULL, 0, uptr:NULL, defintval:10, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
{CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10, NULL, 0, iptr:NULL, defintval:150, TYPE_INT, 0}, \
|
{CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10, NULL, 0, iptr:NULL, defintval:150, TYPE_INT, 0}, \
|
||||||
|
{CONFIG_STRING_MACRLC_UL_PRBBLACK_SNR_THRESHOLD, NULL, 0, iptr:NULL, defintval:10, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_MACRLC_PUCCHFAILURETHRES, NULL, 0, iptr:NULL, defintval:10, TYPE_INT, 0}, \
|
{CONFIG_STRING_MACRLC_PUCCHFAILURETHRES, NULL, 0, iptr:NULL, defintval:10, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_MACRLC_PUSCHFAILURETHRES, NULL, 0, iptr:NULL, defintval:10, TYPE_INT, 0}, \
|
{CONFIG_STRING_MACRLC_PUSCHFAILURETHRES, NULL, 0, iptr:NULL, defintval:10, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER, "Upper threshold of BLER to decrease DL MCS", 0, dblptr:NULL, defdblval:0.15, TYPE_DOUBLE, 0}, \
|
{CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER, "Upper threshold of BLER to decrease DL MCS", 0, dblptr:NULL, defdblval:0.15, TYPE_DOUBLE, 0}, \
|
||||||
@@ -123,14 +125,15 @@
|
|||||||
#define MACRLC_ULSCH_MAX_FRAME_INACTIVITY 17
|
#define MACRLC_ULSCH_MAX_FRAME_INACTIVITY 17
|
||||||
#define MACRLC_PUSCHTARGETSNRX10_IDX 18
|
#define MACRLC_PUSCHTARGETSNRX10_IDX 18
|
||||||
#define MACRLC_PUCCHTARGETSNRX10_IDX 19
|
#define MACRLC_PUCCHTARGETSNRX10_IDX 19
|
||||||
#define MACRLC_PUCCHFAILURETHRES_IDX 20
|
#define MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX 20
|
||||||
#define MACRLC_PUSCHFAILURETHRES_IDX 21
|
#define MACRLC_PUCCHFAILURETHRES_IDX 21
|
||||||
#define MACRLC_DL_BLER_TARGET_UPPER_IDX 22
|
#define MACRLC_PUSCHFAILURETHRES_IDX 22
|
||||||
#define MACRLC_DL_BLER_TARGET_LOWER_IDX 23
|
#define MACRLC_DL_BLER_TARGET_UPPER_IDX 23
|
||||||
#define MACRLC_DL_RD2_BLER_THRESHOLD_IDX 24
|
#define MACRLC_DL_BLER_TARGET_LOWER_IDX 24
|
||||||
#define MACRLC_DL_MAX_MCS_IDX 25
|
#define MACRLC_DL_RD2_BLER_THRESHOLD_IDX 25
|
||||||
#define MACRLC_HARQ_ROUND_MAX_IDX 26
|
#define MACRLC_DL_MAX_MCS_IDX 26
|
||||||
#define MACRLC_MIN_GRANT_PRB_IDX 27
|
#define MACRLC_HARQ_ROUND_MAX_IDX 27
|
||||||
#define MACRLC_MIN_GRANT_MCS_IDX 28
|
#define MACRLC_MIN_GRANT_PRB_IDX 28
|
||||||
|
#define MACRLC_MIN_GRANT_MCS_IDX 29
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -770,6 +770,7 @@ void RCconfig_nr_macrlc() {
|
|||||||
RC.nb_nr_mac_CC[j] = *(MacRLC_ParamList.paramarray[j][MACRLC_CC_IDX].iptr);
|
RC.nb_nr_mac_CC[j] = *(MacRLC_ParamList.paramarray[j][MACRLC_CC_IDX].iptr);
|
||||||
RC.nrmac[j]->pusch_target_snrx10 = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHTARGETSNRX10_IDX].iptr);
|
RC.nrmac[j]->pusch_target_snrx10 = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHTARGETSNRX10_IDX].iptr);
|
||||||
RC.nrmac[j]->pucch_target_snrx10 = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHTARGETSNRX10_IDX].iptr);
|
RC.nrmac[j]->pucch_target_snrx10 = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHTARGETSNRX10_IDX].iptr);
|
||||||
|
RC.nrmac[j]->ul_prbblack_SNR_threshold = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX].iptr);
|
||||||
RC.nrmac[j]->pucch_failure_thres = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHFAILURETHRES_IDX].iptr);
|
RC.nrmac[j]->pucch_failure_thres = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHFAILURETHRES_IDX].iptr);
|
||||||
RC.nrmac[j]->pusch_failure_thres = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHFAILURETHRES_IDX].iptr);
|
RC.nrmac[j]->pusch_failure_thres = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHFAILURETHRES_IDX].iptr);
|
||||||
|
|
||||||
|
|||||||
@@ -890,7 +890,7 @@ void handle_nr_srs_measurements(const module_id_t module_id,
|
|||||||
const uint8_t num_reported_symbols,
|
const uint8_t num_reported_symbols,
|
||||||
nfapi_nr_srs_indication_reported_symbol_t* reported_symbol_list) {
|
nfapi_nr_srs_indication_reported_symbol_t* reported_symbol_list) {
|
||||||
|
|
||||||
LOG_I(NR_MAC, "(%d.%d) Received SRS indication for rnti: 0x%04x\n", frame, slot, rnti);
|
LOG_D(NR_MAC, "(%d.%d) Received SRS indication for rnti: 0x%04x\n", frame, slot, rnti);
|
||||||
|
|
||||||
#ifdef SRS_IND_DEBUG
|
#ifdef SRS_IND_DEBUG
|
||||||
LOG_I(NR_MAC, "frame = %i\n", frame);
|
LOG_I(NR_MAC, "frame = %i\n", frame);
|
||||||
@@ -906,6 +906,18 @@ void handle_nr_srs_measurements(const module_id_t module_id,
|
|||||||
rb, reported_symbol_list[0].rb_list[rb].rb_snr, (reported_symbol_list[0].rb_list[rb].rb_snr>>1)-64);
|
rb, reported_symbol_list[0].rb_list[rb].rb_snr, (reported_symbol_list[0].rb_list[rb].rb_snr>>1)-64);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int ul_prbblack_SNR_threshold = RC.nrmac[module_id]->ul_prbblack_SNR_threshold;
|
||||||
|
uint16_t *ulprbbl = RC.nrmac[module_id]->ulprbbl;
|
||||||
|
|
||||||
|
memset(ulprbbl, 0, reported_symbol_list[0].num_rbs*sizeof(uint16_t));
|
||||||
|
for (int rb = 0; rb < reported_symbol_list[0].num_rbs; rb++) {
|
||||||
|
int snr = (reported_symbol_list[0].rb_list[rb].rb_snr>>1)-64;
|
||||||
|
if (snr < ul_prbblack_SNR_threshold) {
|
||||||
|
ulprbbl[rb] = 0x3FFF; // all symbols taken
|
||||||
|
}
|
||||||
|
LOG_D(NR_MAC, "ulprbbl[%3i] = 0x%x\n", rb, ulprbbl[rb]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
long get_K2(NR_ServingCellConfigCommon_t *scc,
|
long get_K2(NR_ServingCellConfigCommon_t *scc,
|
||||||
|
|||||||
@@ -721,6 +721,8 @@ typedef struct gNB_MAC_INST_s {
|
|||||||
int pusch_target_snrx10;
|
int pusch_target_snrx10;
|
||||||
/// Pucch target SNR
|
/// Pucch target SNR
|
||||||
int pucch_target_snrx10;
|
int pucch_target_snrx10;
|
||||||
|
/// SNR threshold needed to put or not a PRB in the black list
|
||||||
|
int ul_prbblack_SNR_threshold;
|
||||||
/// PUCCH Failure threshold (compared to consecutive PUCCH DTX)
|
/// PUCCH Failure threshold (compared to consecutive PUCCH DTX)
|
||||||
int pucch_failure_thres;
|
int pucch_failure_thres;
|
||||||
/// PUSCH Failure threshold (compared to consecutive PUSCH DTX)
|
/// PUSCH Failure threshold (compared to consecutive PUSCH DTX)
|
||||||
@@ -735,7 +737,7 @@ typedef struct gNB_MAC_INST_s {
|
|||||||
/// current PDU index (BCH,DLSCH)
|
/// current PDU index (BCH,DLSCH)
|
||||||
uint16_t pdu_index[NFAPI_CC_MAX];
|
uint16_t pdu_index[NFAPI_CC_MAX];
|
||||||
int num_ulprbbl;
|
int num_ulprbbl;
|
||||||
uint16_t ulprbbl[275];
|
uint16_t ulprbbl[MAX_BWP_SIZE];
|
||||||
/// NFAPI Config Request Structure
|
/// NFAPI Config Request Structure
|
||||||
nfapi_nr_config_request_scf_t config[NFAPI_CC_MAX];
|
nfapi_nr_config_request_scf_t config[NFAPI_CC_MAX];
|
||||||
/// NFAPI DL Config Request Structure
|
/// NFAPI DL Config Request Structure
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ MACRLCs = (
|
|||||||
tr_n_preference = "local_RRC";
|
tr_n_preference = "local_RRC";
|
||||||
#pusch_TargetSNRx10 = 150;
|
#pusch_TargetSNRx10 = 150;
|
||||||
#pucch_TargetSNRx10 = 200;
|
#pucch_TargetSNRx10 = 200;
|
||||||
|
ul_prbblack_SNR_threshold = 10;
|
||||||
ulsch_max_frame_inactivity = 0;
|
ulsch_max_frame_inactivity = 0;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ MACRLCs = (
|
|||||||
tr_n_preference = "local_RRC";
|
tr_n_preference = "local_RRC";
|
||||||
pusch_TargetSNRx10 = 150;
|
pusch_TargetSNRx10 = 150;
|
||||||
pucch_TargetSNRx10 = 200;
|
pucch_TargetSNRx10 = 200;
|
||||||
|
ul_prbblack_SNR_threshold = 10;
|
||||||
ulsch_max_frame_inactivity = 0;
|
ulsch_max_frame_inactivity = 0;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user