diff --git a/lib/src/asn1/rrc_nr_utils.cc b/lib/src/asn1/rrc_nr_utils.cc index c4e887072..455ea2b3b 100644 --- a/lib/src/asn1/rrc_nr_utils.cc +++ b/lib/src/asn1/rrc_nr_utils.cc @@ -111,9 +111,48 @@ srslte::pdcp_config_t make_drb_pdcp_config_t(const uint8_t bearer_id, bool is_ue case 10: discard_timer = pdcp_discard_timer_t::ms10; break; + case 20: + discard_timer = pdcp_discard_timer_t::ms20; + break; + case 30: + discard_timer = pdcp_discard_timer_t::ms30; + break; + case 40: + discard_timer = pdcp_discard_timer_t::ms40; + break; + case 50: + discard_timer = pdcp_discard_timer_t::ms50; + break; + case 60: + discard_timer = pdcp_discard_timer_t::ms60; + break; + case 75: + discard_timer = pdcp_discard_timer_t::ms75; + break; case 100: discard_timer = pdcp_discard_timer_t::ms100; break; + case 150: + discard_timer = pdcp_discard_timer_t::ms150; + break; + case 200: + discard_timer = pdcp_discard_timer_t::ms200; + break; + case 250: + discard_timer = pdcp_discard_timer_t::ms250; + break; + case 300: + discard_timer = pdcp_discard_timer_t::ms300; + break; + case 500: + discard_timer = pdcp_discard_timer_t::ms500; + break; + case 750: + discard_timer = pdcp_discard_timer_t::ms750; + break; + case 1500: + discard_timer = pdcp_discard_timer_t::ms1500; + break; default: discard_timer = pdcp_discard_timer_t::infinity; break; diff --git a/lib/src/upper/pdcp.cc b/lib/src/upper/pdcp.cc index c1fdde916..7d6ca647a 100644 --- a/lib/src/upper/pdcp.cc +++ b/lib/src/upper/pdcp.cc @@ -94,13 +94,8 @@ void pdcp::add_bearer(uint32_t lcid, pdcp_config_t cfg) { if (not valid_lcid(lcid)) { std::unique_ptr entity; - if (cfg.sn_len == srslte::PDCP_SN_LEN_18) { - // create NR entity for 18bit SN length - - entity.reset(new pdcp_entity_nr{rlc, rrc, gw, task_sched, logger, lcid, cfg}); - } else { - entity.reset(new pdcp_entity_lte{rlc, rrc, gw, task_sched, logger, lcid, cfg}); - } + // For now we create an pdcp entity lte for nr due to it's maturity + entity.reset(new pdcp_entity_lte{rlc, rrc, gw, task_sched, logger, lcid, cfg}); if (not pdcp_array.insert(std::make_pair(lcid, std::move(entity))).second) { logger.error("Error inserting PDCP entity in to array."); return; diff --git a/srsue/src/stack/rrc/rrc_nr.cc b/srsue/src/stack/rrc/rrc_nr.cc index 01397d628..e52752299 100644 --- a/srsue/src/stack/rrc/rrc_nr.cc +++ b/srsue/src/stack/rrc/rrc_nr.cc @@ -627,6 +627,8 @@ bool rrc_nr::apply_drb_add_mod(const drb_to_add_mod_s& drb_cfg) } srslte::pdcp_config_t pdcp_cfg = make_drb_pdcp_config_t(drb_cfg.drb_id, true, drb_cfg.pdcp_cfg); + // TODO: work-around: this is only a work around for pdcp lte entity init + pdcp_cfg.discard_timer = pdcp_discard_timer_t::infinity; pdcp->add_bearer(lcid, pdcp_cfg); gw->update_lcid(eps_bearer_id, lcid); return true;