diff --git a/srsenb/hdr/stack/rrc/rrc.h b/srsenb/hdr/stack/rrc/rrc.h index 737457435..87d7b0fe3 100644 --- a/srsenb/hdr/stack/rrc/rrc.h +++ b/srsenb/hdr/stack/rrc/rrc.h @@ -289,7 +289,7 @@ public: srslte::timer_handler::unique_timer activity_timer; // cached for ease of context transfer - asn1::rrc::rrc_conn_recfg_r8_ies_s last_rrc_conn_recfg; + asn1::rrc::rrc_conn_recfg_s last_rrc_conn_recfg; asn1::rrc::security_algorithm_cfg_s last_security_mode_cmd; asn1::rrc::establishment_cause_e establishment_cause; diff --git a/srsenb/src/stack/rrc/rrc.cc b/srsenb/src/stack/rrc/rrc.cc index d19d4c9af..e411ce2a4 100644 --- a/srsenb/src/stack/rrc/rrc.cc +++ b/srsenb/src/stack/rrc/rrc.cc @@ -1062,7 +1062,7 @@ void rrc::ue::set_activity_timeout(const activity_timeout_type_t type) uint32_t deadline = deadline_s * 1e3 + deadline_ms; activity_timer.set(deadline, [this](uint32_t tid) { activity_timer_expired(); }); - parent->rrc_log->debug("Setting timer for %s for rnti=%x to %dms\n", to_string(type).c_str(), rnti, deadline); + parent->rrc_log->debug("Setting timer for %s for rnti=0x%x to %dms\n", to_string(type).c_str(), rnti, deadline); set_activity(); } @@ -1819,7 +1819,7 @@ void rrc::ue::send_connection_reconf(srslte::unique_byte_buffer_t pdu) if (mobility_handler != nullptr) { mobility_handler->fill_conn_recfg_msg(conn_reconf); } - last_rrc_conn_recfg = *conn_reconf; + last_rrc_conn_recfg = dl_dcch_msg.msg.c1().rrc_conn_recfg(); // Reuse same PDU pdu->clear(); diff --git a/srsenb/src/stack/rrc/rrc_mobility.cc b/srsenb/src/stack/rrc/rrc_mobility.cc index f58971e76..e86081c75 100644 --- a/srsenb/src/stack/rrc/rrc_mobility.cc +++ b/srsenb/src/stack/rrc/rrc_mobility.cc @@ -810,14 +810,19 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci, empty_meascfg.compute_diff_meas_cfg(target_var_meas, &hoprep_r8.as_cfg.source_meas_cfg); // - fill source RR Config hoprep_r8.as_cfg.source_rr_cfg.sps_cfg_present = false; // TODO: CHECK - hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg_present = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.mac_main_cfg_present; - hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.mac_main_cfg; - hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded_present = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.phys_cfg_ded_present; - hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.phys_cfg_ded; + hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg_present = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.mac_main_cfg_present; + hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.mac_main_cfg; + hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded_present = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.phys_cfg_ded_present; + hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.phys_cfg_ded; // Add SRB2 to the message hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list_present = - rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.srb_to_add_mod_list_present; - hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.srb_to_add_mod_list; + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.srb_to_add_mod_list_present; + hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.srb_to_add_mod_list; // hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list_present = true; // asn1::rrc::srb_to_add_mod_list_l& srb_list = hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list; // srb_list.resize(1); @@ -835,8 +840,9 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci, // am.dl_am_rlc.t_status_prohibit.value = asn1::rrc::t_status_prohibit_e::ms0; // Get DRB1 configuration hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list_present = - rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.drb_to_add_mod_list_present; - hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.drb_to_add_mod_list; + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.drb_to_add_mod_list_present; + hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list = + rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.drb_to_add_mod_list; // hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list_present = true; // asn1::rrc::drb_to_add_mod_list_l& drb_list = hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list; // drb_list.resize(1); diff --git a/srsenb/src/stack/upper/rlc.cc b/srsenb/src/stack/upper/rlc.cc index 933efd552..d68cf15f5 100644 --- a/srsenb/src/stack/upper/rlc.cc +++ b/srsenb/src/stack/upper/rlc.cc @@ -200,13 +200,10 @@ void rlc::write_sdu(uint16_t rnti, uint32_t lcid, srslte::unique_byte_buffer_t s void rlc::discard_sdu(uint16_t rnti, uint32_t lcid, uint32_t discard_sn) { - - uint32_t tx_queue; - pthread_rwlock_rdlock(&rwlock); if (users.count(rnti)) { users[rnti].rlc->discard_sdu(lcid, discard_sn); - tx_queue = users[rnti].rlc->get_buffer_state(lcid); + uint32_t tx_queue = users[rnti].rlc->get_buffer_state(lcid); // In the eNodeB, there is no polling for buffer state from the scheduler, thus // communicate buffer state every time a new SDU is discarded