From 2557df87f5114ae8bb93ab9d9373324650535931 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 19 Jan 2026 17:42:32 +0100 Subject: [PATCH] Hardcode (noS1) PDU session ID to 10 Defacto, the PDU session ID for noS1 modes is already hardcoded, as starting the nr-softmodem with --noS1 --default-pdu-id 1 leads to Assertion (entity != ((void *)0)) failed! In start_sdap_tun_gnb_first_ue_default_pdu_session() openair2/SDAP/nr_sdap/nr_sdap.c:163 Further, the --default-pdu-id parameter will be deactivated in a later commit, and we cannot rely on it. Therefore: - hardcode noS1 PDU ID (also used in --do-ra/--phy-test modes) to 10 and use in gNB&UE - pass the PDU session ID used in SDAP entity initialization down to start_sdap_tun_gnb_first_ue_default_pdu_session() to always use the correct one --- common/platform_constants.h | 3 +++ openair2/RRC/NR/rrc_gNB_nsa.c | 2 +- openair2/SDAP/nr_sdap/nr_sdap.c | 4 ++-- openair2/SDAP/nr_sdap/nr_sdap.h | 2 +- openair2/SDAP/nr_sdap/nr_sdap_entity.c | 2 +- openair3/NAS/NR_UE/nr_nas_msg.c | 2 +- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/common/platform_constants.h b/common/platform_constants.h index 2faadc3dcd..f76025c06a 100644 --- a/common/platform_constants.h +++ b/common/platform_constants.h @@ -100,5 +100,8 @@ // SDAP #define MAX_QOS_FLOWS 64 +// SDAP/5G NAS NOS1 +#define DEFAULT_NOS1_PDU_ID 10 + #define SPEED_OF_LIGHT 299792458 // in m/s #endif /* __PLATFORM_CONSTANTS_H__ */ diff --git a/openair2/RRC/NR/rrc_gNB_nsa.c b/openair2/RRC/NR/rrc_gNB_nsa.c index 3e3c462145..8c24b8aedd 100644 --- a/openair2/RRC/NR/rrc_gNB_nsa.c +++ b/openair2/RRC/NR/rrc_gNB_nsa.c @@ -201,7 +201,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc, x2ap_ENDC_sgnb_addition_req_t *m, sctp_ byte_array_t cgci = {0}; if (get_softmodem_params()->phy_test == 1 || get_softmodem_params()->do_ra == 1) { DevAssert(m == NULL); - UE->rb_config = get_default_rbconfig(10 /* EPS bearer ID */, 1 /* drb ID */, NR_CipheringAlgorithm_nea0, NR_SecurityConfig__keyToUse_master, &rrc->pdcp_config); + UE->rb_config = get_default_rbconfig(DEFAULT_NOS1_PDU_ID, 1 /* drb ID */, NR_CipheringAlgorithm_nea0, NR_SecurityConfig__keyToUse_master, &rrc->pdcp_config); int len = cg_config_info_from_ue_cap_file(sizeof tmp, tmp); DevAssert(len > 0); cgci = create_byte_array(len, tmp); diff --git a/openair2/SDAP/nr_sdap/nr_sdap.c b/openair2/SDAP/nr_sdap/nr_sdap.c index 7062895b69..7315504328 100644 --- a/openair2/SDAP/nr_sdap/nr_sdap.c +++ b/openair2/SDAP/nr_sdap/nr_sdap.c @@ -157,9 +157,9 @@ static void *sdap_tun_read_thread(void *arg) return NULL; } -void start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id_t ue_id) +void start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id_t ue_id, int pdu_session_id) { - nr_sdap_entity_t *entity = nr_sdap_get_entity(ue_id, get_softmodem_params()->default_pdu_session_id); + nr_sdap_entity_t *entity = nr_sdap_get_entity(ue_id, pdu_session_id); DevAssert(entity != NULL); DevAssert(entity->is_gnb); char *ifprefix = get_softmodem_params()->nsa ? "oaitun_gnb" : "oaitun_enb"; diff --git a/openair2/SDAP/nr_sdap/nr_sdap.h b/openair2/SDAP/nr_sdap/nr_sdap.h index c681c34ae2..49527359b3 100644 --- a/openair2/SDAP/nr_sdap/nr_sdap.h +++ b/openair2/SDAP/nr_sdap/nr_sdap.h @@ -60,7 +60,7 @@ void sdap_data_ind(int pdcp_entity, char *buf, int size); -void start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id_t ue_id); +void start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id_t ue_id, int pdu_session_id); void create_ue_ip_if(const char *ipv4, const char *ipv6, int ue_id, int pdu_session_id); #endif diff --git a/openair2/SDAP/nr_sdap/nr_sdap_entity.c b/openair2/SDAP/nr_sdap/nr_sdap_entity.c index dc747e5a60..3a4cb12b03 100644 --- a/openair2/SDAP/nr_sdap/nr_sdap_entity.c +++ b/openair2/SDAP/nr_sdap/nr_sdap_entity.c @@ -534,7 +534,7 @@ static void nr_sdap_add_entity(const int is_gnb, const ue_id_t ue_id, const sdap if (IS_SOFTMODEM_NOS1 && is_gnb) { // In NOS1 mode, terminate SDAP for the first UE on the gNB. This allows injecting/receiving // PDCP SDUs to/from the TUN interface. - start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id); + start_sdap_tun_gnb_first_ue_default_pdu_session(ue_id, sdap_entity->pdusession_id); } } diff --git a/openair3/NAS/NR_UE/nr_nas_msg.c b/openair3/NAS/NR_UE/nr_nas_msg.c index 98efd8b47e..06b75477b6 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.c +++ b/openair3/NAS/NR_UE/nr_nas_msg.c @@ -2160,7 +2160,7 @@ void *nas_nrue(void *args_p) } break; case NAS_INIT_NOS1_IF: { - const int pdu_session_id = get_softmodem_params()->default_pdu_session_id; + const int pdu_session_id = DEFAULT_NOS1_PDU_ID; const char *ip = "10.0.1.2"; const int qfi = 7; create_ue_ip_if(ip, NULL, nas->UE_id, pdu_session_id);