Skip to content

Commit 3904c27

Browse files
xavierarteagacodebot
authored andcommitted
gnb: fix common/specific cell configuration for PHY related
1 parent 5e6218d commit 3904c27

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

apps/gnb/gnb_appconfig_translators.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,7 +1360,7 @@ std::vector<upper_phy_config> srsran::generate_du_low_config(const gnb_appconfig
13601360
// Assume a maximum of 16 HARQ processes for PUSCH and PDSCH.
13611361
const unsigned max_harq_process = MAX_NOF_HARQS;
13621362
// Deduce the number of slots per subframe.
1363-
const unsigned nof_slots_per_subframe = get_nof_slots_per_subframe(config.common_cell_cfg.common_scs);
1363+
const unsigned nof_slots_per_subframe = get_nof_slots_per_subframe(cell.common_scs);
13641364
// Assume the PUSCH HARQ softbuffer expiration time is 100ms.
13651365
const unsigned expire_pusch_harq_timeout_slots = 100 * nof_slots_per_subframe;
13661366
// Assume the PDSCH HARQ buffer expiration time is twice the maximum number of HARQ processes.
@@ -1373,10 +1373,9 @@ std::vector<upper_phy_config> srsran::generate_du_low_config(const gnb_appconfig
13731373
(pusch_constants::MAX_NRE_PER_RB * bw_rb * get_bits_per_symbol(modulation_scheme::QAM256)) /
13741374
ldpc::MAX_MESSAGE_SIZE;
13751375
// Deduce the maximum number of codeblocks that can be scheduled for PDSCH in one slot.
1376-
const unsigned max_nof_pdsch_cb_slot =
1377-
(pusch_constants::MAX_NRE_PER_RB * bw_rb * get_bits_per_symbol(modulation_scheme::QAM256) *
1378-
config.common_cell_cfg.nof_antennas_dl) /
1379-
ldpc::MAX_MESSAGE_SIZE;
1376+
const unsigned max_nof_pdsch_cb_slot = (pusch_constants::MAX_NRE_PER_RB * bw_rb *
1377+
get_bits_per_symbol(modulation_scheme::QAM256) * cell.nof_antennas_dl) /
1378+
ldpc::MAX_MESSAGE_SIZE;
13801379
// Assume the minimum number of codeblocks per softbuffer.
13811380
const unsigned min_cb_softbuffer = 2;
13821381
// Assume that the maximum number of receive codeblocks is equal to the number of HARQ processes times the maximum
@@ -1392,19 +1391,27 @@ std::vector<upper_phy_config> srsran::generate_du_low_config(const gnb_appconfig
13921391
unsigned ul_pipeline_depth = 4 * config.expert_phy_cfg.max_processing_delay_slots;
13931392
static constexpr unsigned prach_pipeline_depth = 1;
13941393

1395-
nr_band band = config.common_cell_cfg.band.value();
1396-
const duplex_mode duplex = band_helper::get_duplex_mode(band);
1394+
// Get band, frequency range and duplex mode from the band.
1395+
nr_band band = cell.band.value();
1396+
const frequency_range freq_range = band_helper::get_freq_range(band);
1397+
const duplex_mode duplex = band_helper::get_duplex_mode(band);
13971398

13981399
const prach_configuration prach_cfg =
1399-
prach_configuration_get(frequency_range::FR1, duplex, cell.prach_cfg.prach_config_index.value());
1400+
prach_configuration_get(freq_range, duplex, cell.prach_cfg.prach_config_index.value());
1401+
srsran_assert(prach_cfg.format != prach_format_type::invalid,
1402+
"Unsupported PRACH configuration index (i.e., {}) for the given frequency range (i.e., {}) and "
1403+
"duplex mode (i.e., {}).",
1404+
cell.prach_cfg.prach_config_index.value(),
1405+
to_string(freq_range),
1406+
to_string(duplex));
14001407

14011408
// Maximum number of HARQ processes for a PUSCH HARQ process.
14021409
static constexpr unsigned max_nof_pusch_harq = 16;
14031410

14041411
// Maximum concurrent PUSCH processing. If there are no dedicated threads for PUSCH decoding, set the maximum
14051412
// concurrency to one. Otherwise, assume every possible PUSCH transmission for the maximum number of HARQ could be
14061413
// enqueued.
1407-
unsigned max_pusch_concurrency = config.common_cell_cfg.pusch_cfg.max_puschs_per_slot * max_nof_pusch_harq;
1414+
unsigned max_pusch_concurrency = cell.pusch_cfg.max_puschs_per_slot * max_nof_pusch_harq;
14081415
if (config.expert_execution_cfg.threads.upper_threads.nof_pusch_decoder_threads == 0) {
14091416
max_pusch_concurrency = 1;
14101417
}

include/srsran/ran/frequency_range.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@
1010

1111
#pragma once
1212

13+
#include <algorithm>
14+
1315
namespace srsran {
1416

1517
/// Labels for the frequency ranges described in TS38.104 Table 5.1-1.
1618
enum class frequency_range {
1719
/// Frequency range 1, from 410 to 7125 MHz.
18-
FR1,
20+
FR1 = 0,
1921
/// Frequency range 2, from 24250 to 52600 MHz.
2022
FR2
2123
};
2224

25+
inline const char* to_string(frequency_range freq_range)
26+
{
27+
constexpr static const char* names[] = {"FR1", "FR2", "invalid"};
28+
return names[std::min(static_cast<unsigned>(freq_range), static_cast<unsigned>(frequency_range::FR2) + 1U)];
29+
}
30+
2331
} // namespace srsran

0 commit comments

Comments
 (0)