Skip to content

Commit a86d394

Browse files
committed
srsdu: allow 2.5 ms scheduling request period
1 parent 5e1b86e commit a86d394

File tree

6 files changed

+19
-9
lines changed

6 files changed

+19
-9
lines changed

apps/units/flexible_du/du_high/du_high_config.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ struct du_high_unit_pucch_config {
218218

219219
/// \brief \c SR period in milliseconds.
220220
/// Among all values given in \c periodicityAndOffset, part of \c \SchedulingRequestResourceConfig, TS 38.331,
221-
/// these are the only ones supported. Values: {1, 2, 4, 8, 10, 16, 20, 40, 80, 160, 320}.
222-
unsigned sr_period_msec = 20;
221+
/// these are the only ones supported. Values: {1, 2, 2.5, 4, 5, 8, 10, 16, 20, 40, 80, 160, 320}.
222+
float sr_period_msec = 20.0F;
223223

224224
/// PUCCH F1 resource parameters.
225225
/// Number of symbols for PUCCH Format 1. Values {4, 14}.

apps/units/flexible_du/du_high/du_high_config_cli11_schema.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ static void configure_cli11_pucch_args(CLI::App& app, du_high_unit_pucch_config&
698698
});
699699
add_option(app, "--sr_period_ms", pucch_params.sr_period_msec, "SR period in msec")
700700
->capture_default_str()
701-
->check(CLI::IsMember({1, 2, 4, 5, 8, 10, 16, 20, 40, 80, 160, 320}));
701+
->check(CLI::IsMember({1.0F, 2.0F, 2.5F, 4.0F, 5.0F, 8.0F, 10.0F, 16.0F, 20.0F, 40.0F, 80.0F, 160.0F, 320.0F}));
702702
add_option(app,
703703
"--f1_nof_ue_res_harq",
704704
pucch_params.nof_ue_pucch_f1_res_harq,

apps/units/flexible_du/du_high/du_high_config_translators.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -583,8 +583,8 @@ std::vector<du_cell_config> srsran::generate_du_cell_config(const du_high_unit_c
583583
if (sr_cng.empty()) {
584584
sr_cng.emplace_back(scheduling_request_resource_config{});
585585
}
586-
sr_cng.front().period = static_cast<sr_periodicity>(get_nof_slots_per_subframe(base_cell.common_scs) *
587-
base_cell.pucch_cfg.sr_period_msec);
586+
sr_cng.front().period = static_cast<sr_periodicity>(
587+
static_cast<unsigned>(get_nof_slots_per_subframe(base_cell.common_scs) * base_cell.pucch_cfg.sr_period_msec));
588588

589589
// If any dependent parameter needs to be updated, this is the place.
590590
config_helpers::compute_nof_sr_csi_pucch_res(du_pucch_cfg,

apps/units/flexible_du/du_high/du_high_config_validator.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,18 @@ static bool validate_pucch_cell_unit_config(const du_high_unit_base_cell_config&
390390
return false;
391391
}
392392

393-
static constexpr std::array<unsigned, 11> valid_sr_period_slots{1, 2, 4, 8, 10, 16, 20, 40, 80, 160, 320};
394-
const unsigned sr_period_slots = get_nof_slots_per_subframe(scs_common) * pucch_cfg.sr_period_msec;
393+
static constexpr std::array<unsigned, 12> valid_sr_period_slots{1, 2, 4, 5, 8, 10, 16, 20, 40, 80, 160, 320};
394+
const auto sr_period_slots = static_cast<unsigned>(get_nof_slots_per_subframe(scs_common) * pucch_cfg.sr_period_msec);
395+
396+
// Check that the SR period in milliseconds leads to an integer number of slots.
397+
if (get_nof_slots_per_subframe(scs_common) * pucch_cfg.sr_period_msec != static_cast<float>(sr_period_slots)) {
398+
fmt::print("SR period (i.e., {}ms) times the number of slots per subframe (i.e., {}) must be an integer number of "
399+
"slots.\n",
400+
pucch_cfg.sr_period_msec,
401+
get_nof_slots_per_subframe(scs_common));
402+
return false;
403+
}
404+
395405
if (std::find(valid_sr_period_slots.begin(), valid_sr_period_slots.end(), sr_period_slots) ==
396406
valid_sr_period_slots.end()) {
397407
fmt::print("SR period of {}ms is not valid for {}kHz SCS.\n", pucch_cfg.sr_period_msec, scs_to_khz(scs_common));

include/srsran/du/du_update_config_helpers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ unsigned compute_prach_frequency_start(const pucch_builder_params& user_params,
3636
/// \param csi_period_msec CSI period in milliseconds.
3737
void compute_nof_sr_csi_pucch_res(pucch_builder_params& user_params,
3838
unsigned max_pucch_grants_per_slot,
39-
unsigned sr_period_msec,
39+
float sr_period_msec,
4040
std::optional<unsigned> csi_period_msec);
4141

4242
} // namespace config_helpers

lib/du/du_update_config_helpers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ unsigned srsran::config_helpers::compute_prach_frequency_start(const pucch_build
8787

8888
void srsran::config_helpers::compute_nof_sr_csi_pucch_res(pucch_builder_params& user_params,
8989
unsigned max_pucch_grants_per_slot,
90-
unsigned sr_period_msec,
90+
float sr_period_msec,
9191
std::optional<unsigned> csi_period_msec)
9292
{
9393
// [Implementation-defined] In the following, we compute the estimated number of PUCCH resources that are needed for

0 commit comments

Comments
 (0)