Compare commits

...

19 Commits

Author SHA1 Message Date
Teodora
3c2505d6f5 Revert "Hardcode min_fbtime for Msg4 to be 4 (unchanged for all others)"
This reverts commit 94b256a39d.
2025-09-10 15:39:16 +02:00
OAI Jenkins
aab9a3b648 Make UE coeff converge faster 2025-08-13 15:23:46 +02:00
Robert Schmidt
e2da700bb8 same for UL 2025-08-13 13:56:20 +02:00
Robert Schmidt
ec17200457 Fix coef ordering 2025-08-13 13:51:48 +02:00
Robert Schmidt
13903a3ac6 Revert "Lower PF average constant"
This reverts commit b4b7962e3a.
2025-08-13 13:51:48 +02:00
Robert Schmidt
b4b7962e3a Lower PF average constant
See commit 8ad215f680
2025-08-13 12:52:47 +02:00
Teodora Vladić
b7b7443ec7 Revert "Flamingo only: RHEL OS and remove slot mismatch error"
This reverts commit c5192c9215.
2025-08-13 12:38:17 +02:00
Teodora Vladić
c5192c9215 Flamingo only: RHEL OS and remove slot mismatch error 2025-08-13 12:20:07 +02:00
Robert Schmidt
4b7c581c74 To be understood: increase max PUCCH 2025-08-13 12:13:47 +02:00
Teodora Vladić
29be10aebb Revert "Print DL/UL scheduler allocation"
This reverts commit 71c9dda7de.
2025-08-13 12:07:01 +02:00
Robert Schmidt
94b256a39d Hardcode min_fbtime for Msg4 to be 4 (unchanged for all others) 2025-08-13 11:30:47 +02:00
Robert Schmidt
71c9dda7de Print DL/UL scheduler allocation 2025-08-13 10:44:05 +02:00
Robert Schmidt
97158b4481 Print UE PUCCH DTX 2025-08-13 10:43:31 +02:00
Robert Schmidt
54694bb393 Print UE DTX 2025-08-13 10:37:28 +02:00
Teodora Vladić
00b67bd627 Handle more UL PDUs per slot and place safe guards
Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>

7 Mbps UDP traffic to 64 UEs, the gNB asserts:
Assertion (crc->rnti == rx->rnti) failed!
In handle_nr_ulsch() /home/vladic/dev/openair2/NR_PHY_INTERFACE/NR_IF_Module.c:180
mis-match between CRC RNTI 9055 and RX RNTI f890
2025-08-12 22:58:57 +02:00
Teodora Vladić
47b9b8aa34 Increase the RLC buffer 2025-08-12 22:58:57 +02:00
Teodora Vladić
6c3c871a6b Buffer overflow due to large number of UEs (>=60) 2025-08-12 22:58:57 +02:00
Teodora Vladić
d27def2177 Increase the max number of UEs 2025-08-12 22:58:57 +02:00
Teodora Vladić
81f5bc02a4 Log the transmission slot for msg4 2025-08-12 22:41:55 +02:00
10 changed files with 40 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
#ifndef OPENAIRINTERFACE5G_LIMITS_H_
#define OPENAIRINTERFACE5G_LIMITS_H_
# define MAX_MOBILES_PER_GNB 16
# define MAX_MOBILES_PER_GNB 128
# define NUMBER_OF_eNB_MAX 1
# define NUMBER_OF_gNB_MAX 1
# define NUMBER_OF_RU_MAX 2

View File

@@ -471,7 +471,7 @@ void init_nr_transport(PHY_VARS_gNB *gNB)
else
buffer_ul_slots = (nb_ul_slots_period < slot_ahead) ? nb_ul_slots_period : slot_ahead;
gNB->max_nb_pucch = buffer_ul_slots ? MAX_MOBILES_PER_GNB * buffer_ul_slots : 1;
gNB->max_nb_pucch = buffer_ul_slots ? 2 * MAX_MOBILES_PER_GNB * buffer_ul_slots : 1;
gNB->max_nb_pusch = buffer_ul_slots ? MAX_MOBILES_PER_GNB * buffer_ul_slots : 1;
gNB->max_nb_srs = buffer_ul_slots ? buffer_ul_slots << 1 : 1; // assuming at most 2 SRS per slot

View File

@@ -426,7 +426,10 @@ static int nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, boo
}
}
DevAssert(UL_INFO->crc_ind.number_crcs == UL_INFO->rx_ind.number_of_pdus);
DevAssert(UL_INFO->crc_ind.number_crcs < sizeofArray(UL_INFO->crc_pdu_list));
nfapi_nr_crc_t *crc = &UL_INFO->crc_ind.crc_list[UL_INFO->crc_ind.number_crcs++];
DevAssert(UL_INFO->rx_ind.number_of_pdus < sizeofArray(UL_INFO->rx_pdu_list));
nfapi_nr_rx_data_pdu_t *pdu = &UL_INFO->rx_ind.pdu_list[UL_INFO->rx_ind.number_of_pdus++];
if (crc_valid && !check_abort(&ulsch_harq->abort_decode) && !pusch->DTX) {
LOG_D(NR_PHY,
@@ -888,7 +891,10 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N
if (!get_softmodem_params()->phy_test) {
/* in case of phy_test mode, we still want to decode to measure execution time.
Therefore, we don't yet call nr_fill_indication, it will be called later */
DevAssert(UL_INFO->crc_ind.number_crcs == UL_INFO->rx_ind.number_of_pdus);
DevAssert(UL_INFO->crc_ind.number_crcs < sizeofArray(UL_INFO->crc_pdu_list));
nfapi_nr_crc_t *crc = &UL_INFO->crc_ind.crc_list[UL_INFO->crc_ind.number_crcs++];
DevAssert(UL_INFO->rx_ind.number_of_pdus < sizeofArray(UL_INFO->rx_pdu_list));
nfapi_nr_rx_data_pdu_t *pdu = &UL_INFO->rx_ind.pdu_list[UL_INFO->rx_ind.number_of_pdus++];
nr_fill_indication(gNB, frame_rx, slot_rx, ULSCH_id, ulsch->harq_pid, 1, 1, crc, pdu);
pusch_DTX++;

View File

@@ -1926,7 +1926,7 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
TX_req->SFN = frameP;
TX_req->Number_of_PDUs++;
TX_req->Slot = slotP;
LOG_I(NR_MAC, "TX (sfn,slot) (%d,%d)\n", TX_req->SFN, TX_req->Slot);
// Mark the corresponding symbols and RBs as used
fill_pdcch_vrb_map(nr_mac,
CC_id,

View File

@@ -593,8 +593,15 @@ typedef struct UEsched_s {
NR_UE_info_t * UE;
} UEsched_t;
static int comparator(const void *p, const void *q) {
return ((UEsched_t*)p)->coef < ((UEsched_t*)q)->coef;
static int comparator(const void *p, const void *q)
{
const UEsched_t *pp = p;
const UEsched_t *qq = q;
if (pp->coef < qq->coef)
return 1;
else if (pp->coef > qq->coef)
return -1;
return 0;
}
static void pf_dl(module_id_t module_id,
@@ -630,7 +637,7 @@ static void pf_dl(module_id_t module_id,
sched_pdsch->dl_harq_pid = sched_ctrl->retrans_dl_harq.head;
/* Calculate Throughput */
const float a = 0.01f;
const float a = 0.05f;
const uint32_t b = UE->mac_stats.dl.current_bytes;
UE->dl_thr_ue = (1 - a) * UE->dl_thr_ue + a * b;

View File

@@ -906,8 +906,10 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id, frame_t frame, slot_t slot, con
return;
}
}
if (harq_confidence == 1)
if (harq_confidence == 1) {
LOG_W(NR_MAC, "%4d.%2d PUCCH DTX UE %04x\n", frame, slot, UE->rnti);
UE->mac_stats.pucch0_DTX++;
}
}
// tpc (power control) only if we received AckNack

View File

@@ -931,6 +931,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
if (ul_cqi == 0xff || ul_cqi <= 128) {
UE->UE_sched_ctrl.pusch_consecutive_dtx_cnt++;
UE->mac_stats.ulsch_DTX++;
LOG_W(NR_MAC, "%4d.%2d DTX for UE %04x\n", frameP, slotP, UE->rnti);
}
if (!get_softmodem_params()->phy_test && UE->UE_sched_ctrl.pusch_consecutive_dtx_cnt >= pusch_failure_thres) {
@@ -1838,8 +1839,15 @@ typedef struct UEsched_s {
NR_UE_info_t * UE;
} UEsched_t;
static int comparator(const void *p, const void *q) {
return ((UEsched_t*)p)->coef < ((UEsched_t*)q)->coef;
static int comparator(const void *p, const void *q)
{
const UEsched_t *pp = p;
const UEsched_t *qq = q;
if (pp->coef < qq->coef)
return 1;
else if (pp->coef > qq->coef)
return -1;
return 0;
}
static void pf_ul(module_id_t module_id,
@@ -1878,7 +1886,7 @@ static void pf_ul(module_id_t module_id,
const NR_mac_dir_stats_t *stats = &UE->mac_stats.ul;
/* Calculate throughput */
const float a = 0.01f;
const float a = 0.05f;
const uint32_t b = stats->current_bytes;
UE->ul_thr_ue = (1 - a) * UE->ul_thr_ue + a * b;

View File

@@ -198,13 +198,15 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
UE->mac_stats.NPRB,
sched_ctrl->pusch_snrx10 / 10,
sched_ctrl->pusch_snrx10 % 10);
output += snprintf(output,
/* output += snprintf(output,
end - output,
"UE %04x: MAC: TX %14"PRIu64" RX %14"PRIu64" bytes\n",
UE->rnti, stats->dl.total_bytes, stats->ul.total_bytes);
UE->rnti, stats->dl.total_bytes, stats->ul.total_bytes); */
for (int i = 0; i < seq_arr_size(&sched_ctrl->lc_config); i++) {
const nr_lc_config_t *c = seq_arr_at(&sched_ctrl->lc_config, i);
if (c->lcid < 4)
continue;
output += snprintf(output,
end - output,
"UE %04x: LCID %d: TX %14"PRIu64" RX %14"PRIu64" bytes\n",

View File

@@ -100,8 +100,8 @@ nr_rlc_entity_t *new_nr_rlc_entity_am(
exit(1);
}
ret->tx_maxsize = tx_maxsize * 5;
ret->rx_maxsize = rx_maxsize * 5;
ret->tx_maxsize = tx_maxsize * 50;
ret->rx_maxsize = rx_maxsize * 50;
ret->t_poll_retransmit = t_poll_retransmit;
ret->t_reassembly = t_reassembly;

View File

@@ -54,7 +54,7 @@
#define MAX_NUM_SRS_IND 100
#define MAX_NUM_NR_RX_RACH_PDUS 4
#define MAX_UL_PDUS_PER_SLOT 8
#define MAX_UL_PDUS_PER_SLOT 16
#define MAX_NUM_NR_SRS_PDUS 8
#define MAX_NUM_NR_UCI_PDUS MAX_MOBILES_PER_GNB
typedef struct {