diff --git a/lib/include/srslte/interfaces/ue_interfaces.h b/lib/include/srslte/interfaces/ue_interfaces.h index dc514b78c..13c45e780 100644 --- a/lib/include/srslte/interfaces/ue_interfaces.h +++ b/lib/include/srslte/interfaces/ue_interfaces.h @@ -725,7 +725,6 @@ typedef struct { int worker_cpu_mask; int sync_cpu_affinity; - uint32_t ue_category; uint32_t nof_carriers; uint32_t nof_radios; uint32_t nof_rx_ant; @@ -828,6 +827,7 @@ public: asn1::rrc::ul_pwr_ctrl_common_s ul_pwr_ctrl; asn1::rrc::tdd_cfg_s tdd_cnfg; asn1::rrc::srs_ant_port_e ant_info; + bool rrc_enable_64qam; }; struct phy_cfg_mbsfn_t { diff --git a/srsue/src/phy/cc_worker.cc b/srsue/src/phy/cc_worker.cc index 04f130e5d..3bdca95b9 100644 --- a/srsue/src/phy/cc_worker.cc +++ b/srsue/src/phy/cc_worker.cc @@ -1131,7 +1131,7 @@ void cc_worker::set_pcell_config(phy_interface_rrc_lte::phy_cfg_t* phy_cfg) // Configure PUSCH ue_ul_cfg.ul_cfg.pusch.enable_64qam = - phy->args->ue_category >= 5 && phy_cfg->common.pusch_cnfg.pusch_cfg_basic.enable64_qam; + phy_cfg->common.pusch_cnfg.pusch_cfg_basic.enable64_qam && phy_cfg->common.rrc_enable_64qam; /* PUSCH DMRS signal configuration */ bzero(&ue_ul_cfg.ul_cfg.dmrs, sizeof(srslte_refsignal_dmrs_pusch_cfg_t)); diff --git a/srsue/src/stack/rrc/rrc.cc b/srsue/src/stack/rrc/rrc.cc index 6862a1b6b..faf0095ef 100644 --- a/srsue/src/stack/rrc/rrc.cc +++ b/srsue/src/stack/rrc/rrc.cc @@ -1972,6 +1972,12 @@ void rrc::handle_sib2() current_phy_cfg.common.prach_cnfg = sib2->rr_cfg_common.prach_cfg; current_phy_cfg.common.srs_ul_cnfg = sib2->rr_cfg_common.srs_ul_cfg_common; + // Filter here 64-QAM Enable + if (args.ue_category == 5 || (sib2->rr_cfg_common.pusch_cfg_common_v1270_present && args.release > 11)) { + // ASN1 Generator simplifies enable64QAM-v1270 because it is an enumeration that is always true + current_phy_cfg.common.rrc_enable_64qam = true; + } + phy->set_config(¤t_phy_cfg); log_rr_config_common(); @@ -2523,7 +2529,7 @@ void rrc::send_rrc_ue_cap_info() ue_eutra_cap_v11a0_ies_s cap_v11a0; ue_eutra_cap_v1180_ies_s cap_v1180; - cap_v11a0.non_crit_ext_present = true; + cap_v1180.non_crit_ext_present = true; cap_v1180.non_crit_ext = cap_v11a0; ue_eutra_cap_v1170_ies_s cap_v1170; @@ -2551,7 +2557,7 @@ void rrc::send_rrc_ue_cap_info() for (uint32_t i = 0; i < args.nof_supported_bands; i++) { supported_band_eutra_v1250_s supported_band_eutra_v1250; supported_band_eutra_v1250.dl_minus256_qam_r12_present = false; // 256-QAM support - supported_band_eutra_v1250.ul_minus64_qam_r12_present = true; // 64-QAM support + supported_band_eutra_v1250.ul_minus64_qam_r12_present = (args.ue_category >= 5); // 64-QAM support supported_band_list_eutra_v1250.push_back(supported_band_eutra_v1250); } @@ -2561,6 +2567,10 @@ void rrc::send_rrc_ue_cap_info() rf_params_v1250.supported_band_list_eutra_v1250 = supported_band_list_eutra_v1250; ue_eutra_cap_v1250_ies_s cap_v1250; + cap_v1250.ue_category_dl_r12_present = true; + cap_v1250.ue_category_dl_r12 = 13; + cap_v1250.ue_category_ul_r12_present = true; + cap_v1250.ue_category_ul_r12 = 5; cap_v1250.rf_params_v1250_present = true; cap_v1250.rf_params_v1250 = rf_params_v1250; diff --git a/srsue/src/ue.cc b/srsue/src/ue.cc index 54aba0db0..6a35cbf59 100644 --- a/srsue/src/ue.cc +++ b/srsue/src/ue.cc @@ -164,7 +164,6 @@ int ue::parse_args(const all_args_t& args_) // replicate some RF parameter to make them available to PHY args.phy.nof_rx_ant = args.rf.nof_rx_ant; - args.phy.ue_category = args.stack.rrc.ue_category; args.phy.agc_enable = args.rf.rx_gain < 0.0f; // Calculate number of carriers available in all radios