Skip to content

Commit

Permalink
Update main
Browse files Browse the repository at this point in the history
  • Loading branch information
codebot committed Jan 17, 2025
2 parents cc2869f + e42c3eb commit 8c30b18
Show file tree
Hide file tree
Showing 283 changed files with 10,067 additions and 6,306 deletions.
2 changes: 2 additions & 0 deletions .gitlab/ci/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,7 @@ smoke valgrind update cache:
artifacts:
<<: *build_artifacts
when: on_failure
expire_in: 1 day
cache:
- *cache_build_set

Expand Down Expand Up @@ -1710,6 +1711,7 @@ basic avx512 dpdk:
FORCE_DEBUG_INFO: "True"
ASSERT_LEVEL: AUTO
INFRASTRUCTURE_TAG: amd64-avx2-avx512
BUILD_ARGS: -DEXIT_TIMEOUT=15
after_script:
- *build_after_script
artifacts:
Expand Down
2 changes: 1 addition & 1 deletion .gitlab/ci/e2e/.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SRSGNB_REGISTRY_URI=registry.gitlab.com/softwareradiosystems/srsgnb
RETINA_REGISTRY_PREFIX=registry.gitlab.com/softwareradiosystems/ci/retina
RETINA_VERSION=0.59.5
RETINA_VERSION=0.60.5
UBUNTU_VERSION=24.04
AMARISOFT_VERSION=2023-09-08
SRSUE_VERSION=23.11
Expand Down
5 changes: 4 additions & 1 deletion .gitlab/ci/e2e/retina_request_test_mode.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@
arch: amd64
cpu:
requests: 1
limits: 1
memory:
requests: "4G"
requests: "8G"
limits: "8G"
ephemeral-storage:
requests: "6G"
limits: "6G"
image: ${RETINA_REGISTRY_PREFIX}/open5gs:${OPEN5GS_VERSION}_${RETINA_VERSION}
labels:
- ${ZMQ_HOSTLABEL_0}

11 changes: 6 additions & 5 deletions .gitlab/ci/e2e/retina_request_test_mode_acc100.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
requests: "60G"
limits: "60G"
ephemeral-storage:
requests: "6G"
limits: "6G"
requests: "50G"
limits: "50G"
hugepages-1Gi:
requests: 8Gi
limits: 8Gi
Expand All @@ -39,11 +39,12 @@
arch: amd64
cpu:
requests: 1
limits: 1
memory:
requests: "4G"
requests: "8G"
limits: "8G"
ephemeral-storage:
requests: "6G"
limits: "6G"
image: ${RETINA_REGISTRY_PREFIX}/open5gs:${OPEN5GS_VERSION}_${RETINA_VERSION}
labels:
- ${ZMQ_HOSTLABEL_0}
labels: ["kubernetes.io/hostname=k8s-worker-uhd1"]
4 changes: 3 additions & 1 deletion .gitlab/ci/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,9 @@ publish matlab:
- job: publish main
- job: builder version
inherit:
variables: false
variables:
- PUBLIC_PUSH_TOKEN
- PUBLIC_REPO
trigger:
project: softwareradiosystems/srsgnb_matlab
branch: master
Expand Down
4 changes: 2 additions & 2 deletions .gitlab/ci/schedules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Nightly Build Unit Tests Plugin:
raw: false

Nightly E2E Tests Plugin:
cron: "30 22 * * 1-5"
cron: "00 22 * * 1-5"
cron_timezone: "Europe/Madrid"
ref: refs/heads/dev
variables:
Expand Down Expand Up @@ -127,7 +127,7 @@ Nightly Build Unit Tests OpenSource:
raw: false

Nightly E2E Tests OpenSource:
cron: "30 22 * * 0"
cron: "00 22 * * 0"
cron_timezone: "Europe/Madrid"
ref: refs/heads/dev
variables:
Expand Down
20 changes: 13 additions & 7 deletions apps/cu/cu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include "cu_appconfig.h"
#include "cu_appconfig_validator.h"
#include "cu_appconfig_yaml_writer.h"
#include "srsran/cu_cp/cu_cp_operation_controller.h"
#include "srsran/e1ap/gateways/e1_local_connector_factory.h"
#include "srsran/e2/e2ap_config_translators.h"
#include "srsran/f1ap/gateways/f1c_network_server_factory.h"
Expand Down Expand Up @@ -312,7 +313,7 @@ int main(int argc, char** argv)
cu_f1u_gtpu_msg.gtpu_pcap = cu_up_dlt_pcaps.f1u.get();
std::unique_ptr<gtpu_demux> cu_f1u_gtpu_demux = create_gtpu_demux(cu_f1u_gtpu_msg);
// > Create UDP gateway(s).
std::vector<std::unique_ptr<gtpu_gateway>> cu_f1u_gws;
srs_cu_up::gtpu_gateway_maps f1u_gw_maps;
for (const srs_cu::cu_f1u_socket_appconfig& sock_cfg : cu_cfg.f1u_cfg.f1u_socket_cfg) {
udp_network_gateway_config cu_f1u_gw_config = {};
cu_f1u_gw_config.bind_address = sock_cfg.bind_addr;
Expand All @@ -321,12 +322,17 @@ int main(int argc, char** argv)
cu_f1u_gw_config.reuse_addr = false;
cu_f1u_gw_config.pool_occupancy_threshold = sock_cfg.udp_config.pool_threshold;
cu_f1u_gw_config.rx_max_mmsg = sock_cfg.udp_config.rx_max_msgs;
cu_f1u_gw_config.dscp = sock_cfg.udp_config.dscp;
std::unique_ptr<gtpu_gateway> cu_f1u_gw = create_udp_gtpu_gateway(
cu_f1u_gw_config, *epoll_broker, workers.cu_up_exec_mapper->io_ul_executor(), *workers.non_rt_low_prio_exec);
cu_f1u_gws.push_back(std::move(cu_f1u_gw));
if (not sock_cfg.five_qi.has_value()) {
f1u_gw_maps.default_gws.push_back(std::move(cu_f1u_gw));
} else {
f1u_gw_maps.five_qi_gws[sock_cfg.five_qi.value()].push_back(std::move(cu_f1u_gw));
}
}
std::unique_ptr<f1u_cu_up_udp_gateway> cu_f1u_conn =
srs_cu_up::create_split_f1u_gw({cu_f1u_gws, *cu_f1u_gtpu_demux, *cu_up_dlt_pcaps.f1u, GTPU_PORT});
srs_cu_up::create_split_f1u_gw({f1u_gw_maps, *cu_f1u_gtpu_demux, *cu_up_dlt_pcaps.f1u, GTPU_PORT});

// Create E1AP local connector
std::unique_ptr<e1_local_connector> e1_gw =
Expand Down Expand Up @@ -377,7 +383,7 @@ int main(int argc, char** argv)

// start O-CU-CP
cu_logger.info("Starting CU-CP...");
o_cucp_obj.get_cu_cp().start();
o_cucp_obj.get_operation_controller().start();
cu_logger.info("CU-CP started successfully");

// Check connection to AMF
Expand Down Expand Up @@ -409,7 +415,7 @@ int main(int argc, char** argv)
// Connect the forwarder to the metrics manager.
metrics_notifier_forwarder.connect(metrics_mngr);

o_cuup_unit.unit->get_power_controller().start();
o_cuup_unit.unit->get_operation_controller().start();
{
app_services::application_message_banners app_banner(app_name);

Expand All @@ -419,10 +425,10 @@ int main(int argc, char** argv)
}

// Stop O-CU-UP activity.
o_cuup_unit.unit->get_power_controller().stop();
o_cuup_unit.unit->get_operation_controller().stop();

// Stop O-CU-CP activity.
o_cucp_obj.get_cu_cp().stop();
o_cucp_obj.get_operation_controller().stop();

// Stop the timer source before stopping the workers.
time_source.reset();
Expand Down
6 changes: 4 additions & 2 deletions apps/cu/cu_appconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,17 @@
#include "apps/services/logger/logger_appconfig.h"
#include "apps/services/network/udp_cli11_schema.h"
#include "apps/services/worker_manager/worker_manager_appconfig.h"
#include "srsran/ran/qos/five_qi.h"
#include <string>

namespace srsran {
namespace srs_cu {

/// F1-U sockets configuration
struct cu_f1u_socket_appconfig {
std::string bind_addr = "127.0.10.1"; // Bind address used by the F1-U interface
udp_appconfig udp_config;
std::string bind_addr = "127.0.10.1"; // Bind address used by the F1-U interface
std::optional<five_qi_t> five_qi;
udp_appconfig udp_config;
};

/// F1-U configuration
Expand Down
1 change: 1 addition & 0 deletions apps/cu/cu_appconfig_cli11_schema.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ static void configure_cli11_f1u_socket_args(CLI::App& app, srs_cu::cu_f1u_socket
f1u_cfg.bind_addr,
"Default local IP address interfaces bind to, unless a specific bind address is specified")
->check(CLI::ValidIPV4);
add_option(app, "--five_qi", f1u_cfg.five_qi, "Assign this socket to a specific 5QI")->check(CLI::Range(0, 255));

configure_cli11_with_udp_config_schema(app, f1u_cfg.udp_config);
}
Expand Down
6 changes: 3 additions & 3 deletions apps/du/du.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "du_appconfig_translators.h"
#include "du_appconfig_validators.h"
#include "du_appconfig_yaml_writer.h"
#include "srsran/du/du_power_controller.h"
#include "srsran/du/du_operation_controller.h"
#include "srsran/e2/e2ap_config_translators.h"
#include "srsran/e2/gateways/e2_connection_client.h"
#include "srsran/e2/gateways/e2_network_client_factory.h"
Expand Down Expand Up @@ -333,7 +333,7 @@ int main(int argc, char** argv)
*epoll_broker, *workers.non_rt_low_prio_exec, du_inst_and_cmds.commands);

// Start processing.
du_inst.get_power_controller().start();
du_inst.get_operation_controller().start();
{
app_services::application_message_banners app_banner(app_name);

Expand All @@ -343,7 +343,7 @@ int main(int argc, char** argv)
}

// Stop DU activity.
du_inst.get_power_controller().stop();
du_inst.get_operation_controller().stop();

du_logger.info("Closing PCAP files...");
du_pcaps.reset();
Expand Down
2 changes: 1 addition & 1 deletion apps/examples/ofh/helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "srsran/adt/span.h"
#include "srsran/ofh/ethernet/ethernet_mac_address.h"
#include "srsran/ran/bs_channel_bandwidth.h"
#include "srsran/ru/ru_ofh_configuration.h"
#include "srsran/ru/ofh/ru_ofh_configuration.h"

namespace srsran {

Expand Down
15 changes: 8 additions & 7 deletions apps/gnb/gnb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
#include "gnb_appconfig_translators.h"
#include "gnb_appconfig_validators.h"
#include "gnb_appconfig_yaml_writer.h"
#include "srsran/du/du_power_controller.h"
#include "srsran/cu_cp/cu_cp_operation_controller.h"
#include "srsran/du/du_operation_controller.h"
#include "srsran/e1ap/gateways/e1_local_connector_factory.h"
#include "srsran/e2/e2ap_config_translators.h"
#include "srsran/e2/gateways/e2_network_client_factory.h"
Expand Down Expand Up @@ -468,7 +469,7 @@ int main(int argc, char** argv)

// Start O-CU-CP
gnb_logger.info("Starting CU-CP...");
o_cucp_obj.get_cu_cp().start();
o_cucp_obj.get_operation_controller().start();
gnb_logger.info("CU-CP started successfully");

if (not o_cucp_obj.get_cu_cp().get_ng_handler().amfs_are_connected()) {
Expand All @@ -478,10 +479,10 @@ int main(int argc, char** argv)
// Connect F1-C to O-CU-CP and start listening for new F1-C connection requests.
f1c_gw->attach_cu_cp(o_cucp_obj.get_cu_cp().get_f1c_handler());

o_cuup_obj.unit->get_power_controller().start();
o_cuup_obj.unit->get_operation_controller().start();

// Start processing.
du_inst.get_power_controller().start();
du_inst.get_operation_controller().start();

{
app_services::application_message_banners app_banner(app_name);
Expand All @@ -492,13 +493,13 @@ int main(int argc, char** argv)
}

// Stop DU activity.
du_inst.get_power_controller().stop();
du_inst.get_operation_controller().stop();

// Stop O-CU-UP activity.
o_cuup_obj.unit->get_power_controller().stop();
o_cuup_obj.unit->get_operation_controller().stop();

// Stop O-CU-CP activity.
o_cucp_obj.get_cu_cp().stop();
o_cucp_obj.get_operation_controller().stop();

gnb_logger.info("Closing PCAP files...");
cu_cp_dlt_pcaps.reset();
Expand Down
12 changes: 6 additions & 6 deletions apps/units/flexible_o_du/flexible_o_du_commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ namespace srsran {
/// Application command to change the transmission gain.
class tx_gain_app_command : public app_services::application_command
{
ru_controller& controller;
ru_gain_controller& controller;

public:
explicit tx_gain_app_command(ru_controller& controller_) : controller(controller_) {}
explicit tx_gain_app_command(ru_gain_controller& controller_) : controller(controller_) {}

// See interface for documentation.
std::string_view get_name() const override { return "tx_gain"; }
Expand Down Expand Up @@ -76,10 +76,10 @@ class tx_gain_app_command : public app_services::application_command
/// Application command to change the reception gain.
class rx_gain_app_command : public app_services::application_command
{
ru_controller& controller;
ru_gain_controller& controller;

public:
explicit rx_gain_app_command(ru_controller& controller_) : controller(controller_) {}
explicit rx_gain_app_command(ru_gain_controller& controller_) : controller(controller_) {}

// See interface for documentation.
std::string_view get_name() const override { return "rx_gain"; }
Expand Down Expand Up @@ -203,10 +203,10 @@ class change_log_level_app_command : public app_services::application_command
/// Application command to set the carrier frequency offset.
class cfo_app_command : public app_services::application_command
{
ru_controller& controller;
ru_cfo_controller& controller;

public:
explicit cfo_app_command(ru_controller& controller_) : controller(controller_) {}
explicit cfo_app_command(ru_cfo_controller& controller_) : controller(controller_) {}

// See interface for documentation.
std::string_view get_name() const override { return "cfo"; }
Expand Down
12 changes: 12 additions & 0 deletions apps/units/flexible_o_du/o_du_high/du_high/du_high_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,18 @@ struct du_high_unit_pucch_config {

/// Maximum number of consecutive undecoded PUCCH Format 2 for CSI before an RLF is reported.
unsigned max_consecutive_kos = 100;

/// Enable closed-loop PUCCH power control.
bool enable_closed_loop_pw_control = false;
/// Target PUSCH SINR to be achieved with close-loop power control, in dB. Only relevant if \c
/// enable_closed_loop_pw_control is set to true and if the corresponding PUCCH format is used.
/// SINR target are based on the requirements in terms of 1% ACK missed detection probability, as per TS 38.104,
/// Tables 8.3.2.2-1 and 8.3.2.2-1 for Format 0, Table 8.3.4.1.2-1 and Table 8.3.4.1.2-2 for Format 2; while, for
/// Format 3, they are based on the UCI block error probability not exceeding 1%, as per Table 8.3.5.2-1
/// and 8.3.5.2-2.
float pucch_f0_sinr_target_dB{10.0f};
float pucch_f2_sinr_target_dB{6.0f};
float pucch_f3_sinr_target_dB{1.0f};
};

struct du_high_unit_srs_config {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,21 @@ static void configure_cli11_pf_scheduler_expert_args(CLI::App& app, time_pf_sche
expert_params.pf_sched_fairness_coeff,
"Fairness Coefficient to use in Proportional Fair policy scheduler")
->capture_default_str();
add_option_function<std::string>(
app,
"--qos_weight_function",
[&expert_params](const std::string& value) {
if (value == "gbr_prioritized") {
expert_params.qos_weight_func = time_pf_scheduler_expert_config::weight_function::gbr_prioritized;
} else if (value == "multivariate") {
expert_params.qos_weight_func = time_pf_scheduler_expert_config::weight_function::multivariate;
} else {
report_fatal_error("Invalid qos weight function {}", value);
}
},
"QoS-aware scheduler policy UE weight function")
->default_str("gbr_prioritized")
->check(CLI::IsMember({"gbr_prioritized", "multivariate"}, CLI::ignore_case));
}

static void configure_cli11_policy_scheduler_expert_args(CLI::App& app, policy_scheduler_expert_config& expert_params)
Expand Down
Loading

0 comments on commit 8c30b18

Please sign in to comment.