mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Move the Tx/Rx counters logging in one function
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
This commit is contained in:
committed by
Romain Beurdouche
parent
84a1eb8b07
commit
b92936f7d7
@@ -59,6 +59,60 @@ volatile bool prach_rx_awaiting = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Prints TX_TOTAL, RX_TOTAL, RX_ON_TIME, RX_ERR_DROP counters every 128 frames. */
|
||||
void print_fhi_counters(ru_info_t *ru, const int frame, const int slot)
|
||||
{
|
||||
static int64_t old_rx_counter[XRAN_PORTS_NUM] = {0};
|
||||
static int64_t old_tx_counter[XRAN_PORTS_NUM] = {0};
|
||||
struct xran_common_counters x_counters[XRAN_PORTS_NUM];
|
||||
|
||||
const struct xran_fh_init *fh_init = get_xran_fh_init();
|
||||
for (int o_xu_id = 0; o_xu_id < fh_init->xran_ports; o_xu_id++) {
|
||||
#if defined F_RELEASE
|
||||
if ((frame & 0x7f) == 0 && slot == 0 && xran_get_common_counters(gxran_handle, &x_counters[0]) == XRAN_STATUS_SUCCESS) {
|
||||
#elif defined K_RELEASE
|
||||
if ((frame & 0x7f) == 0 && slot == 0 && xran_get_common_counters(gxran_handle[o_xu_id], &x_counters[o_xu_id]) == XRAN_STATUS_SUCCESS) {
|
||||
#endif
|
||||
LOG_I(HW,
|
||||
"[%s%d][rx %7ld pps %7ld kbps %7ld][tx %7ld pps %7ld kbps %7ld][Total Msgs_Rcvd %ld]\n",
|
||||
"o-du ",
|
||||
o_xu_id,
|
||||
x_counters[o_xu_id].rx_counter,
|
||||
x_counters[o_xu_id].rx_counter - old_rx_counter[o_xu_id],
|
||||
x_counters[o_xu_id].rx_bytes_per_sec * 8 / 1000L,
|
||||
x_counters[o_xu_id].tx_counter,
|
||||
x_counters[o_xu_id].tx_counter - old_tx_counter[o_xu_id],
|
||||
x_counters[o_xu_id].tx_bytes_per_sec * 8 / 1000L,
|
||||
x_counters[o_xu_id].Total_msgs_rcvd);
|
||||
for (int rxant = 0; rxant < ru->nb_rx / fh_init->xran_ports; rxant++)
|
||||
LOG_I(HW,
|
||||
"[%s%d][pusch%d %7ld prach%d %7ld]\n",
|
||||
"o_du",
|
||||
o_xu_id,
|
||||
rxant,
|
||||
x_counters[o_xu_id].rx_pusch_packets[rxant],
|
||||
rxant,
|
||||
x_counters[o_xu_id].rx_prach_packets[rxant]);
|
||||
#if defined K_RELEASE
|
||||
LOG_I(HW,
|
||||
"[%s%d][drop errors %7d ecpri errors %7d cp errors %7d up errors %7d pusch errors %7d prach errors %7d]\n",
|
||||
"o_du",
|
||||
o_xu_id,
|
||||
x_counters[o_xu_id].rx_err_drop,
|
||||
x_counters[o_xu_id].rx_err_ecpri,
|
||||
x_counters[o_xu_id].rx_err_cp,
|
||||
x_counters[o_xu_id].rx_err_up,
|
||||
x_counters[o_xu_id].rx_err_pusch,
|
||||
x_counters[o_xu_id].rx_err_prach);
|
||||
#endif
|
||||
if (x_counters[o_xu_id].rx_counter > old_rx_counter[o_xu_id])
|
||||
old_rx_counter[o_xu_id] = x_counters[o_xu_id].rx_counter;
|
||||
if (x_counters[o_xu_id].tx_counter > old_tx_counter[o_xu_id])
|
||||
old_tx_counter[o_xu_id] = x_counters[o_xu_id].tx_counter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** @details xran-specific callback, called when all packets for given CC and
|
||||
* 1/4, 1/2, 3/4, all symbols of a slot arrived. Currently, only used to get
|
||||
* timing information and unblock another thread in xran_fh_rx_read_slot()
|
||||
@@ -574,7 +628,7 @@ static bool is_tdd_ul_guard_slot(const struct xran_frame_config *frame_conf, int
|
||||
|
||||
/** @details Read PUSCH data from xran buffers.
|
||||
* If I/Q compression (bitwidth < 16 bits) is configured, decompresses the data
|
||||
* before writing. Prints ON TIME counters every 128 frames.
|
||||
* before writing.
|
||||
*
|
||||
* Function is blocking and waits for next frame/slot combination. It is unblocked
|
||||
* by oai_xran_fh_rx_callback(). It writes the current slot into parameters
|
||||
@@ -585,9 +639,6 @@ int xran_fh_rx_read_slot(ru_info_t *ru, int *frame, int *slot)
|
||||
int32_t *pos = NULL;
|
||||
int idx = 0;
|
||||
|
||||
static int64_t old_rx_counter[XRAN_PORTS_NUM] = {0};
|
||||
static int64_t old_tx_counter[XRAN_PORTS_NUM] = {0};
|
||||
struct xran_common_counters x_counters[XRAN_PORTS_NUM];
|
||||
static int outcnt = 0;
|
||||
#ifndef USE_POLLING
|
||||
// pull next event from oran_sync_fifo
|
||||
@@ -792,50 +843,6 @@ int xran_fh_rx_read_slot(ru_info_t *ru, int *frame, int *slot)
|
||||
} // sym_ind
|
||||
} // ant_ind
|
||||
} // vv_inf
|
||||
for (int o_xu_id = 0; o_xu_id < fh_init->xran_ports; o_xu_id++) {
|
||||
#if defined F_RELEASE
|
||||
if ((*frame & 0x7f) == 0 && *slot == 0 && xran_get_common_counters(gxran_handle, &x_counters[0]) == XRAN_STATUS_SUCCESS) {
|
||||
#elif defined K_RELEASE
|
||||
if ((*frame & 0x7f) == 0 && *slot == 0 && xran_get_common_counters(gxran_handle[o_xu_id], &x_counters[o_xu_id]) == XRAN_STATUS_SUCCESS) {
|
||||
#endif
|
||||
LOG_I(HW,
|
||||
"[%s%d][rx %7ld pps %7ld kbps %7ld][tx %7ld pps %7ld kbps %7ld][Total Msgs_Rcvd %ld]\n",
|
||||
"o-du ",
|
||||
o_xu_id,
|
||||
x_counters[o_xu_id].rx_counter,
|
||||
x_counters[o_xu_id].rx_counter - old_rx_counter[o_xu_id],
|
||||
x_counters[o_xu_id].rx_bytes_per_sec * 8 / 1000L,
|
||||
x_counters[o_xu_id].tx_counter,
|
||||
x_counters[o_xu_id].tx_counter - old_tx_counter[o_xu_id],
|
||||
x_counters[o_xu_id].tx_bytes_per_sec * 8 / 1000L,
|
||||
x_counters[o_xu_id].Total_msgs_rcvd);
|
||||
for (int rxant = 0; rxant < ru->nb_rx / fh_init->xran_ports; rxant++)
|
||||
LOG_I(HW,
|
||||
"[%s%d][pusch%d %7ld prach%d %7ld]\n",
|
||||
"o_du",
|
||||
o_xu_id,
|
||||
rxant,
|
||||
x_counters[o_xu_id].rx_pusch_packets[rxant],
|
||||
rxant,
|
||||
x_counters[o_xu_id].rx_prach_packets[rxant]);
|
||||
#if defined K_RELEASE
|
||||
LOG_I(HW,
|
||||
"[%s%d][drop errors %7d ecpri errors %7d cp errors %7d up errors %7d pusch errors %7d prach errors %7d]\n",
|
||||
"o_du",
|
||||
o_xu_id,
|
||||
x_counters[o_xu_id].rx_err_drop,
|
||||
x_counters[o_xu_id].rx_err_ecpri,
|
||||
x_counters[o_xu_id].rx_err_cp,
|
||||
x_counters[o_xu_id].rx_err_up,
|
||||
x_counters[o_xu_id].rx_err_pusch,
|
||||
x_counters[o_xu_id].rx_err_prach);
|
||||
#endif
|
||||
if (x_counters[o_xu_id].rx_counter > old_rx_counter[o_xu_id])
|
||||
old_rx_counter[o_xu_id] = x_counters[o_xu_id].rx_counter;
|
||||
if (x_counters[o_xu_id].tx_counter > old_tx_counter[o_xu_id])
|
||||
old_tx_counter[o_xu_id] = x_counters[o_xu_id].tx_counter;
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
@@ -308,6 +308,7 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot)
|
||||
proc->frame_tx = (sl > (slots_per_frame - 1 - ru->sl_ahead)) ? (f + 1) & 1023 : f;
|
||||
|
||||
if (proc->first_rx == 0) {
|
||||
print_fhi_counters(&ru_info, proc->frame_rx, proc->tti_rx);
|
||||
if (proc->tti_rx != *slot) {
|
||||
LOG_E(HW,
|
||||
"Received Time doesn't correspond to the time we think it is (slot mismatch, received %d.%d, expected %d.%d)\n",
|
||||
|
||||
@@ -40,6 +40,8 @@ typedef struct ru_info_s {
|
||||
c16_t (*prach_buf)[NUMBER_OF_NR_RU_PRACH_OCCASIONS_MAX][NR_PRACH_SEQ_LEN_L];
|
||||
} ru_info_t;
|
||||
|
||||
void print_fhi_counters(ru_info_t *ru, const int frame, const int slot);
|
||||
|
||||
/** @brief Reads RX data PUSCH of next slot.
|
||||
*
|
||||
* @param ru pointer to structure keeping pointers to OAI data.
|
||||
|
||||
Reference in New Issue
Block a user