diff --git a/lib/include/srsran/interfaces/sched_interface.h b/lib/include/srsran/interfaces/sched_interface.h index f2b53188d..aa946772f 100644 --- a/lib/include/srsran/interfaces/sched_interface.h +++ b/lib/include/srsran/interfaces/sched_interface.h @@ -62,6 +62,8 @@ public: float max_delta_ul_snr = 5; float adaptive_link_step_size = 0.001; uint32_t min_tpc_tti_interval = 1; + float ul_snr_avg_alpha = 0.05; + int init_ul_snr_value = 5; }; struct cell_cfg_t { diff --git a/srsenb/enb.conf.example b/srsenb/enb.conf.example index 1672bfcdb..c656f6a55 100644 --- a/srsenb/enb.conf.example +++ b/srsenb/enb.conf.example @@ -174,6 +174,8 @@ enable = false # max_delta_ul_snr: Maximum shift in UL SNR for adaptive UL link # adaptive_link_step_size: Step size or learning rate used in adaptive link # min_tpc_tti_interval: Minimum TTI interval between TPCs different than 1 +# ul_snr_avg_alpha: Exponential Average alpha coefficient used in estimation of UL SNR +# init_ul_snr_value: Initial UL SNR value used for computing MCS in the first UL grant # ##################################################################### [scheduler] @@ -194,6 +196,8 @@ enable = false #max_delta_ul_snr = 5 #adaptive_link_step_size = 0.001 #min_tpc_tti_interval = 1 +#ul_snr_avg_alpha=0.05 +#init_ul_snr_value=5 ##################################################################### # eMBMS configuration options diff --git a/srsenb/hdr/stack/mac/sched_ue_ctrl/tpc.h b/srsenb/hdr/stack/mac/sched_ue_ctrl/tpc.h index 4844f1bc3..b7ee39c4b 100644 --- a/srsenb/hdr/stack/mac/sched_ue_ctrl/tpc.h +++ b/srsenb/hdr/stack/mac/sched_ue_ctrl/tpc.h @@ -39,11 +39,14 @@ public: float target_pucch_snr_dB_ = -1.0, float target_pusch_sn_dB_ = -1.0, bool phr_handling_flag_ = false, - uint32_t min_tpc_tti_interval_ = 1) : + uint32_t min_tpc_tti_interval_ = 1, + float ul_snr_avg_alpha = 0.05, + int init_ul_snr_value = 5) : nof_prb(cell_nof_prb), target_pucch_snr_dB(target_pucch_snr_dB_), target_pusch_snr_dB(target_pusch_sn_dB_), - snr_estim_list({ul_ch_snr_estim{target_pusch_snr_dB}, ul_ch_snr_estim{target_pucch_snr_dB}}), + snr_estim_list( + {ul_ch_snr_estim{ul_snr_avg_alpha, init_ul_snr_value}, ul_ch_snr_estim{ul_snr_avg_alpha, init_ul_snr_value}}), phr_handling_flag(phr_handling_flag_), max_prbs_cached(nof_prb), min_tpc_tti_interval(min_tpc_tti_interval_), @@ -206,8 +209,8 @@ private: int acc_tpc_values = 0; uint32_t last_tpc_tti_count = 0; - explicit ul_ch_snr_estim(float initial_snr) : - snr_avg(0.1, initial_snr < 0 ? 5 : initial_snr), win_tpc_values(FDD_HARQ_DELAY_UL_MS + FDD_HARQ_DELAY_DL_MS) + explicit ul_ch_snr_estim(float exp_avg_alpha, int initial_snr) : + snr_avg(exp_avg_alpha, initial_snr), win_tpc_values(FDD_HARQ_DELAY_UL_MS + FDD_HARQ_DELAY_DL_MS) {} }; std::array snr_estim_list; diff --git a/srsenb/src/main.cc b/srsenb/src/main.cc index d03812f52..e5a534518 100644 --- a/srsenb/src/main.cc +++ b/srsenb/src/main.cc @@ -156,6 +156,8 @@ void parse_args(all_args_t* args, int argc, char* argv[]) ("scheduler.max_delta_ul_snr", bpo::value(&args->stack.mac.sched.max_delta_ul_snr)->default_value(5.0), "Maximum shift in UL SNR for adaptive UL link") ("scheduler.adaptive_link_step_size", bpo::value(&args->stack.mac.sched.max_delta_ul_snr)->default_value(0.001), "Step size or learning rate used in adaptive link") ("scheduler.min_tpc_tti_interval", bpo::value(&args->stack.mac.sched.min_tpc_tti_interval)->default_value(1), "Minimum TTI interval between positive or negative TPCs") + ("scheduler.ul_snr_avg_alpha", bpo::value(&args->stack.mac.sched.ul_snr_avg_alpha)->default_value(0.05), "Exponential Average alpha coefficient used in estimation of UL SNR") + ("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") /* 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 a70d57856..f844aced3 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 @@ -39,7 +39,9 @@ sched_ue_cell::sched_ue_cell(uint16_t rnti_, const sched_cell_params_t& cell_cfg cell_cfg->cfg.target_pucch_ul_sinr, cell_cfg->cfg.target_pusch_ul_sinr, cell_cfg->cfg.enable_phr_handling, - cell_cfg->sched_cfg->min_tpc_tti_interval), + cell_cfg->sched_cfg->min_tpc_tti_interval, + cell_cfg->sched_cfg->ul_snr_avg_alpha, + cell_cfg->sched_cfg->init_ul_snr_value), fixed_mcs_dl(cell_cfg_.sched_cfg->pdsch_mcs), fixed_mcs_ul(cell_cfg_.sched_cfg->pusch_mcs), current_tti(current_tti_),