Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
87e02c70
Commit
87e02c70
authored
Feb 22, 2024
by
Guido Casati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Store F1-U downlink TL and TEID
- info coming from UE context setup/modification response messages in RRC
parent
7ed21ffd
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
17 deletions
+17
-17
openair2/COMMON/ngap_messages_types.h
openair2/COMMON/ngap_messages_types.h
+8
-2
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+9
-15
No files found.
openair2/COMMON/ngap_messages_types.h
View file @
87e02c70
...
...
@@ -276,14 +276,20 @@ typedef struct pdusession_s {
/* The transport layer address for the IP packets */
pdu_session_type_t
pdu_session_type
;
transport_layer_addr_t
upf_addr
;
/*
S-GW Tunnel endpoint identifier
*/
/*
Outgoing (UL) NG-U Tunnel Endpoint Identifier (S-GW/UPF)
*/
uint32_t
gtp_teid
;
/* Stores the DRB ID of the DRBs used by this PDU Session */
uint8_t
used_drbs
[
MAX_DRBS_PER_UE
];
/* Incoming (DL) NG-U Tunnel Endpoint Identifier (S-GW/UPF) */
uint32_t
gNB_teid_N3
;
transport_layer_addr_t
gNB_addr_N3
;
/* Incoming (DL) NG-U Tunnel Endpoint Identifier (S-GW/UPF) */
uint32_t
UPF_teid_N3
;
transport_layer_addr_t
UPF_addr_N3
;
/* Downlink F1-U Tunnel Endpoint Identifier (CU-UP/DU) */
uint32_t
cuup_teid_f1u
[
MAX_DRBS_PER_UE
];
/* DL F1-U Transport Layer */
transport_layer_addr_t
cuup_addr_f1u
;
nssai_t
nssai
;
}
pdusession_t
;
...
...
@@ -306,7 +312,7 @@ typedef struct pdusession_setup_s {
uint8_t
pdu_session_type
;
transport_layer_addr_t
gNB_addr
;
/*
UPF Tunnel endpoint identifier
*/
/*
Incoming NG-U Tunnel Endpoint Identifier (S-GW/UPF)
*/
uint32_t
gtp_teid
;
/* qos flow list number */
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
87e02c70
...
...
@@ -1805,22 +1805,14 @@ static void fill_e1_bearer_modif(DRB_nGRAN_to_setup_t *drb_e1, const f1ap_drb_to
drb_e1
->
DlUpParamList
[
0
].
teId
=
drb_f1
->
up_dl_tnl
[
0
].
teid
;
}
/* \brief find existing PDU session inside E1AP Bearer Modif message, or
* point to new one.
* \param bearer_modif E1AP Bearer Modification Message
* \param pdu_id PDU session ID
* \return pointer to existing PDU session, or to new/unused one. */
static
pdu_session_to_setup_t
*
find_or_next_pdu_session
(
e1ap_bearer_setup_req_t
*
bearer_modif
,
int
pdu_id
)
/**
* @brief Store F1-U DL TL and TEID in RRC
*/
static
void
f1u_gtp_update
(
rrc_pdu_session_param_t
*
pdu_ue
,
const
f1ap_drb_to_be_setup_t
*
drb_f1
)
{
for
(
int
i
=
0
;
i
<
bearer_modif
->
numPDUSessionsMod
;
++
i
)
{
if
(
bearer_modif
->
pduSessionMod
[
i
].
sessionId
==
pdu_id
)
return
&
bearer_modif
->
pduSessionMod
[
i
];
}
/* E1AP Bearer Modification has no PDU session to modify with that ID, create
* new entry */
DevAssert
(
bearer_modif
->
numPDUSessionsMod
<
E1AP_MAX_NUM_PDU_SESSIONS
-
1
);
bearer_modif
->
numPDUSessionsMod
+=
1
;
return
&
bearer_modif
->
pduSessionMod
[
bearer_modif
->
numPDUSessionsMod
-
1
];
pdu_ue
->
param
.
cuup_teid_f1u
[
drb_f1
->
drb_id
]
=
drb_f1
->
up_dl_tnl
[
0
].
teid
;
memcpy
(
&
pdu_ue
->
param
.
cuup_addr_f1u
.
buffer
,
&
drb_f1
->
up_dl_tnl
[
0
].
tl_address
,
sizeof
(
uint8_t
)
*
4
);
pdu_ue
->
param
.
cuup_addr_f1u
.
length
=
sizeof
(
in_addr_t
);
}
/* \brief use list of DRBs and send the corresponding bearer update message via
...
...
@@ -1844,6 +1836,8 @@ static void e1_send_bearer_updates(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE, int n, f
DevAssert
(
pdu_e1
!=
NULL
);
pdu_e1
->
sessionId
=
pdu_ue
->
param
.
pdusession_id
;
DRB_nGRAN_to_setup_t
*
drb_e1
=
&
pdu_e1
->
DRBnGRanModList
[
pdu_e1
->
numDRB2Modify
];
f1u_gtp_update
(
pdu_ue
,
drb_f1
);
/* Fill E1 bearer context modification */
fill_e1_bearer_modif
(
drb_e1
,
drb_f1
);
pdu_e1
->
numDRB2Modify
+=
1
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment