Skip to content

Commit 5028ce1

Browse files
committed
du: add srs config validator for du srs mng
Signed-off-by: Carlo Galiotto <[email protected]>
1 parent 9eab216 commit 5028ce1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

lib/du/du_high/du_manager/ran_resource_management/du_srs_resource_manager.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,56 @@ static bool is_partually_ul_slot(unsigned offset, const tdd_ul_dl_config_common&
6868
NOF_OFDM_SYM_PER_SLOT_NORMAL_CP;
6969
}
7070

71+
static bool srs_config_validator(const du_cell_config& cell_cfg)
72+
{
73+
if (not cell_cfg.ue_ded_serv_cell_cfg.ul_config.has_value()) {
74+
return false;
75+
}
76+
77+
if (cell_cfg.ue_ded_serv_cell_cfg.ul_config.value().init_ul_bwp.srs_cfg.has_value()) {
78+
return false;
79+
}
80+
81+
const auto& srs_cfg = cell_cfg.ue_ded_serv_cell_cfg.ul_config.value().init_ul_bwp.srs_cfg.value();
82+
if (srs_cfg.srs_res_set_list.size() != 1) {
83+
return false;
84+
}
85+
86+
if (not std::holds_alternative<srs_config::srs_resource_set::periodic_resource_type>(
87+
srs_cfg.srs_res_set_list.front().res_type)) {
88+
return false;
89+
}
90+
91+
if (srs_cfg.srs_res_set_list.front().srs_res_id_list.size() != 1 or
92+
srs_cfg.srs_res_set_list.front().srs_res_id_list.front() != static_cast<srs_config::srs_res_id>(0U)) {
93+
return false;
94+
}
95+
96+
if (srs_cfg.srs_res_list.size() != 1 or
97+
srs_cfg.srs_res_list.front().id.ue_res_id != static_cast<srs_config::srs_res_id>(0U)) {
98+
return false;
99+
}
100+
101+
if (srs_cfg.srs_res_list.front().res_type != srs_resource_type::periodic) {
102+
return false;
103+
}
104+
105+
if (not srs_cfg.srs_res_list.front().periodicity_and_offset.has_value()) {
106+
return false;
107+
}
108+
109+
return true;
110+
}
111+
71112
du_srs_policy_max_ul_th::du_srs_policy_max_ul_th(span<const du_cell_config> cell_cfg_list_) :
72113
cells(cell_cfg_list_.begin(), cell_cfg_list_.end())
73114
{
74115
for (auto& cell : cells) {
116+
if (not cell.cell_cfg.srs_cfg.srs_period.has_value()) {
117+
continue;
118+
}
119+
120+
srsran_assert(srs_config_validator(cell.cell_cfg), "The SRS configuration is not valid");
75121
std::optional<unsigned> c_srs =
76122
compute_srs_bw_param(cell.cell_cfg.ul_cfg_common.init_ul_bwp.generic_params.crbs.length()).value();
77123
srsran_assert(c_srs.has_value(), "SRS parameters didn't provide a valid C_SRS value");

0 commit comments

Comments
 (0)