diff --git a/lib/include/srsran/interfaces/sched_interface.h b/lib/include/srsran/interfaces/sched_interface.h index ec9d3a32d..d0e3eefe4 100644 --- a/lib/include/srsran/interfaces/sched_interface.h +++ b/lib/include/srsran/interfaces/sched_interface.h @@ -66,6 +66,7 @@ public: int init_ul_snr_value = 5; int init_dl_cqi = 5; float max_sib_coderate = 0.8; + int pdcch_cqi_offset = 0; }; struct cell_cfg_t { diff --git a/srsenb/enb.conf.example b/srsenb/enb.conf.example index f0f004b07..780ad967e 100644 --- a/srsenb/enb.conf.example +++ b/srsenb/enb.conf.example @@ -180,6 +180,7 @@ enable = false # init_ul_snr_value: Initial UL SNR value used for computing MCS in the first UL grant # init_dl_cqi: DL CQI value used before any CQI report is available to the eNB # max_sib_coderate: Upper bound on SIB and RAR grants coderate +# pdcch_cqi_offset: CQI offset in derivation of PDCCH aggregation level # ##################################################################### [scheduler] @@ -204,6 +205,7 @@ enable = false #init_ul_snr_value=5 #init_dl_cqi=5 #max_sib_coderate=0.3 +#pdcch_cqi_offset=0 ##################################################################### # eMBMS configuration options diff --git a/srsenb/src/main.cc b/srsenb/src/main.cc index 6bb6aa002..028e25dc5 100644 --- a/srsenb/src/main.cc +++ b/srsenb/src/main.cc @@ -162,6 +162,8 @@ void parse_args(all_args_t* args, int argc, char* argv[]) ("scheduler.init_ul_snr_value", bpo::value(&args->stack.mac.sched.init_ul_snr_value)->default_value(5), "Initial UL SNR value used for computing MCS in the first UL grant") ("scheduler.init_dl_cqi", bpo::value(&args->stack.mac.sched.init_dl_cqi)->default_value(5), "DL CQI value used before any CQI report is available to the eNB") ("scheduler.max_sib_coderate", bpo::value(&args->stack.mac.sched.max_sib_coderate)->default_value(0.8), "Upper bound on SIB and RAR grants coderate") + ("scheduler.pdcch_cqi_offset", bpo::value(&args->stack.mac.sched.pdcch_cqi_offset)->default_value(0), "CQI offset in derivation of PDCCH aggregation level") + /* Downlink Channel emulator section */ diff --git a/srsenb/src/stack/mac/sched_ue_ctrl/sched_ue_cell.cc b/srsenb/src/stack/mac/sched_ue_ctrl/sched_ue_cell.cc index f3add09f4..c7ba14e42 100644 --- a/srsenb/src/stack/mac/sched_ue_ctrl/sched_ue_cell.cc +++ b/srsenb/src/stack/mac/sched_ue_ctrl/sched_ue_cell.cc @@ -279,6 +279,7 @@ uint32_t sched_ue_cell::get_aggr_level(uint32_t nof_bits) const } else { dl_cqi = dl_cqi_ctxt.get_avg_cqi(); } + dl_cqi = std::max(cell_cfg->sched_cfg->pdcch_cqi_offset + (int)dl_cqi, 0); return srsenb::get_aggr_level(nof_bits, dl_cqi, cell_cfg->sched_cfg->min_aggr_level,