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 pdsch and tarnsmission of its acknowlegment */
|
||||||
/* - between reception of un uplink grant and its related transmission */
|
/* - 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
|
// 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)
|
#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)
|
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 the harq status at MAC for feedback
|
||||||
set_harq_status(mac,
|
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
|
// 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];
|
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 the harq status at MAC for feedback
|
||||||
set_harq_status(mac,
|
set_harq_status(mac,
|
||||||
dci->pucch_resource_indicator,
|
dci->pucch_resource_indicator,
|
||||||
|
|||||||
@@ -1007,6 +1007,9 @@ void nr_ue_aperiodic_srs_scheduling(NR_UE_MAC_INST_t *mac, long resource_trigger
|
|||||||
return;
|
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 n_slots_frame = nr_slots_per_frame[current_UL_BWP->scs];
|
||||||
int sched_slot = (slot + slot_offset) % n_slots_frame;
|
int sched_slot = (slot + slot_offset) % n_slots_frame;
|
||||||
NR_TDD_UL_DL_ConfigCommon_t *tdd_config = mac->tdd_UL_DL_ConfigurationCommon;
|
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(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];
|
*slot_tx = (current_slot + k2 + delta) % nr_slots_per_frame[mu];
|
||||||
if (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;
|
*frame_tx = (current_frame + 1) % 1024;
|
||||||
@@ -1473,6 +1483,14 @@ int nr_ue_pusch_scheduler(const NR_UE_MAC_INST_t *mac,
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} 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
|
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);
|
LOG_W(PHY, "%d.%d. Received k2 %ld\n", current_frame, current_slot, k2);
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user