Skip to content

Commit 60811de

Browse files
author
codebot
committed
Update main
# Conflicts: # docker/metrics_server/Dockerfile # lib/cu_cp/adapters/mobility_manager_adapters.h # tests/unittests/phy/upper/channel_processors/pdcch_modulator_test_data.tar.gz # tests/unittests/phy/upper/channel_processors/pucch_processor_format2_test_data.tar.gz # tests/unittests/phy/upper/channel_processors/ssb_processor_test_data.tar.gz # tests/unittests/phy/upper/signal_processors/dmrs_pbch_processor_test_data.tar.gz # tests/unittests/phy/upper/signal_processors/dmrs_pdcch_processor_test_data.tar.gz # tests/unittests/phy/upper/signal_processors/dmrs_pdsch_processor_test_data.tar.gz # tests/unittests/phy/upper/signal_processors/dmrs_pucch_processor_test_data.tar.gz # tests/unittests/phy/upper/signal_processors/dmrs_pusch_estimator_test_data.tar.gz
2 parents 55c984b + bcbc26e commit 60811de

File tree

253 files changed

+5230
-3110
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

253 files changed

+5230
-3110
lines changed

.gitlab/ci/e2e/.env

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
SRSGNB_REGISTRY_URI=registry.gitlab.com/softwareradiosystems/srsgnb
22
RETINA_REGISTRY_PREFIX=registry.gitlab.com/softwareradiosystems/ci/retina
3-
RETINA_VERSION=0.37.8
3+
RETINA_VERSION=0.37.13
44
AMARISOFT_VERSION=2023-03-17
5-
SRSUE_VERSION=23.04.01
5+
SRSUE_VERSION=23.11
66
OPEN5GS_VERSION=2.5.6
77
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
8-
METRICS_SERVER_VERSION=1.3.0
8+
METRICS_SERVER_VERSION=1.4.0

apps/gnb/gnb.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ int main(int argc, char** argv)
399399
json_channel.set_enabled(gnb_cfg.metrics_cfg.enable_json_metrics);
400400

401401
// Create console helper object for commands and metrics printing.
402-
gnb_console_helper console(*epoll_broker, json_channel);
402+
gnb_console_helper console(*epoll_broker, json_channel, gnb_cfg.metrics_cfg.autostart_stdout_metrics);
403403
console.on_app_starting();
404404

405405
std::unique_ptr<metrics_hub> hub = std::make_unique<metrics_hub>(*workers.metrics_hub_exec);
@@ -466,9 +466,11 @@ int main(int argc, char** argv)
466466

467467
// Create CU-UP config.
468468
srsran::srs_cu_up::cu_up_configuration cu_up_cfg = generate_cu_up_config(gnb_cfg);
469-
cu_up_cfg.cu_up_executor = workers.cu_up_exec;
469+
cu_up_cfg.ctrl_executor = workers.cu_up_ctrl_exec;
470470
cu_up_cfg.cu_up_e2_exec = workers.cu_up_e2_exec;
471-
cu_up_cfg.gtpu_pdu_executor = workers.gtpu_pdu_exec;
471+
cu_up_cfg.dl_executor = workers.cu_up_dl_exec;
472+
cu_up_cfg.ul_executor = workers.cu_up_ul_exec;
473+
cu_up_cfg.io_ul_executor = workers.cu_up_ul_exec; // Optinally select separate exec for UL IO
472474
cu_up_cfg.e1ap.e1ap_conn_client = &e1ap_gw;
473475
cu_up_cfg.f1u_gateway = f1u_conn->get_f1u_cu_up_gateway();
474476
cu_up_cfg.epoll_broker = epoll_broker.get();

apps/gnb/gnb_appconfig.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,9 @@ struct pucch_appconfig {
306306
max_pucch_code_rate max_code_rate = max_pucch_code_rate::dot_35;
307307
/// Minimum k1 value (distance in slots between PDSCH and HARQ-ACK) that the gNB can use. Values: {1, ..., 15}.
308308
unsigned min_k1 = 4;
309+
310+
/// Maximum number of consecutive undecoded PUCCH Format 2 for CSI before an RLF is reported.
311+
unsigned max_consecutive_kos = 100;
309312
};
310313

311314
/// Parameters that are used to initialize or build the \c PhysicalCellGroupConfig, TS 38.331.
@@ -538,6 +541,10 @@ struct rlc_rx_am_appconfig {
538541
uint16_t sn_field_length; ///< Number of bits used for sequence number
539542
int32_t t_reassembly; ///< Timer used by rx to detect PDU loss (ms)
540543
int32_t t_status_prohibit; ///< Timer used by rx to prohibit tx of status PDU (ms)
544+
545+
// Implementation-specific parameters that are not specified by 3GPP
546+
/// Maximum number of visited SNs in the RX window when building a status report. 0 means no limit.
547+
uint32_t max_sn_per_status = 0;
541548
};
542549

543550
/// RLC AM configuration
@@ -791,8 +798,9 @@ struct metrics_appconfig {
791798
unsigned cu_cp_statistics_report_period = 1; // Statistics report period in seconds
792799
unsigned cu_up_statistics_report_period = 1; // Statistics report period in seconds
793800
/// JSON metrics reporting.
794-
bool enable_json_metrics = false;
795-
std::string json_filename = "/tmp/gnb_metrics.json";
801+
bool enable_json_metrics = false;
802+
std::string json_filename = "/tmp/gnb_metrics.json";
803+
bool autostart_stdout_metrics = false;
796804
};
797805

798806
/// Lower physical layer thread profiles.

apps/gnb/gnb_appconfig_cli11_schema.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,9 @@ static void configure_cli11_metrics_args(CLI::App& app, metrics_appconfig& metri
210210
->always_capture_default();
211211
app.add_option("--json_metrics_filename", metrics_params.json_filename, "JSON metrics output path")
212212
->capture_default_str();
213+
app.add_option(
214+
"--autostart_stdout_metrics", metrics_params.autostart_stdout_metrics, "Autostart stdout metrics reporting")
215+
->capture_default_str();
213216
}
214217

215218
static void configure_cli11_slicing_args(CLI::App& app, s_nssai_t& slice_params)
@@ -877,6 +880,11 @@ static void configure_cli11_pucch_args(CLI::App& app, pucch_appconfig& pucch_par
877880
"latency, but place a stricter requirement on the UE decode latency.")
878881
->capture_default_str()
879882
->check(CLI::Range(1, 4));
883+
884+
app.add_option("--max_consecutive_kos",
885+
pucch_params.max_consecutive_kos,
886+
"Maximum number of consecutive undecoded PUCCH F2 for CSI before an Radio Link Failure is reported")
887+
->capture_default_str();
880888
}
881889

882890
static void configure_cli11_ul_common_args(CLI::App& app, ul_common_appconfig& ul_common_params)
@@ -1405,6 +1413,9 @@ static void configure_cli11_rlc_am_args(CLI::App& app, rlc_am_appconfig& rlc_am_
14051413
->capture_default_str();
14061414
rlc_rx_am_subcmd->add_option("--t-status-prohibit", rlc_am_params.rx.t_status_prohibit, "RLC AM RX t-StatusProhibit")
14071415
->capture_default_str();
1416+
rlc_rx_am_subcmd->add_option("--max_sn_per_status", rlc_am_params.rx.max_sn_per_status, "RLC AM RX status SN limit")
1417+
->capture_default_str();
1418+
;
14081419
}
14091420

14101421
static void configure_cli11_rlc_args(CLI::App& app, rlc_appconfig& rlc_params)

apps/gnb/gnb_appconfig_translators.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -669,10 +669,6 @@ std::vector<du_cell_config> srsran::generate_du_cell_config(const gnb_appconfig&
669669
unsigned cset1_start_crb = 0;
670670
if (base_cell.pdcch_cfg.dedicated.coreset1_rb_start.has_value()) {
671671
cset1_start_crb = base_cell.pdcch_cfg.dedicated.coreset1_rb_start.value();
672-
} else if (not base_cell.pdcch_cfg.dedicated.dci_format_0_1_and_1_1) {
673-
// [Implementation-defined] Reason for starting from frequency resource 1 (i.e. CRB6) to remove the ambiguity of
674-
// UE decoding the DCI in CSS rather than USS when using fallback DCI formats (DCI format 1_0 and 0_0).
675-
cset1_start_crb = 6;
676672
}
677673
unsigned cset1_l_crb = nof_crbs - cset1_start_crb;
678674
if (base_cell.pdcch_cfg.dedicated.coreset1_l_crb.has_value()) {
@@ -716,15 +712,15 @@ std::vector<du_cell_config> srsran::generate_du_cell_config(const gnb_appconfig&
716712
ss_cfg.set_non_ss0_monitored_dci_formats(search_space_configuration::ue_specific_dci_format::f0_0_and_f1_0);
717713
}
718714

719-
// PDSCH-Config - Update PDSCH time domain resource allocations based on partial slot.
720-
if (band_helper::get_duplex_mode(param.band.value()) == duplex_mode::TDD) {
721-
const auto& tdd_cfg = out_cell.tdd_ul_dl_cfg_common.value();
722-
out_cell.dl_cfg_common.init_dl_bwp.pdsch_common.pdsch_td_alloc_list =
723-
config_helpers::make_pdsch_time_domain_resource(param.search_space0_index,
724-
out_cell.dl_cfg_common.init_dl_bwp.pdcch_common,
725-
out_cell.ue_ded_serv_cell_cfg.init_dl_bwp.pdcch_cfg,
726-
tdd_cfg);
727-
}
715+
// PDSCH-Config - Update PDSCH time domain resource allocations based on partial slot and/or dedicated PDCCH
716+
// configuration.
717+
out_cell.dl_cfg_common.init_dl_bwp.pdsch_common.pdsch_td_alloc_list =
718+
config_helpers::make_pdsch_time_domain_resource(
719+
param.search_space0_index,
720+
out_cell.dl_cfg_common.init_dl_bwp.pdcch_common,
721+
out_cell.ue_ded_serv_cell_cfg.init_dl_bwp.pdcch_cfg,
722+
band_helper::get_duplex_mode(param.band.value()) == duplex_mode::TDD ? out_cell.tdd_ul_dl_cfg_common.value()
723+
: optional<tdd_ul_dl_config_common>{});
728724

729725
out_cell.ue_ded_serv_cell_cfg.pdsch_serv_cell_cfg->nof_harq_proc =
730726
(pdsch_serving_cell_config::nof_harq_proc_for_pdsch)config.cells_cfg.front().cell.pdsch_cfg.nof_harqs;
@@ -1016,6 +1012,9 @@ srsran::rlc_am_config srsran::generate_rlc_am_config(const rlc_am_appconfig& in_
10161012
}
10171013
out_rlc.rx.t_reassembly = in_cfg.rx.t_reassembly;
10181014
out_rlc.rx.t_status_prohibit = in_cfg.rx.t_status_prohibit;
1015+
if (in_cfg.rx.max_sn_per_status != 0) {
1016+
out_rlc.rx.max_sn_per_status = in_cfg.rx.max_sn_per_status;
1017+
}
10191018
return out_rlc;
10201019
}
10211020

@@ -1594,8 +1593,9 @@ mac_expert_config srsran::generate_mac_expert_config(const gnb_appconfig& config
15941593
mac_expert_config out_cfg = {};
15951594
const base_cell_appconfig& cell = config.cells_cfg.front().cell;
15961595

1597-
out_cfg.max_consecutive_dl_kos = cell.pdsch_cfg.max_consecutive_kos;
1598-
out_cfg.max_consecutive_ul_kos = cell.pusch_cfg.max_consecutive_kos;
1596+
out_cfg.max_consecutive_dl_kos = cell.pdsch_cfg.max_consecutive_kos;
1597+
out_cfg.max_consecutive_ul_kos = cell.pusch_cfg.max_consecutive_kos;
1598+
out_cfg.max_consecutive_csi_dtx = cell.pucch_cfg.max_consecutive_kos;
15991599

16001600
return out_cfg;
16011601
}

apps/gnb/gnb_appconfig_validators.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -525,10 +525,15 @@ static bool validate_cells_appconfig(const cell_appconfig& config)
525525
/// Validates the given list of cell application configuration. Returns true on success, otherwise false.
526526
static bool validate_cells_appconfig(span<const cell_appconfig> config)
527527
{
528+
unsigned tac = config[0].cell.tac;
528529
for (const auto& cell : config) {
529530
if (!validate_cells_appconfig(cell)) {
530531
return false;
531532
}
533+
if (cell.cell.tac != tac) {
534+
fmt::print("The TAC must be the same for all cells\n");
535+
return false;
536+
}
532537
}
533538

534539
return true;
@@ -723,6 +728,13 @@ static bool validate_rlc_am_appconfig(id_type id, const rlc_am_appconfig& config
723728
"ms1200, ms1600, ms2000, ms2400\n");
724729
return false;
725730
}
731+
if (config.rx.max_sn_per_status >= window_size(config.rx.sn_field_length)) {
732+
fmt::print("RLC AM RX max_sn_per_status={} exceeds window_size={}. sn_size={}\n",
733+
config.rx.max_sn_per_status,
734+
window_size(config.rx.sn_field_length),
735+
config.rx.sn_field_length);
736+
return false;
737+
}
726738

727739
return true;
728740
}
@@ -988,14 +1000,6 @@ static bool validate_pdcch_appconfig(const gnb_appconfig& config)
9881000
fmt::print("Non-fallback DCI format not allowed in Common SearchSpace\n");
9891001
return false;
9901002
}
991-
if (not base_cell.pdcch_cfg.dedicated.dci_format_0_1_and_1_1 and
992-
base_cell.pdcch_cfg.dedicated.coreset1_rb_start.has_value() and
993-
base_cell.pdcch_cfg.dedicated.coreset1_rb_start.value() == 0) {
994-
// [Implementation-defined] Reason for starting from frequency resource 1 (i.e. CRB6) to remove the ambiguity of
995-
// UE decoding the DCI in CSS rather than USS when using fallback DCI formats (DCI format 1_0 and 0_0).
996-
fmt::print("Cannot start CORESET#1 from CRB0 in Common SearchSpace\n");
997-
return false;
998-
}
9991003
}
10001004
return true;
10011005
}

apps/gnb/gnb_worker_manager.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,10 @@ void worker_manager::create_du_cu_executors(const gnb_appconfig& appcfg)
174174
if (not exec_mng.add_execution_context(create_execution_context(gnb_ue_worker))) {
175175
report_fatal_error("Failed to instantiate gNB UE execution context");
176176
}
177-
cu_up_exec = exec_mng.executors().at("ue_up_ctrl_exec");
178-
gtpu_pdu_exec = exec_mng.executors().at("ue_dl_exec");
179-
cu_up_e2_exec = exec_mng.executors().at("ue_up_ctrl_exec");
177+
cu_up_ctrl_exec = exec_mng.executors().at("ue_up_ctrl_exec");
178+
cu_up_dl_exec = exec_mng.executors().at("ue_dl_exec");
179+
cu_up_ul_exec = exec_mng.executors().at("ue_ul_exec");
180+
cu_up_e2_exec = exec_mng.executors().at("ue_up_ctrl_exec");
180181

181182
// Worker for handling DU, CU and UE control procedures.
182183
const priority_multiqueue_worker gnb_ctrl_worker{

apps/gnb/gnb_worker_manager.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ struct worker_manager {
4949
/// - e1ap_cu_cp::handle_message calls cu-cp ctrl exec
5050
/// - e1ap_cu_up::handle_message calls cu-up ue exec
5151

52-
task_executor* cu_cp_exec = nullptr;
53-
task_executor* cu_up_exec = nullptr;
54-
task_executor* gtpu_pdu_exec = nullptr;
52+
task_executor* cu_cp_exec = nullptr;
53+
task_executor* cu_up_ctrl_exec = nullptr; ///< CU-UP executor for control
54+
task_executor* cu_up_dl_exec = nullptr; ///< CU-UP executor for DL data flow
55+
task_executor* cu_up_ul_exec = nullptr; ///< CU-UP executor for UL data flow
5556
std::vector<task_executor*> lower_phy_tx_exec;
5657
std::vector<task_executor*> lower_phy_rx_exec;
5758
std::vector<task_executor*> lower_phy_dl_exec;

apps/gnb/helpers/gnb_console_helper.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@
3333

3434
using namespace srsran;
3535

36-
gnb_console_helper::gnb_console_helper(io_broker& io_broker_, srslog::log_channel& log_chan_) :
37-
logger(srslog::fetch_basic_logger("GNB")), io_broker_handle(io_broker_), metrics_json(log_chan_)
36+
gnb_console_helper::gnb_console_helper(io_broker& io_broker_,
37+
srslog::log_channel& log_chan_,
38+
bool autostart_stdout_metrics_) :
39+
logger(srslog::fetch_basic_logger("GNB")),
40+
io_broker_handle(io_broker_),
41+
metrics_json(log_chan_),
42+
autostart_stdout_metrics(autostart_stdout_metrics_)
3843
{
3944
// set STDIN file descripter into non-blocking mode
4045
int flags = fcntl(STDIN_FILENO, F_GETFL, 0);
@@ -138,6 +143,10 @@ void gnb_console_helper::on_app_running()
138143

139144
fmt::print("==== gNodeB started ===\n");
140145
fmt::print("Type <t> to view trace\n");
146+
147+
if (autostart_stdout_metrics) {
148+
metrics_plotter.enable_print();
149+
}
141150
}
142151

143152
void gnb_console_helper::on_app_stopping()

apps/gnb/helpers/gnb_console_helper.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class app_state_notifier
4848
class gnb_console_helper : public app_state_notifier
4949
{
5050
public:
51-
gnb_console_helper(io_broker& io_broker_, srslog::log_channel& log_chan_);
51+
gnb_console_helper(io_broker& io_broker_, srslog::log_channel& log_chan_, bool autostart_stdout_metrics_ = false);
5252
~gnb_console_helper();
5353

5454
scheduler_ue_metrics_notifier& get_stdout_metrics_notifier() { return metrics_plotter; };
@@ -70,6 +70,7 @@ class gnb_console_helper : public app_state_notifier
7070
metrics_plotter_stdout metrics_plotter;
7171
metrics_plotter_json metrics_json;
7272
std::vector<du_cell_config> cells;
73+
bool autostart_stdout_metrics = false;
7374
};
7475

7576
} // namespace srsran

0 commit comments

Comments
 (0)