Commit 0494d384 authored by hardy's avatar hardy

Merge remote-tracking branch 'origin/bugfix-nr-t-reordering' into integration_2021_wk23

parents 2bf4571d e257f76d
...@@ -138,7 +138,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity, ...@@ -138,7 +138,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
entity->rx_deliv = count; entity->rx_deliv = count;
} }
if (entity->t_reordering_start != 0 && entity->rx_deliv > entity->rx_reord) { if (entity->t_reordering_start != 0 && entity->rx_deliv >= entity->rx_reord) {
/* stop and reset t-Reordering */ /* stop and reset t-Reordering */
entity->t_reordering_start = 0; entity->t_reordering_start = 0;
} }
...@@ -217,6 +217,10 @@ static void check_t_reordering(nr_pdcp_entity_t *entity) ...@@ -217,6 +217,10 @@ static void check_t_reordering(nr_pdcp_entity_t *entity)
{ {
uint32_t count; uint32_t count;
/* if t_reordering is set to "infinity" (seen as -1) then do nothing */
if (entity->t_reordering == -1)
return;
if (entity->t_reordering_start == 0 if (entity->t_reordering_start == 0
|| entity->t_current <= entity->t_reordering_start + entity->t_reordering) || entity->t_current <= entity->t_reordering_start + entity->t_reordering)
return; return;
......
...@@ -55,8 +55,8 @@ typedef struct nr_pdcp_entity_t { ...@@ -55,8 +55,8 @@ typedef struct nr_pdcp_entity_t {
int rb_id; int rb_id;
int sn_size; /* SN size, in bits */ int sn_size; /* SN size, in bits */
int t_reordering; /* unit: ms */ int t_reordering; /* unit: ms, -1 for infinity */
int discard_timer; /* unit: ms */ int discard_timer; /* unit: ms, -1 for infinity */
int sn_max; /* (2^SN_size) - 1 */ int sn_max; /* (2^SN_size) - 1 */
int window_size; /* 2^(SN_size - 1) */ int window_size; /* 2^(SN_size - 1) */
......
...@@ -610,11 +610,17 @@ static void add_drb_am(int is_gnb, int rnti, struct NR_DRB_ToAddMod *s, ...@@ -610,11 +610,17 @@ static void add_drb_am(int is_gnb, int rnti, struct NR_DRB_ToAddMod *s,
nr_pdcp_ue_t *ue; nr_pdcp_ue_t *ue;
int drb_id = s->drb_Identity; int drb_id = s->drb_Identity;
int t_reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering); int t_reordering;
int sn_size_ul = decode_sn_size_ul(*s->pdcp_Config->drb->pdcp_SN_SizeUL); int sn_size_ul = decode_sn_size_ul(*s->pdcp_Config->drb->pdcp_SN_SizeUL);
int sn_size_dl = decode_sn_size_dl(*s->pdcp_Config->drb->pdcp_SN_SizeDL); int sn_size_dl = decode_sn_size_dl(*s->pdcp_Config->drb->pdcp_SN_SizeDL);
int discard_timer = decode_discard_timer(*s->pdcp_Config->drb->discardTimer); int discard_timer = decode_discard_timer(*s->pdcp_Config->drb->discardTimer);
/* if pdcp_Config->t_Reordering is not present, it means infinity (-1) */
if (s->pdcp_Config->t_Reordering != NULL)
t_reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering);
else
t_reordering = -1;
/* TODO(?): accept different UL and DL SN sizes? */ /* TODO(?): accept different UL and DL SN sizes? */
if (sn_size_ul != sn_size_dl) { if (sn_size_ul != sn_size_dl) {
LOG_E(PDCP, "%s:%d:%s: fatal, bad SN sizes, must be same. ul=%d, dl=%d\n", LOG_E(PDCP, "%s:%d:%s: fatal, bad SN sizes, must be same. ul=%d, dl=%d\n",
......
...@@ -561,7 +561,7 @@ static void max_retx_reached(void *_ue, nr_rlc_entity_t *entity) ...@@ -561,7 +561,7 @@ static void max_retx_reached(void *_ue, nr_rlc_entity_t *entity)
exit(1); exit(1);
rb_found: rb_found:
LOG_D(RLC, "max RETX reached on %s %d\n", LOG_E(RLC, "max RETX reached on %s %d\n",
is_srb ? "SRB" : "DRB", is_srb ? "SRB" : "DRB",
rb_id); rb_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment