RRC: Multi-cell handling architecture
This MR implements a foundational multi-cell handling architecture for RRC by separating DU management from cell management and establishing a hierarchical cell organization within each DU container. The changes enable proper multi-cell support where each DU can serve multiple cells, addressing the previous limitation where DU and cell management were tightly coupled with the assumption of one cell per DU.
Key Changes:
- Data Structure Separation: Separated DU containers (DU-specific info) from cell containers (cell-specific data)
- Per-DU Cell Trees: Cells are now stored in RB trees within each DU container (
du->cells) - UE Cell Association Framework: Introduced
serving_cellsarray to track PCell and SCells for each UE with servCellIndex indexing - Cell Management Library: Extracted cell management functions into
rrc_cell_management.c/hfor better testability
Other relevant changes:
- F1AP Refactoring: cell list definitions, heap allocation to prevent stack overflow
- 5G-S-TMSI Helpers: Common helper functions for 3GPP TS 23.003 compliant construction
- Integration Tests: Comprehensive test suite for DU lookup, cell lookup, and UE cell association
- Cell Duplication Checks: Validation in F1 DU configuration update to prevent duplicate cells
- Documentation: Updated RRC developer documentation with multi-cell architecture details
Validated with RFsim in re-establishment and handover scenarios.