Do not allow empty TBS PUSCH. Account for CQI from inactive cells before activated. (#1667)

master
Ismael Gomez 4 years ago committed by GitHub
parent 92221eb780
commit 0afcea9d61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -303,7 +303,7 @@ uint32_t srslte_N_ta_new(uint32_t N_ta_old, uint32_t ta)
float srslte_coderate(uint32_t tbs, uint32_t nof_re) float srslte_coderate(uint32_t tbs, uint32_t nof_re)
{ {
return (float)tbs / nof_re; return (float)(24 + tbs) / nof_re;
} }
/* Returns the new time advance as indicated by the random access response /* Returns the new time advance as indicated by the random access response

@ -516,8 +516,8 @@ bool phy_ue_db::fill_uci_cfg(uint32_t tti,
const cell_info_t& cell_info = ue.cell_info[cell_idx]; const cell_info_t& cell_info = ue.cell_info[cell_idx];
const srslte_dl_cfg_t& dl_cfg = cell_info.phy_cfg.dl_cfg; const srslte_dl_cfg_t& dl_cfg = cell_info.phy_cfg.dl_cfg;
// Check report for primary and active cells // Check report for primary and active and inactive cells. CQI reports start after RRC configures the carrier
if (cell_info.state == cell_state_primary or cell_info.state == cell_state_secondary_active) { if (cell_info.state != cell_state_none) {
const srslte_cell_t& cell = cell_cfg_list->at(cell_info.enb_cc_idx).cell; const srslte_cell_t& cell = cell_cfg_list->at(cell_info.enb_cc_idx).cell;
// Check if CQI report is required // Check if CQI report is required

@ -718,9 +718,8 @@ int sched_ue::generate_format0(sched_interface::ul_sched_data_t* data,
// Recompute again the MCS and TBS with the new spectral efficiency (based on the available RE for data) // Recompute again the MCS and TBS with the new spectral efficiency (based on the available RE for data)
if (nof_re >= nof_uci_re) { if (nof_re >= nof_uci_re) {
tbs = carriers[cc_idx].alloc_tbs_ul(alloc.length(), nof_re - nof_uci_re, req_bytes, &mcs); tbs = carriers[cc_idx].alloc_tbs_ul(alloc.length(), nof_re - nof_uci_re, req_bytes, &mcs);
} else {
tbs = 0;
} }
// NOTE: if (nof_re < nof_uci_re) we should set TBS=0
} }
} }
h->new_tx(tti, mcs, tbs, alloc, nof_retx); h->new_tx(tti, mcs, tbs, alloc, nof_retx);
@ -1162,11 +1161,10 @@ int cc_sched_ue::cqi_to_tbs(uint32_t nof_prb, uint32_t nof_re, bool use_tbs_inde
*mcs = (uint32_t)sel_mcs; *mcs = (uint32_t)sel_mcs;
} }
if (coderate <= SRSLTE_MIN(max_coderate, 0.930 * Qm)) { // If coderate > SRSLTE_MIN(max_coderate, 0.930 * Qm) we should set TBS=0. We don't because it's not correctly
// handled by the scheduler, but we might be scheduling undecodable codewords at very low SNR
return tbs; return tbs;
} else {
return 0;
}
} }
/************************************************************************************************ /************************************************************************************************

Loading…
Cancel
Save