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
Michael Black
OpenXG-RAN
Commits
69c87b23
Commit
69c87b23
authored
Aug 31, 2021
by
Laurent THOMAS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add F1-U DU Uplink
parent
229ccd6b
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
21 deletions
+31
-21
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+14
-11
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+16
-8
openair3/ocp-gtpu/gtp_itf.cpp
openair3/ocp-gtpu/gtp_itf.cpp
+1
-2
No files found.
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
View file @
69c87b23
...
...
@@ -470,18 +470,21 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
int
offset
=
0
;
if
(
entity
->
has_sdap
==
1
&&
entity
->
has_sdapULheader
==
1
)
offset
=
1
;
// this is the offset of the SDAP header in bytes
gtpu_buffer_p
=
itti_malloc
(
TASK_PDCP_ENB
,
TASK_GTPV1_U
,
size
+
GTPU_HEADER_OVERHEAD_MAX
-
offset
);
AssertFatal
(
gtpu_buffer_p
!=
NULL
,
"OUT OF MEMORY"
);
memcpy
(
&
gtpu_buffer_p
[
GTPU_HEADER_OVERHEAD_MAX
],
buf
+
offset
,
size
-
offset
);
message_p
=
itti_alloc_new_message
(
TASK_PDCP_ENB
,
0
,
GTPV1U_GNB_TUNNEL_DATA_REQ
);
message_p
=
itti_alloc_new_message_sized
(
TASK_PDCP_ENB
,
0
,
GTPV1U_GNB_TUNNEL_DATA_REQ
,
sizeof
(
gtpv1u_gnb_tunnel_data_req_t
)
+
size
+
GTPU_HEADER_OVERHEAD_MAX
-
offset
);
AssertFatal
(
message_p
!=
NULL
,
"OUT OF MEMORY"
);
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
buffer
=
gtpu_buffer_p
;
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
length
=
size
-
offset
;
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
offset
=
GTPU_HEADER_OVERHEAD_MAX
;
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
rnti
=
ue
->
rnti
;
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
pdusession_id
=
entity
->
pdusession_id
;
if
(
offset
==
1
)
LOG_I
(
PDCP
,
"%s() (drb %d) SDAP header %2x
\n
"
,
__func__
,
rb_id
,
buf
[
0
]);
gtpv1u_gnb_tunnel_data_req_t
*
req
=&
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
);
gtpu_buffer_p
=
(
uint8_t
*
)(
req
+
1
);
memcpy
(
gtpu_buffer_p
+
GTPU_HEADER_OVERHEAD_MAX
,
buf
+
offset
,
size
-
offset
);
req
->
buffer
=
gtpu_buffer_p
;
req
->
length
=
size
-
offset
;
req
->
offset
=
GTPU_HEADER_OVERHEAD_MAX
;
req
->
rnti
=
ue
->
rnti
;
req
->
pdusession_id
=
entity
->
pdusession_id
;
if
(
offset
==
1
)
LOG_I
(
PDCP
,
"%s() (drb %d) SDAP header %2x
\n
"
,
__func__
,
rb_id
,
buf
[
0
]);
LOG_D
(
PDCP
,
"%s() (drb %d) sending message to gtp size %d
\n
"
,
__func__
,
rb_id
,
size
-
offset
);
itti_send_msg_to_task
(
TASK_VARIABLE
,
INSTANCE_DEFAULT
,
message_p
);
}
...
...
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
View file @
69c87b23
...
...
@@ -456,13 +456,6 @@ rb_found:
LOG_D
(
RLC
,
"%s:%d:%s: delivering SDU (rnti %d is_srb %d rb_id %d) size %d
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
ue
->
rnti
,
is_srb
,
rb_id
,
size
);
memblock
=
get_free_mem_block
(
size
,
__func__
);
if
(
memblock
==
NULL
)
{
LOG_E
(
RLC
,
"%s:%d:%s: ERROR: get_free_mem_block failed
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
memcpy
(
memblock
->
data
,
buf
,
size
);
/* unused fields? */
ctx
.
instance
=
0
;
ctx
.
frame
=
0
;
...
...
@@ -506,11 +499,26 @@ rb_found:
return
;
}
else
if
(
NODE_IS_DU
(
type
)
&&
is_srb
==
0
)
{
LOG_W
(
RLC
,
"Received uplink user-plane traffic at RLC-DU to be sent to the CU, but F1-U implementation is not in place yet
\n
"
);
MessageDef
*
msg
=
itti_alloc_new_message_sized
(
TASK_RLC_ENB
,
0
,
GTPV1U_GNB_TUNNEL_DATA_REQ
,
sizeof
(
gtpv1u_gnb_tunnel_data_req_t
)
+
size
);
gtpv1u_gnb_tunnel_data_req_t
*
req
=&
GTPV1U_GNB_TUNNEL_DATA_REQ
(
msg
);
req
->
buffer
=
(
uint8_t
*
)(
req
+
1
);
memcpy
(
req
->
buffer
,
buf
,
size
);
req
->
length
=
size
;
req
->
offset
=
0
;
req
->
rnti
=
ue
->
rnti
;
req
->
pdusession_id
=
rb_id
;
LOG_D
(
RLC
,
"Received uplink user-plane traffic at RLC-DU to be sent to the CU, size %d
\n
"
,
size
);
itti_send_msg_to_task
(
OCP_GTPV1_U
,
0
,
msg
);
return
;
}
}
memblock
=
get_free_mem_block
(
size
,
__func__
);
if
(
memblock
==
NULL
)
{
LOG_E
(
RLC
,
"%s:%d:%s: ERROR: get_free_mem_block failed
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
memcpy
(
memblock
->
data
,
buf
,
size
);
if
(
!
pdcp_data_ind
(
&
ctx
,
is_srb
,
0
,
rb_id
,
size
,
memblock
))
{
LOG_E
(
RLC
,
"%s:%d:%s: ERROR: pdcp_data_ind failed
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
/* what to do in case of failure? for the moment: nothing */
...
...
openair3/ocp-gtpu/gtp_itf.cpp
View file @
69c87b23
...
...
@@ -841,7 +841,6 @@ void *ocp_gtpv1uTask(void *args) {
case
GTPV1U_GNB_TUNNEL_DATA_REQ
:
{
gtpv1uSend2
(
compatInst
(
ITTI_MSG_DESTINATION_INSTANCE
(
message_p
)),
&
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
),
false
,
false
);
itti_free
(
OCP_GTPV1_U
,
GTPV1U_GNB_TUNNEL_DATA_REQ
(
message_p
).
buffer
);
}
break
;
...
...
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