From c2d4dedafc4a941d65851c8ba160bf7746e5caaa Mon Sep 17 00:00:00 2001 From: Carlo Galiotto Date: Wed, 26 Jan 2022 16:15:46 +0100 Subject: [PATCH] sched: plug dyn CQI->MCS mapping into scheduler Signed-off-by: Carlo Galiotto --- srsgnb/src/stack/mac/sched_nr_grant_allocator.cc | 10 ++++++++++ srsgnb/src/stack/rrc/cell_asn1_config.cc | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/srsgnb/src/stack/mac/sched_nr_grant_allocator.cc b/srsgnb/src/stack/mac/sched_nr_grant_allocator.cc index e86de3673..d8c4d8671 100644 --- a/srsgnb/src/stack/mac/sched_nr_grant_allocator.cc +++ b/srsgnb/src/stack/mac/sched_nr_grant_allocator.cc @@ -329,6 +329,16 @@ alloc_result bwp_slot_allocator::alloc_pdsch(slot_ue& ue, uint32_t ss_id, const // Allocate HARQ int mcs = ue->fixed_pdsch_mcs(); if (ue.h_dl->empty()) { + mcs = srsran_ra_nr_cqi_to_mcs(/* cqi */ ue.dl_cqi(), + /* cqi_table_idx */ ue.cfg().phy().csi.reports->cqi_table, + /* mcs_table */ pdsch.sch.sch_cfg.mcs_table, + /* dci_format */ pdcch.dci.ctx.format, + /* search_space_type*/ pdcch.dci.ctx.ss_type, + /* rnti_type */ rnti_type); + if (mcs < 0) { + logger.warning("SCHED: UE rnti=0x%x reported CQI=0 - Using lowest MCS=0", ue->rnti); + mcs = 0; + } bool success = ue.h_dl->new_tx(ue.pdsch_slot, ue.uci_slot, dl_grant, mcs, 4, pdcch.dci); srsran_assert(success, "Failed to allocate DL HARQ"); } else { diff --git a/srsgnb/src/stack/rrc/cell_asn1_config.cc b/srsgnb/src/stack/rrc/cell_asn1_config.cc index af90efa99..9da82a9a1 100644 --- a/srsgnb/src/stack/rrc/cell_asn1_config.cc +++ b/srsgnb/src/stack/rrc/cell_asn1_config.cc @@ -173,7 +173,7 @@ int fill_csi_report_from_enb_cfg(const rrc_nr_cfg_t& cfg, csi_meas_cfg_s& csi_me csi_report.group_based_beam_report.set_disabled(); // Skip CQI table (optional) csi_report.cqi_table_present = true; - csi_report.cqi_table = asn1::rrc_nr::csi_report_cfg_s::cqi_table_opts::table2; + csi_report.cqi_table = asn1::rrc_nr::csi_report_cfg_s::cqi_table_opts::table1; csi_report.subband_size = asn1::rrc_nr::csi_report_cfg_s::subband_size_opts::value1; if (cfg.cell_list[0].duplex_mode == SRSRAN_DUPLEX_MODE_FDD) { @@ -519,6 +519,11 @@ void fill_pdsch_cfg_from_enb_cfg(const rrc_nr_cfg_t& cfg, uint32_t cc, pdsch_cfg out.prb_bundling_type.static_bundling().bundle_size = pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_::bundle_size_opts::wideband; + // MCS Table + // NOTE: For Table 1 or QAM64, set false and comment value + // out.mcs_table_present = true; + // out.mcs_table.value = pdsch_cfg_s::mcs_table_opts::qam256; + // ZP-CSI out.zp_csi_rs_res_to_add_mod_list.resize(1); out.zp_csi_rs_res_to_add_mod_list[0].zp_csi_rs_res_id = 0;