mirror of https://github.com/PentHertz/srsLTE.git
reestablish pdcp bearers is required in case of AM bearers
This commit is contained in:
parent
079ae70e64
commit
137e554eb3
|
@ -373,6 +373,7 @@ public:
|
|||
virtual void enable_encryption(uint16_t rnti, uint32_t lcid) = 0;
|
||||
virtual bool get_bearer_state(uint16_t rnti, uint32_t lcid, srslte::pdcp_lte_state_t* state) = 0;
|
||||
virtual bool set_bearer_state(uint16_t rnti, uint32_t lcid, const srslte::pdcp_lte_state_t& state) = 0;
|
||||
virtual void reestablish(uint16_t rnti) = 0;
|
||||
};
|
||||
|
||||
// PDCP interface for RLC
|
||||
|
|
|
@ -54,6 +54,7 @@ public:
|
|||
void enable_encryption(uint16_t rnti, uint32_t lcid) override;
|
||||
bool get_bearer_state(uint16_t rnti, uint32_t lcid, srslte::pdcp_lte_state_t* state) override;
|
||||
bool set_bearer_state(uint16_t rnti, uint32_t lcid, const srslte::pdcp_lte_state_t& state) override;
|
||||
void reestablish(uint16_t rnti) override;
|
||||
|
||||
private:
|
||||
class user_interface_rlc : public srsue::rlc_interface_pdcp
|
||||
|
|
|
@ -1314,7 +1314,6 @@ void rrc::ue::rrc_mobility::intraenb_ho_st::enter(rrc_mobility* f, const ho_meas
|
|||
|
||||
/* Freeze all DRBs. SRBs DL are needed for sending the HO Cmd */
|
||||
for (const drb_to_add_mod_s& drb : f->rrc_ue->bearer_list.get_established_drbs()) {
|
||||
f->rrc_enb->pdcp->del_bearer(f->rrc_ue->rnti, drb.drb_id + 2);
|
||||
f->rrc_enb->mac->bearer_ue_rem(f->rrc_ue->rnti, drb.drb_id + 2);
|
||||
}
|
||||
sched_interface::ue_bearer_cfg_t bcfg = {};
|
||||
|
@ -1342,8 +1341,7 @@ void rrc::ue::rrc_mobility::handle_crnti_ce(intraenb_ho_st& s, const user_crnti_
|
|||
|
||||
if (is_first_crnti_ce) {
|
||||
// Need to reset SNs of bearers.
|
||||
rrc_enb->pdcp->rem_user(rrc_ue->rnti);
|
||||
rrc_enb->pdcp->add_user(rrc_ue->rnti);
|
||||
rrc_enb->pdcp->reestablish(rrc_ue->rnti);
|
||||
rrc_enb->rlc->reestablish(rrc_ue->rnti);
|
||||
|
||||
// Change PCell in MAC/Scheduler
|
||||
|
|
|
@ -135,6 +135,14 @@ bool pdcp::set_bearer_state(uint16_t rnti, uint32_t lcid, const srslte::pdcp_lte
|
|||
return users[rnti].pdcp->set_bearer_state(lcid, state);
|
||||
}
|
||||
|
||||
void pdcp::reestablish(uint16_t rnti)
|
||||
{
|
||||
if (users.count(rnti) == 0) {
|
||||
return;
|
||||
}
|
||||
users[rnti].pdcp->reestablish();
|
||||
}
|
||||
|
||||
void pdcp::write_pdu(uint16_t rnti, uint32_t lcid, srslte::unique_byte_buffer_t sdu)
|
||||
{
|
||||
if (users.count(rnti)) {
|
||||
|
|
|
@ -74,6 +74,7 @@ public:
|
|||
void enable_encryption(uint16_t rnti, uint32_t lcid) override {}
|
||||
bool get_bearer_state(uint16_t rnti, uint32_t lcid, srslte::pdcp_lte_state_t* state) override { return true; }
|
||||
bool set_bearer_state(uint16_t rnti, uint32_t lcid, const srslte::pdcp_lte_state_t& state) override { return true; }
|
||||
void reestablish(uint16_t rnti) override {}
|
||||
};
|
||||
|
||||
class s1ap_dummy : public s1ap_interface_rrc
|
||||
|
|
Loading…
Reference in New Issue