mirror of https://github.com/PentHertz/srsLTE.git
SRSENB: MAC controller recover MAC bearer state after PDSCH KO burst (#3225)
* SRSENB: MAC controller recover MAC bearer state after PDSCH KO burst * mac,lte: simplify scheduler phy config enable configuration Co-authored-by: Francisco Paisana <francisco.paisana@softwareradiosystems.com>
This commit is contained in:
parent
322f57a952
commit
2f5a1ad2e3
|
@ -63,8 +63,7 @@ public:
|
||||||
void set_scell_activation(const std::bitset<SRSRAN_MAX_CARRIERS>& scell_mask);
|
void set_scell_activation(const std::bitset<SRSRAN_MAX_CARRIERS>& scell_mask);
|
||||||
void set_drb_activation(bool active);
|
void set_drb_activation(bool active);
|
||||||
|
|
||||||
enum proc_stage_t : int8_t { config_tx, config_complete, other };
|
void update_mac();
|
||||||
void update_mac(proc_stage_t stage);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int apply_basic_conn_cfg(const asn1::rrc::rr_cfg_ded_s& rr_cfg);
|
int apply_basic_conn_cfg(const asn1::rrc::rr_cfg_ded_s& rr_cfg);
|
||||||
|
|
|
@ -212,7 +212,8 @@ void mac_controller::handle_con_reconf(const asn1::rrc::rrc_conn_recfg_r8_ies_s&
|
||||||
set_drb_activation(false);
|
set_drb_activation(false);
|
||||||
|
|
||||||
// Apply changes to MAC scheduler
|
// Apply changes to MAC scheduler
|
||||||
update_mac(proc_stage_t::config_tx);
|
update_mac();
|
||||||
|
mac->phy_config_enabled(rnti, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_controller::handle_con_reconf_complete()
|
void mac_controller::handle_con_reconf_complete()
|
||||||
|
@ -223,7 +224,8 @@ void mac_controller::handle_con_reconf_complete()
|
||||||
apply_current_bearers_cfg();
|
apply_current_bearers_cfg();
|
||||||
|
|
||||||
// Apply SCell+Bearer changes to MAC
|
// Apply SCell+Bearer changes to MAC
|
||||||
update_mac(proc_stage_t::config_complete);
|
update_mac();
|
||||||
|
mac->phy_config_enabled(rnti, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_controller::apply_current_bearers_cfg()
|
void mac_controller::apply_current_bearers_cfg()
|
||||||
|
@ -286,7 +288,8 @@ void mac_controller::handle_intraenb_ho_cmd(const asn1::rrc::rrc_conn_recfg_r8_i
|
||||||
current_sched_ue_cfg.ue_bearers[i].direction = mac_lc_ch_cfg_t::DL;
|
current_sched_ue_cfg.ue_bearers[i].direction = mac_lc_ch_cfg_t::DL;
|
||||||
}
|
}
|
||||||
|
|
||||||
update_mac(mac_controller::config_tx);
|
update_mac();
|
||||||
|
mac->phy_config_enabled(rnti, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_controller::handle_ho_prep(const asn1::rrc::ho_prep_info_r8_ies_s& ho_prep)
|
void mac_controller::handle_ho_prep(const asn1::rrc::ho_prep_info_r8_ies_s& ho_prep)
|
||||||
|
@ -305,7 +308,8 @@ void mac_controller::set_radio_bearer_state(mac_lc_ch_cfg_t::direction_t dir)
|
||||||
for (auto& drb : bearer_list.get_established_drbs()) {
|
for (auto& drb : bearer_list.get_established_drbs()) {
|
||||||
current_sched_ue_cfg.ue_bearers[drb.lc_ch_id].direction = dir;
|
current_sched_ue_cfg.ue_bearers[drb.lc_ch_id].direction = dir;
|
||||||
}
|
}
|
||||||
update_mac(config_tx);
|
|
||||||
|
update_mac();
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_controller::set_scell_activation(const std::bitset<SRSRAN_MAX_CARRIERS>& scell_mask)
|
void mac_controller::set_scell_activation(const std::bitset<SRSRAN_MAX_CARRIERS>& scell_mask)
|
||||||
|
@ -323,14 +327,10 @@ void mac_controller::set_drb_activation(bool active)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mac_controller::update_mac(proc_stage_t stage)
|
void mac_controller::update_mac()
|
||||||
{
|
{
|
||||||
// Apply changes to MAC scheduler
|
// Apply changes to MAC scheduler
|
||||||
mac->ue_cfg(rnti, ¤t_sched_ue_cfg);
|
mac->ue_cfg(rnti, ¤t_sched_ue_cfg);
|
||||||
if (stage != proc_stage_t::other) {
|
|
||||||
// Acknowledge Dedicated Configuration
|
|
||||||
mac->phy_config_enabled(rnti, stage == proc_stage_t::config_complete);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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_phy_cfg_ded(ue_cfg_t& ue_cfg, const asn1::rrc::phys_cfg_ded_s& phy_cfg, const rrc_cfg_t& rrc_cfg)
|
||||||
|
|
|
@ -661,7 +661,8 @@ void rrc::ue::rrc_mobility::s1_source_ho_st::enter(rrc_mobility* f, const ho_mea
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TS 36.413, Section 8.4.2 - Handover Resource Allocation
|
* TS 36.413, Section 8.4.2 - Handover Resource Allocation
|
||||||
* @brief: Send "eNBStatusTransfer" message from source eNB to MME, and setup Forwarding GTPU tunnel
|
* @brief: Called in SeNB when "Handover Command" is received
|
||||||
|
* Send "eNBStatusTransfer" message from source eNB to MME, and setup Forwarding GTPU tunnel
|
||||||
* - PDCP provides the bearers' DL/UL HFN and COUNT to be put inside a transparent container
|
* - PDCP provides the bearers' DL/UL HFN and COUNT to be put inside a transparent container
|
||||||
* - The eNB sends eNBStatusTransfer to MME
|
* - The eNB sends eNBStatusTransfer to MME
|
||||||
* - A GTPU forwarding tunnel is opened to forward buffered PDCP PDUs and incoming GTPU PDUs
|
* - A GTPU forwarding tunnel is opened to forward buffered PDCP PDUs and incoming GTPU PDUs
|
||||||
|
@ -698,14 +699,13 @@ void rrc::ue::rrc_mobility::s1_source_ho_st::handle_ho_cmd(wait_ho_cmd& s, const
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enter Handover Execution */
|
/* Enter Handover Execution */
|
||||||
// TODO: Do anything with MeasCfg info within the Msg (e.g. update ue_var_meas)?
|
|
||||||
|
|
||||||
// Disable DRBs in the MAC and PDCP, while Reconfiguration is taking place.
|
// Disable DRBs in the MAC and PDCP, while Reconfiguration is taking place.
|
||||||
for (const drb_to_add_mod_s& drb : rrc_ue->bearer_list.get_established_drbs()) {
|
for (const drb_to_add_mod_s& drb : rrc_ue->bearer_list.get_established_drbs()) {
|
||||||
rrc_ue->parent->pdcp->set_enabled(rrc_ue->rnti, drb_to_lcid((lte_drb)drb.drb_id), false);
|
rrc_ue->parent->pdcp->set_enabled(rrc_ue->rnti, drb_to_lcid((lte_drb)drb.drb_id), false);
|
||||||
}
|
}
|
||||||
rrc_ue->mac_ctrl.set_drb_activation(false);
|
rrc_ue->mac_ctrl.set_drb_activation(false);
|
||||||
rrc_ue->mac_ctrl.update_mac(mac_controller::proc_stage_t::other);
|
rrc_ue->mac_ctrl.update_mac();
|
||||||
|
|
||||||
// Send HO Command to UE
|
// Send HO Command to UE
|
||||||
std::string octet_str;
|
std::string octet_str;
|
||||||
|
|
Loading…
Reference in New Issue