Commit 12d4c537 authored by francescomani's avatar francescomani

association of SDAP entities with DRB IDs

parent 464a62dd
...@@ -829,15 +829,21 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in ...@@ -829,15 +829,21 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in
bool has_sdap_tx = false; bool has_sdap_tx = false;
bool is_sdap_DefaultDRB = false; bool is_sdap_DefaultDRB = false;
NR_QFI_t *mappedQFIs2Add = NULL; NR_QFI_t *mappedQFIs2Add = NULL;
uint8_t mappedQFIs2AddCount=0; uint8_t mappedQFIs2AddCount = 0;
if (s->cnAssociation->present == NR_DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity) nr_cn_association_t cn_association;
pdusession_id = s->cnAssociation->choice.eps_BearerIdentity; if (s->cnAssociation->present == NR_DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity) {
pdusession_id = s->cnAssociation->choice.eps_BearerIdentity;
cn_association.type = EPS_BEARER;
cn_association.choice.eps_id = pdusession_id;
}
else { else {
if (!s->cnAssociation->choice.sdap_Config) { if (!s->cnAssociation->choice.sdap_Config) {
LOG_E(PDCP,"%s:%d:%s: fatal, sdap_Config is null",__FILE__,__LINE__,__FUNCTION__); LOG_E(PDCP,"%s:%d:%s: fatal, sdap_Config is null",__FILE__,__LINE__,__FUNCTION__);
exit(-1); exit(-1);
} }
pdusession_id = s->cnAssociation->choice.sdap_Config->pdu_Session; pdusession_id = s->cnAssociation->choice.sdap_Config->pdu_Session;
cn_association.type = NR_SDAP;
cn_association.choice.pdusession_id = pdusession_id;
if (is_gnb) { if (is_gnb) {
has_sdap_rx = s->cnAssociation->choice.sdap_Config->sdap_HeaderUL == NR_SDAP_Config__sdap_HeaderUL_present; has_sdap_rx = s->cnAssociation->choice.sdap_Config->sdap_HeaderUL == NR_SDAP_Config__sdap_HeaderUL_present;
has_sdap_tx = s->cnAssociation->choice.sdap_Config->sdap_HeaderDL == NR_SDAP_Config__sdap_HeaderDL_present; has_sdap_tx = s->cnAssociation->choice.sdap_Config->sdap_HeaderDL == NR_SDAP_Config__sdap_HeaderDL_present;
...@@ -877,6 +883,7 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in ...@@ -877,6 +883,7 @@ void add_drb_am(int is_gnb, ue_id_t rntiMaybeUEid, struct NR_DRB_ToAddMod *s, in
LOG_D(PDCP, "%s:%d:%s: added drb %d to UE ID/RNTI %ld\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rntiMaybeUEid); LOG_D(PDCP, "%s:%d:%s: added drb %d to UE ID/RNTI %ld\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rntiMaybeUEid);
ue->drb2cn[drb_id - 1] = cn_association;
new_nr_sdap_entity(is_gnb, has_sdap_rx, has_sdap_tx, rntiMaybeUEid, pdusession_id, is_sdap_DefaultDRB, drb_id, mappedQFIs2Add, mappedQFIs2AddCount); new_nr_sdap_entity(is_gnb, has_sdap_rx, has_sdap_tx, rntiMaybeUEid, pdusession_id, is_sdap_DefaultDRB, drb_id, mappedQFIs2Add, mappedQFIs2AddCount);
} }
nr_pdcp_manager_unlock(nr_pdcp_ue_manager); nr_pdcp_manager_unlock(nr_pdcp_ue_manager);
......
...@@ -28,10 +28,25 @@ ...@@ -28,10 +28,25 @@
typedef void nr_pdcp_ue_manager_t; typedef void nr_pdcp_ue_manager_t;
typedef struct nr_pdcp_ue_t { typedef enum {
EPS_BEARER = 0,
NR_SDAP = 1
} nr_association_type_t;
typedef struct {
nr_association_type_t type;
union {
int eps_id;
int pdusession_id;
} choice;
} nr_cn_association_t;
typedef struct {
ue_id_t rntiMaybeUEid; ue_id_t rntiMaybeUEid;
nr_pdcp_entity_t *srb[3]; nr_pdcp_entity_t *srb[3];
nr_pdcp_entity_t *drb[MAX_DRBS_PER_UE]; nr_pdcp_entity_t *drb[MAX_DRBS_PER_UE];
nr_cn_association_t drb2cn[32];
} nr_pdcp_ue_t; } nr_pdcp_ue_t;
/***********************************************************************/ /***********************************************************************/
......
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