From 8c5cf09826eb38bce000a613e25c0565d979d477 Mon Sep 17 00:00:00 2001 From: francescomani Date: Thu, 29 Sep 2022 16:54:33 +0200 Subject: [PATCH] addressing review --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c | 2 +- .../LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c | 27 +++++++++---------- openair2/LAYER2/NR_MAC_gNB/mac_proto.h | 2 +- openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h | 4 +-- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c index ac9b86e5c9..84f90d48ae 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c @@ -236,7 +236,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, nr_schedule_ue_spec(module_idP, frame, slot); stop_meas(&gNB->schedule_dlsch); - nr_sr_reporting(RC.nrmac[module_idP], frame, slot, module_idP); + nr_sr_reporting(RC.nrmac[module_idP], frame, slot); nr_schedule_pucch(RC.nrmac[module_idP], frame, slot); diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c index 4d692baad6..6ece1ef4f1 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c @@ -1099,8 +1099,8 @@ int nr_acknack_scheduling(int mod_id, if (curr_pucch->active && curr_pucch->frame == pucch_frame && curr_pucch->ul_slot == pucch_slot) { - LOG_D(NR_MAC, "In %s: pucch_acknak DL %4d.%2d, UL_ACK %4d.%2d Bits already in current PUCCH: DAI_C %d CSI %d\n", - __FUNCTION__, frame, slot, pucch_frame, pucch_slot, curr_pucch->dai_c, curr_pucch->csi_bits); + LOG_D(NR_MAC, "pucch_acknak DL %4d.%2d, UL_ACK %4d.%2d Bits already in current PUCCH: DAI_C %d CSI %d\n", + frame, slot, pucch_frame, pucch_slot, curr_pucch->dai_c, curr_pucch->csi_bits); // we can't schedule if short pucch is already full if (curr_pucch->csi_bits == 0 && curr_pucch->dai_c == 2) @@ -1117,8 +1117,8 @@ int nr_acknack_scheduling(int mod_id, // no need to check VRB occupation because already done when PUCCH has been activated curr_pucch->timing_indicator = f; curr_pucch->dai_c++; - LOG_D(NR_MAC, "In %s: DL %4d.%2d, UL_ACK %4d.%2d Scheduling ACK/NACK in PUCCH %d with timing indicator %d DAI %d CSI %d\n", - __FUNCTION__,frame,slot,curr_pucch->frame,curr_pucch->ul_slot,i,f,curr_pucch->dai_c,curr_pucch->csi_bits); + LOG_D(NR_MAC, "DL %4d.%2d, UL_ACK %4d.%2d Scheduling ACK/NACK in PUCCH %d with timing indicator %d DAI %d CSI %d\n", + frame,slot,curr_pucch->frame,curr_pucch->ul_slot,i,f,curr_pucch->dai_c,curr_pucch->csi_bits); return i; // index of current PUCCH structure } else if (!curr_pucch->active) @@ -1137,8 +1137,8 @@ int nr_acknack_scheduling(int mod_id, bwp_start, bwp_size); if(!ret) { - LOG_D(NR_MAC, "In %s: DL %4d.%2d, UL_ACK %4d.%2d PRB resources for this occasion are already occupied, move to the following occasion\n", - __FUNCTION__,frame,slot,curr_pucch->frame,curr_pucch->ul_slot); + LOG_D(NR_MAC, "DL %4d.%2d, UL_ACK %4d.%2d PRB resources for this occasion are already occupied, move to the following occasion\n", + frame,slot,curr_pucch->frame,curr_pucch->ul_slot); continue; } // allocating a new PUCCH structure for this occasion @@ -1150,30 +1150,27 @@ int nr_acknack_scheduling(int mod_id, curr_pucch->resource_indicator = 0; // each UE has dedicated PUCCH resources curr_pucch->r_pucch=r_pucch; - LOG_D(NR_MAC, "In %s: DL %4d.%2d, UL_ACK %4d.%2d Scheduling ACK/NACK in PUCCH %d with timing indicator %d DAI %d\n", - __FUNCTION__,frame,slot,curr_pucch->frame,curr_pucch->ul_slot,inactive_pucch,f,curr_pucch->dai_c); + LOG_D(NR_MAC, "DL %4d.%2d, UL_ACK %4d.%2d Scheduling ACK/NACK in PUCCH %d with timing indicator %d DAI %d\n", + frame,slot,curr_pucch->frame,curr_pucch->ul_slot,inactive_pucch,f,curr_pucch->dai_c); // blocking resources for current PUCCH in VRB map for (int l=0; lnr_of_symb; l++) { uint16_t symb = SL_to_bitmap(curr_pucch->start_symb+l, 1); - int prb; + int prb = curr_pucch->prb_start; if (l==1 && curr_pucch->second_hop_prb != 0) prb = curr_pucch->second_hop_prb; - else - prb = curr_pucch->prb_start; vrb_map_UL[bwp_start+prb] |= symb; } return inactive_pucch; // index of current PUCCH structure } } - LOG_D(NR_MAC, "In %s: DL %4d.%2d, Couldn't find scheduling occasion for this HARQ process\n", - __FUNCTION__, frame, slot); + LOG_D(NR_MAC, "DL %4d.%2d, Couldn't find scheduling occasion for this HARQ process\n", frame, slot); return -1; } -void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t SFN, sub_frame_t slot, int mod_id) +void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t SFN, sub_frame_t slot) { if (!is_xlsch_in_slot(nrmac->ulsch_slot_bitmap[slot / 64], slot)) return; @@ -1232,7 +1229,7 @@ void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t SFN, sub_frame_t slot, int mod } AssertFatal(found || free_pucch>-1, "Coulnd't find an available PUCCH resource to schedule SR\n"); if (!found) { - uint16_t *vrb_map_UL = &RC.nrmac[mod_id]->common_channels[CC_id].vrb_map_UL[slot * MAX_BWP_SIZE]; + uint16_t *vrb_map_UL = &nrmac->common_channels[CC_id].vrb_map_UL[slot * MAX_BWP_SIZE]; int bwp_start = ul_bwp->BWPStart; int bwp_size = ul_bwp->BWPSize; NR_sched_pucch_t *sched_sr = &sched_ctrl->sched_pucch[free_pucch]; diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h index c7c44f95d7..2e3ccf4ba6 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h @@ -493,7 +493,7 @@ int get_mcs_from_bler(const NR_bler_options_t *bler_options, void UL_tti_req_ahead_initialization(gNB_MAC_INST * gNB, NR_ServingCellConfigCommon_t *scc, int n, int CCid); -void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP, int mod_id); +void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP); size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset_rsrp); diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h index a74dafa29c..17f0504e15 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h +++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h @@ -563,8 +563,8 @@ typedef struct { int cce_index; uint8_t aggregation_level; - /// PUCCH scheduling information. Array of two: HARQ+SR in the first field, - /// CSI in second. This order is important for nr_acknack_scheduling()! + /// Array of PUCCH scheduling information. + /// Its size depends on TDD configuration and max feedback time NR_sched_pucch_t *sched_pucch; int sched_pucch_size;