@@ -1269,8 +1269,15 @@ std::vector<upper_phy_config> srsran::generate_du_low_config(const gnb_appconfig
12691269 const prach_configuration prach_cfg =
12701270 prach_configuration_get (frequency_range::FR1, duplex, cell.prach_cfg .prach_config_index .value ());
12711271
1272- // Maximum number of HARQ processes for a PUSCH HARQ process.
1273- static constexpr unsigned max_nof_pusch_harq = 16 ;
1272+ // Maximum time that can take to decode a PUSCH transmission in slots.
1273+ static constexpr unsigned max_nof_pusch_harq = 8 ;
1274+
1275+ // Maximum concurrent PUSCH processing. If there are no dedicated threads for PUSCH decoding, set the maximum
1276+ // concurrency to one.
1277+ unsigned max_pusch_concurrency = config.common_cell_cfg .pusch_cfg .max_puschs_per_slot * max_nof_pusch_harq;
1278+ if (config.expert_execution_cfg .threads .upper_threads .nof_pusch_decoder_threads == 0 ) {
1279+ max_pusch_concurrency = 1 ;
1280+ }
12741281
12751282 cfg.log_level = srslog::str_to_basic_level (config.log_cfg .phy_level );
12761283 cfg.enable_logging_broadcast = config.log_cfg .broadcast_enabled ;
@@ -1286,7 +1293,7 @@ std::vector<upper_phy_config> srsran::generate_du_low_config(const gnb_appconfig
12861293 cfg.nof_slots_ul_rg = ul_pipeline_depth;
12871294 cfg.nof_ul_processors = ul_pipeline_depth;
12881295 cfg.max_ul_thread_concurrency = config.expert_execution_cfg .threads .upper_threads .nof_ul_threads + 1 ;
1289- cfg.max_pusch_concurrency = MAX_UE_PDUS_PER_SLOT * max_nof_pusch_harq ;
1296+ cfg.max_pusch_concurrency = max_pusch_concurrency ;
12901297 cfg.nof_pusch_decoder_threads = config.expert_execution_cfg .threads .upper_threads .nof_pusch_decoder_threads +
12911298 config.expert_execution_cfg .threads .upper_threads .nof_ul_threads ;
12921299 cfg.nof_prach_buffer = prach_pipeline_depth * nof_slots_per_subframe;
0 commit comments