@@ -42,7 +42,6 @@ static void generate_du_low_config(srs_du::du_low_config&
4242
4343 // Calculate the number of UL slots in a frame and in a PUSCH HARQ process lifetime.
4444 unsigned nof_ul_slots_in_harq_lifetime = expire_pusch_harq_timeout_slots;
45- unsigned nof_ul_slots_per_frame = nof_slots_per_frame;
4645 if (cell.duplex == duplex_mode::TDD && cell.tdd_pattern1 .has_value ()) {
4746 const tdd_ul_dl_pattern& pattern1 = *cell.tdd_pattern1 ;
4847 unsigned period_slots = pattern1.dl_ul_tx_period_nof_slots ;
@@ -52,7 +51,6 @@ static void generate_du_low_config(srs_du::du_low_config&
5251 period_slots += pattern2.dl_ul_tx_period_nof_slots ;
5352 nof_ul_slots += pattern2.nof_ul_slots + ((pattern2.nof_ul_symbols != 0 ) ? 1 : 0 );
5453 }
55- nof_ul_slots_per_frame = divide_ceil (nof_slots_per_frame, period_slots) * nof_ul_slots;
5654 nof_ul_slots_in_harq_lifetime = divide_ceil (expire_pusch_harq_timeout_slots, period_slots) * nof_ul_slots;
5755 }
5856
@@ -75,13 +73,16 @@ static void generate_du_low_config(srs_du::du_low_config&
7573 // - the number of PUSCH occasions in a HARQ process lifetime.
7674 const unsigned max_rx_nof_codeblocks = nof_ul_slots_in_harq_lifetime * max_nof_pusch_cb_slot;
7775
78- // Determine processing pipelines depth. Make sure the number of slots per system frame is divisible by the pipeline
79- // depths .
76+ // Determine processing downlink pipeline depth. Make sure the number of slots per system frame is divisible by the
77+ // pipeline depth .
8078 unsigned dl_pipeline_depth = 4 * du_low.expert_phy_cfg .max_processing_delay_slots ;
8179 while (nof_slots_per_hyper_system_frame % dl_pipeline_depth != 0 ) {
8280 ++dl_pipeline_depth;
8381 }
84- unsigned ul_pipeline_depth = std::max (dl_pipeline_depth, 8U );
82+
83+ // The uplink pipeline depth is set equal to the number of slots per frame for reusing uplink processors every
84+ // 10 ms.
85+ unsigned ul_pipeline_depth = nof_slots_per_frame;
8586
8687 static constexpr unsigned prach_pipeline_depth = 1 ;
8788
@@ -95,11 +96,11 @@ static void generate_du_low_config(srs_du::du_low_config&
9596 to_string (cell.duplex ));
9697
9798 // Maximum number of concurrent PUSCH transmissions. It is the maximum number of PUSCH transmissions that can be
98- // processed simultaneously. If there are no dedicated threads for PUSCH decoding, it sets the queue size to one.
99- // Otherwise, it is set to the maximum number of PUSCH transmissions that can be scheduled in one frame .
99+ // processed simultaneously in one slot . If there are no dedicated threads for PUSCH decoding, it sets the queue
100+ // size to one. Otherwise, it is set to the maximum number of PUSCH transmissions that can be scheduled in one slot .
100101 unsigned max_pusch_concurrency = 1 ;
101102 if (du_low.expert_execution_cfg .threads .nof_pusch_decoder_threads > 0 ) {
102- max_pusch_concurrency = cell.max_puschs_per_slot * nof_ul_slots_per_frame ;
103+ max_pusch_concurrency = cell.max_puschs_per_slot ;
103104 }
104105
105106 upper_phy_cell.nof_slots_request_headroom = du_low.expert_phy_cfg .nof_slots_request_headroom ;
0 commit comments