Skip to content

Commit 784e992

Browse files
committed
phy: improves the uplink processor pool dimensioning
phy: minimal correcton
1 parent a9efe6b commit 784e992

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

apps/units/flexible_o_du/o_du_low/du_low_config_translator.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)