disable carrier aggregation when ue release is below 10 or category is below 5

master
Francisco Paisana 5 years ago
parent f8cc2d176d
commit 2de702f50e

@ -132,7 +132,7 @@ void set_phy_cfg_t_enable_64qam(phy_cfg_t* cfg, const bool enabled);
/*************************** /***************************
* EUTRA UE Capabilities * EUTRA UE Capabilities
**************************/ **************************/
void set_rrc_ue_capabilities_t(rrc_ue_capabilities_t& ue_cap, const asn1::rrc::ue_eutra_cap_s& eutra_cap_s); rrc_ue_capabilities_t make_rrc_ue_capabilities(const asn1::rrc::ue_eutra_cap_s& eutra_cap_s);
// mbms // mbms
mbms_notif_cfg_t make_mbms_notif_cfg(const asn1::rrc::mbms_notif_cfg_r9_s& asn1_type); mbms_notif_cfg_t make_mbms_notif_cfg(const asn1::rrc::mbms_notif_cfg_r9_s& asn1_type);

@ -348,14 +348,14 @@ inline std::string to_string(const barring_t& b)
/** /**
* Flat UE capabilities * Flat UE capabilities
*/ */
typedef struct { struct rrc_ue_capabilities_t {
uint8_t release = 8; uint8_t release = 8;
uint8_t category = 4; uint8_t category = 4;
uint8_t category_dl = 0; uint8_t category_dl = 0;
uint8_t category_ul = 0; uint8_t category_ul = 0;
bool support_dl_256qam = false; bool support_dl_256qam = false;
bool support_ul_64qam = false; bool support_ul_64qam = false;
} rrc_ue_capabilities_t; };
} // namespace srslte } // namespace srslte

@ -896,9 +896,11 @@ static void set_rrc_ue_eutra_cap_t_gen(rrc_ue_capabilities_t&
; // Do nothing ; // Do nothing
} }
void set_rrc_ue_capabilities_t(rrc_ue_capabilities_t& ue_cap, const asn1::rrc::ue_eutra_cap_s& eutra_cap_s) rrc_ue_capabilities_t make_rrc_ue_capabilities(const asn1::rrc::ue_eutra_cap_s& eutra_cap_s)
{ {
rrc_ue_capabilities_t ue_cap;
set_rrc_ue_eutra_cap_t_gen(ue_cap, eutra_cap_s); set_rrc_ue_eutra_cap_t_gen(ue_cap, eutra_cap_s);
return ue_cap;
} }
// MBMS // MBMS

@ -668,19 +668,20 @@ void rrc::ue::handle_rrc_reconf_complete(rrc_conn_recfg_complete_s* msg, srslte:
parent->phy->complete_config(rnti); parent->phy->complete_config(rnti);
if (last_rrc_conn_recfg.rrc_transaction_id == msg->rrc_transaction_id) { if (last_rrc_conn_recfg.rrc_transaction_id == msg->rrc_transaction_id) {
// Finally, add secondary carriers to MAC if (cell_ded_list.nof_cells() > 1) {
auto& list = current_sched_ue_cfg.supported_cc_list; // Finally, add secondary carriers to MAC
for (const auto& ue_cell : cell_ded_list) { auto& list = current_sched_ue_cfg.supported_cc_list;
uint32_t ue_cc_idx = ue_cell.ue_cc_idx; for (const auto& ue_cell : cell_ded_list) {
uint32_t ue_cc_idx = ue_cell.ue_cc_idx;
if (ue_cc_idx >= list.size()) {
list.resize(ue_cc_idx + 1); if (ue_cc_idx >= list.size()) {
list.resize(ue_cc_idx + 1);
}
list[ue_cc_idx].active = true;
list[ue_cc_idx].enb_cc_idx = ue_cell.cell_common->enb_cc_idx;
} }
list[ue_cc_idx].active = true; parent->mac->ue_cfg(rnti, &current_sched_ue_cfg);
list[ue_cc_idx].enb_cc_idx = ue_cell.cell_common->enb_cc_idx;
} }
parent->mac->ue_cfg(rnti, &current_sched_ue_cfg);
bearer_list.apply_mac_bearer_updates(parent->mac, &current_sched_ue_cfg); bearer_list.apply_mac_bearer_updates(parent->mac, &current_sched_ue_cfg);
// Acknowledge Dedicated Configuration // Acknowledge Dedicated Configuration
@ -763,7 +764,7 @@ bool rrc::ue::handle_ue_cap_info(ue_cap_info_s* msg)
return false; return false;
} }
eutra_capabilities_unpacked = true; eutra_capabilities_unpacked = true;
srslte::set_rrc_ue_capabilities_t(ue_capabilities, eutra_capabilities); ue_capabilities = srslte::make_rrc_ue_capabilities(eutra_capabilities);
parent->rrc_log->info("UE rnti: 0x%x category: %d\n", rnti, eutra_capabilities.ue_category); parent->rrc_log->info("UE rnti: 0x%x category: %d\n", rnti, eutra_capabilities.ue_category);
} }
@ -1019,14 +1020,18 @@ cell_info_common* rrc::ue::get_ue_cc_cfg(uint32_t ue_cc_idx)
//! Method to fill SCellToAddModList for SCell info //! Method to fill SCellToAddModList for SCell info
int rrc::ue::fill_scell_to_addmod_list(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn_reconf) int rrc::ue::fill_scell_to_addmod_list(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn_reconf)
{ {
if (not eutra_capabilities_unpacked or ue_capabilities.release < 10 or ue_capabilities.category < 5) {
return SRSLTE_SUCCESS;
}
const cell_info_common* pcell_cfg = get_ue_cc_cfg(UE_PCELL_CC_IDX); const cell_info_common* pcell_cfg = get_ue_cc_cfg(UE_PCELL_CC_IDX);
if (pcell_cfg->cell_cfg.scell_list.empty()) { if (pcell_cfg->cell_cfg.scell_list.empty()) {
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }
// Allocate CQI + PUCCH for SCells. // Allocate CQI + PUCCH for SCells.
for (auto scell_idx : pcell_cfg->cell_cfg.scell_list) { for (const scell_cfg_t& scell_cfg : pcell_cfg->cell_cfg.scell_list) {
uint32_t cell_id = scell_idx.cell_id; uint32_t cell_id = scell_cfg.cell_id;
cell_ded_list.add_cell(parent->cell_common_list->get_cell_id(cell_id)->enb_cc_idx); cell_ded_list.add_cell(parent->cell_common_list->get_cell_id(cell_id)->enb_cc_idx);
} }
if (cell_ded_list.nof_cells() == 1) { if (cell_ded_list.nof_cells() == 1) {

Loading…
Cancel
Save