Ensure that retransmission uses TDA as indicated
Previously, the TDA reuse condition was wrong: for multiple TDAs with different k2, the symbol allocation might be the same, in which the previous logic was using the wrong TDA. Fix the condition, and insert an assert to ensure the allocated TDA is correct.
This commit is contained in:
@@ -1805,7 +1805,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
|
||||
new_sched.bwp_info = bwp_info;
|
||||
DevAssert(new_sched.ul_harq_pid == harq_pid);
|
||||
|
||||
bool reuse_old_tda = (retInfo->tda_info.startSymbolIndex == tda_info->startSymbolIndex) && (retInfo->tda_info.nrOfSymbols <= tda_info->nrOfSymbols);
|
||||
bool reuse_old_tda = retInfo->time_domain_allocation == tda;
|
||||
if (reuse_old_tda && nrOfLayers == retInfo->nrOfLayers) {
|
||||
/* Check the resource is enough for retransmission */
|
||||
const uint16_t slbitmap = SL_to_bitmap(retInfo->tda_info.startSymbolIndex, retInfo->tda_info.nrOfSymbols);
|
||||
@@ -1887,6 +1887,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
|
||||
fill_pdcch_vrb_map(nrmac, CC_id, &sched_ctrl->sched_pdcch, CCEIndex, sched_ctrl->aggregation_level, dci_beam_idx);
|
||||
|
||||
// signal new allocation
|
||||
DevAssert(new_sched.time_domain_allocation == tda);
|
||||
post_process_ulsch(nrmac, pp_pusch, UE, &new_sched);
|
||||
LOG_D(NR_MAC,
|
||||
"%4d.%2d Allocate UL retransmission RNTI %04x sched %4d.%2d (%d RBs)\n",
|
||||
|
||||
Reference in New Issue
Block a user