UL harq PID: similar to parent, reduce scope of sched_pusch
This commit is contained in:
@@ -1826,6 +1826,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
|
|||||||
|
|
||||||
sched_pusch->bwp_info = bwp_info;
|
sched_pusch->bwp_info = bwp_info;
|
||||||
sched_pusch->rbStart = rbStart;
|
sched_pusch->rbStart = rbStart;
|
||||||
|
sched_pusch->ul_harq_pid = harq_pid;
|
||||||
/* no need to recompute the TBS, it will be the same */
|
/* no need to recompute the TBS, it will be the same */
|
||||||
|
|
||||||
/* Mark the corresponding RBs as used */
|
/* Mark the corresponding RBs as used */
|
||||||
@@ -1908,9 +1909,9 @@ static void pf_ul(module_id_t module_id,
|
|||||||
uint16_t *rballoc_mask = &nrmac->common_channels[CC_id].vrb_map_UL[beam.idx][index * MAX_BWP_SIZE];
|
uint16_t *rballoc_mask = &nrmac->common_channels[CC_id].vrb_map_UL[beam.idx][index * MAX_BWP_SIZE];
|
||||||
|
|
||||||
/* Check if retransmission is necessary */
|
/* Check if retransmission is necessary */
|
||||||
sched_pusch->ul_harq_pid = sched_ctrl->retrans_ul_harq.head;
|
int ul_harq_pid = sched_ctrl->retrans_ul_harq.head;
|
||||||
LOG_D(NR_MAC,"pf_ul: UE %04x harq_pid %d\n", UE->rnti, sched_pusch->ul_harq_pid);
|
LOG_D(NR_MAC,"pf_ul: UE %04x harq_pid %d\n", UE->rnti, ul_harq_pid);
|
||||||
if (sched_pusch->ul_harq_pid >= 0) {
|
if (ul_harq_pid >= 0) {
|
||||||
/* Allocate retransmission*/
|
/* Allocate retransmission*/
|
||||||
const int tda = get_ul_tda(nrmac, sched_frame, sched_slot);
|
const int tda = get_ul_tda(nrmac, sched_frame, sched_slot);
|
||||||
bool r = allocate_ul_retransmission(nrmac,
|
bool r = allocate_ul_retransmission(nrmac,
|
||||||
@@ -1920,7 +1921,7 @@ static void pf_ul(module_id_t module_id,
|
|||||||
&n_rb_sched[beam.idx],
|
&n_rb_sched[beam.idx],
|
||||||
dci_beam.idx,
|
dci_beam.idx,
|
||||||
UE,
|
UE,
|
||||||
sched_pusch->ul_harq_pid,
|
ul_harq_pid,
|
||||||
scc,
|
scc,
|
||||||
tda);
|
tda);
|
||||||
if (!r) {
|
if (!r) {
|
||||||
@@ -1936,6 +1937,7 @@ static void pf_ul(module_id_t module_id,
|
|||||||
remainUEs[beam.idx]--;
|
remainUEs[beam.idx]--;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
DevAssert(ul_harq_pid == -1); // all other allocations must be new ones
|
||||||
|
|
||||||
/* skip this UE if there are no free HARQ processes. This can happen e.g.
|
/* skip this UE if there are no free HARQ processes. This can happen e.g.
|
||||||
* if the UE disconnected in L2sim, in which case the gNB is not notified
|
* if the UE disconnected in L2sim, in which case the gNB is not notified
|
||||||
@@ -2040,6 +2042,7 @@ static void pf_ul(module_id_t module_id,
|
|||||||
sched_pusch->bwp_info = bwp_info;
|
sched_pusch->bwp_info = bwp_info;
|
||||||
sched_pusch->frame = sched_frame;
|
sched_pusch->frame = sched_frame;
|
||||||
sched_pusch->slot = sched_slot;
|
sched_pusch->slot = sched_slot;
|
||||||
|
sched_pusch->ul_harq_pid = -1; // new transmission
|
||||||
sched_pusch->tb_size = nr_compute_tbs(sched_pusch->Qm,
|
sched_pusch->tb_size = nr_compute_tbs(sched_pusch->Qm,
|
||||||
sched_pusch->R,
|
sched_pusch->R,
|
||||||
sched_pusch->rbSize,
|
sched_pusch->rbSize,
|
||||||
@@ -2236,6 +2239,7 @@ static void pf_ul(module_id_t module_id,
|
|||||||
sched_pusch->bwp_info = bwp_info;
|
sched_pusch->bwp_info = bwp_info;
|
||||||
sched_pusch->frame = sched_frame;
|
sched_pusch->frame = sched_frame;
|
||||||
sched_pusch->slot = sched_slot;
|
sched_pusch->slot = sched_slot;
|
||||||
|
sched_pusch->ul_harq_pid = -1; // new transmission
|
||||||
LOG_D(NR_MAC,
|
LOG_D(NR_MAC,
|
||||||
"rbSize %d (max_rbSize %d), TBS %d, est buf %d, sched_ul %d, B %d, CCE %d, num_dmrs_symb %d, N_PRB_DMRS %d\n",
|
"rbSize %d (max_rbSize %d), TBS %d, est buf %d, sched_ul %d, B %d, CCE %d, num_dmrs_symb %d, N_PRB_DMRS %d\n",
|
||||||
rbSize,
|
rbSize,
|
||||||
|
|||||||
Reference in New Issue
Block a user