bug fix - eNB was not allocating UL grants for an UE that has performed intra-enb handover. The problem resulted from the fact that the ue configuration in the scheduler not accounting for removed cells.

master
Francisco Paisana 4 years ago
parent 8a5a571045
commit 2e10c8e13d

@ -126,7 +126,12 @@ void sched_ue::set_cfg(const sched_interface::ue_cfg_t& cfg_)
// update bearer cfgs // update bearer cfgs
lch_handler.set_cfg(cfg_); lch_handler.set_cfg(cfg_);
// either add a new carrier, or reconfigure existing one // in case carriers have been removed
while (carriers.size() > cfg.supported_cc_list.size()) {
// TODO: distinguish cell deactivation from reconfiguration
carriers.pop_back();
}
// in case carriers have been added or modified
bool scell_activation_state_changed = false; bool scell_activation_state_changed = false;
for (uint32_t ue_idx = 0; ue_idx < cfg.supported_cc_list.size(); ++ue_idx) { for (uint32_t ue_idx = 0; ue_idx < cfg.supported_cc_list.size(); ++ue_idx) {
auto& cc_cfg = cfg.supported_cc_list[ue_idx]; auto& cc_cfg = cfg.supported_cc_list[ue_idx];
@ -138,7 +143,7 @@ void sched_ue::set_cfg(const sched_interface::ue_cfg_t& cfg_)
// One carrier was added in the place of another // One carrier was added in the place of another
carriers[ue_idx] = cc_sched_ue{cfg, (*cell_params_list)[cc_cfg.enb_cc_idx], rnti, ue_idx}; carriers[ue_idx] = cc_sched_ue{cfg, (*cell_params_list)[cc_cfg.enb_cc_idx], rnti, ue_idx};
if (ue_idx == 0) { if (ue_idx == 0) {
log_h->info("SCHED: rnti=0x%x PCell is now %d.\n", rnti, cc_cfg.enb_cc_idx); log_h->info("SCHED: rnti=0x%x PCell is now enb_cc_idx=%d.\n", rnti, cc_cfg.enb_cc_idx);
} }
} else { } else {
// The SCell internal configuration may have changed // The SCell internal configuration may have changed

@ -150,8 +150,6 @@ void rrc::ue::mac_controller::handle_con_reconf(const asn1::rrc::rrc_conn_recfg_
handle_con_reconf_with_mobility(); handle_con_reconf_with_mobility();
} }
// Assume rest of parameters in current_sched_ue_cfg do not change in a Reconfig
// Apply changes to MAC scheduler // Apply changes to MAC scheduler
mac->ue_cfg(rrc_ue->rnti, &current_sched_ue_cfg); mac->ue_cfg(rrc_ue->rnti, &current_sched_ue_cfg);
mac->phy_config_enabled(rrc_ue->rnti, false); mac->phy_config_enabled(rrc_ue->rnti, false);

Loading…
Cancel
Save