diff --git a/srsenb/hdr/stack/rrc/mac_controller.h b/srsenb/hdr/stack/rrc/mac_controller.h index 3a97de60a..e226e0002 100644 --- a/srsenb/hdr/stack/rrc/mac_controller.h +++ b/srsenb/hdr/stack/rrc/mac_controller.h @@ -55,6 +55,8 @@ public: const srslte::rrc_ue_capabilities_t& uecaps); void handle_ho_prep(const asn1::rrc::ho_prep_info_r8_ies_s& ho_prep); + void handle_max_retx(); + const ue_cfg_t& get_ue_sched_cfg() const { return current_sched_ue_cfg; } bool is_crnti_set() const { return crnti_set; } diff --git a/srsenb/src/stack/rrc/mac_controller.cc b/srsenb/src/stack/rrc/mac_controller.cc index b88fc8f12..8924377db 100644 --- a/srsenb/src/stack/rrc/mac_controller.cc +++ b/srsenb/src/stack/rrc/mac_controller.cc @@ -299,6 +299,14 @@ void mac_controller::handle_ho_prep(const asn1::rrc::ho_prep_info_r8_ies_s& ho_p } } +void mac_controller::handle_max_retx() +{ + for (auto& ue_bearer : current_sched_ue_cfg.ue_bearers) { + ue_bearer.direction = sched_interface::ue_bearer_cfg_t::IDLE; + } + update_mac(config_tx); +} + void mac_controller::set_scell_activation(const std::bitset& scell_mask) { for (uint32_t i = 1; i < current_sched_ue_cfg.supported_cc_list.size(); ++i) { diff --git a/srsenb/src/stack/rrc/rrc_ue.cc b/srsenb/src/stack/rrc/rrc_ue.cc index ff365e859..02a9f147c 100644 --- a/srsenb/src/stack/rrc/rrc_ue.cc +++ b/srsenb/src/stack/rrc/rrc_ue.cc @@ -136,6 +136,8 @@ void rrc::ue::max_retx_reached() // Give UE time to start re-establishment set_activity_timeout(UE_REESTABLISH_TIMEOUT); + + mac_ctrl.handle_max_retx(); } }