Skip to content

Commit 0c4f47c

Browse files
committed
sched: move cell harq manager to scheduler/cell folder
1 parent 2b8b4db commit 0c4f47c

File tree

10 files changed

+34
-24
lines changed

10 files changed

+34
-24
lines changed

lib/scheduler/cell/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ add_library(sched_cell OBJECT
1010
vrb_alloc.cpp
1111
resource_block_group.cpp
1212
resource_grid.cpp
13-
scheduler_prb.cpp)
13+
scheduler_prb.cpp
14+
cell_harq_manager.cpp)

lib/scheduler/ue_scheduling/cell_harq_manager.cpp renamed to lib/scheduler/cell/cell_harq_manager.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010

1111
#include "cell_harq_manager.h"
12-
#include "../cell/resource_grid_util.h"
12+
#include "resource_grid_util.h"
1313
#include "srsran/scheduler/scheduler_slot_handler.h"
1414

1515
using namespace srsran;
@@ -30,21 +30,25 @@ class noop_harq_timeout_notifier : public harq_timeout_notifier
3030
template <bool IsDl>
3131
cell_harq_repository<IsDl>::cell_harq_repository(unsigned max_ues,
3232
unsigned max_ack_wait_timeout,
33+
unsigned max_harqs_per_ue_,
3334
harq_timeout_notifier& timeout_notifier_,
3435
srslog::basic_logger& logger_) :
35-
max_ack_wait_in_slots(max_ack_wait_timeout), timeout_notifier(timeout_notifier_), logger(logger_)
36+
max_ack_wait_in_slots(max_ack_wait_timeout),
37+
max_harqs_per_ue(max_harqs_per_ue_),
38+
timeout_notifier(timeout_notifier_),
39+
logger(logger_)
3640
{
37-
harqs.resize(MAX_NOF_HARQS * max_ues);
38-
free_harqs.resize(MAX_NOF_HARQS * max_ues);
41+
harqs.resize(max_harqs_per_ue * max_ues);
42+
free_harqs.resize(max_harqs_per_ue * max_ues);
3943
for (unsigned i = 0; i != free_harqs.size(); ++i) {
4044
free_harqs[i] = free_harqs.size() - i - 1;
4145
}
4246

4347
// Reserve space in advance for UEs.
4448
ues.resize(max_ues);
4549
for (unsigned i = 0; i != max_ues; i++) {
46-
ues[i].free_harq_ids.reserve(MAX_NOF_HARQS);
47-
ues[i].harqs.reserve(MAX_NOF_HARQS);
50+
ues[i].free_harq_ids.reserve(max_harqs_per_ue);
51+
ues[i].harqs.reserve(max_harqs_per_ue);
4852
}
4953

5054
harq_timeout_wheel.resize(get_allocator_ring_size_gt_min(max_ack_wait_timeout + get_max_slot_ul_alloc_delay(0)));
@@ -337,18 +341,19 @@ template class harq_utils::base_harq_process_handle<false>;
337341
// Cell HARQ manager.
338342

339343
cell_harq_manager::cell_harq_manager(unsigned max_ues,
344+
unsigned max_harqs_per_ue_,
340345
std::unique_ptr<harq_timeout_notifier> notifier,
341346
unsigned max_ack_wait_timeout) :
347+
max_harqs_per_ue(max_harqs_per_ue_),
342348
timeout_notifier(notifier != nullptr ? std::move(notifier) : std::make_unique<noop_harq_timeout_notifier>()),
343349
logger(srslog::fetch_basic_logger("SCHED")),
344-
dl(max_ues, max_ack_wait_timeout, *timeout_notifier, logger),
345-
ul(max_ues, max_ack_wait_timeout, *timeout_notifier, logger)
350+
dl(max_ues, max_ack_wait_timeout, max_harqs_per_ue, *timeout_notifier, logger),
351+
ul(max_ues, max_ack_wait_timeout, max_harqs_per_ue, *timeout_notifier, logger)
346352
{
347353
}
348354

349355
void cell_harq_manager::slot_indication(slot_point sl_tx)
350356
{
351-
last_sl_tx = sl_tx;
352357
dl.slot_indication(sl_tx);
353358
ul.slot_indication(sl_tx);
354359
}
@@ -371,9 +376,9 @@ ul_harq_pending_retx_list cell_harq_manager::pending_ul_retxs()
371376
unique_ue_harq_entity
372377
cell_harq_manager::add_ue(du_ue_index_t ue_idx, rnti_t crnti, unsigned nof_dl_harq_procs, unsigned nof_ul_harq_procs)
373378
{
374-
srsran_sanity_check(nof_dl_harq_procs > 0, "Invalid number of HARQs");
375-
srsran_sanity_check(nof_ul_harq_procs > 0, "Invalid number of HARQs");
376-
srsran_sanity_check(ue_idx < dl.ues.size(), "Invalid ue_index");
379+
srsran_assert(nof_dl_harq_procs <= max_harqs_per_ue and nof_dl_harq_procs > 0, "Invalid number of DL HARQs");
380+
srsran_assert(nof_ul_harq_procs <= max_harqs_per_ue and nof_ul_harq_procs > 0, "Invalid number of DL HARQs");
381+
srsran_assert(ue_idx < dl.ues.size(), "Invalid ue_index");
377382
srsran_assert(not contains(ue_idx), "Creating UE with duplicate ue_index");
378383
dl.reserve_ue_harqs(ue_idx, nof_dl_harq_procs);
379384
ul.reserve_ue_harqs(ue_idx, nof_ul_harq_procs);

lib/scheduler/ue_scheduling/cell_harq_manager.h renamed to lib/scheduler/cell/cell_harq_manager.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#include "srsran/scheduler/harq_id.h"
2222
#include "srsran/scheduler/scheduler_dci.h"
2323
#include "srsran/srslog/srslog.h"
24-
#include <queue>
2524

2625
namespace srsran {
2726

@@ -133,11 +132,13 @@ struct cell_harq_repository {
133132

134133
cell_harq_repository(unsigned max_ues,
135134
unsigned max_ack_wait_in_slots,
135+
unsigned max_harqs_per_ue,
136136
harq_timeout_notifier& timeout_notifier_,
137137
srslog::basic_logger& logger_);
138138

139139
/// Maximum value of time interval, in slots, before the HARQ process assumes that the ACK/CRC went missing.
140140
const unsigned max_ack_wait_in_slots;
141+
const unsigned max_harqs_per_ue;
141142
harq_timeout_notifier& timeout_notifier;
142143
srslog::basic_logger& logger;
143144

@@ -392,6 +393,7 @@ class cell_harq_manager
392393
constexpr static unsigned DEFAULT_ACK_TIMEOUT_SLOTS = 256U;
393394

394395
cell_harq_manager(unsigned max_ues = MAX_NOF_DU_UES,
396+
unsigned max_harqs_per_ue = MAX_NOF_HARQS,
395397
std::unique_ptr<harq_timeout_notifier> notifier = nullptr,
396398
unsigned max_ack_wait_timeout = DEFAULT_ACK_TIMEOUT_SLOTS);
397399

@@ -434,11 +436,10 @@ class cell_harq_manager
434436
harq_utils::ul_harq_process_impl*
435437
new_ul_tx(du_ue_index_t ue_idx, rnti_t rnti, slot_point pusch_slot, unsigned max_harq_nof_retxs);
436438

439+
const unsigned max_harqs_per_ue;
437440
std::unique_ptr<harq_timeout_notifier> timeout_notifier;
438441
srslog::basic_logger& logger;
439442

440-
slot_point last_sl_tx;
441-
442443
harq_utils::cell_harq_repository<true> dl;
443444
harq_utils::cell_harq_repository<false> ul;
444445
};

lib/scheduler/ue_scheduling/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
set(SOURCES
1010
harq_process.cpp
11-
cell_harq_manager.cpp
1211
dl_logical_channel_manager.cpp
1312
ul_logical_channel_manager.cpp
1413
ta_manager.cpp

tests/unittests/scheduler/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ include_directories(../../..)
1212

1313
add_subdirectory(test_utils)
1414
add_subdirectory(support)
15-
add_subdirectory(cell_resource_grid)
15+
add_subdirectory(cell)
1616
add_subdirectory(common_scheduling)
1717
add_subdirectory(ue_scheduling)
1818
add_subdirectory(uci_and_pucch)

tests/unittests/scheduler/cell_resource_grid/CMakeLists.txt renamed to tests/unittests/scheduler/cell/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@
66
# the distribution.
77
#
88

9-
add_executable(cell_resource_grid_test sched_prb_test.cpp cell_resource_grid_test.cpp)
10-
target_link_libraries(cell_resource_grid_test
9+
add_executable(scheduler_cell_resource_test
10+
sched_prb_test.cpp
11+
cell_resource_grid_test.cpp
12+
cell_harq_manager_test.cpp)
13+
target_link_libraries(scheduler_cell_resource_test
1114
srsran_sched
1215
srslog
1316
mac_configuration_helpers
1417
sched_config
1518
gtest
1619
gtest_main)
17-
gtest_discover_tests(cell_resource_grid_test)
20+
gtest_discover_tests(scheduler_cell_resource_test)
1821

tests/unittests/scheduler/ue_scheduling/harq_manager_test.cpp renamed to tests/unittests/scheduler/cell/cell_harq_manager_test.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*/
1010

11-
#include "lib/scheduler/ue_scheduling/cell_harq_manager.h"
11+
#include "lib/scheduler/cell/cell_harq_manager.h"
1212
#include "srsran/scheduler/scheduler_slot_handler.h"
1313
#include "srsran/support/test_utils.h"
1414
#include <gtest/gtest.h>
@@ -92,7 +92,8 @@ class dummy_harq_timeout_handler
9292
class base_harq_manager_test
9393
{
9494
protected:
95-
base_harq_manager_test(unsigned nof_ues) : cell_harqs(nof_ues, timeout_handler.make_notifier(), max_ack_wait_timeout)
95+
base_harq_manager_test(unsigned nof_ues) :
96+
cell_harqs(nof_ues, max_harqs_per_ue, timeout_handler.make_notifier(), max_ack_wait_timeout)
9697
{
9798
logger.set_level(srslog::basic_levels::warning);
9899
srslog::init();
@@ -109,6 +110,7 @@ class base_harq_manager_test
109110
}
110111

111112
const unsigned max_ack_wait_timeout = 16;
113+
const unsigned max_harqs_per_ue = 16;
112114
dummy_harq_timeout_handler timeout_handler;
113115
srslog::basic_logger& logger = srslog::fetch_basic_logger("SCHED");
114116

tests/unittests/scheduler/ue_scheduling/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
add_executable(ue_scheduler_test
1010
logical_channel_test.cpp
11-
harq_manager_test.cpp
1211
fallback_scheduler_test.cpp
1312
ue_cell_test.cpp
1413
ue_configuration_test.cpp

0 commit comments

Comments
 (0)