diff --git a/common/platform_constants.h b/common/platform_constants.h index 8e17c183430789af16257388695fb285a2b9a7f6..454c24657b565945d466c3206f9ab094c2864b3a 100644 --- a/common/platform_constants.h +++ b/common/platform_constants.h @@ -70,7 +70,10 @@ #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 NGAP_MAX_DRBS_PER_UE (32) /* As defined in TS 38.413 9.2.1.1 - maxnoofDRBs */ + +#define MAX_DRBS_PER_UE (32) /* Maximum number of Data Radio Bearers per UE + * defined for NGAP in TS 38.413 - maxnoofDRBs */ +#define MAX_PDUS_PER_UE (8) /* Maximum number of PDU Sessions per UE */ #define NB_RB_MBMS_MAX (29 * 16) /* 29 = LTE_maxSessionPerPMCH + 16 = LTE_maxServiceCount from LTE_asn_constant.h */ diff --git a/openair2/COMMON/ngap_messages_types.h b/openair2/COMMON/ngap_messages_types.h index 2f9f56e23aad23e8645bda42879db9032a1f9c92..a03a9d88b6a25373529c0796ea08728176cc80ec 100644 --- a/openair2/COMMON/ngap_messages_types.h +++ b/openair2/COMMON/ngap_messages_types.h @@ -277,7 +277,7 @@ typedef struct pdusession_s { /* S-GW Tunnel endpoint identifier */ uint32_t gtp_teid; /* Stores the DRB ID of the DRBs used by this PDU Session */ - uint8_t used_drbs[NGAP_MAX_DRBS_PER_UE]; + uint8_t used_drbs[MAX_DRBS_PER_UE]; uint32_t gNB_teid_N3; transport_layer_addr_t gNB_addr_N3; uint32_t UPF_teid_N3; diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity.h b/openair2/LAYER2/nr_rlc/nr_rlc_entity.h index 675f4a3e96177caa81194ba336b70edbcba4aeae..cd26094cf7ee68779a475e3a75d021a78bd57328 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity.h +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity.h @@ -23,7 +23,6 @@ #define _NR_RLC_ENTITY_H_ #include <stdint.h> -#include "openair2/RRC/NR/rrc_gNB_radio_bearers.h" #include "common/utils/time_stat.h" diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c index b4dea5b51babc28669f039402d02d2b527c28490..f4097d721bb2c577e429d105f7cebbb48fe48635 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c @@ -179,7 +179,7 @@ mac_rlc_status_resp_t mac_rlc_status_ind( switch (channel_idP) { case 0: rb = ue->srb0; break; case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; - case 4 ... NGAP_MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; + case 4 ... MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; default: rb = NULL; break; } @@ -241,9 +241,9 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind( ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP); switch (channel_idP) { - case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; - case 4 ... NGAP_MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; - default: rb = NULL; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; + default: rb = NULL; break; } if (rb != NULL) { @@ -333,9 +333,9 @@ int nr_rlc_get_available_tx_space( ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP); switch (channel_idP) { - case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; - case 4 ... NGAP_MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; - default: rb = NULL; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... MAX_DRBS_PER_UE: rb = ue->drb[channel_idP - 4]; break; + default: rb = NULL; break; } if (rb != NULL) { diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h b/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h index c7e42a0a0d95fa9f9b791bf9108e74a5b5432039..958f216592f5e80289394467a643549ec0223566 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h +++ b/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h @@ -23,6 +23,7 @@ #define _NR_RLC_UE_MANAGER_H_ #include "openair2/COMMON/platform_types.h" #include "nr_rlc_entity.h" +#include "common/platform_constants.h" typedef void nr_rlc_ue_manager_t; diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h index da0101acf2947fb7861218556eea806b2c5dda76..51ef9d0f8d4a311c48ef8120aa89bd1c231dab18 100644 --- a/openair2/RRC/NR/nr_rrc_defs.h +++ b/openair2/RRC/NR/nr_rrc_defs.h @@ -236,8 +236,8 @@ typedef enum { typedef struct gNB_RRC_UE_s { uint8_t primaryCC_id; - drb_t established_drbs[NGAP_MAX_DRBS_PER_UE]; - uint8_t DRB_active[NGAP_MAX_DRBS_PER_UE]; + drb_t established_drbs[MAX_DRBS_PER_UE]; + uint8_t DRB_active[MAX_DRBS_PER_UE]; NR_SRB_INFO_TABLE_ENTRY Srb[maxSRBs]; // 3gpp max is 3 SRBs, number 1..3, we waste the entry 0 for code simplicity NR_MeasConfig_t *measConfig; diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index a74509d9ca7b9e1fe9307428bcf5a166d29d6fa7..f731ed0fbee8d30c8102360c614f4b0108caaf85 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -120,7 +120,7 @@ NR_DRB_ToAddModList_t *fill_DRB_configList(gNB_RRC_UE_t *ue) if (ue->nb_of_pdusessions == 0) return NULL; int nb_drb_to_setup = rrc->configuration.drbs; - long drb_priority[NGAP_MAX_DRBS_PER_UE] = {0}; + long drb_priority[MAX_DRBS_PER_UE] = {0}; uint8_t drb_id_to_setup_start = 0; NR_DRB_ToAddModList_t *DRB_configList = CALLOC(sizeof(*DRB_configList), 1); for (int i = 0; i < ue->nb_of_pdusessions; i++) { @@ -399,7 +399,7 @@ static NR_DRB_ToAddModList_t *createDRBlist(gNB_RRC_UE_t *ue, bool reestablish) NR_DRB_ToAddMod_t *DRB_config = NULL; NR_DRB_ToAddModList_t *DRB_configList = CALLOC(sizeof(*DRB_configList), 1); - for (int i = 0; i < NGAP_MAX_DRBS_PER_UE; i++) { + for (int i = 0; i < MAX_DRBS_PER_UE; i++) { if (ue->established_drbs[i].status != DRB_INACTIVE) { DRB_config = generateDRB_ASN1(&ue->established_drbs[i]); if (reestablish) { @@ -822,13 +822,13 @@ rrc_gNB_modify_dedicatedRRCReconfiguration( // search exist DRB_config int j; - for (j = 0; i < NGAP_MAX_DRBS_PER_UE; j++) { + for (j = 0; i < MAX_DRBS_PER_UE; j++) { if (ue_p->established_drbs[j].status != DRB_INACTIVE && ue_p->established_drbs[j].cnAssociation.sdap_config.pdusession_id == ue_p->pduSession[i].param.pdusession_id) break; } - if (j == NGAP_MAX_DRBS_PER_UE) { + if (j == MAX_DRBS_PER_UE) { ue_p->pduSession[i].xid = xid; ue_p->pduSession[i].status = PDU_SESSION_STATUS_FAILED; ue_p->pduSession[i].cause = NGAP_CAUSE_RADIO_NETWORK; diff --git a/openair2/RRC/NR/rrc_gNB_radio_bearers.c b/openair2/RRC/NR/rrc_gNB_radio_bearers.c index 4c5c50fb0011a1d8a2f39175aeede0a439033e0b..77ad0163509a8457acdfdfac1c92fc088dc8f37e 100644 --- a/openair2/RRC/NR/rrc_gNB_radio_bearers.c +++ b/openair2/RRC/NR/rrc_gNB_radio_bearers.c @@ -52,7 +52,7 @@ void generateDRB(gNB_RRC_UE_t *ue, est_drb->drb_id = drb_id; est_drb->reestablishPDCP = -1; est_drb->recoverPDCP = -1; - for (i = 0; i < NGAP_MAX_DRBS_PER_UE; i++) { + for (i = 0; i < MAX_DRBS_PER_UE; i++) { if ((est_drb->cnAssociation.sdap_config.pdusession_id == 0 || est_drb->cnAssociation.sdap_config.pdusession_id == pduSession->param.pdusession_id) && est_drb->defaultDRBid == 0) { @@ -148,12 +148,12 @@ uint8_t next_available_drb(gNB_RRC_UE_t *ue, rrc_pdu_session_param_t *pdusession uint8_t drb_id; if (0 /*!is_gbr*/) { /* Find if Non-GBR DRB exists in the same PDU Session */ - for (drb_id = 0; drb_id < NGAP_MAX_DRBS_PER_UE; drb_id++) + for (drb_id = 0; drb_id < MAX_DRBS_PER_UE; drb_id++) if (pdusession->param.used_drbs[drb_id] == DRB_ACTIVE_NONGBR) return drb_id + 1; } /* GBR Flow or a Non-GBR DRB does not exist in the same PDU Session, find an available DRB */ - for (drb_id = 0; drb_id < NGAP_MAX_DRBS_PER_UE; drb_id++) + for (drb_id = 0; drb_id < MAX_DRBS_PER_UE; drb_id++) if (ue->DRB_active[drb_id] == DRB_INACTIVE) return drb_id + 1; /* From this point, we need to handle the case that all DRBs are already used by the UE. */ diff --git a/openair2/RRC/NR/rrc_gNB_radio_bearers.h b/openair2/RRC/NR/rrc_gNB_radio_bearers.h index 219bc21948c2c3740587d59ea75eb72d4e92ad9f..aff6e75ea6d59ea4ff45381a9360d6675a463022 100644 --- a/openair2/RRC/NR/rrc_gNB_radio_bearers.h +++ b/openair2/RRC/NR/rrc_gNB_radio_bearers.h @@ -27,8 +27,8 @@ #include "NR_DRB-ToAddMod.h" #include "NR_SRB-ToAddMod.h" -#define MAX_DRBS_PER_UE (32) /* Maximum number of Data Radio Bearers per UE */ -#define MAX_PDUS_PER_UE (8) /* Maximum number of PDU Sessions per UE */ +#include "common/platform_constants.h" + #define DRB_ACTIVE_NONGBR (2) /* DRB is used for Non-GBR Flows */ #define DRB_ACTIVE (1) #define DRB_INACTIVE (0) diff --git a/openair2/SDAP/nr_sdap/nr_sdap_entity.c b/openair2/SDAP/nr_sdap/nr_sdap_entity.c index 25254e090517f45f90a01169c94967777ef0c92a..6fdd8eb54ad987b7df0b8ed98ea1e5baec2c06cf 100644 --- a/openair2/SDAP/nr_sdap/nr_sdap_entity.c +++ b/openair2/SDAP/nr_sdap/nr_sdap_entity.c @@ -518,7 +518,7 @@ bool nr_sdap_delete_ue_entities(ue_id_t ue_id) } /* Handle scenario where ue_id matches the head of the list */ - while (entityPtr != NULL && entityPtr->ue_id == ue_id && upperBound < NGAP_MAX_DRBS_PER_UE) { + while (entityPtr != NULL && entityPtr->ue_id == ue_id && upperBound < MAX_DRBS_PER_UE) { sdap_info.sdap_entity_llist = entityPtr->next_entity; free(entityPtr); entityPtr = sdap_info.sdap_entity_llist; diff --git a/openair2/SDAP/nr_sdap/nr_sdap_entity.h b/openair2/SDAP/nr_sdap/nr_sdap_entity.h index b90da9d38028be22bdc9c03c8034209cc2071d22..41a52c083b65da1099bbda921ac885dfecdbea77 100644 --- a/openair2/SDAP/nr_sdap/nr_sdap_entity.h +++ b/openair2/SDAP/nr_sdap/nr_sdap_entity.h @@ -44,7 +44,7 @@ #define SDAP_CTRL_PDU_MAP_DEF_DRB (0) #define SDAP_CTRL_PDU_MAP_RULE_DRB (1) #define SDAP_MAX_PDU (9000) -#define SDAP_MAX_NUM_OF_ENTITIES (NGAP_MAX_DRBS_PER_UE * MAX_MOBILES_PER_ENB) +#define SDAP_MAX_NUM_OF_ENTITIES (MAX_DRBS_PER_UE * MAX_MOBILES_PER_ENB) #define SDAP_MAX_UE_ID (65536) /*