Skip to content

Commit 7e84c0c

Browse files
author
codebot
committed
Update main
# Conflicts: # apps/gnb/adapters/e2_gateway_remote_connector.cpp # apps/gnb/adapters/e2_gateway_remote_connector.h # apps/gnb/adapters/e2ap_adapter.h # include/srsran/e2/e2_connection_client.h # lib/cu_up/cu_up_executor_pool.cpp # lib/scheduler/ue_scheduling/harq_process.cpp # lib/scheduler/ue_scheduling/harq_process.h
2 parents 45da8c1 + 5c329f6 commit 7e84c0c

File tree

198 files changed

+4103
-3599
lines changed

Some content is hidden

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

198 files changed

+4103
-3599
lines changed

.gitlab-ci.yml

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ matlab weekly:
154154
- if: $CI_DESCRIPTION =~ /Weekly/
155155
variables:
156156
ON_SCHEDULE: "true"
157-
CI_DESCRIPTION: Nightly
157+
CI_DESCRIPTION: Weekly
158158
SRSRAN_COMMIT: $CI_COMMIT_SHA
159159
NOTIFY_SLACK: "true"
160160
when: delayed
@@ -327,43 +327,43 @@ clangsa:
327327
ANALYZER_ARGS: --ctu
328328
timeout: 8 hours
329329

330-
.coverity_base:
331-
image: $CR_REGISTRY_URI/coverity_image/2022.6.0:1.0.0
332-
stage: static
333-
needs: []
334-
variables:
335-
KUBERNETES_CPU_REQUEST: 6
336-
KUBERNETES_CPU_LIMIT: 6
337-
KUBERNETES_MEMORY_REQUEST: 12Gi
338-
KUBERNETES_MEMORY_LIMIT: 12Gi
339-
tags:
340-
- amd64
341-
interruptible: false
342-
timeout: 2 hours
343-
script:
344-
- |
345-
mkdir -p build
346-
cd build
347-
cmake ..
348-
cov-build --dir cov-int make -j${KUBERNETES_CPU_REQUEST}
349-
tar czvf srsgnb.tgz cov-int
350-
ver=$(git rev-parse HEAD)
351-
- |
352-
curl --form token=$COV_TOKEN \
353-
--form email=${COVERITY_EMAIL} \
354-
355-
--form version=$ver \
356-
--form description="${DESCRIPTION}" \
357-
https://scan.coverity.com/builds?project=${PROJECT_NAME}
330+
# .coverity_base:
331+
# image: $CR_REGISTRY_URI/coverity_image/2022.6.0:1.0.0
332+
# stage: static
333+
# needs: []
334+
# variables:
335+
# KUBERNETES_CPU_REQUEST: 6
336+
# KUBERNETES_CPU_LIMIT: 6
337+
# KUBERNETES_MEMORY_REQUEST: 12Gi
338+
# KUBERNETES_MEMORY_LIMIT: 12Gi
339+
# tags:
340+
# - amd64
341+
# interruptible: false
342+
# timeout: 2 hours
343+
# script:
344+
# - |
345+
# mkdir -p build
346+
# cd build
347+
# cmake ..
348+
# cov-build --dir cov-int make -j${KUBERNETES_CPU_REQUEST}
349+
# tar czvf srsgnb.tgz cov-int
350+
# ver=$(git rev-parse HEAD)
351+
# - |
352+
# curl --form token=$COV_TOKEN \
353+
# --form email=${COVERITY_EMAIL} \
354+
355+
# --form version=$ver \
356+
# --form description="${DESCRIPTION}" \
357+
# https://scan.coverity.com/builds?project=${PROJECT_NAME}
358358

359-
coverity-dev:
360-
extends: .coverity_base
361-
rules:
362-
- if: $CI_DESCRIPTION =~ /Weekly/
363-
before_script:
364-
- export PROJECT_NAME="srsRAN_5G"
365-
- export DESCRIPTION="srsRAN Project dev build"
366-
- export COV_TOKEN="${COVERITY_TOKEN_DEV}"
359+
# coverity-dev:
360+
# extends: .coverity_base
361+
# rules:
362+
# - if: $CI_DESCRIPTION =~ /Weekly/
363+
# before_script:
364+
# - export PROJECT_NAME="srsRAN_5G"
365+
# - export DESCRIPTION="srsRAN Project dev build"
366+
# - export COV_TOKEN="${COVERITY_TOKEN_DEV}"
367367

368368
e2e tests tox:
369369
stage: static

.gitlab/ci/build.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,26 @@ smoke relwithdeb cached:
404404
cache:
405405
- *cache_build_get
406406

407+
smoke split 7.2 cached:
408+
extends: smoke relwithdeb cached
409+
rules:
410+
- if: $CI_MERGE_REQUEST_LABELS =~ /no-cache/
411+
when: never
412+
- if: $ON_MR
413+
changes: &split_changes
414+
paths:
415+
- apps/units/flexible_du/split_*/**/*
416+
variables:
417+
BUILD_ARGS: -DDU_SPLIT_TYPE=SPLIT_7_2
418+
ENABLE_ZEROMQ:
419+
after_script: []
420+
artifacts:
421+
422+
smoke split 8 cached:
423+
extends: smoke split 7.2 cached
424+
variables:
425+
BUILD_ARGS: -DDU_SPLIT_TYPE=SPLIT_8
426+
407427
smoke tsan cached:
408428
extends: .smoke tsan
409429
stage: manual
@@ -530,6 +550,23 @@ smoke relwithdeb clean:
530550
artifacts:
531551
<<: *build_artifacts
532552

553+
smoke split 7.2 clean:
554+
extends: smoke relwithdeb clean
555+
rules:
556+
- if: $CI_MERGE_REQUEST_LABELS =~ /no-cache/
557+
changes:
558+
<<: *split_changes
559+
variables:
560+
BUILD_ARGS: -DDU_SPLIT_TYPE=SPLIT_7_2
561+
ENABLE_ZEROMQ:
562+
after_script: []
563+
artifacts:
564+
565+
smoke split 8 clean:
566+
extends: smoke split 7.2 clean
567+
variables:
568+
BUILD_ARGS: -DDU_SPLIT_TYPE=SPLIT_8
569+
533570
smoke tsan clean:
534571
extends: .smoke tsan
535572
rules:

.gitlab/ci/e2e.yml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,11 +433,11 @@ android IMS:
433433
E2E_LOG_LEVEL: "warning"
434434
KUBECONFIG_VAR_NAME: "RETINA_NAMESPACE_KUBECONFIG"
435435
KUBECONFIG_VAR_NAME_EXTRA: "RETINA_NAMESPACE_KUBECONFIG_EXTRA"
436+
RETINA_PARAM_ARGS: "gnb.all.pcap=True gnb.all.mac_enable=True"
436437
needs:
437438
- job: "basic relwithdeb"
438439
artifacts: true
439440
- *retina-needs
440-
allow_failure: true
441441

442442
android x300:
443443
stage: rf
@@ -481,11 +481,10 @@ viavi:
481481
matrix:
482482
- KEYWORDS: [
483483
"ideal and 1UE",
484-
"ideal and 32UE and not experimental",
484+
"ideal and 32UE and not experimental and not dddsu",
485485
"fading and 1UE",
486-
# "fading and 32UE",
486+
"fading and 32UE",
487487
"birth-death and 1UE",
488-
# "birth-death and 32UE",
489488
"32UE and experimental and not extended",
490489
]
491490

@@ -495,17 +494,28 @@ viavi-extended:
495494
- if: $CI_DESCRIPTION =~ /Weekly/
496495
variables:
497496
KEYWORDS: "extended"
498-
allow_failure: true
499497
needs:
500498
- job: "basic avx512 dpdk"
501499
artifacts: true
502500
- *retina-needs
503501

502+
viavi-dddsu:
503+
extends: .viavi
504+
needs:
505+
- job: "basic avx512 dpdk"
506+
artifacts: true
507+
- *retina-needs
508+
allow_failure: true
509+
parallel:
510+
matrix:
511+
- KEYWORDS: [
512+
"dddsu",
513+
]
514+
504515
viavi-debug:
505516
extends: .viavi
506517
variables:
507518
MARKERS: "viavi_debug"
508-
allow_failure: true
509519
needs:
510520
- job: "basic avx512 dpdk withassert"
511521
artifacts: true

.gitlab/ci/e2e/.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
SRSGNB_REGISTRY_URI=registry.gitlab.com/softwareradiosystems/srsgnb
22
RETINA_REGISTRY_PREFIX=registry.gitlab.com/softwareradiosystems/ci/retina
3-
RETINA_VERSION=0.53.5
3+
RETINA_VERSION=0.53.8
44
UBUNTU_VERSION=24.04
55
AMARISOFT_VERSION=2023-09-08
66
SRSUE_VERSION=23.11

.gitlab/ci/release.yml

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -117,29 +117,29 @@ generate testvector tar gz:
117117
- phy_testvectors.tar
118118
expire_in: "30 days"
119119

120-
coverity-agpl:
121-
extends: .coverity_base
122-
stage: private
123-
rules:
124-
- if: *on_public_push
125-
- if: *on_public_release
126-
variables:
127-
GIT_STRATEGY: none
128-
PRIVATE_BRANCH: ""
129-
before_script:
130-
- export PROJECT_NAME="srsRAN_5G_agpl"
131-
- export DESCRIPTION="srsRAN Project AGPL build"
132-
- export COV_TOKEN="${COVERITY_TOKEN_AGPL}"
133-
# Download agpl branch
134-
- git config --global user.name "${CODEBOT_USERNAME}"
135-
- git config --global user.email "${CODEBOT_LONG_USERNAME}@noreply.gitlab.com"
136-
- git clone --depth 1 --branch $PRIVATE_BRANCH https://${CODEBOT_USERNAME}:${CODEBOT_TOKEN}@gitlab.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git /${CI_PROJECT_NAME}
137-
- cd /${CI_PROJECT_NAME}
138-
needs:
139-
- *release-var-needs
140-
- job: update private branch
141-
optional: false
142-
artifacts: false
120+
# coverity-agpl:
121+
# extends: .coverity_base
122+
# stage: private
123+
# rules:
124+
# - if: *on_public_push
125+
# - if: *on_public_release
126+
# variables:
127+
# GIT_STRATEGY: none
128+
# PRIVATE_BRANCH: ""
129+
# before_script:
130+
# - export PROJECT_NAME="srsRAN_5G_agpl"
131+
# - export DESCRIPTION="srsRAN Project AGPL build"
132+
# - export COV_TOKEN="${COVERITY_TOKEN_AGPL}"
133+
# # Download agpl branch
134+
# - git config --global user.name "${CODEBOT_USERNAME}"
135+
# - git config --global user.email "${CODEBOT_LONG_USERNAME}@noreply.gitlab.com"
136+
# - git clone --depth 1 --branch $PRIVATE_BRANCH https://${CODEBOT_USERNAME}:${CODEBOT_TOKEN}@gitlab.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git /${CI_PROJECT_NAME}
137+
# - cd /${CI_PROJECT_NAME}
138+
# needs:
139+
# - *release-var-needs
140+
# - job: update private branch
141+
# optional: false
142+
# artifacts: false
143143

144144
################################################################################
145145
# Publish

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ option(ENABLE_DPDK "Enable DPDK" OFF)
7979
option(ENABLE_LIBNUMA "Enable LibNUMA" OFF)
8080
option(ENABLE_EXPORT "Enable PIC and export libraries" OFF)
8181
option(ENABLE_TRX_DRIVER "Enable Amarisoft TRX driver library" OFF)
82+
option(ENABLE_PLUGINS "Compile plugins in the plugin folder" ON)
8283
option(BUILD_TESTS "Compile tests" ON)
8384
option(ENABLE_GPROF "Enable gprof" OFF)
8485
option(USE_PHY_TESTVECTORS "Enable testvector PHY tests" OFF)
@@ -445,6 +446,22 @@ if (BUILD_TESTS)
445446
add_subdirectory(tests/benchmarks)
446447
endif (BUILD_TESTS)
447448

449+
if (ENABLE_PLUGINS)
450+
# Discover all subdirectories in the plugin directory (but not recursively)
451+
file(GLOB SUBDIRS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/plugins/*)
452+
453+
# Loop through each plugin subdirectory
454+
foreach(subdir ${SUBDIRS})
455+
# Check if it's a directory and contains a CMakeLists.txt file
456+
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/${subdir} AND EXISTS ${CMAKE_SOURCE_DIR}/${subdir}/CMakeLists.txt)
457+
message(STATUS "Adding plugin: ${subdir}")
458+
add_subdirectory(${subdir})
459+
endif()
460+
endforeach()
461+
endif ()
462+
463+
464+
448465
########################################################################
449466
# Export (selected) libraries
450467
########################################################################

apps/cu/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ add_executable(srscu
2424
cu_appconfig_validator.cpp
2525
cu_appconfig_yaml_writer.cpp
2626
../gnb/gnb_appconfig_translators.cpp
27-
../gnb/adapters/e2_gateway_remote_connector.cpp # TODO: Delete
2827
)
2928

3029
install(TARGETS srscu

apps/cu/adapters/e2_gateways.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
*
3+
* Copyright 2021-2024 Software Radio Systems Limited
4+
*
5+
* This file is part of srsRAN.
6+
*
7+
* srsRAN is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU Affero General Public License as
9+
* published by the Free Software Foundation, either version 3 of
10+
* the License, or (at your option) any later version.
11+
*
12+
* srsRAN is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU Affero General Public License for more details.
16+
*
17+
* A copy of the GNU Affero General Public License can be found in
18+
* the LICENSE file in the top-level directory of this distribution
19+
* and at http://www.gnu.org/licenses/.
20+
*
21+
*/
22+
23+
#pragma once
24+
25+
#include "apps/services/e2/e2_appconfig.h"
26+
#include "srsran/e2/gateways/e2_network_client_factory.h"
27+
28+
namespace srsran {
29+
30+
/// Instantiates an E2AP client.
31+
std::unique_ptr<e2_connection_client>
32+
create_cu_e2_client_gateway(const e2_appconfig& e2_cfg, io_broker& broker, dlt_pcap& f1ap_pcap)
33+
{
34+
sctp_network_connector_config e2ap_sctp{};
35+
e2ap_sctp.if_name = "E2AP";
36+
e2ap_sctp.dest_name = "Near-RT-RIC";
37+
e2ap_sctp.connect_address = e2_cfg.ip_addr;
38+
e2ap_sctp.connect_port = e2_cfg.port;
39+
e2ap_sctp.ppid = E2_CP_PPID;
40+
e2ap_sctp.bind_address = e2_cfg.bind_addr;
41+
return create_e2_gateway_client(e2_sctp_gateway_config{e2ap_sctp, broker, f1ap_pcap});
42+
}
43+
44+
} // namespace srsran

apps/cu/cu.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
#include "srsran/cu_up/cu_up.h"
5353

5454
// TODO remove apps/gnb/*.h
55-
#include "apps/gnb/adapters/e2_gateway_remote_connector.h"
55+
#include "apps/cu/adapters/e2_gateways.h"
5656
#include "apps/gnb/gnb_appconfig_translators.h"
5757

5858
#include "apps/services/application_message_banners.h"
@@ -304,7 +304,7 @@ int main(int argc, char** argv)
304304
cu_f1u_gw_config.reuse_addr = false;
305305
cu_f1u_gw_config.pool_occupancy_threshold = cu_cfg.nru_cfg.pool_occupancy_threshold;
306306
std::unique_ptr<srs_cu_up::ngu_gateway> cu_f1u_gw =
307-
srs_cu_up::create_udp_ngu_gateway(cu_f1u_gw_config, *epoll_broker, *workers.cu_up_io_ul_exec);
307+
srs_cu_up::create_udp_ngu_gateway(cu_f1u_gw_config, *epoll_broker, workers.cu_up_exec_mapper->io_ul_executor());
308308
std::unique_ptr<f1u_cu_up_udp_gateway> cu_f1u_conn =
309309
srs_cu_up::create_split_f1u_gw({*cu_f1u_gw, *cu_f1u_gtpu_demux, *cu_up_dlt_pcaps.f1u, GTPU_PORT});
310310

@@ -320,18 +320,18 @@ int main(int argc, char** argv)
320320
// Create time source that ticks the timers
321321
io_timer_source time_source{app_timers, *epoll_broker, std::chrono::milliseconds{1}};
322322

323+
// Instantiate E2AP client gateway.
324+
std::unique_ptr<e2_connection_client> e2_gw_cu =
325+
create_cu_e2_client_gateway(cu_cfg.e2_cfg, *epoll_broker, *cu_cp_dlt_pcaps.e2ap);
326+
323327
// Create CU-CP config.
324328
cu_cp_build_dependencies cu_cp_dependencies;
325329
cu_cp_dependencies.cu_cp_executor = workers.cu_cp_exec;
326330
cu_cp_dependencies.cu_cp_e2_exec = workers.cu_cp_e2_exec;
327331
cu_cp_dependencies.timers = cu_timers;
328332
cu_cp_dependencies.ngap_pcap = cu_cp_dlt_pcaps.ngap.get();
329333
cu_cp_dependencies.broker = epoll_broker.get();
330-
// E2AP configuration.
331-
srsran::sctp_network_connector_config e2_cu_nw_config = generate_e2ap_nw_config(cu_cfg.e2_cfg, E2_CP_PPID);
332-
// Create E2AP GW remote connector.
333-
e2_gateway_remote_connector e2_gw_cu{*epoll_broker, e2_cu_nw_config, *cu_cp_dlt_pcaps.e2ap};
334-
cu_cp_dependencies.e2_gw = &e2_gw_cu;
334+
cu_cp_dependencies.e2_gw = e2_gw_cu.get();
335335
// create CU-CP.
336336
auto cu_cp_obj_and_cmds = cu_cp_app_unit->create_cu_cp(cu_cp_dependencies);
337337
srs_cu_cp::cu_cp& cu_cp_obj = *cu_cp_obj_and_cmds.unit;

apps/du/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ add_executable(srsdu
2424
du_appconfig_validators.cpp
2525
du_appconfig_translators.cpp
2626
du_appconfig_yaml_writer.cpp
27-
../gnb/adapters/e2_gateway_remote_connector.cpp # TODO: Delete
2827
)
2928

3029
install(TARGETS srsdu

0 commit comments

Comments
 (0)