gnb,rrc: fix handling of DRB for reconfig/reestablishment

the five_qi value received from the 5GC was not stored/passed when
the UE object was moved from one RNTI to another during e.g.
reestablishment. this makes sure the selected 5qi is passed over
during that process.
This commit is contained in:
Andre Puschmann 2022-05-13 17:02:13 +02:00
parent bbd84f087e
commit bed35c747c
2 changed files with 6 additions and 0 deletions

View File

@ -187,6 +187,7 @@ private:
sched_nr_interface::ue_cfg_t uecfg{};
const uint32_t drb1_lcid = 4;
uint32_t drb1_five_qi = 0; /// selected by 5GC
// Security helper
srsgnb::nr_security_context sec_ctx;

View File

@ -925,6 +925,7 @@ void rrc_nr::ue::handle_rrc_reestablishment_request(const asn1::rrc_nr::rrc_rees
// Reestablish E-RABs of old rnti later, during ConnectionReconfiguration
// bearer_list.reestablish_bearers(std::move(old_ue->bearer_list));
drb1_five_qi = old_ue->drb1_five_qi;
// remove old RNTI
old_ue->deactivate_bearers();
@ -1270,6 +1271,7 @@ void rrc_nr::ue::handle_rrc_reestablishment_complete(const asn1::rrc_nr::rrc_ree
for (const auto& drb : next_radio_bearer_cfg.drb_to_add_mod_list) {
uint16_t lcid = drb1_lcid;
parent->bearer_mapper->add_eps_bearer(rnti, lcid - 3, srsran::srsran_rat_t::nr, lcid);
parent->bearer_mapper->set_five_qi(rnti, lcid - 3, drb1_five_qi);
logger.info("Established EPS bearer for LCID %u and RNTI 0x%x", lcid, rnti);
}
@ -1362,6 +1364,9 @@ void rrc_nr::ue::establish_eps_bearer(uint32_t pdu_session_id,
rnti, lcid - 3, srsran::srsran_rat_t::nr, lcid); // TODO: configurable bearer id <-> lcid mapping
parent->bearer_mapper->set_five_qi(rnti, lcid - 3, five_qi);
// store 5QI for possible reestablishment of DRB
drb1_five_qi = five_qi;
logger.info("Established EPS bearer for LCID %u and RNTI 0x%x", lcid, rnti);
}