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
zzha zzha
OpenXG-RAN
Commits
832bea24
Commit
832bea24
authored
Oct 02, 2023
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
implementing PDCP entity suspend
parent
0be397b2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
47 additions
and
1 deletion
+47
-1
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
+18
-1
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h
+1
-0
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+26
-0
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
+2
-0
No files found.
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c
View file @
832bea24
...
...
@@ -369,7 +369,7 @@ void nr_pdcp_entity_set_time(struct nr_pdcp_entity_t *entity, uint64_t now)
check_t_reordering
(
entity
);
}
void
nr_pdcp_entity_release
(
nr_pdcp_entity_t
*
entity
)
static
void
deliver_all_sdus
(
nr_pdcp_entity_t
*
entity
)
{
// deliver the PDCP SDUs stored in the receiving PDCP entity to upper layers
while
(
entity
->
rx_list
!=
NULL
)
{
...
...
@@ -384,6 +384,22 @@ void nr_pdcp_entity_release(nr_pdcp_entity_t *entity)
}
}
void
nr_pdcp_entity_suspend
(
nr_pdcp_entity_t
*
entity
)
{
entity
->
tx_next
=
0
;
if
(
entity
->
t_reordering_start
!=
0
)
{
entity
->
t_reordering_start
=
0
;
deliver_all_sdus
(
entity
);
}
entity
->
rx_next
=
0
;
entity
->
rx_deliv
=
0
;
}
void
nr_pdcp_entity_release
(
nr_pdcp_entity_t
*
entity
)
{
deliver_all_sdus
(
entity
);
}
void
nr_pdcp_entity_delete
(
nr_pdcp_entity_t
*
entity
)
{
nr_pdcp_sdu_t
*
cur
=
entity
->
rx_list
;
...
...
@@ -444,6 +460,7 @@ nr_pdcp_entity_t *new_nr_pdcp_entity(
ret
->
delete_entity
=
nr_pdcp_entity_delete
;
ret
->
release_entity
=
nr_pdcp_entity_release
;
ret
->
suspend_entity
=
nr_pdcp_entity_suspend
;
ret
->
get_stats
=
nr_pdcp_entity_get_stats
;
ret
->
deliver_sdu
=
deliver_sdu
;
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h
View file @
832bea24
...
...
@@ -77,6 +77,7 @@ typedef struct nr_pdcp_entity_t {
int
sdu_id
,
char
*
pdu_buffer
,
int
pdu_max_size
);
void
(
*
delete_entity
)(
struct
nr_pdcp_entity_t
*
entity
);
void
(
*
release_entity
)(
struct
nr_pdcp_entity_t
*
entity
);
void
(
*
suspend_entity
)(
struct
nr_pdcp_entity_t
*
entity
);
void
(
*
get_stats
)(
struct
nr_pdcp_entity_t
*
entity
,
nr_pdcp_statistics_t
*
out
);
/* set_security: pass -1 to integrity_algorithm / ciphering_algorithm
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
View file @
832bea24
...
...
@@ -1057,6 +1057,32 @@ bool nr_pdcp_data_req_srb(ue_id_t ue_id,
return
1
;
}
void
nr_pdcp_suspend_srb
(
ue_id_t
ue_id
,
int
srb_id
)
{
nr_pdcp_manager_lock
(
nr_pdcp_ue_manager
);
nr_pdcp_ue_t
*
ue
=
nr_pdcp_manager_get_ue
(
nr_pdcp_ue_manager
,
ue_id
);
nr_pdcp_entity_t
*
srb
=
ue
->
srb
[
srb_id
-
1
];
if
(
srb
==
NULL
)
{
LOG_E
(
PDCP
,
"Trying to susbend SRB with ID %d but it is not established
\n
"
,
srb_id
);
return
;
}
srb
->
suspend_entity
(
srb
);
nr_pdcp_manager_unlock
(
nr_pdcp_ue_manager
);
}
void
nr_pdcp_suspend_drb
(
ue_id_t
ue_id
,
int
drb_id
)
{
nr_pdcp_manager_lock
(
nr_pdcp_ue_manager
);
nr_pdcp_ue_t
*
ue
=
nr_pdcp_manager_get_ue
(
nr_pdcp_ue_manager
,
ue_id
);
nr_pdcp_entity_t
*
drb
=
ue
->
drb
[
drb_id
-
1
];
if
(
drb
==
NULL
)
{
LOG_E
(
PDCP
,
"Trying to susbend DRB with ID %d but it is not established
\n
"
,
drb_id
);
return
;
}
drb
->
suspend_entity
(
drb
);
nr_pdcp_manager_unlock
(
nr_pdcp_ue_manager
);
}
void
nr_pdcp_reconfigure_srb
(
ue_id_t
ue_id
,
int
srb_id
,
long
t_Reordering
)
{
nr_pdcp_manager_lock
(
nr_pdcp_ue_manager
);
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
View file @
832bea24
...
...
@@ -66,6 +66,8 @@ void nr_DRB_preconfiguration(ue_id_t crntiMaybeUEid);
bool
nr_pdcp_remove_UE
(
ue_id_t
ue_id
);
void
nr_pdcp_reestablishment
(
ue_id_t
ue_id
);
void
nr_pdcp_suspend_srb
(
ue_id_t
ue_id
,
int
srb_id
);
void
nr_pdcp_suspend_drb
(
ue_id_t
ue_id
,
int
drb_id
);
void
nr_pdcp_reconfigure_srb
(
ue_id_t
ue_id
,
int
srb_id
,
long
t_Reordering
);
void
nr_pdcp_reconfigure_drb
(
ue_id_t
ue_id
,
int
drb_id
,
long
t_Reordering
);
void
nr_pdcp_release_srb
(
ue_id_t
ue_id
,
int
srb_id
);
...
...
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