Skip to content

Cleanup PDU Session Handling in RRC/NGAP

Currently, NGAP and RRC share the same structures and responsibilities when handling PDU Session information: this creates tight coupling, redundancy, and makes the code harder to maintain.

  • NGAP should be responsible only for: Protocol-specific encoding/decoding (3GPP TS 38.413)
  • RRC should own: PDU Session handling and storage in the UE context

This MR is the first step in a broader refactoring of the PDU Session handling code across NGAP and RRC layers, with the goal of splitting responsibilities cleanly between both modules.

  • Unified gtpu_tunnel_t for tunnel endpoint config (formerly f1u_tunnel_t)
  • Refactored and relocated PDU Session struct definitions for better separation between NGAP and RRC
    • Moved pdusession_t for PDU Session handling out of NGAP, now defined and managed by RRC only
    • Defined 3GPP TS 38.413 message-specific structs in NGAP module
    • NGAP now decodes NGAP PDU Session Resource Setup/Modify IEs and transfers decoded data to RRC via ITTI
    • Add helper functions to copy from NGAP message to pdusession_t
  • Introduced new encoders/decoders/helpers in NGAP for handling PDU Session Resource Setup/Modify procedures (e.g. decode_pdusession_transfer)
    • Migrated to NGAP and removed duplicated logic for QoS information decoding (fill_qos)
  • Improved logging of GTP tunnel info
  • Merged redundant functions (f1u_dl_gtp_update and f1u_ul_gtp_update)
  • Removed unused code and obsolete types
  • do free_func in seq_arr_erase_it on the provided range and updated unit test
  • Other fixes and simplifications (e.g. simplified and clarified naming of tunnel/session parameters and structs)

This cleanup improves code readability, has a high code churn (the deletions are ~159.7% of the insertions) and prepares for better modularity before the refactoring of PDU Session handling in RRC/NGAP.

Edited by Guido Casati

Merge request reports

Loading