mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-14 13:10:28 +00:00
Compare commits
19 Commits
pre-commit
...
viavi-test
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c2505d6f5 | ||
|
|
aab9a3b648 | ||
|
|
e2da700bb8 | ||
|
|
ec17200457 | ||
|
|
13903a3ac6 | ||
|
|
b4b7962e3a | ||
|
|
b7b7443ec7 | ||
|
|
c5192c9215 | ||
|
|
4b7c581c74 | ||
|
|
29be10aebb | ||
|
|
94b256a39d | ||
|
|
71c9dda7de | ||
|
|
97158b4481 | ||
|
|
54694bb393 | ||
|
|
00b67bd627 | ||
|
|
47b9b8aa34 | ||
|
|
6c3c871a6b | ||
|
|
d27def2177 | ||
|
|
81f5bc02a4 |
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user