mirror of https://github.com/PentHertz/srsLTE.git
disable cqi in scells during handover procedure
This commit is contained in:
parent
f4c7021a5f
commit
b3eb9651d6
|
@ -364,9 +364,10 @@ private:
|
|||
void apply_rr_config_common(asn1::rrc::rr_cfg_common_s* config, bool send_lower_layers);
|
||||
bool apply_rr_config_dedicated(const asn1::rrc::rr_cfg_ded_s* cnfg, bool is_handover = false);
|
||||
bool apply_rr_config_dedicated_on_ho_complete(const asn1::rrc::rr_cfg_ded_s& cnfg);
|
||||
void apply_scell_config(asn1::rrc::rrc_conn_recfg_r8_ies_s* reconfig_r8);
|
||||
void apply_scell_config(asn1::rrc::rrc_conn_recfg_r8_ies_s* reconfig_r8, bool enable_cqi);
|
||||
bool apply_scell_config_on_ho_complete(const asn1::rrc::rrc_conn_recfg_r8_ies_s& reconfig_r8);
|
||||
void apply_phy_config_dedicated(const asn1::rrc::phys_cfg_ded_s& phy_cnfg, bool is_handover);
|
||||
void apply_phy_scell_config(const asn1::rrc::scell_to_add_mod_r10_s& scell_config);
|
||||
void apply_phy_scell_config(const asn1::rrc::scell_to_add_mod_r10_s& scell_config, bool enable_cqi);
|
||||
|
||||
void apply_mac_config_dedicated_default();
|
||||
|
||||
|
|
|
@ -943,7 +943,7 @@ bool rrc::con_reconfig(const rrc_conn_recfg_s& reconfig)
|
|||
// Apply Scell RR configurations (call is non-blocking). Make a copy since can be changed inside apply_scell_config()
|
||||
// Note that apply_scell_config() calls set_scell() and set_config() which run in the background.
|
||||
rrc_conn_recfg_r8_ies_s reconfig_r8_ = *reconfig_r8;
|
||||
apply_scell_config(&reconfig_r8_);
|
||||
apply_scell_config(&reconfig_r8_, true);
|
||||
|
||||
if (!measurements->parse_meas_config(
|
||||
reconfig_r8, reestablishment_successful, connection_reest.get()->get_source_earfcn())) {
|
||||
|
@ -2088,7 +2088,7 @@ void rrc::apply_phy_config_dedicated(const phys_cfg_ded_s& phy_cnfg, bool is_han
|
|||
}
|
||||
}
|
||||
|
||||
void rrc::apply_phy_scell_config(const scell_to_add_mod_r10_s& scell_config)
|
||||
void rrc::apply_phy_scell_config(const scell_to_add_mod_r10_s& scell_config, bool enable_cqi)
|
||||
{
|
||||
srslte_cell_t scell = {};
|
||||
uint32_t earfcn = 0;
|
||||
|
@ -2139,11 +2139,17 @@ void rrc::apply_phy_scell_config(const scell_to_add_mod_r10_s& scell_config)
|
|||
}
|
||||
|
||||
// Initialize scell config with pcell cfg
|
||||
set_phy_cfg_t_scell_config(¤t_phy_cfg, scell_config);
|
||||
srslte::phy_cfg_t scell_cfg = current_phy_cfg;
|
||||
set_phy_cfg_t_scell_config(&scell_cfg, scell_config);
|
||||
|
||||
if (not enable_cqi) {
|
||||
scell_cfg.dl_cfg.cqi_report.periodic_configured = false;
|
||||
scell_cfg.dl_cfg.cqi_report.aperiodic_configured = false;
|
||||
}
|
||||
|
||||
if (!phy->set_scell(scell, scell_config.scell_idx_r10, earfcn)) {
|
||||
rrc_log->error("Adding SCell cc_idx=%d\n", scell_config.scell_idx_r10);
|
||||
} else if (!phy->set_config(current_phy_cfg, scell_config.scell_idx_r10)) {
|
||||
} else if (!phy->set_config(scell_cfg, scell_config.scell_idx_r10)) {
|
||||
rrc_log->error("Setting SCell configuration for cc_idx=%d\n", scell_config.scell_idx_r10);
|
||||
}
|
||||
|
||||
|
@ -2258,7 +2264,7 @@ bool rrc::apply_rr_config_dedicated_on_ho_complete(const rr_cfg_ded_s& cnfg)
|
|||
/*
|
||||
* Extracts and applies SCell configuration from an ASN.1 reconfiguration struct
|
||||
*/
|
||||
void rrc::apply_scell_config(rrc_conn_recfg_r8_ies_s* reconfig_r8)
|
||||
void rrc::apply_scell_config(rrc_conn_recfg_r8_ies_s* reconfig_r8, bool enable_cqi)
|
||||
{
|
||||
if (reconfig_r8->non_crit_ext_present) {
|
||||
auto reconfig_r890 = &reconfig_r8->non_crit_ext;
|
||||
|
@ -2296,7 +2302,7 @@ void rrc::apply_scell_config(rrc_conn_recfg_r8_ies_s* reconfig_r8)
|
|||
mac->reconfiguration(scell_config->scell_idx_r10, true);
|
||||
|
||||
// Call phy reconfiguration
|
||||
apply_phy_scell_config(*scell_config);
|
||||
apply_phy_scell_config(*scell_config, enable_cqi);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2315,6 +2321,28 @@ void rrc::apply_scell_config(rrc_conn_recfg_r8_ies_s* reconfig_r8)
|
|||
}
|
||||
}
|
||||
|
||||
bool rrc::apply_scell_config_on_ho_complete(const asn1::rrc::rrc_conn_recfg_r8_ies_s& reconfig_r8)
|
||||
{
|
||||
if (reconfig_r8.non_crit_ext_present) {
|
||||
auto& reconfig_r890 = reconfig_r8.non_crit_ext;
|
||||
if (reconfig_r890.non_crit_ext_present) {
|
||||
auto& reconfig_r920 = reconfig_r890.non_crit_ext;
|
||||
if (reconfig_r920.non_crit_ext_present) {
|
||||
auto& reconfig_r1020 = reconfig_r920.non_crit_ext;
|
||||
|
||||
// Handle Add/Modify SCell list
|
||||
if (reconfig_r1020.scell_to_add_mod_list_r10_present) {
|
||||
for (const auto& scell_config : reconfig_r1020.scell_to_add_mod_list_r10) {
|
||||
// Call phy reconfiguration
|
||||
apply_phy_scell_config(scell_config, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void rrc::handle_con_setup(const rrc_conn_setup_s& setup)
|
||||
{
|
||||
// Must enter CONNECT before stopping T300
|
||||
|
|
|
@ -1549,7 +1549,7 @@ srslte::proc_outcome_t rrc::ho_proc::init(const asn1::rrc::rrc_conn_recfg_s& rrc
|
|||
rrc_ptr->send_rrc_con_reconfig_complete();
|
||||
|
||||
// SCell addition/removal can take some time to compute. Enqueue in a background task and do it in the end.
|
||||
rrc_ptr->apply_scell_config(&recfg_r8);
|
||||
rrc_ptr->apply_scell_config(&recfg_r8, false);
|
||||
|
||||
Info("Finished HO configuration. Waiting PHY to synchronize with target cell\n");
|
||||
|
||||
|
@ -1576,6 +1576,7 @@ srslte::proc_outcome_t rrc::ho_proc::react(ra_completed_ev ev)
|
|||
// TS 36.331, sec. 5.3.5.4, last "1>"
|
||||
rrc_ptr->t304.stop();
|
||||
rrc_ptr->apply_rr_config_dedicated_on_ho_complete(recfg_r8.rr_cfg_ded);
|
||||
rrc_ptr->apply_scell_config_on_ho_complete(recfg_r8);
|
||||
return proc_outcome_t::success;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue