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
10a6ce8b
Commit
10a6ce8b
authored
Feb 21, 2024
by
Ajit Singh
Committed by
ajit
Feb 25, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bugfix in PDCP when SDAP is enabled. Passing only data for chipering.
parent
c599e172
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
3 deletions
+10
-3
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
+10
-3
No files found.
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
View file @
10a6ce8b
...
...
@@ -42,6 +42,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
uint32_t
rcvd_count
;
int
header_size
;
int
integrity_size
;
int
sdap_header_size
=
0
;
int
rx_deliv_sn
;
uint32_t
rx_deliv_hfn
;
...
...
@@ -62,6 +63,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
entity
->
stats
.
rxpdu_pkts
++
;
entity
->
stats
.
rxpdu_bytes
+=
size
;
if
(
entity
->
has_sdap_rx
)
sdap_header_size
=
1
;
// SDAP Header is one byte
if
(
entity
->
sn_size
==
12
)
{
rcvd_sn
=
((
buffer
[
0
]
&
0xf
)
<<
8
)
|
...
...
@@ -82,7 +84,7 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
integrity_size
=
0
;
}
if
(
size
<
header_size
+
integrity_size
+
1
)
{
if
(
size
<
header_size
+
sdap_header_size
+
integrity_size
+
1
)
{
LOG_E
(
PDCP
,
"bad PDU received (size = %d)
\n
"
,
size
);
entity
->
stats
.
rxpdu_dd_pkts
++
;
...
...
@@ -106,7 +108,8 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity,
if
(
entity
->
has_ciphering
)
entity
->
cipher
(
entity
->
security_context
,
buffer
+
header_size
,
size
-
header_size
,
buffer
+
header_size
+
sdap_header_size
,
size
-
(
header_size
+
sdap_header_size
),
entity
->
rb_id
,
rcvd_count
,
entity
->
is_gnb
?
0
:
1
);
if
(
entity
->
has_integrity
)
{
...
...
@@ -184,6 +187,7 @@ static int nr_pdcp_entity_process_sdu(nr_pdcp_entity_t *entity,
int
sn
;
int
header_size
;
int
integrity_size
;
int
sdap_header_size
=
0
;
char
*
buf
=
pdu_buffer
;
DevAssert
(
size
+
3
+
4
<=
pdu_max_size
);
int
dc_bit
;
...
...
@@ -194,6 +198,8 @@ static int nr_pdcp_entity_process_sdu(nr_pdcp_entity_t *entity,
count
=
entity
->
tx_next
;
sn
=
entity
->
tx_next
&
entity
->
sn_max
;
if
(
entity
->
has_sdap_tx
)
sdap_header_size
=
1
;
// SDAP header is one byte
/* D/C bit is only to be set for DRBs */
if
(
entity
->
type
==
NR_PDCP_DRB_AM
||
entity
->
type
==
NR_PDCP_DRB_UM
)
{
dc_bit
=
0x80
;
...
...
@@ -236,7 +242,8 @@ static int nr_pdcp_entity_process_sdu(nr_pdcp_entity_t *entity,
if
(
entity
->
has_ciphering
&&
(
entity
->
is_gnb
||
entity
->
security_mode_completed
))
{
entity
->
cipher
(
entity
->
security_context
,
(
unsigned
char
*
)
buf
+
header_size
,
size
+
integrity_size
,
(
unsigned
char
*
)
buf
+
header_size
+
sdap_header_size
,
size
+
integrity_size
-
sdap_header_size
,
entity
->
rb_id
,
count
,
entity
->
is_gnb
?
1
:
0
);
}
else
{
entity
->
security_mode_completed
=
true
;
...
...
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