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
wangwenhui
OpenXG-RAN
Commits
7408ddb2
Commit
7408ddb2
authored
Mar 13, 2020
by
matzakos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ENDC path switch S1-U: Adding GTP-U tunnel related functionality at gNB
parent
c5607592
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
61 additions
and
5 deletions
+61
-5
openair2/RRC/LTE/rrc_eNB_GTPV1U.c
openair2/RRC/LTE/rrc_eNB_GTPV1U.c
+50
-0
openair2/RRC/LTE/rrc_eNB_GTPV1U.h
openair2/RRC/LTE/rrc_eNB_GTPV1U.h
+7
-0
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+3
-3
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+1
-2
No files found.
openair2/RRC/LTE/rrc_eNB_GTPV1U.c
View file @
7408ddb2
...
...
@@ -93,6 +93,56 @@ rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
}
}
int
rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
gtpv1u_enb_create_tunnel_resp_t
*
const
create_tunnel_resp_pP
,
uint8_t
*
inde_list
)
{
rnti_t
rnti
;
int
i
;
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
NULL
;
if
(
create_tunnel_resp_pP
)
{
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RX CREATE_TUNNEL_RESP num tunnels %u
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
create_tunnel_resp_pP
->
num_tunnels
);
rnti
=
create_tunnel_resp_pP
->
rnti
;
ue_context_p
=
rrc_gNB_get_ue_context
(
RC
.
nrrrc
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
);
for
(
i
=
0
;
i
<
create_tunnel_resp_pP
->
num_tunnels
;
i
++
)
{
ue_context_p
->
ue_context
.
gnb_gtp_teid
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_S1u_teid
[
i
];
ue_context_p
->
ue_context
.
gnb_gtp_addrs
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_addr
;
ue_context_p
->
ue_context
.
gnb_gtp_ebi
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
eps_bearer_id
[
i
];
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (%u, %u) bearer UE context index %u, msg index %u, id %u, gtp addr len %d
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
create_tunnel_resp_pP
->
enb_S1u_teid
[
i
],
ue_context_p
->
ue_context
.
gnb_gtp_teid
[
inde_list
[
i
]],
inde_list
[
i
],
i
,
create_tunnel_resp_pP
->
eps_bearer_id
[
i
],
create_tunnel_resp_pP
->
enb_addr
.
length
);
}
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_GTPU_ENB
,
NULL
,
0
,
MSC_AS_TIME_FMT
" CREATE_TUNNEL_RESP RNTI %"
PRIx16
" ntuns %u ebid %u enb-s1u teid %u"
,
0
,
0
,
rnti
,
create_tunnel_resp_pP
->
num_tunnels
,
ue_context_p
->
ue_context
.
gnb_gtp_ebi
[
0
],
ue_context_p
->
ue_context
.
gnb_gtp_teid
[
0
]);
(
void
)
rnti
;
/* avoid gcc warning "set but not used" */
return
0
;
}
else
{
return
-
1
;
}
}
//------------------------------------------------------------------------------
boolean_t
gtpv_data_req
(
...
...
openair2/RRC/LTE/rrc_eNB_GTPV1U.h
View file @
7408ddb2
...
...
@@ -43,6 +43,13 @@ rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
uint8_t
*
inde_list
);
int
rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
gtpv1u_enb_create_tunnel_resp_t
*
const
create_tunnel_resp_pP
,
uint8_t
*
inde_list
);
/*! \fn rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(module_id_t enb_mod_idP, const rrc_eNB_ue_context_t* const ue_context_pP)
*\brief Send GTPV1U_ENB_DELETE_TUNNEL_REQ message to GTPV1U to destroy all UE-related tunnels.
*\param module_id Instance ID of eNB.
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
7408ddb2
...
...
@@ -326,9 +326,9 @@ typedef struct gNB_RRC_UE_s {
uint8_t
nb_release_of_e_rabs
;
e_rab_failed_t
e_rabs_release_failed
[
S1AP_MAX_E_RAB
];
// LG: For GTPV1 TUNNELS
uint32_t
e
nb_gtp_teid
[
S1AP_MAX_E_RAB
];
transport_layer_addr_t
e
nb_gtp_addrs
[
S1AP_MAX_E_RAB
];
rb_id_t
e
nb_gtp_ebi
[
S1AP_MAX_E_RAB
];
uint32_t
g
nb_gtp_teid
[
S1AP_MAX_E_RAB
];
transport_layer_addr_t
g
nb_gtp_addrs
[
S1AP_MAX_E_RAB
];
rb_id_t
g
nb_gtp_ebi
[
S1AP_MAX_E_RAB
];
#endif
uint32_t
ul_failure_timer
;
uint32_t
ue_release_timer
;
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
7408ddb2
...
...
@@ -166,12 +166,11 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
ctxt
.
instance
,
&
create_tunnel_req
,
&
create_tunnel_resp
);
rrc_
e
NB_process_GTPV1U_CREATE_TUNNEL_RESP
(
rrc_
g
NB_process_GTPV1U_CREATE_TUNNEL_RESP
(
&
ctxt
,
&
create_tunnel_resp
,
&
inde_list
[
0
]);
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg
).
nb_e_rabs_admitted_tobeadded
=
m
->
nb_e_rabs_tobeadded
;
for
(
int
i
=
0
;
i
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
i
++
){
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg
).
e_rabs_admitted_tobeadded
[
i
].
e_rab_id
=
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
;
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg
).
e_rabs_admitted_tobeadded
[
i
].
gtp_teid
=
create_tunnel_resp
.
enb_S1u_teid
[
i
];
...
...
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