Refactor SDAP adaptation work for QoS This MR is an adaptation of the code introduced in !2703. The goal is a cleanup and functional refactor of the SDAP/PDCP integration, that is: - centralize SDAP configuration logic - simplify entity creation - improve robustness of role-based SDAP handling - prepare the codebase for clean support of DRB reconfiguration and teardown flows More concretely: 1. New sdap_config_t and get_sdap_Config() - Introduced an internal struct sdap_config_t to abstract SDAP config input - Centralized SDAP config parsing into new get_sdap_Config() function that translates ASN.1 NR_SDAP_Config into this internal representation. This is called during RRC triggered (re)configuration procedures. - Enable mapping of number of QoS flows > 1 2. Unified role handling with bitmasks - Added a bitmask-based entity_role field to track SDAP directions: SDAP_UL_RX, SDAP_UL_TX, SDAP_DL_RX, SDAP_DL_TX: header presence was determined by simple direction (UE vs gNB) and individual is_sdap_rx/tx() checks, however nr_sdap_rx_entity behaves differently depending on the direction of the RX entity (DL/UL), therefore this change can help enable a more accurate SDAP header handling across directions and node types. - Replaces old helpers is_sdap_rx() / is_sdap_tx() with internal checks against the role bitfield - QFI-to-DRB mapping is now annotated with direction for both data and control PDUs 3. Simplified DRB and SDAP setup - add_drb() in PDCP API now delegates SDAP config processing cleanly - new_nr_sdap_entity() is used consistently to register a fresh SDAP context for the UE and PDU session. - Also, re-use and reconfigure existing SDAP entity if already exists. - logging has been added to trace mapped QFIs from RRC and resulting table entries 4. Improved QFI-to-DRB management - Refactored nr_sdap_qfi2drb_map_update() to register QFIs based on parsed config - Ensures control PDUs are correctly routed even after reconfiguration - Extended nr_sdap_ue_qfi2drb_config: perform UL QoS flow to DRB mapping configuration for a SDAP entity has already been established according to TS 37.324, 5.3 QoS flow to DRB Mapping, 5.3.1 Configuration Procedures. Handle both UL QoS Flows mapping rules to add and to remove. QFIs will now be properly unmapped if specified via mappedQoS_FlowsToRelease, this might prevent stale QFI mappings from being used incorrectly. - nr_sdap_qfi2drb() and sdap_map_ctrl_pdu() now strictly fallback to default_drb only if a QFI mapping is missing. Missing default DRB now triggers LOG_E() (previously silent or misrouted to DRB 0). 5. Other cleanup - Remove dependencies from legacy rb_id_t
|
OpenAirInterface documentation overview |
This is the general overview page of the OpenAirInterface documentation.
This page groups links to general information, tutorials, design documents, radio integration, and special-purpose libraries.
IMPORTANT NOTE:
Before reading this documentation, we strongly advise you to keep your own repository rebased on develop
or at least to checkout the documentation on the version of the repository you are using.
Then the documentation will better reflect the features available in your repository so that you may avoid some errors.
Beware if you previously pulled the develop branch that your repository may be now behind develop.
[[TOC]]
General
- FEATURE_SET.md: lists supported features
- GET_SOURCES.md: how to download the sources
- BUILD.md: how to build the sources
- code-style-contrib.md: overall working practices, code style, and review process
- cross-compile.md: how to cross-compile OAI for ARM
- clang-format.md: how to format the code
- sanitizers.md: how to run with ASan/UBSan/MemSAN/TSan
- environment-variables.md: the environment variables used by OAI
- tuning_and_security.md: performance and security considerations
There is some general information in the OpenAirInterface Gitlab Wiki
Tutorials
- Step-by-step tutorials to set up 5G:
- RUNMODEM.md: Generic information on how to
- Run simulators
- Run with hardware
- Specific OAI modes (phy-test, do-ra, noS1)
- (5G) Using SDAP and custom DRBs
- IF setups and arbitrary frequencies
- MIMO
- How to run OAI with O-RAN 7.2 FHI
- How to run a 5G-NSA setup
- How to run a 4G setup using L1 simulator Note: we recommend the RFsimulator
- How to use the L2 simulator
- How to use the OAI channel simulator
- How to use multiple BWPs
- How to run OAI-VNF and OAI-PNF: how to run the FAPI/nFAPI split, including some general remarks on FAPI/nFAPI.
- How to use the positioning reference signal (PRS)
- How to use device-to-device communication (D2D, 4G)
- How to run with E2 agent
- How to run the physical simulators
- How to setup OAI with Nvidia Aerial and Foxconn
- How to setup OAI with LDPC accelerators (Xilinx T2/Intel ACCs)
- How to setup OAI with the XDMA FPGA LDPC accelerator
- How to do a handover
- How to setup gNB frequency
- How to use the RT data recording app
Legacy unmaintained files:
L2NFAPI_NOS1.md,L2NFAPI_S1.md: old L2simulator, not valid anymore
Designs
- General software architecture notes: SW_archi.md
- Information on E1
- Information on F1
- Information on how NR nFAPI works
- Flow graph of the L1 in gNB
- L1 threads in NR-UE
- Information on gNB MAC
- Information on gNB RRC
- Information on analog beamforming implementation
- Information on the UE 5G NAS implementation
- Information on UL-MIMO: UL-MIMO specific notes
Building and running from images
- How to build images
- How to run 5G with the RFsimulator from images
- How to run 4G with the RFsimulator from images
- How to run physical simulators in OpenShift
Libraries
General
- The T tracer: a generic tracing tool (VCD, Wireshark, GUI, to save for later, ...)
- OPT: how to trace to wireshark
- The configuration module
- The logging module
- The shared object loader
- The threadpool used in L1
- The LDPC implementation is a shared library
- The time management module
Radios
Some directories under radio contain READMEs:
The other SDRs (AW2S, LimeSDR, ...) have no READMEs.
Special-purpose libraries
- OAI has two scopes: one based on Xforms and one based on imgui, described in this README
- OAI comes with an integrated telnet server to monitor and control
- OAI comes with an integrated web server
Testing
- UnitTests.md explains the unit testing setup
- Component tests are under
tests/. Currently, there is a simple CU-UP tester, see the corresponding README.md. - TESTBenches.md lists the CI setup and links to pipelines
- The CI setup uses a custom framework to run end-to-end tests.
Developer tools
- formatting is a clang-format error detection tool
- iwyu is a tool to detect
#includeerrors - docker-dev-env is a ubuntu24 docker development environment