@@ -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 }
0 commit comments