Commit 00b0dc1e authored by Marwan Hammouda's avatar Marwan Hammouda

add RLC updates for AM

parent d0ca8602
...@@ -126,7 +126,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity, ...@@ -126,7 +126,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
if (rcvd_count < entity->rx_deliv if (rcvd_count < entity->rx_deliv
|| nr_pdcp_sdu_in_list(entity->rx_list, rcvd_count)) { || nr_pdcp_sdu_in_list(entity->rx_list, rcvd_count)) {
LOG_W(PDCP, "discard NR PDU rcvd_count=%d, entity->rx_deliv %d,sdu_in_list %d\n", rcvd_count,entity->rx_deliv,nr_pdcp_sdu_in_list(entity->rx_list,rcvd_count)); //LOG_I(PDCP, "discard NR PDU rcvd_count=%d, entity->rx_deliv %d,sdu_in_list %d\n", rcvd_count,entity->rx_deliv,nr_pdcp_sdu_in_list(entity->rx_list,rcvd_count));
entity->stats.rxpdu_dd_pkts++; entity->stats.rxpdu_dd_pkts++;
entity->stats.rxpdu_dd_bytes += size; entity->stats.rxpdu_dd_bytes += size;
...@@ -320,7 +320,7 @@ static void nr_pdcp_entity_set_security(nr_pdcp_entity_t *entity, ...@@ -320,7 +320,7 @@ static void nr_pdcp_entity_set_security(nr_pdcp_entity_t *entity,
static void check_t_reordering(nr_pdcp_entity_t *entity) static void check_t_reordering(nr_pdcp_entity_t *entity)
{ {
uint32_t count; uint32_t count;
//LOG_I(PDCP,"Came to %s in %s and t_reordering is %d\n",__FUNCTION__, __FILE__,entity->t_reordering);
/* if t_reordering is set to "infinity" (seen as -1) then do nothing */ /* if t_reordering is set to "infinity" (seen as -1) then do nothing */
if (entity->t_reordering == -1) if (entity->t_reordering == -1)
return; return;
......
...@@ -766,9 +766,11 @@ static void add_srb(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_SRB_ToAddMod *s ...@@ -766,9 +766,11 @@ static void add_srb(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_SRB_ToAddMod *s
int srb_id = s->srb_Identity; int srb_id = s->srb_Identity;
if (s->pdcp_Config == NULL || s->pdcp_Config->t_Reordering == NULL) { if (s->pdcp_Config == NULL || s->pdcp_Config->t_Reordering == NULL) {
t_Reordering = 3000; // t_Reordering = 3000; //
//t_Reordering = decode_t_reordering(get_softmodem_params()->ntn_trd) + get_softmodem_params()->ntn_trd_offset; // #NTN t_Reordering = decode_t_reordering(get_softmodem_params()->ntn_trd) + get_softmodem_params()->ntn_trd_offset; // #NTN
LOG_I(PDCP,"Inside %s , case NULL and t_Reordering is %d ----> \n",__FUNCTION__,t_Reordering);
} else { } else {
t_Reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering); //t_Reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering);
t_Reordering = decode_t_reordering(get_softmodem_params()->ntn_trd) + get_softmodem_params()->ntn_trd_offset;
//t_Reordering = t_Reordering + get_softmodem_params()->ntn_trd_offset; // #NTN //t_Reordering = t_Reordering + get_softmodem_params()->ntn_trd_offset; // #NTN
} }
...@@ -808,8 +810,9 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in ...@@ -808,8 +810,9 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in
/* if pdcp_Config->t_Reordering is not present, it means infinity (-1) */ /* if pdcp_Config->t_Reordering is not present, it means infinity (-1) */
int t_reordering = -1; int t_reordering = -1;
if (s->pdcp_Config->t_Reordering != NULL) { if (s->pdcp_Config->t_Reordering != NULL) {
t_reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering); //t_reordering = decode_t_reordering(*s->pdcp_Config->t_Reordering);
printf("\n\n\n\n Came to line 954 add_drb_am and t_reordering is %d\n\n\n\n", t_reordering); t_reordering = decode_t_reordering(get_softmodem_params()->ntn_trd) + get_softmodem_params()->ntn_trd_offset;
//printf("\n\n\n\n Came to line 954 add_drb_am and t_reordering is %d\n\n\n\n", t_reordering);
} }
if (s->pdcp_Config->drb != NULL if (s->pdcp_Config->drb != NULL
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "nr_rlc_entity.h" #include "nr_rlc_entity.h"
#include <stdlib.h> #include <stdlib.h>
#include "asn1_utils.h"
#include "nr_rlc_entity_am.h" #include "nr_rlc_entity_am.h"
#include "nr_rlc_entity_um.h" #include "nr_rlc_entity_um.h"
#include "nr_rlc_entity_tm.h" #include "nr_rlc_entity_tm.h"
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "LOG/log.h" #include "LOG/log.h"
#include "common/utils/time_stat.h" #include "common/utils/time_stat.h"
#include <executables/softmodem-common.h>
static void nr_rlc_entity_get_stats( static void nr_rlc_entity_get_stats(
nr_rlc_entity_t *entity, nr_rlc_entity_t *entity,
nr_rlc_statistics_t *out) nr_rlc_statistics_t *out)
...@@ -77,7 +77,8 @@ nr_rlc_entity_t *new_nr_rlc_entity_am( ...@@ -77,7 +77,8 @@ nr_rlc_entity_t *new_nr_rlc_entity_am(
ret->rx_maxsize = rx_maxsize; ret->rx_maxsize = rx_maxsize;
ret->t_poll_retransmit = t_poll_retransmit; ret->t_poll_retransmit = t_poll_retransmit;
ret->t_reassembly = t_reassembly; //ret->t_reassembly = t_reassembly;
ret->t_reassembly = decode_t_reassembly(get_softmodem_params()->ntn_trs) + get_softmodem_params()->ntn_trs_offset;
ret->t_status_prohibit = t_status_prohibit; ret->t_status_prohibit = t_status_prohibit;
ret->poll_pdu = poll_pdu; ret->poll_pdu = poll_pdu;
ret->poll_byte = poll_byte; ret->poll_byte = poll_byte;
...@@ -116,7 +117,7 @@ nr_rlc_entity_t *new_nr_rlc_entity_am( ...@@ -116,7 +117,7 @@ nr_rlc_entity_t *new_nr_rlc_entity_am(
* initial_size of 1024 is arbitrary * initial_size of 1024 is arbitrary
*/ */
ret->common.txsdu_avg_time_to_tx = time_average_new(100 * 1000, 1024); ret->common.txsdu_avg_time_to_tx = time_average_new(100 * 1000, 1024);
//LOG_I(RLC,"%s in %s is called with t_reassembly = %d\n",__FUNCTION__,__FILE__,ret->t_reassembly);
return (nr_rlc_entity_t *)ret; return (nr_rlc_entity_t *)ret;
} }
......
...@@ -175,7 +175,10 @@ static int sdu_has_missing_bytes(nr_rlc_entity_am_t *entity, int sn) ...@@ -175,7 +175,10 @@ static int sdu_has_missing_bytes(nr_rlc_entity_am_t *entity, int sn)
while (l != NULL && l->sn == sn) { while (l != NULL && l->sn == sn) {
if (l->so > last_byte + 1) if (l->so > last_byte + 1)
return 1; {
LOG_I(RLC,"missing byte detected\n");
return 1;
}
new_last_byte = l->so + l->size - 1; new_last_byte = l->so + l->size - 1;
if (new_last_byte > last_byte) if (new_last_byte > last_byte)
last_byte = new_last_byte; last_byte = new_last_byte;
...@@ -187,6 +190,7 @@ static int sdu_has_missing_bytes(nr_rlc_entity_am_t *entity, int sn) ...@@ -187,6 +190,7 @@ static int sdu_has_missing_bytes(nr_rlc_entity_am_t *entity, int sn)
static void reassemble_and_deliver(nr_rlc_entity_am_t *entity, int sn) static void reassemble_and_deliver(nr_rlc_entity_am_t *entity, int sn)
{ {
//LOG_I(RLC,"Came inside %s in %s\n",__FUNCTION__, __FILE__);
nr_rlc_pdu_t *pdu; nr_rlc_pdu_t *pdu;
char sdu[NR_SDU_MAX]; char sdu[NR_SDU_MAX];
int so = 0; int so = 0;
...@@ -464,6 +468,7 @@ process_wait_list_head: ...@@ -464,6 +468,7 @@ process_wait_list_head:
+ cur_wait_list->size; + cur_wait_list->size;
/* and go process the next pdu, still for the current nack */ /* and go process the next pdu, still for the current nack */
cur_wait_list = prev_wait_list->next; cur_wait_list = prev_wait_list->next;
//LOG_I(RLC, "cur_wait_list->sdu->retx_count %d, and Buffer Size %d\n", cur_wait_list->sdu->retx_count, entity->common.bstatus.retx_size);
goto process_next_pdu; goto process_next_pdu;
} }
...@@ -685,7 +690,7 @@ void nr_rlc_entity_am_recv_pdu(nr_rlc_entity_t *_entity, ...@@ -685,7 +690,7 @@ void nr_rlc_entity_am_recv_pdu(nr_rlc_entity_t *_entity,
int data_size; int data_size;
int is_first; int is_first;
int is_last; int is_last;
//LOG_I(RLC,"I am inside nr_rlc_entity_am_recv_pdu\n");
entity->common.stats.rxpdu_pkts++; entity->common.stats.rxpdu_pkts++;
entity->common.stats.rxpdu_bytes += size; entity->common.stats.rxpdu_bytes += size;
...@@ -1467,6 +1472,10 @@ static int generate_retx_pdu(nr_rlc_entity_am_t *entity, char *buffer, ...@@ -1467,6 +1472,10 @@ static int generate_retx_pdu(nr_rlc_entity_am_t *entity, char *buffer,
int pdu_size; int pdu_size;
int p; int p;
static int retx_ctr = 0;
retx_ctr++;
//LOG_I(RLC,"%s in %s is called %d times\n",__FUNCTION__,__FILE__, retx_ctr);
sdu = entity->retransmit_list; sdu = entity->retransmit_list;
pdu_header_size = compute_pdu_header_size(entity, sdu); pdu_header_size = compute_pdu_header_size(entity, sdu);
...@@ -1815,7 +1824,7 @@ static void check_t_poll_retransmit(nr_rlc_entity_am_t *entity) ...@@ -1815,7 +1824,7 @@ static void check_t_poll_retransmit(nr_rlc_entity_am_t *entity)
static void check_t_reassembly(nr_rlc_entity_am_t *entity) static void check_t_reassembly(nr_rlc_entity_am_t *entity)
{ {
int sn; int sn;
//LOG_I(RLC,"Came to %s in %s and t_reassembly is %d and current is %ld\n and start is %ld",__FUNCTION__, __FILE__,entity->t_reassembly,entity->t_current,entity->t_reassembly_start);
/* is t_reassembly running and if yes has it expired? */ /* is t_reassembly running and if yes has it expired? */
if (entity->t_reassembly_start == 0 || if (entity->t_reassembly_start == 0 ||
entity->t_current <= entity->t_reassembly_start + entity->t_reassembly) entity->t_current <= entity->t_reassembly_start + entity->t_reassembly)
...@@ -1824,8 +1833,8 @@ static void check_t_reassembly(nr_rlc_entity_am_t *entity) ...@@ -1824,8 +1833,8 @@ static void check_t_reassembly(nr_rlc_entity_am_t *entity)
/* stop timer */ /* stop timer */
entity->t_reassembly_start = 0; entity->t_reassembly_start = 0;
LOG_D(RLC, "%s:%d:%s: t_reassembly expired\n", //LOG_I(RLC, "%s:%d:%s: t_reassembly expired, t_reassembly = %d\n",
__FILE__, __LINE__, __FUNCTION__); __FILE__, __LINE__, __FUNCTION__,entity->t_reassembly);
/* update RX_Highest_Status */ /* update RX_Highest_Status */
sn = entity->rx_next_status_trigger; sn = entity->rx_next_status_trigger;
......
...@@ -606,7 +606,7 @@ void nr_rlc_entity_um_recv_sdu(nr_rlc_entity_t *_entity, ...@@ -606,7 +606,7 @@ void nr_rlc_entity_um_recv_sdu(nr_rlc_entity_t *_entity,
static void check_t_reassembly(nr_rlc_entity_um_t *entity) static void check_t_reassembly(nr_rlc_entity_um_t *entity)
{ {
nr_rlc_pdu_t *cur; nr_rlc_pdu_t *cur;
//LOG_I(RLC,"Came to %s in %s and t_reassembly is %d\n",__FUNCTION__, __FILE__,entity->t_reassembly);
/* is t_reassembly running and if yes has it expired? */ /* is t_reassembly running and if yes has it expired? */
if (entity->t_reassembly_start == 0 || if (entity->t_reassembly_start == 0 ||
entity->t_current <= entity->t_reassembly_start + entity->t_reassembly) entity->t_current <= entity->t_reassembly_start + entity->t_reassembly)
......
...@@ -612,7 +612,11 @@ void nr_rlc_add_srb(int rnti, int srb_id, const NR_RLC_BearerConfig_t *rlc_Beare ...@@ -612,7 +612,11 @@ void nr_rlc_add_srb(int rnti, int srb_id, const NR_RLC_BearerConfig_t *rlc_Beare
case NR_RLC_Config_PR_am: { case NR_RLC_Config_PR_am: {
struct NR_RLC_Config__am *am; struct NR_RLC_Config__am *am;
am = r->choice.am; am = r->choice.am;
t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly); //t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly);
//t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly) + get_softmodem_params()->ntn_trs_offset ;
//t_reassembly = decode_t_reassembly(get_softmodem_params()->ntn_trs) + get_softmodem_params()->ntn_trs_offset;
t_reassembly = get_softmodem_params()->ntn_trs + get_softmodem_params()->ntn_trs_offset;
//LOG_I(RLC,"Inside %s in %s and t_reassembly is %d\n",__FUNCTION__, __FILE__,t_reassembly);
t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit); t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit);
t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit); t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit);
poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU); poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU);
...@@ -644,7 +648,9 @@ void nr_rlc_add_srb(int rnti, int srb_id, const NR_RLC_BearerConfig_t *rlc_Beare ...@@ -644,7 +648,9 @@ void nr_rlc_add_srb(int rnti, int srb_id, const NR_RLC_BearerConfig_t *rlc_Beare
} else { } else {
/* hack: hardcode values for NR */ /* hack: hardcode values for NR */
t_poll_retransmit = 4000; t_poll_retransmit = 4000;
t_reassembly = 35; //t_reassembly = 35;
t_reassembly = get_softmodem_params()->ntn_trs + get_softmodem_params()->ntn_trs_offset;
//LOG_I(RLC,"Inside %s in %s and t_reassembly is %d\n",__FUNCTION__, __FILE__,t_reassembly);
t_status_prohibit = 0; t_status_prohibit = 0;
poll_pdu = -1; poll_pdu = -1;
poll_byte = -1; poll_byte = -1;
...@@ -695,7 +701,10 @@ static void add_drb_am(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be ...@@ -695,7 +701,10 @@ static void add_drb_am(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be
case NR_RLC_Config_PR_am: { case NR_RLC_Config_PR_am: {
struct NR_RLC_Config__am *am; struct NR_RLC_Config__am *am;
am = r->choice.am; am = r->choice.am;
t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly); //t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly);
//t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly) + get_softmodem_params()->ntn_trs_offset;
t_reassembly = decode_t_reassembly(get_softmodem_params()->ntn_trs) + get_softmodem_params()->ntn_trs_offset;
//LOG_I(RLC,"Inside %s in %s and t_reassembly is %d\n",__FUNCTION__, __FILE__,t_reassembly);
t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit); t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit);
t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit); t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit);
poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU); poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU);
...@@ -725,15 +734,16 @@ static void add_drb_am(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be ...@@ -725,15 +734,16 @@ static void add_drb_am(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be
if (ue->drb[drb_id-1] != NULL) { if (ue->drb[drb_id-1] != NULL) {
LOG_E(RLC, "%s:%d:%s: DRB %d already exists for UE with RNTI %04x, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); LOG_E(RLC, "%s:%d:%s: DRB %d already exists for UE with RNTI %04x, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti);
} else { } else {
nr_rlc_entity_t *nr_rlc_am = new_nr_rlc_entity_am(RLC_RX_MAXSIZE, t_reassembly = get_softmodem_params()->ntn_trs + get_softmodem_params()->ntn_trs_offset;
RLC_TX_MAXSIZE, nr_rlc_am = new_nr_rlc_entity_am(RLC_RX_MAXSIZE,
deliver_sdu, ue, RLC_TX_MAXSIZE,
successful_delivery, ue, deliver_sdu, ue,
max_retx_reached, ue, successful_delivery, ue,
t_poll_retransmit, max_retx_reached, ue,
t_reassembly, t_status_prohibit, t_poll_retransmit,
poll_pdu, poll_byte, max_retx_threshold, t_reassembly, t_status_prohibit,
sn_field_length); poll_pdu, poll_byte, max_retx_threshold,
sn_field_length);
nr_rlc_ue_add_drb_rlc_entity(ue, drb_id, nr_rlc_am); nr_rlc_ue_add_drb_rlc_entity(ue, drb_id, nr_rlc_am);
LOG_I(RLC, "%s:%d:%s: added drb %d to UE with RNTI 0x%x\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); LOG_I(RLC, "%s:%d:%s: added drb %d to UE with RNTI 0x%x\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti);
...@@ -768,9 +778,10 @@ static void add_drb_um(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be ...@@ -768,9 +778,10 @@ static void add_drb_um(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be
um = r->choice.um_Bi_Directional; um = r->choice.um_Bi_Directional;
// FOLLOWING TO BE USED WHEN HARQ IS DISABLED // FOLLOWING TO BE USED WHEN HARQ IS DISABLED
{ {
t_reassembly = decode_t_reassembly(um->dl_UM_RLC.t_Reassembly); // THIS WILL COLLECT THE VALUE FROM ENUM CORRESPONDING //t_reassembly = decode_t_reassembly(um->dl_UM_RLC.t_Reassembly); // THIS WILL COLLECT THE VALUE FROM ENUM CORRESPONDING
// TO THE INDEX PROVIDED FROM CLP // TO THE INDEX PROVIDED FROM CLP
t_reassembly = t_reassembly + get_softmodem_params()->ntn_trs_offset; // THIS WILL ADD THE OFFSET VALUE PROVIDED FROM CLP t_reassembly = get_softmodem_params()->ntn_trs + get_softmodem_params()->ntn_trs_offset; // THIS WILL ADD THE OFFSET VALUE PROVIDED FROM CLP
//LOG_I(RLC,"Inside %s in %s and t_reassembly is %d\n",__FUNCTION__, __FILE__,t_reassembly);
} }
// FOLLOWING TO BE USED WHEN HARQ IS ENABLED DO AS 7.2.2.1 FROM 38.821 // FOLLOWING TO BE USED WHEN HARQ IS ENABLED DO AS 7.2.2.1 FROM 38.821
...@@ -811,11 +822,12 @@ static void add_drb_um(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be ...@@ -811,11 +822,12 @@ static void add_drb_um(int rnti, int drb_id, const NR_RLC_BearerConfig_t *rlc_Be
if (ue->drb[drb_id-1] != NULL) { if (ue->drb[drb_id-1] != NULL) {
LOG_E(RLC, "DEBUG add_drb_um %s:%d:%s: warning DRB %d already exist for ue %d, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); LOG_E(RLC, "DEBUG add_drb_um %s:%d:%s: warning DRB %d already exist for ue %d, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti);
} else { } else {
nr_rlc_entity_t *nr_rlc_um = new_nr_rlc_entity_um(RLC_RX_MAXSIZE, t_reassembly = get_softmodem_params()->ntn_trs + get_softmodem_params()->ntn_trs_offset;
RLC_TX_MAXSIZE, nr_rlc_um = new_nr_rlc_entity_um(RLC_RX_MAXSIZE,
deliver_sdu, ue, RLC_TX_MAXSIZE,
t_reassembly, deliver_sdu, ue,
sn_field_length); t_reassembly,
sn_field_length);
nr_rlc_ue_add_drb_rlc_entity(ue, drb_id, nr_rlc_um); nr_rlc_ue_add_drb_rlc_entity(ue, drb_id, nr_rlc_um);
LOG_D(RLC, "%s:%d:%s: added drb %d to UE with RNTI 0x%x\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); LOG_D(RLC, "%s:%d:%s: added drb %d to UE with RNTI 0x%x\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti);
......
...@@ -366,7 +366,8 @@ static void nr_drb_config(struct NR_RLC_Config *rlc_Config, NR_RLC_Config_PR rlc ...@@ -366,7 +366,8 @@ static void nr_drb_config(struct NR_RLC_Config *rlc_Config, NR_RLC_Config_PR rlc
rlc_Config->choice.am->ul_AM_RLC.maxRetxThreshold = NR_UL_AM_RLC__maxRetxThreshold_t32; rlc_Config->choice.am->ul_AM_RLC.maxRetxThreshold = NR_UL_AM_RLC__maxRetxThreshold_t32;
rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = calloc(1, sizeof(*rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength)); rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = calloc(1, sizeof(*rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength));
*rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; *rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18;
rlc_Config->choice.am->dl_AM_RLC.t_Reassembly = NR_T_Reassembly_ms15; //rlc_Config->choice.am->dl_AM_RLC.t_Reassembly = NR_T_Reassembly_ms15;
rlc_Config->choice.am->dl_AM_RLC.t_Reassembly = get_softmodem_params()->ntn_trs;
rlc_Config->choice.am->dl_AM_RLC.t_StatusProhibit = NR_T_StatusProhibit_ms2400; rlc_Config->choice.am->dl_AM_RLC.t_StatusProhibit = NR_T_StatusProhibit_ms2400;
break; break;
default: default:
......
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