From 4182a9f1642ca92e431a36bd84f987c6ec995e6c Mon Sep 17 00:00:00 2001 From: Fabian Eckermann Date: Mon, 10 Jan 2022 10:10:30 +0100 Subject: [PATCH] Add cell group update without random access. --- srsue/hdr/stack/rrc_nr/rrc_nr.h | 2 ++ srsue/src/stack/rrc_nr/rrc_nr.cc | 24 +++++++++++++++++---- srsue/src/stack/rrc_nr/rrc_nr_procedures.cc | 12 +++-------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/srsue/hdr/stack/rrc_nr/rrc_nr.h b/srsue/hdr/stack/rrc_nr/rrc_nr.h index bb1f3fad8..31ced245b 100644 --- a/srsue/hdr/stack/rrc_nr/rrc_nr.h +++ b/srsue/hdr/stack/rrc_nr/rrc_nr.h @@ -213,10 +213,12 @@ private: std::map csi_rs_nzp_res; bool apply_cell_group_cfg(const asn1::rrc_nr::cell_group_cfg_s& cell_group_cfg); + bool update_cell_group_cfg(const asn1::rrc_nr::cell_group_cfg_s& cell_group_cfg); bool apply_radio_bearer_cfg(const asn1::rrc_nr::radio_bearer_cfg_s& radio_bearer_cfg); bool apply_rlc_add_mod(const asn1::rrc_nr::rlc_bearer_cfg_s& rlc_bearer_cfg); bool apply_mac_cell_group(const asn1::rrc_nr::mac_cell_group_cfg_s& mac_cell_group_cfg); bool apply_sp_cell_cfg(const asn1::rrc_nr::sp_cell_cfg_s& sp_cell_cfg); + bool update_sp_cell_cfg(const asn1::rrc_nr::sp_cell_cfg_s& sp_cell_cfg); bool apply_phy_cell_group_cfg(const asn1::rrc_nr::phys_cell_group_cfg_s& phys_cell_group_cfg); bool apply_dl_common_cfg(const asn1::rrc_nr::dl_cfg_common_s& dl_cfg_common); bool apply_ul_common_cfg(const asn1::rrc_nr::ul_cfg_common_s& ul_cfg_common); diff --git a/srsue/src/stack/rrc_nr/rrc_nr.cc b/srsue/src/stack/rrc_nr/rrc_nr.cc index 403926bd1..345f02805 100644 --- a/srsue/src/stack/rrc_nr/rrc_nr.cc +++ b/srsue/src/stack/rrc_nr/rrc_nr.cc @@ -1569,6 +1569,15 @@ bool rrc_nr::apply_sp_cell_ded_ul_pusch(const asn1::rrc_nr::pusch_cfg_s& pusch_c }; bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg) +{ + update_sp_cell_cfg(sp_cell_cfg); + + phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL; + + return true; +} + +bool rrc_nr::update_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg) { srsran_csi_hl_cfg_t prev_csi = phy_cfg.csi; if (sp_cell_cfg.recfg_with_sync_present) { @@ -1621,7 +1630,7 @@ bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg) } } } else { - logger.warning("Reconfig with with sync not present"); + logger.warning("Reconfig with sync not present"); } // Dedicated config @@ -1740,8 +1749,6 @@ bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg) current_phycfg.csi = prev_csi; phy->set_config(current_phycfg); - phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL; - return true; } @@ -1758,6 +1765,15 @@ bool rrc_nr::apply_phy_cell_group_cfg(const phys_cell_group_cfg_s& phys_cell_gro } bool rrc_nr::apply_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg) +{ + update_cell_group_cfg(cell_group_cfg); + + phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL; + + return true; +} + +bool rrc_nr::update_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg) { if (cell_group_cfg.rlc_bearer_to_add_mod_list_present) { for (uint32_t i = 0; i < cell_group_cfg.rlc_bearer_to_add_mod_list.size(); i++) { @@ -1777,7 +1793,7 @@ bool rrc_nr::apply_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg) } } if (cell_group_cfg.sp_cell_cfg_present) { - if (apply_sp_cell_cfg(cell_group_cfg.sp_cell_cfg) == false) { + if (update_sp_cell_cfg(cell_group_cfg.sp_cell_cfg) == false) { return false; } } diff --git a/srsue/src/stack/rrc_nr/rrc_nr_procedures.cc b/srsue/src/stack/rrc_nr/rrc_nr_procedures.cc index b779522b4..5f93e6fbf 100644 --- a/srsue/src/stack/rrc_nr/rrc_nr_procedures.cc +++ b/srsue/src/stack/rrc_nr/rrc_nr_procedures.cc @@ -34,11 +34,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator Info("Starting..."); initiator = initiator_; -#if 0 asn1::json_writer js; rrc_nr_reconf.to_json(js); Debug("RRC NR Reconfiguration: %s", js.to_string().c_str()); -#endif if (rrc_nr_reconf.crit_exts.rrc_recfg().secondary_cell_group_present) { if (rrc_nr_reconf.crit_exts.type() != asn1::rrc_nr::rrc_recfg_s::crit_exts_c_::types::rrc_recfg) { @@ -55,11 +53,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator return proc_outcome_t::error; } -#if 0 asn1::json_writer js1; secondary_cell_group_cfg.to_json(js1); Debug("Secondary Cell Group: %s", js1.to_string().c_str()); -#endif Info("Applying Secondary Cell Group Cfg."); if (!rrc_handle.apply_cell_group_cfg(secondary_cell_group_cfg)) { @@ -85,11 +81,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator return proc_outcome_t::error; } -#if 0 asn1::json_writer js2; master_cell_group_cfg.to_json(js2); Debug("Master Cell Group: %s", js2.to_string().c_str()); -#endif Info("Applying Master Cell Group Cfg."); if (!rrc_handle.apply_cell_group_cfg(master_cell_group_cfg)) { @@ -168,7 +162,7 @@ void rrc_nr::connection_reconf_no_ho_proc::then(const srsran::proc_state_t& resu *************************************/ rrc_nr::setup_request_proc::setup_request_proc(rrc_nr& parent_) : - rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC")) + rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC-NR")) {} proc_outcome_t rrc_nr::setup_request_proc::init(srsran::nr_establishment_cause_t cause_, @@ -293,7 +287,7 @@ srsran::proc_outcome_t rrc_nr::setup_request_proc::react(const cell_selection_pr // Simple procedure mainly do defer the transmission of the SetupComplete until all PHY reconfiguration are done rrc_nr::connection_setup_proc::connection_setup_proc(srsue::rrc_nr& parent_) : - rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC")) + rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC-NR")) {} srsran::proc_outcome_t rrc_nr::connection_setup_proc::init(const asn1::rrc_nr::radio_bearer_cfg_s radio_bearer_cfg_, @@ -315,7 +309,7 @@ srsran::proc_outcome_t rrc_nr::connection_setup_proc::init(const asn1::rrc_nr::r } // Apply the Cell Group configuration - if (!rrc_handle.apply_cell_group_cfg(cell_group_)) { + if (!rrc_handle.update_cell_group_cfg(cell_group_)) { return proc_outcome_t::error; }