Merge remote-tracking branch 'origin/bugfix-nr-t-reordering' into integration_2021_wk23
This commit is contained in:
@@ -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)
|
|||||||
{
|
{
|
||||||
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 {
|
|||||||
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,
|
|||||||
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)
|
|||||||
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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user