diff --git a/srsenb/src/stack/rrc/mac_controller.cc b/srsenb/src/stack/rrc/mac_controller.cc index 39eda7e34..dc5bd784f 100644 --- a/srsenb/src/stack/rrc/mac_controller.cc +++ b/srsenb/src/stack/rrc/mac_controller.cc @@ -62,10 +62,9 @@ void ue_cfg_apply_srb_updates(ue_cfg_t& ue_cfg, const srb_to_add_mod_list_l& srb * Adds to sched_interface::ue_cfg_t the changes present in the asn1 RRCReconfiguration message that should * only take effect after the RRCReconfigurationComplete is received */ -void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg, - const rrc_conn_recfg_r8_ies_s& conn_recfg, - const cell_ctxt_dedicated_list& ue_cell_list, - const srslte::rrc_ue_capabilities_t& uecaps); +void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg, + const rrc_conn_recfg_r8_ies_s& conn_recfg, + const cell_ctxt_dedicated_list& ue_cell_list); /** * Adds to sched_interface::ue_cfg_t the changes present in the asn1 RRCReconfiguration message related to @@ -73,6 +72,8 @@ void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& u */ void ue_cfg_apply_phy_cfg_ded(ue_cfg_t& ue_cfg, const asn1::rrc::phys_cfg_ded_s& phy_cfg, const rrc_cfg_t& rrc_cfg); +void ue_cfg_apply_capabilities(ue_cfg_t& ue_cfg, const rrc_cfg_t& rrc_cfg, const srslte::rrc_ue_capabilities_t& uecaps); + /*************************** * MAC Controller class **************************/ @@ -201,7 +202,8 @@ void rrc::ue::mac_controller::handle_con_reconf(const asn1::rrc::rrc_conn_recfg_ // Store MAC updates that are applied once RRCReconfigurationComplete is received next_sched_ue_cfg = current_sched_ue_cfg; - ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps); + ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps); + ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list); // Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message) set_drb_activation(false); @@ -248,7 +250,8 @@ void rrc::ue::mac_controller::handle_target_enb_ho_cmd(const asn1::rrc::rrc_conn } next_sched_ue_cfg = current_sched_ue_cfg; - ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps); + ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps); + ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list); // Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message) set_drb_activation(false); @@ -269,7 +272,8 @@ void rrc::ue::mac_controller::handle_intraenb_ho_cmd(const asn1::rrc::rrc_conn_r if (conn_recfg.rr_cfg_ded_present and conn_recfg.rr_cfg_ded.phys_cfg_ded_present) { ue_cfg_apply_phy_cfg_ded(next_sched_ue_cfg, conn_recfg.rr_cfg_ded.phys_cfg_ded, *rrc_cfg); } - ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps); + ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps); + ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list); // Freeze SCells // NOTE: this avoids that the UE receives an HOCmd retx from target cell and do an incorrect RLC-level concatenation @@ -385,10 +389,9 @@ void ue_cfg_apply_srb_updates(ue_cfg_t& ue_cfg, const srb_to_add_mod_list_l& srb } } -void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg, - const rrc_conn_recfg_r8_ies_s& conn_recfg, - const cell_ctxt_dedicated_list& ue_cell_list, - const srslte::rrc_ue_capabilities_t& uecaps) +void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg, + const rrc_conn_recfg_r8_ies_s& conn_recfg, + const cell_ctxt_dedicated_list& ue_cell_list) { // Configure RadioResourceConfigDedicated if (conn_recfg.rr_cfg_ded_present) { @@ -453,11 +456,12 @@ void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& u } } } +} - // Params non-dependent on Reconf message content - if (uecaps.support_ul_64qam) { - ue_cfg.support_ul_64qam = true; - } +void ue_cfg_apply_capabilities(ue_cfg_t& ue_cfg, const rrc_cfg_t& rrc_cfg, const srslte::rrc_ue_capabilities_t& uecaps) +{ + ue_cfg.support_ul_64qam = + uecaps.support_ul_64qam and rrc_cfg.sibs[1].sib2().rr_cfg_common.pusch_cfg_common.pusch_cfg_basic.enable64_qam; } } // namespace srsenb