Commit 4b5d5c1a authored by Guido Casati's avatar Guido Casati

Platform constants: consolidate PDU session limit constants

Replace NGAP_MAX_PDU_SESSION and E1AP_MAX_NUM_PDU_SESSIONS with
shared NR_MAX_NB_PDU_SESSIONS constant. The value (256) is consistent
with both TS 38.331, TS 38.413 and TS 38.463

All protocol layers (NGAP, E1AP, RRC, SDAP) now use a single
shared constant for maximum PDU sessions per UE, ensuring
consistency across the codebase

E1AP_MAX_NUM_PDU_SESSIONS (was 4) is removed from e1ap_messages_types.h
Signed-off-by: default avatarGuido Casati <guido.casati@openairinterface.org>
parent 67e646aa
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
#define NB_RB_MAX (11 + 3) /* LTE_maxDRB from LTE_asn_constant.h + 3 SRBs */ #define NB_RB_MAX (11 + 3) /* LTE_maxDRB from LTE_asn_constant.h + 3 SRBs */
#define NR_NB_RB_MAX (29 + 3) /* NR_maxDRB from NR_asn_constant.hm + 3 SRBs */ #define NR_NB_RB_MAX (29 + 3) /* NR_maxDRB from NR_asn_constant.hm + 3 SRBs */
#define NGAP_MAX_PDU_SESSION (256) /* As defined in TS 38.413 9.2.1.1 Range Bound for PDU Sessions. */ #define NR_MAX_NB_PDU_SESSIONS (256)
#define MAX_DRBS_PER_UE (32) /* Maximum number of Data Radio Bearers per UE #define MAX_DRBS_PER_UE (32) /* Maximum number of Data Radio Bearers per UE
* defined for NGAP in TS 38.413 - maxnoofDRBs */ * defined for NGAP in TS 38.413 - maxnoofDRBs */
......
...@@ -301,7 +301,7 @@ static int trigger_ngap_pdu_session_release(char *buf, int debug, telnet_printfu ...@@ -301,7 +301,7 @@ static int trigger_ngap_pdu_session_release(char *buf, int debug, telnet_printfu
ERROR_MSG_RET("Missing input. Usage: trigger_pdu_session_release [ue_id=gNB_ue_ngap_id(int,opt)],pdusession_id(int)[,pdusession_id(int)...]\n"); ERROR_MSG_RET("Missing input. Usage: trigger_pdu_session_release [ue_id=gNB_ue_ngap_id(int,opt)],pdusession_id(int)[,pdusession_id(int)...]\n");
} }
char *tokens[NGAP_MAX_PDU_SESSION + 1]; char *tokens[NR_MAX_NB_PDU_SESSIONS + 1];
int count = 0; int count = 0;
for (char *tok = strtok(buf, ","); tok != NULL && count < (int)sizeofArray(tokens); tok = strtok(NULL, ",")) { for (char *tok = strtok(buf, ","); tok != NULL && count < (int)sizeofArray(tokens); tok = strtok(NULL, ",")) {
......
...@@ -10,13 +10,13 @@ ...@@ -10,13 +10,13 @@
#include "common/ngran_types.h" #include "common/ngran_types.h"
#include "common/platform_types.h" #include "common/platform_types.h"
#include "common/5g_platform_types.h" #include "common/5g_platform_types.h"
#include "common/platform_constants.h"
/* Definitions according to 3GPP TS 38.463 */ /* Definitions according to 3GPP TS 38.463 */
#define E1AP_MAX_NUM_TRANSAC_IDS 4 #define E1AP_MAX_NUM_TRANSAC_IDS 4
#define E1AP_MAX_NUM_PLMNS 4 #define E1AP_MAX_NUM_PLMNS 4
#define E1AP_MAX_NUM_CELL_GROUPS 4 #define E1AP_MAX_NUM_CELL_GROUPS 4
#define E1AP_MAX_NUM_QOS_FLOWS 64 #define E1AP_MAX_NUM_QOS_FLOWS 64
#define E1AP_MAX_NUM_PDU_SESSIONS 4
#define E1AP_MAX_NUM_DRBS 32 #define E1AP_MAX_NUM_DRBS 32
#define E1AP_MAX_NUM_UP_PARAM 4 #define E1AP_MAX_NUM_UP_PARAM 4
#define E1AP_SECURITY_KEY_SIZE 16 // keys have 128 bits length #define E1AP_SECURITY_KEY_SIZE 16 // keys have 128 bits length
...@@ -492,7 +492,7 @@ typedef struct e1ap_bearer_setup_req_s { ...@@ -492,7 +492,7 @@ typedef struct e1ap_bearer_setup_req_s {
int *inactivityTimerUE; int *inactivityTimerUE;
// NG-RAN PDU Session Resource To Setup List (M) // NG-RAN PDU Session Resource To Setup List (M)
int numPDUSessions; int numPDUSessions;
pdu_session_to_setup_t pduSession[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_to_setup_t pduSession[NR_MAX_NB_PDU_SESSIONS];
} e1ap_bearer_setup_req_t; } e1ap_bearer_setup_req_t;
/** Bearer Context Setup Failure (9.2.2.3 3GPP TS 38.463) */ /** Bearer Context Setup Failure (9.2.2.3 3GPP TS 38.463) */
...@@ -527,13 +527,13 @@ typedef struct e1ap_bearer_mod_req_s { ...@@ -527,13 +527,13 @@ typedef struct e1ap_bearer_mod_req_s {
bool dataDiscardRequired; bool dataDiscardRequired;
// NG-RAN PDU Session Resource To Setup List (O) // NG-RAN PDU Session Resource To Setup List (O)
int numPDUSessions; int numPDUSessions;
pdu_session_to_setup_t pduSession[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_to_setup_t pduSession[NR_MAX_NB_PDU_SESSIONS];
// NG-RAN PDU Session Resource To Modify List (O) // NG-RAN PDU Session Resource To Modify List (O)
int numPDUSessionsMod; int numPDUSessionsMod;
pdu_session_to_mod_t pduSessionMod[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_to_mod_t pduSessionMod[NR_MAX_NB_PDU_SESSIONS];
// NG-RAN PDU Session Resource To Remove List (O) // NG-RAN PDU Session Resource To Remove List (O)
int numPDUSessionsRem; int numPDUSessionsRem;
pdu_session_to_remove_t pduSessionRem[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_to_remove_t pduSessionRem[NR_MAX_NB_PDU_SESSIONS];
} e1ap_bearer_mod_req_t; } e1ap_bearer_mod_req_t;
typedef struct e1ap_bearer_release_cmd_s { typedef struct e1ap_bearer_release_cmd_s {
...@@ -625,7 +625,7 @@ typedef struct e1ap_bearer_setup_resp_s { ...@@ -625,7 +625,7 @@ typedef struct e1ap_bearer_setup_resp_s {
uint32_t gNB_cu_cp_ue_id; uint32_t gNB_cu_cp_ue_id;
uint32_t gNB_cu_up_ue_id; uint32_t gNB_cu_up_ue_id;
int numPDUSessions; int numPDUSessions;
pdu_session_setup_t pduSession[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_setup_t pduSession[NR_MAX_NB_PDU_SESSIONS];
} e1ap_bearer_setup_resp_t; } e1ap_bearer_setup_resp_t;
typedef struct e1ap_bearer_modif_resp_s { typedef struct e1ap_bearer_modif_resp_s {
...@@ -635,7 +635,7 @@ typedef struct e1ap_bearer_modif_resp_s { ...@@ -635,7 +635,7 @@ typedef struct e1ap_bearer_modif_resp_s {
uint32_t gNB_cu_up_ue_id; uint32_t gNB_cu_up_ue_id;
// NG-RAN PDU Session Resource Modified List (O) // NG-RAN PDU Session Resource Modified List (O)
int numPDUSessionsMod; int numPDUSessionsMod;
pdu_session_modif_t pduSessionMod[E1AP_MAX_NUM_PDU_SESSIONS]; pdu_session_modif_t pduSessionMod[NR_MAX_NB_PDU_SESSIONS];
} e1ap_bearer_modif_resp_t; } e1ap_bearer_modif_resp_t;
/* E1AP Connection Loss indication */ /* E1AP Connection Loss indication */
......
...@@ -479,7 +479,7 @@ typedef struct { ...@@ -479,7 +479,7 @@ typedef struct {
cell_id_t targetCellId; cell_id_t targetCellId;
// PDU Session Resource Information List // PDU Session Resource Information List
uint16_t nb_pdu_session_resource; uint16_t nb_pdu_session_resource;
pdusession_resource_info_t pdu_session_resource[NGAP_MAX_PDU_SESSION]; pdusession_resource_info_t pdu_session_resource[NR_MAX_NB_PDU_SESSIONS];
// UE History Information // UE History Information
last_visited_ngran_cell_info_t ue_history_info; last_visited_ngran_cell_info_t ue_history_info;
} source_to_target_transparent_container_t; } source_to_target_transparent_container_t;
...@@ -511,7 +511,7 @@ typedef struct { ...@@ -511,7 +511,7 @@ typedef struct {
target_ran_node_id_t target_gnb_id; target_ran_node_id_t target_gnb_id;
// PDU Session Resource List // PDU Session Resource List
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
pdusession_resource_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_resource_t pdusessions[NR_MAX_NB_PDU_SESSIONS];
// Source to Target Transparent Container // Source to Target Transparent Container
source_to_target_transparent_container_t *source2target; source_to_target_transparent_container_t *source2target;
} ngap_handover_required_t; } ngap_handover_required_t;
...@@ -559,7 +559,7 @@ typedef struct { ...@@ -559,7 +559,7 @@ typedef struct {
ngap_security_context_t security_context; ngap_security_context_t security_context;
// PDU Session Resource Setup List // PDU Session Resource Setup List
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
ho_request_pdusession_t pduSessionResourceSetupList[NGAP_MAX_PDU_SESSION]; ho_request_pdusession_t pduSessionResourceSetupList[NR_MAX_NB_PDU_SESSIONS];
// Allowed NSSAI // Allowed NSSAI
uint8_t nb_allowed_nssais; uint8_t nb_allowed_nssais;
nssai_t allowed_nssai[8]; nssai_t allowed_nssai[8];
...@@ -597,7 +597,7 @@ typedef struct { ...@@ -597,7 +597,7 @@ typedef struct {
// RAN UE NGAP ID // RAN UE NGAP ID
uint64_t amf_ue_ngap_id; uint64_t amf_ue_ngap_id;
// PDU Session Resource Admitted List // PDU Session Resource Admitted List
pdu_session_resource_admitted_t pdusessions[NGAP_MAX_PDU_SESSION]; pdu_session_resource_admitted_t pdusessions[NR_MAX_NB_PDU_SESSIONS];
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
// Target to Source Transparent Container // Target to Source Transparent Container
byte_array_t target2source; byte_array_t target2source;
...@@ -629,7 +629,7 @@ typedef struct { ...@@ -629,7 +629,7 @@ typedef struct {
ho_type_t handoverType; ho_type_t handoverType;
// PDU Session Resource Handover List // PDU Session Resource Handover List
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
pdusession_resource_handover_t pdu_sessions[NGAP_MAX_PDU_SESSION]; pdusession_resource_handover_t pdu_sessions[NR_MAX_NB_PDU_SESSIONS];
// Target to Source Transparent Container // Target to Source Transparent Container
byte_array_t handoverCommand; byte_array_t handoverCommand;
} ngap_handover_command_t; } ngap_handover_command_t;
...@@ -680,12 +680,12 @@ typedef struct ngap_initial_context_setup_resp_s { ...@@ -680,12 +680,12 @@ typedef struct ngap_initial_context_setup_resp_s {
/* Number of pdusession setup-ed in the list */ /* Number of pdusession setup-ed in the list */
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession setup-ed by RRC layers */ /* list of pdusession setup-ed by RRC layers */
pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_setup_t pdusessions[NR_MAX_NB_PDU_SESSIONS];
/* Number of pdusession failed to be setup in list */ /* Number of pdusession failed to be setup in list */
uint16_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
/* list of pdusessions that failed to be setup */ /* list of pdusessions that failed to be setup */
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NR_MAX_NB_PDU_SESSIONS];
} ngap_initial_context_setup_resp_t; } ngap_initial_context_setup_resp_t;
typedef struct ngap_initial_context_setup_fail_s { typedef struct ngap_initial_context_setup_fail_s {
...@@ -769,7 +769,7 @@ typedef struct ngap_initial_context_setup_req_s { ...@@ -769,7 +769,7 @@ typedef struct ngap_initial_context_setup_req_s {
/* Number of pdusession to be setup in the list */ /* Number of pdusession to be setup in the list */
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
// PDU Session Resource Setup Request List // PDU Session Resource Setup Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NR_MAX_NB_PDU_SESSIONS];
/* Mobility Restriction List */ /* Mobility Restriction List */
uint8_t mobility_restriction_flag; uint8_t mobility_restriction_flag;
...@@ -795,7 +795,7 @@ typedef struct ngap_pdusession_setup_req_s { ...@@ -795,7 +795,7 @@ typedef struct ngap_pdusession_setup_req_s {
uint16_t nb_pdusessions_tosetup; uint16_t nb_pdusessions_tosetup;
// PDU Session Resource Setup Request List // PDU Session Resource Setup Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NR_MAX_NB_PDU_SESSIONS];
/* UE Aggregated Max Bitrates */ /* UE Aggregated Max Bitrates */
bool has_ue_ambr; bool has_ue_ambr;
...@@ -808,12 +808,12 @@ typedef struct ngap_pdusession_setup_resp_s { ...@@ -808,12 +808,12 @@ typedef struct ngap_pdusession_setup_resp_s {
/* Number of pdusession setup-ed in the list */ /* Number of pdusession setup-ed in the list */
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession setup-ed by RRC layers */ /* list of pdusession setup-ed by RRC layers */
pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_setup_t pdusessions[NR_MAX_NB_PDU_SESSIONS];
/* Number of pdusession failed to be setup in list */ /* Number of pdusession failed to be setup in list */
uint16_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
/* list of pdusessions that failed to be setup */ /* list of pdusessions that failed to be setup */
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NR_MAX_NB_PDU_SESSIONS];
} ngap_pdusession_setup_resp_t; } ngap_pdusession_setup_resp_t;
// NGAP --> RRC messages // NGAP --> RRC messages
...@@ -831,7 +831,7 @@ typedef struct ngap_ue_release_req_s { ...@@ -831,7 +831,7 @@ typedef struct ngap_ue_release_req_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
// PDU Session Resource List (optional) // PDU Session Resource List (optional)
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
uint8_t pdusession_ids[NGAP_MAX_PDU_SESSION]; uint8_t pdusession_ids[NR_MAX_NB_PDU_SESSIONS];
// Cause (mandatory) // Cause (mandatory)
ngap_cause_t cause; ngap_cause_t cause;
} ngap_ue_release_req_t; } ngap_ue_release_req_t;
...@@ -842,7 +842,7 @@ typedef struct { ...@@ -842,7 +842,7 @@ typedef struct {
// PDU Session Resource List (optional) // PDU Session Resource List (optional)
uint16_t num_pdu_sessions; uint16_t num_pdu_sessions;
// PDU Session ID (mandatory) // PDU Session ID (mandatory)
uint8_t pdu_session_id[NGAP_MAX_PDU_SESSION]; uint8_t pdu_session_id[NR_MAX_NB_PDU_SESSIONS];
} ngap_ue_release_complete_t; } ngap_ue_release_complete_t;
typedef struct ngap_pdusession_modify_req_s { typedef struct ngap_pdusession_modify_req_s {
...@@ -856,7 +856,7 @@ typedef struct ngap_pdusession_modify_req_s { ...@@ -856,7 +856,7 @@ typedef struct ngap_pdusession_modify_req_s {
uint16_t nb_pdusessions_tomodify; uint16_t nb_pdusessions_tomodify;
// PDU Session Resource Modify Request List // PDU Session Resource Modify Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NR_MAX_NB_PDU_SESSIONS];
} ngap_pdusession_modify_req_t; } ngap_pdusession_modify_req_t;
/* 9.2.1.6 of 3GPP TS 38.413 */ /* 9.2.1.6 of 3GPP TS 38.413 */
...@@ -867,10 +867,10 @@ typedef struct ngap_pdusession_modify_resp_s { ...@@ -867,10 +867,10 @@ typedef struct ngap_pdusession_modify_resp_s {
uint64_t amf_ue_ngap_id; uint64_t amf_ue_ngap_id;
// PDU Session Resource Modify Response List (0..256) // PDU Session Resource Modify Response List (0..256)
uint16_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
pdusession_modify_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_modify_t pdusessions[NR_MAX_NB_PDU_SESSIONS];
// PDU Session Resource Failed to Modify List (0..256) // PDU Session Resource Failed to Modify List (0..256)
uint16_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NR_MAX_NB_PDU_SESSIONS];
} ngap_pdusession_modify_resp_t; } ngap_pdusession_modify_resp_t;
typedef struct ngap_pdusession_release_command_s { typedef struct ngap_pdusession_release_command_s {
...@@ -885,7 +885,7 @@ typedef struct ngap_pdusession_release_command_s { ...@@ -885,7 +885,7 @@ typedef struct ngap_pdusession_release_command_s {
// PDU Session Resource to Release List (mandatory) // PDU Session Resource to Release List (mandatory)
uint16_t nb_pdusessions_torelease; uint16_t nb_pdusessions_torelease;
uint16_t pdusession_ids[NGAP_MAX_PDU_SESSION]; uint16_t pdusession_ids[NR_MAX_NB_PDU_SESSIONS];
} ngap_pdusession_release_command_t; } ngap_pdusession_release_command_t;
...@@ -903,7 +903,7 @@ typedef struct ngap_pdusession_release_resp_s { ...@@ -903,7 +903,7 @@ typedef struct ngap_pdusession_release_resp_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
// PDU Session Resource Released List // PDU Session Resource Released List
uint16_t nb_of_pdusessions_released; uint16_t nb_of_pdusessions_released;
pdusession_release_t pdusession_release[NGAP_MAX_PDU_SESSION]; pdusession_release_t pdusession_release[NR_MAX_NB_PDU_SESSIONS];
} ngap_pdusession_release_resp_t; } ngap_pdusession_release_resp_t;
/** NG PAGING PROCEDURES (9.2.4. of 3GPP TS 38.413) */ /** NG PAGING PROCEDURES (9.2.4. of 3GPP TS 38.413) */
......
...@@ -1100,7 +1100,7 @@ static bool append_e1_drb_mod_req(e1ap_bearer_mod_req_t *req, ...@@ -1100,7 +1100,7 @@ static bool append_e1_drb_mod_req(e1ap_bearer_mod_req_t *req,
// Create new PDU session modification entry if not found // Create new PDU session modification entry if not found
if (!pdu_mod) { if (!pdu_mod) {
DevAssert(req->numPDUSessionsMod < E1AP_MAX_NUM_PDU_SESSIONS); DevAssert(req->numPDUSessionsMod < NR_MAX_NB_PDU_SESSIONS);
int new_index = req->numPDUSessionsMod++; int new_index = req->numPDUSessionsMod++;
req->pduSessionMod[new_index].sessionId = pdu_id; req->pduSessionMod[new_index].sessionId = pdu_id;
pdu_mod = &req->pduSessionMod[new_index]; pdu_mod = &req->pduSessionMod[new_index];
......
...@@ -471,7 +471,7 @@ int rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, instance_t ...@@ -471,7 +471,7 @@ int rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, instance_t
* According to TS 38.413, establishment of such a PDU session shall be * According to TS 38.413, establishment of such a PDU session shall be
* reported as failed in the response. */ * reported as failed in the response. */
int ps_count = 0; int ps_count = 0;
pdusession_t psessions[NGAP_MAX_PDU_SESSION] = {0}; pdusession_t psessions[NR_MAX_NB_PDU_SESSIONS] = {0};
for (int i = 0; i < req->nb_of_pdusessions; ++i) { for (int i = 0; i < req->nb_of_pdusessions; ++i) {
const pdusession_resource_item_t *src = &req->pdusession[i]; const pdusession_resource_item_t *src = &req->pdusession[i];
...@@ -871,8 +871,7 @@ void rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(MessageDef *msg_p, instance_t ins ...@@ -871,8 +871,7 @@ void rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(MessageDef *msg_p, instance_t ins
UE->amf_ue_ngap_id = msg->amf_ue_ngap_id; UE->amf_ue_ngap_id = msg->amf_ue_ngap_id;
pdusession_t to_setup[NR_MAX_NB_PDU_SESSIONS] = {0};
pdusession_t to_setup[NGAP_MAX_PDU_SESSION] = {0};
for (int i = 0; i < msg->nb_pdusessions_tosetup; ++i) for (int i = 0; i < msg->nb_pdusessions_tosetup; ++i)
cp_pdusession_resource_item_to_pdusession(&to_setup[i], &msg->pdusession[i]); cp_pdusession_resource_item_to_pdusession(&to_setup[i], &msg->pdusession[i]);
...@@ -974,7 +973,7 @@ int rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(const ngap_pdusession_modify_req_ ...@@ -974,7 +973,7 @@ int rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(const ngap_pdusession_modify_req_
uint8_t xid = rrc_gNB_get_next_transaction_identifier(rrc->module_id); uint8_t xid = rrc_gNB_get_next_transaction_identifier(rrc->module_id);
bool all_failed = true; bool all_failed = true;
DevAssert(req->nb_pdusessions_tomodify <= NGAP_MAX_PDU_SESSION); DevAssert(req->nb_pdusessions_tomodify <= NR_MAX_NB_PDU_SESSIONS);
for (int i = 0; i < req->nb_pdusessions_tomodify; i++) { for (int i = 0; i < req->nb_pdusessions_tomodify; i++) {
const pdusession_resource_item_t *sessMod = &req->pdusession[i]; const pdusession_resource_item_t *sessMod = &req->pdusession[i];
rrc_pdu_session_param_t *session = find_pduSession(&UE->pduSessions, sessMod->pdusession_id); rrc_pdu_session_param_t *session = find_pduSession(&UE->pduSessions, sessMod->pdusession_id);
...@@ -1043,7 +1042,7 @@ int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE ...@@ -1043,7 +1042,7 @@ int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE
session->status = PDU_SESSION_STATUS_ESTABLISHED; session->status = PDU_SESSION_STATUS_ESTABLISHED;
session->cause.type = NGAP_CAUSE_NOTHING; session->cause.type = NGAP_CAUSE_NOTHING;
// Fill response // Fill response
DevAssert(resp->nb_of_pdusessions <= NGAP_MAX_PDU_SESSION); DevAssert(resp->nb_of_pdusessions <= NR_MAX_NB_PDU_SESSIONS);
pdusession_modify_t *p = &resp->pdusessions[resp->nb_of_pdusessions++]; pdusession_modify_t *p = &resp->pdusessions[resp->nb_of_pdusessions++];
p->pdusession_id = session->param.pdusession_id; p->pdusession_id = session->param.pdusession_id;
FOR_EACH_SEQ_ARR(nr_rrc_qos_t *, qos_session, &session->param.qos) { FOR_EACH_SEQ_ARR(nr_rrc_qos_t *, qos_session, &session->param.qos) {
...@@ -1053,7 +1052,7 @@ int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE ...@@ -1053,7 +1052,7 @@ int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE
} }
p->pdusession_id = session->param.pdusession_id; p->pdusession_id = session->param.pdusession_id;
} else if (session->status == PDU_SESSION_STATUS_FAILED) { } else if (session->status == PDU_SESSION_STATUS_FAILED) {
DevAssert(resp->nb_of_pdusessions_failed <= NGAP_MAX_PDU_SESSION); DevAssert(resp->nb_of_pdusessions_failed <= NR_MAX_NB_PDU_SESSIONS);
pdusession_failed_t *failed = &resp->pdusessions_failed[resp->nb_of_pdusessions_failed++]; pdusession_failed_t *failed = &resp->pdusessions_failed[resp->nb_of_pdusessions_failed++];
failed->pdusession_id = session->param.pdusession_id; failed->pdusession_id = session->param.pdusession_id;
failed->cause = session->cause; failed->cause = session->cause;
...@@ -1088,7 +1087,7 @@ void rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ(const module_id_t gnb_mod_idP, ...@@ -1088,7 +1087,7 @@ void rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ(const module_id_t gnb_mod_idP,
req->cause.value = causeP.value; req->cause.value = causeP.value;
// PDU Session Resource List (optional) // PDU Session Resource List (optional)
FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t *, session, &UE->pduSessions) { FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t *, session, &UE->pduSessions) {
DevAssert(req->nb_of_pdusessions < NGAP_MAX_PDU_SESSION); DevAssert(req->nb_of_pdusessions < NR_MAX_NB_PDU_SESSIONS);
req->pdusession_ids[req->nb_of_pdusessions] = session->param.pdusession_id; req->pdusession_ids[req->nb_of_pdusessions] = session->param.pdusession_id;
req->nb_of_pdusessions++; req->nb_of_pdusessions++;
} }
...@@ -1205,8 +1204,8 @@ int rrc_gNB_process_Handover_Request(gNB_RRC_INST *rrc, ngap_handover_request_t ...@@ -1205,8 +1204,8 @@ int rrc_gNB_process_Handover_Request(gNB_RRC_INST *rrc, ngap_handover_request_t
nr_rrc_pdcp_config_security(UE, true); nr_rrc_pdcp_config_security(UE, true);
// Process all PDU Session Resource Setup items from handover request // Process all PDU Session Resource Setup items from handover request
DevAssert(msg->nb_of_pdusessions <= NGAP_MAX_PDU_SESSION); DevAssert(msg->nb_of_pdusessions <= NR_MAX_NB_PDU_SESSIONS);
pdusession_t to_setup[NGAP_MAX_PDU_SESSION]; pdusession_t to_setup[NR_MAX_NB_PDU_SESSIONS];
for (int i = 0; i < msg->nb_of_pdusessions; i++) { for (int i = 0; i < msg->nb_of_pdusessions; i++) {
ho_request_pdusession_t *ho_pdu = &msg->pduSessionResourceSetupList[i]; ho_request_pdusession_t *ho_pdu = &msg->pduSessionResourceSetupList[i];
pdusession_t *pdu = &to_setup[i]; pdusession_t *pdu = &to_setup[i];
...@@ -1458,7 +1457,7 @@ void rrc_gNB_send_NGAP_HANDOVER_REQUEST_ACKNOWLEDGE(gNB_RRC_INST *rrc, gNB_RRC_U ...@@ -1458,7 +1457,7 @@ void rrc_gNB_send_NGAP_HANDOVER_REQUEST_ACKNOWLEDGE(gNB_RRC_INST *rrc, gNB_RRC_U
FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t*, session, &UE->pduSessions) { FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t*, session, &UE->pduSessions) {
session->status = PDU_SESSION_STATUS_ESTABLISHED; session->status = PDU_SESSION_STATUS_ESTABLISHED;
// PDU Session ID // PDU Session ID
DevAssert(msg->nb_of_pdusessions < NGAP_MAX_PDU_SESSION); DevAssert(msg->nb_of_pdusessions < NR_MAX_NB_PDU_SESSIONS);
pdu_session_resource_admitted_t *pdu = &msg->pdusessions[msg->nb_of_pdusessions++]; pdu_session_resource_admitted_t *pdu = &msg->pdusessions[msg->nb_of_pdusessions++];
pdu->pdu_session_id = session->param.pdusession_id; pdu->pdu_session_id = session->param.pdusession_id;
// Handover Request Acknowledge Transfer // Handover Request Acknowledge Transfer
...@@ -1545,7 +1544,7 @@ void rrc_gNB_send_NGAP_PDUSESSION_RELEASE_RESPONSE(gNB_RRC_INST *rrc, gNB_RRC_UE ...@@ -1545,7 +1544,7 @@ void rrc_gNB_send_NGAP_PDUSESSION_RELEASE_RESPONSE(gNB_RRC_INST *rrc, gNB_RRC_UE
if (xid == session->xid) { if (xid == session->xid) {
const pdusession_t *pdusession = &session->param; const pdusession_t *pdusession = &session->param;
if (session->status == PDU_SESSION_STATUS_TORELEASE) { if (session->status == PDU_SESSION_STATUS_TORELEASE) {
DevAssert(resp->nb_of_pdusessions_released < NGAP_MAX_PDU_SESSION); DevAssert(resp->nb_of_pdusessions_released < NR_MAX_NB_PDU_SESSIONS);
resp->pdusession_release[resp->nb_of_pdusessions_released++].pdusession_id = pdusession->pdusession_id; resp->pdusession_release[resp->nb_of_pdusessions_released++].pdusession_id = pdusession->pdusession_id;
} }
} }
...@@ -1736,12 +1735,12 @@ void rrc_gNB_send_NGAP_HANDOVER_REQUIRED(gNB_RRC_INST *rrc, ...@@ -1736,12 +1735,12 @@ void rrc_gNB_send_NGAP_HANDOVER_REQUIRED(gNB_RRC_INST *rrc,
if (pduSession->status != PDU_SESSION_STATUS_ESTABLISHED) if (pduSession->status != PDU_SESSION_STATUS_ESTABLISHED)
continue; continue;
pdusession_t *session = &pduSession->param; pdusession_t *session = &pduSession->param;
DevAssert(msg.nb_of_pdusessions < NGAP_MAX_PDU_SESSION); DevAssert(msg.nb_of_pdusessions < NR_MAX_NB_PDU_SESSIONS);
pdusession_resource_t *pdu = &msg.pdusessions[msg.nb_of_pdusessions++]; pdusession_resource_t *pdu = &msg.pdusessions[msg.nb_of_pdusessions++];
// PDU Session ID // PDU Session ID
pdu->pdusession_id = session->pdusession_id; pdu->pdusession_id = session->pdusession_id;
// PDU Session Resource Information List (O) // PDU Session Resource Information List (O)
DevAssert(msg.source2target->nb_pdu_session_resource < NGAP_MAX_PDU_SESSION); DevAssert(msg.source2target->nb_pdu_session_resource < NR_MAX_NB_PDU_SESSIONS);
pdusession_resource_info_t *pdu_info = &msg.source2target->pdu_session_resource[msg.source2target->nb_pdu_session_resource++]; pdusession_resource_info_t *pdu_info = &msg.source2target->pdu_session_resource[msg.source2target->nb_pdu_session_resource++];
pdu_info->pdusession_id = session->pdusession_id; pdu_info->pdusession_id = session->pdusession_id;
FOR_EACH_SEQ_ARR(nr_rrc_qos_t *, qos, &session->qos) { FOR_EACH_SEQ_ARR(nr_rrc_qos_t *, qos, &session->qos) {
......
...@@ -127,7 +127,7 @@ rrc_pdu_session_param_t *add_pduSession(seq_arr_t *sessions_ptr, const pdusessio ...@@ -127,7 +127,7 @@ rrc_pdu_session_param_t *add_pduSession(seq_arr_t *sessions_ptr, const pdusessio
DevAssert(sessions_ptr); DevAssert(sessions_ptr);
DevAssert(in); DevAssert(in);
if (seq_arr_size(sessions_ptr) == NGAP_MAX_PDU_SESSION) { if (seq_arr_size(sessions_ptr) == NR_MAX_NB_PDU_SESSIONS) {
LOG_W(NR_RRC, "Reached maximum number of PDU Session = %ld\n", seq_arr_size(sessions_ptr)); LOG_W(NR_RRC, "Reached maximum number of PDU Session = %ld\n", seq_arr_size(sessions_ptr));
return NULL; return NULL;
} }
...@@ -159,7 +159,7 @@ static bool eq_drb_pdu_session_id(const void *vval, const void *vit) ...@@ -159,7 +159,7 @@ static bool eq_drb_pdu_session_id(const void *vval, const void *vit)
drb_t *find_drb_by_pdusession_id(seq_arr_t *seq, int pdusession_id) drb_t *find_drb_by_pdusession_id(seq_arr_t *seq, int pdusession_id)
{ {
DevAssert(seq); DevAssert(seq);
DevAssert(pdusession_id > 0 && pdusession_id <= NGAP_MAX_PDU_SESSION); DevAssert(pdusession_id > 0 && pdusession_id <= NR_MAX_NB_PDU_SESSIONS);
elm_arr_t elm = find_if(seq, &pdusession_id, eq_drb_pdu_session_id); elm_arr_t elm = find_if(seq, &pdusession_id, eq_drb_pdu_session_id);
if (elm.found) if (elm.found)
return (drb_t *)elm.it; return (drb_t *)elm.it;
...@@ -223,7 +223,7 @@ drb_t *nr_rrc_add_drb(seq_arr_t *drb_ptr, int pdusession_id, nr_pdcp_configurati ...@@ -223,7 +223,7 @@ drb_t *nr_rrc_add_drb(seq_arr_t *drb_ptr, int pdusession_id, nr_pdcp_configurati
{ {
DevAssert(drb_ptr); DevAssert(drb_ptr);
DevAssert(pdcp != NULL); DevAssert(pdcp != NULL);
DevAssert(pdusession_id > 0 && pdusession_id <= NGAP_MAX_PDU_SESSION); DevAssert(pdusession_id > 0 && pdusession_id <= NR_MAX_NB_PDU_SESSIONS);
// Get next available DRB ID // Get next available DRB ID
int drb_id = 0; int drb_id = 0;
......
...@@ -575,7 +575,7 @@ bool nr_sdap_delete_entity(ue_id_t ue_id, int pdusession_id) ...@@ -575,7 +575,7 @@ bool nr_sdap_delete_entity(ue_id_t ue_id, int pdusession_id)
nr_sdap_entity_t *entityPrev = NULL; nr_sdap_entity_t *entityPrev = NULL;
int upperBound = 0; int upperBound = 0;
if (entityPtr == NULL && (pdusession_id) * (pdusession_id - NGAP_MAX_PDU_SESSION) > 0) { if (entityPtr == NULL && (pdusession_id) * (pdusession_id - NR_MAX_NB_PDU_SESSIONS) > 0) {
LOG_E(SDAP, "SDAP entities not established or Invalid range of pdusession_id [0, 256].\n"); LOG_E(SDAP, "SDAP entities not established or Invalid range of pdusession_id [0, 256].\n");
return false; return false;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment