From ad7bd05f9a6dd3bb51093ec1297debe58df94b54 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 9 Aug 2024 15:41:15 +0200 Subject: [PATCH 1/4] nr rlc um: reduce "SDU rejected" logging once per second is enough --- openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c | 15 ++++++++++++--- openair2/LAYER2/nr_rlc/nr_rlc_entity_um.h | 4 ++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c index 4a9a67e40c..75e407328b 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c @@ -575,9 +575,16 @@ void nr_rlc_entity_um_recv_sdu(nr_rlc_entity_t *_entity, exit(1); } + /* log SDUs rejected, at most once per second */ + if (entity->sdu_rejected != 0 + && entity->t_current > entity->t_log_buffer_full + 1000) { + LOG_E(RLC, "%d SDU rejected, SDU buffer full\n", entity->sdu_rejected); + entity->sdu_rejected = 0; + entity->t_log_buffer_full = entity->t_current; + } + if (entity->tx_size + size > entity->tx_maxsize) { - LOG_W(RLC, "%s:%d:%s: warning: SDU rejected, SDU buffer full\n", - __FILE__, __LINE__, __FUNCTION__); + entity->sdu_rejected++; entity->common.stats.rxsdu_dd_pkts++; entity->common.stats.rxsdu_dd_bytes += size; @@ -712,11 +719,13 @@ static void clear_entity(nr_rlc_entity_um_t *entity) entity->rx_next_reassembly = 0; entity->rx_timer_trigger = 0; - entity->tx_next = 0; entity->t_current = 0; + entity->t_log_buffer_full = 0; + entity->sdu_rejected = 0; + entity->t_reassembly_start = 0; cur_rx = entity->rx_list; diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.h b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.h index c40e72ada1..6395bfd47e 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.h +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.h @@ -47,6 +47,10 @@ typedef struct { /* set to the latest know time by the user of the module. Unit: ms */ uint64_t t_current; + /* deal with logging of buffer full */ + uint64_t t_log_buffer_full; + int sdu_rejected; + /* timers (stores the TTI of activation, 0 means not active) */ uint64_t t_reassembly_start; From dfe16d985a6db5947165a642b4feb5702ffc6706 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 9 Aug 2024 15:42:03 +0200 Subject: [PATCH 2/4] nr rlc tm: reduce "SDU rejected" logging once per second is enough --- openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c | 14 ++++++++++++-- openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.h | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c index afad2d23a2..ba43eefb24 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c @@ -136,9 +136,16 @@ void nr_rlc_entity_tm_recv_sdu(nr_rlc_entity_t *_entity, exit(1); } + /* log SDUs rejected, at most once per second */ + if (entity->sdu_rejected != 0 + && entity->t_current > entity->t_log_buffer_full + 1000) { + LOG_E(RLC, "%d SDU rejected, SDU buffer full\n", entity->sdu_rejected); + entity->sdu_rejected = 0; + entity->t_log_buffer_full = entity->t_current; + } + if (entity->tx_size + size > entity->tx_maxsize) { - LOG_D(RLC, "%s:%d:%s: warning: SDU rejected, SDU buffer full\n", - __FILE__, __LINE__, __FUNCTION__); + entity->sdu_rejected++; entity->common.stats.rxsdu_dd_pkts++; entity->common.stats.rxsdu_dd_bytes += size; @@ -181,6 +188,9 @@ void nr_rlc_entity_tm_discard_sdu(nr_rlc_entity_t *_entity, int sdu_id) static void clear_entity(nr_rlc_entity_tm_t *entity) { + entity->t_log_buffer_full = 0; + entity->sdu_rejected = 0; + nr_rlc_free_sdu_segment_list(entity->tx_list); entity->tx_list = NULL; diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.h b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.h index 7918703799..716b35d14d 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.h +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.h @@ -31,6 +31,10 @@ typedef struct { /* set to the latest know time by the user of the module. Unit: ms */ uint64_t t_current; + /* deal with logging of buffer full */ + uint64_t t_log_buffer_full; + int sdu_rejected; + /* tx management */ nr_rlc_sdu_segment_t *tx_list; nr_rlc_sdu_segment_t *tx_end; From 35f5fdf960a2a35bde10d6c9126cbe7813147d5f Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 9 Aug 2024 15:47:50 +0200 Subject: [PATCH 3/4] nr rlc tm: bugfix: reset t_current when clearing entity maybe not super important, but let's harmonize with um/am --- openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c index ba43eefb24..7b541c02ff 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_tm.c @@ -188,6 +188,8 @@ void nr_rlc_entity_tm_discard_sdu(nr_rlc_entity_t *_entity, int sdu_id) static void clear_entity(nr_rlc_entity_tm_t *entity) { + entity->t_current = 0; + entity->t_log_buffer_full = 0; entity->sdu_rejected = 0; From 5e547c617c55ca9b4fd62338fbc7a179e43651d7 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 9 Aug 2024 15:42:26 +0200 Subject: [PATCH 4/4] nr rlc am: harmonize log message let's make it same as um and tm (no more file/line/function) --- openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c index 91985393cb..d50f816072 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c @@ -1765,9 +1765,7 @@ void nr_rlc_entity_am_recv_sdu(nr_rlc_entity_t *_entity, /* log SDUs rejected, at most once per second */ if (entity->sdu_rejected != 0 && entity->t_current > entity->t_log_buffer_full + 1000) { - LOG_E(RLC, "%s:%d:%s: warning: %d SDU rejected, SDU buffer full\n", - __FILE__, __LINE__, __FUNCTION__, - entity->sdu_rejected); + LOG_E(RLC, "%d SDU rejected, SDU buffer full\n", entity->sdu_rejected); entity->sdu_rejected = 0; entity->t_log_buffer_full = entity->t_current; }