Skip to content

Commit e2d31e8

Browse files
committed
du: add option to make SRS periodic vs aperiodic
Signed-off-by: Carlo Galiotto <[email protected]>
1 parent eafcd15 commit e2d31e8

File tree

4 files changed

+36
-24
lines changed

4 files changed

+36
-24
lines changed

include/srsran/scheduler/config/cell_config_builder_params.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ struct cell_config_builder_params {
4848
std::optional<ssb_subcarrier_offset> k_ssb;
4949
/// Whether to enable CSI-RS in the cell.
5050
bool csi_rs_enabled = true;
51+
/// Defines whether the default SRS configuration has periodic vs aperiodic SRS.
52+
bool srs_periodic_enabled = false;
5153
/// Number of DL ports for the cell.
5254
unsigned nof_dl_ports = 1;
5355
/// \brief Minimum k1 value used in the generation of the UE "dl-DataToUl-Ack", as per TS38.213, 9.1.2.1.

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ du_srs_policy_max_ul_th::du_srs_policy_max_ul_th(span<const du_cell_config> cell
127127
srsran_assert(freq_shift.has_value(), "SRS parameters didn't provide a valid freq_shift value");
128128
cell.srs_common_params.freq_shift = freq_shift.value();
129129

130+
// TODO: evaluate whether we need to consider the case of multiple cells.
130131
cell.cell_srs_res_list = generate_cell_srs_list(cell.cell_cfg);
131132

132133
const unsigned srs_period_slots = static_cast<unsigned>(cell.cell_cfg.srs_cfg.srs_period.value());
@@ -161,10 +162,10 @@ du_srs_policy_max_ul_th::du_srs_policy_max_ul_th(span<const du_cell_config> cell
161162
continue;
162163
}
163164
}
164-
cell.srs_res_offset_free_list.push_back({res.cell_res_id, offset});
165+
cell.srs_res_offset_free_list.emplace_back(res.cell_res_id, offset);
165166
++offset_res_cnt;
166167
}
167-
cell.slot_resource_cnt.push_back({0U, offset_res_cnt});
168+
cell.slot_resource_cnt.emplace_back(0U, offset_res_cnt);
168169
}
169170
}
170171
}

lib/scheduler/config/serving_cell_config_factory.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -497,16 +497,26 @@ srs_config srsran::config_helpers::make_default_srs_config(const cell_config_bui
497497
res.freq_hop.b_srs = 0;
498498
res.freq_hop.b_hop = 0;
499499
res.grp_or_seq_hop = srs_group_or_sequence_hopping::neither;
500-
res.res_type = srs_resource_type::aperiodic;
501-
res.sequence_id = params.pci;
500+
if (params.srs_periodic_enabled) {
501+
res.res_type = srs_resource_type::periodic;
502+
res.periodicity_and_offset.emplace(
503+
srs_config::srs_periodicity_and_offset{.period = srs_periodicity::sl40, .offset = 0});
504+
} else {
505+
res.res_type = srs_resource_type::aperiodic;
506+
}
507+
res.sequence_id = params.pci;
502508

503509
cfg.srs_res_set_list.emplace_back();
504510
// TODO: Verify correctness of the config based on what we support.
505511
srs_config::srs_resource_set& res_set = cfg.srs_res_set_list.back();
506512
res_set.id = static_cast<srs_config::srs_res_set_id>(0);
507513
res_set.srs_res_id_list.emplace_back(static_cast<srs_config::srs_res_id>(0));
508-
res_set.res_type =
509-
srs_config::srs_resource_set::aperiodic_resource_type{.aperiodic_srs_res_trigger = 1, .slot_offset = 7};
514+
if (params.srs_periodic_enabled) {
515+
res_set.res_type = srs_config::srs_resource_set::periodic_resource_type{};
516+
} else {
517+
res_set.res_type =
518+
srs_config::srs_resource_set::aperiodic_resource_type{.aperiodic_srs_res_trigger = 1, .slot_offset = 7};
519+
}
510520
res_set.srs_res_set_usage = srs_config::srs_resource_set::usage::codebook;
511521
res_set.p0 = -84;
512522
res_set.pathloss_ref_rs = static_cast<ssb_id_t>(0);

tests/unittests/du_manager/pucch_resource_generator_test.cpp

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ class test_ue_pucch_config_builder : public ::testing::TestWithParam<pucch_cfg_b
678678

679679
// Check CSI and related PUCCH resource.
680680
if (has_csi) {
681-
auto& csi_cfg = serv_cell_cfg.csi_meas_cfg.value();
681+
const auto& csi_cfg = serv_cell_cfg.csi_meas_cfg.value();
682682
srsran_assert(not csi_cfg.csi_report_cfg_list.empty() and
683683
std::holds_alternative<csi_report_config::periodic_or_semi_persistent_report_on_pucch>(
684684
csi_cfg.csi_report_cfg_list.front().report_cfg_type) and
@@ -919,9 +919,9 @@ TEST_P(test_ue_pucch_config_builder, test_validator_too_many_resources)
919919
nof_f1_res, nof_f2_res, f1_params, f2_params, bwp_size, NOF_OFDM_SYM_PER_SLOT_NORMAL_CP);
920920
}
921921

922-
const unsigned harq_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_harq_cfg_per_ue - 1);
923-
const unsigned sr_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_sr_res_per_cell - 1);
924-
const unsigned csi_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_csi_res_per_cell - 1);
922+
const auto harq_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_harq_cfg_per_ue - 1);
923+
const auto sr_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_sr_res_per_cell - 1);
924+
const auto csi_idx_cfg = test_rgen::uniform_int<unsigned>(0, nof_csi_res_per_cell - 1);
925925

926926
// Update pucch_cfg with the UE list of resources (with at max 8 HARQ F1, 8 HARQ F2, 4 SR).
927927
ue_pucch_config_builder(serv_cell_cfg,
@@ -938,22 +938,21 @@ TEST_P(test_ue_pucch_config_builder, test_validator_too_many_resources)
938938
ASSERT_TRUE(verify_nof_res_and_idx(harq_idx_cfg, sr_idx_cfg, csi_idx_cfg));
939939
}
940940

941-
INSTANTIATE_TEST_SUITE_P(
942-
ue_pucch_config_builder,
943-
test_ue_pucch_config_builder,
944-
// clang-format off
941+
INSTANTIATE_TEST_SUITE_P(ue_pucch_config_builder,
942+
test_ue_pucch_config_builder,
943+
// clang-format off
945944
// nof: f0 | f1 | f2 | harq | sr | csi
946945
// nof: f0 | f1 | f2 | cfg | sr | csi
947946
::testing::Values(
948-
// pucch_cfg_builder_params{ 0, 3, 6, 1, 2, 1 },
949-
// pucch_cfg_builder_params{ 0, 7, 3, 1, 1, 1 },
950-
// pucch_cfg_builder_params{ 0, 8, 8, 1, 4, 1 },
951-
// pucch_cfg_builder_params{ 0, 1, 1, 1, 1, 1 },
952-
// pucch_cfg_builder_params{ 0, 7, 7, 1, 3, 1 },
953-
// pucch_cfg_builder_params{ 0, 8, 8, 4, 4, 4 },
954-
// pucch_cfg_builder_params{ 0, 5, 2, 10, 2, 7 },
955-
// pucch_cfg_builder_params{ 0, 2, 7, 3, 7, 3 },
956-
// pucch_cfg_builder_params{ 0, 6, 4, 5, 6, 2 },
947+
pucch_cfg_builder_params{ 0, 3, 6, 1, 2, 1 },
948+
pucch_cfg_builder_params{ 0, 7, 3, 1, 1, 1 },
949+
pucch_cfg_builder_params{ 0, 8, 8, 1, 4, 1 },
950+
pucch_cfg_builder_params{ 0, 1, 1, 1, 1, 1 },
951+
pucch_cfg_builder_params{ 0, 7, 7, 1, 3, 1 },
952+
pucch_cfg_builder_params{ 0, 8, 8, 4, 4, 4 },
953+
pucch_cfg_builder_params{ 0, 5, 2, 10, 2, 7 },
954+
pucch_cfg_builder_params{ 0, 2, 7, 3, 7, 3 },
955+
pucch_cfg_builder_params{ 0, 6, 4, 5, 6, 2 },
957956
pucch_cfg_builder_params{ 6, 0, 6, 1, 8, 8 },
958957
pucch_cfg_builder_params{ 5, 0, 3, 1, 1, 1 },
959958
pucch_cfg_builder_params{ 6, 0, 6, 1, 4, 1 },
@@ -969,5 +968,5 @@ INSTANTIATE_TEST_SUITE_P(
969968
pucch_cfg_builder_params{ 6, 0, 4, 5, 6, 2 },
970969
pucch_cfg_builder_params{ 6, 0, 6, 3, 6, 0 }
971970
)
972-
// clang-format on
971+
// clang-format on
973972
);

0 commit comments

Comments
 (0)