Fix issue in sending PDCP status PDU from the eNB due to non-existing LCID at the RLC.

master
Pedro Alvarez 4 years ago
parent b0fe302f8e
commit e0542a4651

@ -65,7 +65,7 @@ public:
std::map<uint32_t, srslte::unique_byte_buffer_t> get_buffered_pdus() override; std::map<uint32_t, srslte::unique_byte_buffer_t> get_buffered_pdus() override;
// Status report helper(s) // Status report helper(s)
void send_status_report(); void send_status_report() override;
void handle_status_report_pdu(srslte::unique_byte_buffer_t pdu); void handle_status_report_pdu(srslte::unique_byte_buffer_t pdu);
// Internal state getters/setters // Internal state getters/setters

@ -470,9 +470,9 @@ void pdcp_entity_lte::handle_status_report_pdu(unique_byte_buffer_t pdu)
{ {
logger.info("Handling Status Report PDU. Size=%ld", pdu->N_bytes); logger.info("Handling Status Report PDU. Size=%ld", pdu->N_bytes);
uint32_t fms; uint32_t fms = 0;
std::vector<uint32_t> acked_sns; std::vector<uint32_t> acked_sns = {};
uint32_t bitmap_offset; uint32_t bitmap_offset = 0;
// Get FMS // Get FMS
switch (cfg.sn_len) { switch (cfg.sn_len) {

@ -542,9 +542,9 @@ void rrc::ue::send_connection_reconf(srslte::unique_byte_buffer_t pdu,
apply_reconf_phy_config(recfg_r8, true); apply_reconf_phy_config(recfg_r8, true);
// setup SRB2/DRBs in PDCP and RLC // setup SRB2/DRBs in PDCP and RLC
apply_rlc_rb_updates(recfg_r8.rr_cfg_ded);
apply_pdcp_srb_updates(recfg_r8.rr_cfg_ded); apply_pdcp_srb_updates(recfg_r8.rr_cfg_ded);
apply_pdcp_drb_updates(recfg_r8.rr_cfg_ded); apply_pdcp_drb_updates(recfg_r8.rr_cfg_ded);
apply_rlc_rb_updates(recfg_r8.rr_cfg_ded);
// UE MAC scheduler updates // UE MAC scheduler updates
mac_ctrl.handle_con_reconf(recfg_r8, ue_capabilities); mac_ctrl.handle_con_reconf(recfg_r8, ue_capabilities);
@ -1213,8 +1213,6 @@ void rrc::ue::apply_pdcp_drb_updates(const rr_cfg_ded_s& pending_rr_cfg)
bool is_am = parent->cfg.qci_cfg[erab_pair.second.qos_params.qci].rlc_cfg.type().value == bool is_am = parent->cfg.qci_cfg[erab_pair.second.qos_params.qci].rlc_cfg.type().value ==
asn1::rrc::rlc_cfg_c::types_opts::am; asn1::rrc::rlc_cfg_c::types_opts::am;
if (is_am) { if (is_am) {
bool is_status_report_required =
parent->cfg.qci_cfg[erab_pair.second.qos_params.qci].pdcp_cfg.rlc_am.status_report_required;
parent->logger.debug("Set PDCP state: TX HFN %d, NEXT_PDCP_TX_SN %d, RX_HFN %d, NEXT_PDCP_RX_SN %d, " parent->logger.debug("Set PDCP state: TX HFN %d, NEXT_PDCP_TX_SN %d, RX_HFN %d, NEXT_PDCP_RX_SN %d, "
"LAST_SUBMITTED_PDCP_RX_SN %d", "LAST_SUBMITTED_PDCP_RX_SN %d",
old_reest_pdcp_state[lcid].tx_hfn, old_reest_pdcp_state[lcid].tx_hfn,
@ -1224,7 +1222,7 @@ void rrc::ue::apply_pdcp_drb_updates(const rr_cfg_ded_s& pending_rr_cfg)
old_reest_pdcp_state[lcid].last_submitted_pdcp_rx_sn); old_reest_pdcp_state[lcid].last_submitted_pdcp_rx_sn);
parent->pdcp->set_bearer_state(rnti, lcid, old_reest_pdcp_state[lcid]); parent->pdcp->set_bearer_state(rnti, lcid, old_reest_pdcp_state[lcid]);
parent->pdcp->set_bearer_state(rnti, lcid, old_reest_pdcp_state[lcid]); parent->pdcp->set_bearer_state(rnti, lcid, old_reest_pdcp_state[lcid]);
if (is_status_report_required) { if (parent->cfg.qci_cfg[erab_pair.second.qos_params.qci].pdcp_cfg.rlc_am.status_report_required) {
parent->pdcp->send_status_report(rnti, lcid); parent->pdcp->send_status_report(rnti, lcid);
} }
} }

Loading…
Cancel
Save