mirror of https://github.com/PentHertz/srsLTE.git
Fix PUCCH2 RRC scheduling
This commit is contained in:
parent
a9a23214b0
commit
00653bdd46
|
@ -28,7 +28,6 @@ inline const char* to_string(rrc_cfg_cqi_mode_t mode)
|
|||
struct rrc_cfg_cqi_t {
|
||||
uint32_t sf_mapping[80];
|
||||
uint32_t nof_subframes;
|
||||
uint32_t nof_prb;
|
||||
uint32_t period;
|
||||
uint32_t m_ri;
|
||||
bool is_subband_enabled;
|
||||
|
|
|
@ -45,7 +45,6 @@ phy_cnfg =
|
|||
simultaneousAckCQI = true;
|
||||
period = 40; // in ms
|
||||
//subframe = [0, 10, 20, 30]; // Optional vector of subframe indices every period where CQI resources will be allocated (default uses all)
|
||||
nof_prb = 1;
|
||||
m_ri = 8; // RI period in CQI period
|
||||
//subband_k = 1; // If enabled and > 0, configures sub-band CQI reporting and defines K (see 36.213 7.2.2). If disabled, configures wideband CQI
|
||||
};
|
||||
|
|
|
@ -736,7 +736,6 @@ int parse_rr(all_args_t* args_, rrc_cfg_t* rrc_cfg_)
|
|||
"mode", &rrc_cfg_->cqi_cfg.mode, rrc_cfg_cqi_mode_text, RRC_CFG_CQI_MODE_N_ITEMS));
|
||||
cqi_report_cnfg.add_field(new parser::field<uint32>("period", &rrc_cfg_->cqi_cfg.period));
|
||||
cqi_report_cnfg.add_field(new parser::field<uint32>("m_ri", &rrc_cfg_->cqi_cfg.m_ri));
|
||||
cqi_report_cnfg.add_field(new parser::field<uint32>("nof_prb", &rrc_cfg_->cqi_cfg.nof_prb));
|
||||
cqi_report_cnfg.add_field(
|
||||
new parser::field<uint32>("subband_k", &rrc_cfg_->cqi_cfg.subband_k, &rrc_cfg_->cqi_cfg.is_subband_enabled));
|
||||
cqi_report_cnfg.add_field(new parser::field<bool>("simultaneousAckCQI", &rrc_cfg_->cqi_cfg.simultaneousAckCQI));
|
||||
|
@ -1227,7 +1226,8 @@ int set_derived_args(all_args_t* args_, rrc_cfg_t* rrc_cfg_, phy_cfg_t* phy_cfg_
|
|||
}
|
||||
|
||||
// Check PUCCH and PRACH configuration
|
||||
uint32_t nrb_pucch = std::max(rrc_cfg_->sr_cfg.nof_prb, rrc_cfg_->cqi_cfg.nof_prb);
|
||||
uint32_t nrb_pucch =
|
||||
std::max(rrc_cfg_->sr_cfg.nof_prb, (uint32_t)rrc_cfg_->sibs[1].sib2().rr_cfg_common.pucch_cfg_common.nrb_cqi);
|
||||
uint32_t prach_freq_offset = rrc_cfg_->sibs[1].sib2().rr_cfg_common.prach_cfg.prach_cfg_info.prach_freq_offset;
|
||||
if (args_->enb.n_prb > 6) {
|
||||
uint32_t lower_bound = nrb_pucch;
|
||||
|
|
|
@ -703,7 +703,7 @@ void rrc::config_mac()
|
|||
item.n1pucch_an = cfg.sibs[1].sib2().rr_cfg_common.pucch_cfg_common.n1_pucch_an;
|
||||
item.nrb_cqi = cfg.sibs[1].sib2().rr_cfg_common.pucch_cfg_common.nrb_cqi;
|
||||
|
||||
item.nrb_pucch = SRSRAN_MAX(cfg.sr_cfg.nof_prb, cfg.cqi_cfg.nof_prb);
|
||||
item.nrb_pucch = SRSRAN_MAX(cfg.sr_cfg.nof_prb, item.nrb_cqi);
|
||||
logger.info("Allocating %d PRBs for PUCCH", item.nrb_pucch);
|
||||
|
||||
// Copy base cell configuration
|
||||
|
|
|
@ -355,17 +355,13 @@ bool ue_cell_ded_list::alloc_cqi_resources(uint32_t ue_cc_idx, uint32_t period)
|
|||
return false;
|
||||
}
|
||||
|
||||
const auto& pcell_pucch_cfg = get_ue_cc_idx(UE_PCELL_CC_IDX)->cell_common->sib2.rr_cfg_common.pucch_cfg_common;
|
||||
uint32_t c = SRSRAN_CP_ISNORM(cfg.cell.cp) ? 3 : 2;
|
||||
uint32_t delta_pucch_shift = pcell_pucch_cfg.delta_pucch_shift.to_number();
|
||||
delta_pucch_shift = SRSRAN_MAX(1, delta_pucch_shift);
|
||||
uint32_t max_users = 12 * c / delta_pucch_shift;
|
||||
uint32_t max_users = 12;
|
||||
|
||||
// Allocate all CQI resources for all carriers now
|
||||
// Find freq-time resources with least number of users
|
||||
int i_min = 0, j_min = 0;
|
||||
uint32_t min_users = std::numeric_limits<uint32_t>::max();
|
||||
for (uint32_t i = 0; i < cfg.cqi_cfg.nof_prb; i++) {
|
||||
for (uint32_t i = 0; i < cfg.sibs[1].sib2().rr_cfg_common.pucch_cfg_common.nrb_cqi; i++) {
|
||||
for (uint32_t j = 0; j < cfg.cqi_cfg.nof_subframes; j++) {
|
||||
if (pucch_res->cqi_sched.nof_users[i][j] < min_users) {
|
||||
i_min = i;
|
||||
|
@ -410,9 +406,6 @@ bool ue_cell_ded_list::alloc_cqi_resources(uint32_t ue_cc_idx, uint32_t period)
|
|||
|
||||
// Compute n_pucch_2
|
||||
uint16_t n_pucch = i_min * max_users + pucch_res->cqi_sched.nof_users[i_min][j_min];
|
||||
if (pcell_pucch_cfg.ncs_an) {
|
||||
n_pucch += pcell_pucch_cfg.ncs_an;
|
||||
}
|
||||
|
||||
cell->cqi_res_present = true;
|
||||
cell->cqi_res.pmi_idx = pmi_idx;
|
||||
|
|
|
@ -222,7 +222,7 @@ void rrc_nr::config_mac()
|
|||
}
|
||||
|
||||
// PUCCH width
|
||||
cell_cfg.nrb_pucch = SRSRAN_MAX(cfg.sr_cfg.nof_prb, cfg.cqi_cfg.nof_prb);
|
||||
cell_cfg.nrb_pucch = SRSRAN_MAX(cfg.sr_cfg.nof_prb, /* TODO: where is n_rb2 in NR? */ 0);
|
||||
logger.info("Allocating %d PRBs for PUCCH", cell_cfg.nrb_pucch);
|
||||
|
||||
// Copy Cell configuration
|
||||
|
|
Loading…
Reference in New Issue