Revert "remove asserts on min RX/TX, set the RX/TX shift as 2 in the UE"
This reverts commit 0d0e111135. It was
set to UE RX to TX time to 2 as it was deemed that the UE could sustain
this time. However, we noticed a degradation of performance, so reset
the RX to TX time to something higher to ensure proper performance.
This commit is contained in:
@@ -272,7 +272,7 @@
|
||||
/* - between reception of pdsch and tarnsmission of its acknowlegment */
|
||||
/* - between reception of un uplink grant and its related transmission */
|
||||
// should be 2 as per NR standard, but current UE is not able to perform this value
|
||||
#define NR_UE_CAPABILITY_SLOT_RX_TO_TX (2)
|
||||
#define NR_UE_CAPABILITY_SLOT_RX_TO_TX (3)
|
||||
|
||||
#define DURATION_RX_TO_TX (NR_UE_CAPABILITY_SLOT_RX_TO_TX)
|
||||
|
||||
|
||||
@@ -785,6 +785,10 @@ static int nr_ue_process_dci_dl_10(NR_UE_MAC_INST_t *mac,
|
||||
}
|
||||
|
||||
if (dci_ind->rnti != mac->ra.ra_rnti && dci_ind->rnti != SI_RNTI)
|
||||
AssertFatal(1 + dci->pdsch_to_harq_feedback_timing_indicator.val > DURATION_RX_TO_TX,
|
||||
"PDSCH to HARQ feedback time (%d) needs to be higher than DURATION_RX_TO_TX (%d).\n",
|
||||
1 + dci->pdsch_to_harq_feedback_timing_indicator.val,
|
||||
DURATION_RX_TO_TX);
|
||||
|
||||
// set the harq status at MAC for feedback
|
||||
set_harq_status(mac,
|
||||
@@ -1112,6 +1116,12 @@ static int nr_ue_process_dci_dl_11(NR_UE_MAC_INST_t *mac,
|
||||
// according to TS 38.213 Table 9.2.3-1
|
||||
uint8_t feedback_ti = pucch_Config->dl_DataToUL_ACK->list.array[dci->pdsch_to_harq_feedback_timing_indicator.val][0];
|
||||
|
||||
AssertFatal(feedback_ti > DURATION_RX_TO_TX,
|
||||
"PDSCH to HARQ feedback time (%d) needs to be higher than DURATION_RX_TO_TX (%d). Min feedback time set in config "
|
||||
"file (min_rxtxtime).\n",
|
||||
feedback_ti,
|
||||
DURATION_RX_TO_TX);
|
||||
|
||||
// set the harq status at MAC for feedback
|
||||
set_harq_status(mac,
|
||||
dci->pucch_resource_indicator,
|
||||
|
||||
@@ -1007,6 +1007,9 @@ void nr_ue_aperiodic_srs_scheduling(NR_UE_MAC_INST_t *mac, long resource_trigger
|
||||
return;
|
||||
}
|
||||
|
||||
AssertFatal(slot_offset > DURATION_RX_TO_TX,
|
||||
"Slot offset between DCI and aperiodic SRS (%d) needs to be higher than DURATION_RX_TO_TX (%d)\n",
|
||||
slot_offset, DURATION_RX_TO_TX);
|
||||
int n_slots_frame = nr_slots_per_frame[current_UL_BWP->scs];
|
||||
int sched_slot = (slot + slot_offset) % n_slots_frame;
|
||||
NR_TDD_UL_DL_ConfigCommon_t *tdd_config = mac->tdd_UL_DL_ConfigurationCommon;
|
||||
@@ -1465,6 +1468,13 @@ int nr_ue_pusch_scheduler(const NR_UE_MAC_INST_t *mac,
|
||||
AssertFatal(1 == 0, "Invalid numerology %i\n", mu);
|
||||
}
|
||||
|
||||
AssertFatal((k2 + delta) > DURATION_RX_TO_TX,
|
||||
"Slot offset (%ld) for Msg3 needs to be higher than DURATION_RX_TO_TX (%d). Please set min_rxtxtime at least to %d in gNB config file or gNBs.[0].min_rxtxtime=%d via command line.\n",
|
||||
k2,
|
||||
DURATION_RX_TO_TX,
|
||||
DURATION_RX_TO_TX,
|
||||
DURATION_RX_TO_TX);
|
||||
|
||||
*slot_tx = (current_slot + k2 + delta) % nr_slots_per_frame[mu];
|
||||
if (current_slot + k2 + delta >= nr_slots_per_frame[mu]){
|
||||
*frame_tx = (current_frame + 1) % 1024;
|
||||
@@ -1473,6 +1483,14 @@ int nr_ue_pusch_scheduler(const NR_UE_MAC_INST_t *mac,
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
AssertFatal(k2 > DURATION_RX_TO_TX,
|
||||
"Slot offset K2 (%ld) needs to be higher than DURATION_RX_TO_TX (%d). Please set min_rxtxtime at least to %d in gNB config file or gNBs.[0].min_rxtxtime=%d via command line.\n",
|
||||
k2,
|
||||
DURATION_RX_TO_TX,
|
||||
DURATION_RX_TO_TX,
|
||||
DURATION_RX_TO_TX);
|
||||
|
||||
if (k2 < 0) { // This can happen when a false DCI is received
|
||||
LOG_W(PHY, "%d.%d. Received k2 %ld\n", current_frame, current_slot, k2);
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user