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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
5249dd96
Commit
5249dd96
authored
Dec 12, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_UE_SDAP_management' into integration_2023_w49
parents
6cb52cf2
d24a3d1a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
54 additions
and
10 deletions
+54
-10
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+32
-7
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
+2
-1
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+3
-2
openair2/SDAP/nr_sdap/nr_sdap_entity.c
openair2/SDAP/nr_sdap/nr_sdap_entity.c
+15
-0
openair2/SDAP/nr_sdap/nr_sdap_entity.h
openair2/SDAP/nr_sdap/nr_sdap_entity.h
+2
-0
No files found.
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
View file @
5249dd96
...
...
@@ -1093,12 +1093,11 @@ void nr_pdcp_reconfigure_srb(ue_id_t ue_id, int srb_id, long t_Reordering)
nr_pdcp_manager_unlock
(
nr_pdcp_ue_manager
);
}
void
nr_pdcp_reconfigure_drb
(
ue_id_t
ue_id
,
int
drb_id
,
long
t_Reorderin
g
)
void
nr_pdcp_reconfigure_drb
(
ue_id_t
ue_id
,
int
drb_id
,
NR_PDCP_Config_t
*
pdcp_config
,
NR_SDAP_Config_t
*
sdap_confi
g
)
{
/* The enabling/disabling of ciphering or integrity protection
* can be changed only by releasing and adding the DRB
* (so not by reconfiguring).
*/
// The enabling/disabling of ciphering or integrity protection
// can be changed only by releasing and adding the DRB
// (so not by reconfiguring).
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
=
nr_pdcp_get_rb
(
ue
,
drb_id
,
false
);
...
...
@@ -1107,8 +1106,33 @@ void nr_pdcp_reconfigure_drb(ue_id_t ue_id, int drb_id, long t_Reordering)
nr_pdcp_manager_unlock
(
nr_pdcp_ue_manager
);
return
;
}
int
decoded_t_reordering
=
decode_t_reordering
(
t_Reordering
);
drb
->
t_reordering
=
decoded_t_reordering
;
if
(
pdcp_config
)
{
if
(
pdcp_config
->
t_Reordering
)
drb
->
t_reordering
=
decode_t_reordering
(
*
pdcp_config
->
t_Reordering
);
else
drb
->
t_reordering
=
-
1
;
struct
NR_PDCP_Config__drb
*
drb_config
=
pdcp_config
->
drb
;
if
(
drb_config
)
{
if
(
drb_config
->
discardTimer
)
drb
->
discard_timer
=
decode_discard_timer
(
*
drb_config
->
discardTimer
);
bool
size_set
=
false
;
if
(
drb_config
->
pdcp_SN_SizeUL
)
{
drb
->
sn_size
=
decode_sn_size_ul
(
*
drb_config
->
pdcp_SN_SizeUL
);
size_set
=
true
;
}
if
(
drb_config
->
pdcp_SN_SizeDL
)
{
int
size
=
decode_sn_size_dl
(
*
drb_config
->
pdcp_SN_SizeDL
);
AssertFatal
(
!
size_set
||
(
size
==
drb
->
sn_size
),
"SN sizes must be the same. dl=%d, ul=%d"
,
size
,
drb
->
sn_size
);
drb
->
sn_size
=
size
;
}
}
}
if
(
sdap_config
)
{
// nr_reconfigure_sdap_entity
AssertFatal
(
false
,
"Function to reconfigure SDAP entity not implemented yet
\n
"
);
}
nr_pdcp_manager_unlock
(
nr_pdcp_ue_manager
);
}
...
...
@@ -1131,6 +1155,7 @@ void nr_pdcp_release_drb(ue_id_t ue_id, int drb_id)
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
)
{
nr_sdap_release_drb
(
ue_id
,
drb_id
,
drb
->
pdusession_id
);
drb
->
release_entity
(
drb
);
drb
->
delete_entity
(
drb
);
ue
->
drb
[
drb_id
-
1
]
=
NULL
;
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h
View file @
5249dd96
...
...
@@ -69,10 +69,11 @@ void nr_pdcp_reestablishment(ue_id_t ue_id, int rb_id, bool srb_flag);
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_Reorderin
g
);
void
nr_pdcp_reconfigure_drb
(
ue_id_t
ue_id
,
int
drb_id
,
NR_PDCP_Config_t
*
pdcp_config
,
NR_SDAP_Config_t
*
sdap_confi
g
);
void
nr_pdcp_release_srb
(
ue_id_t
ue_id
,
int
srb_id
);
void
nr_pdcp_release_drb
(
ue_id_t
ue_id
,
int
drb_id
);
void
add_srb
(
int
is_gnb
,
ue_id_t
rntiMaybeUEid
,
struct
NR_SRB_ToAddMod
*
s
,
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
5249dd96
...
...
@@ -1256,8 +1256,9 @@ static void nr_rrc_ue_process_RadioBearerConfig(NR_UE_RRC_INST_t *ue_rrc,
if
(
rrcNB
->
status_DRBs
[
DRB_id
]
==
RB_ESTABLISHED
)
{
AssertFatal
(
drb
->
reestablishPDCP
==
NULL
,
"reestablishPDCP not yet implemented
\n
"
);
AssertFatal
(
drb
->
recoverPDCP
==
NULL
,
"recoverPDCP not yet implemented
\n
"
);
if
(
drb
->
pdcp_Config
&&
drb
->
pdcp_Config
->
t_Reordering
)
nr_pdcp_reconfigure_drb
(
rnti
,
DRB_id
,
*
drb
->
pdcp_Config
->
t_Reordering
);
NR_SDAP_Config_t
*
sdap_Config
=
drb
->
cnAssociation
?
drb
->
cnAssociation
->
choice
.
sdap_Config
:
NULL
;
if
(
drb
->
pdcp_Config
||
sdap_Config
)
nr_pdcp_reconfigure_drb
(
rnti
,
DRB_id
,
drb
->
pdcp_Config
,
sdap_Config
);
if
(
drb
->
cnAssociation
)
AssertFatal
(
drb
->
cnAssociation
->
choice
.
sdap_Config
==
NULL
,
"SDAP reconfiguration not yet implemented
\n
"
);
}
else
{
...
...
openair2/SDAP/nr_sdap/nr_sdap_entity.c
View file @
5249dd96
...
...
@@ -468,6 +468,21 @@ nr_sdap_entity_t *nr_sdap_get_entity(ue_id_t ue_id, int pdusession_id)
return
NULL
;
}
void
nr_sdap_release_drb
(
ue_id_t
ue_id
,
int
drb_id
,
int
pdusession_id
)
{
// remove all QoS flow to DRB mappings associated with the released DRB
nr_sdap_entity_t
*
sdap
=
nr_sdap_get_entity
(
ue_id
,
pdusession_id
);
if
(
sdap
)
{
for
(
int
i
=
0
;
i
<
SDAP_MAX_QFI
;
i
++
)
{
if
(
sdap
->
qfi2drb_table
[
i
].
drb_id
==
drb_id
)
sdap
->
qfi2drb_table
[
i
].
drb_id
=
SDAP_NO_MAPPING_RULE
;
}
}
else
LOG_E
(
SDAP
,
"Couldn't find a SDAP entity associated with PDU session ID %d
\n
"
,
pdusession_id
);
}
bool
nr_sdap_delete_entity
(
ue_id_t
ue_id
,
int
pdusession_id
)
{
nr_sdap_entity_t
*
entityPtr
=
sdap_info
.
sdap_entity_llist
;
...
...
openair2/SDAP/nr_sdap/nr_sdap_entity.h
View file @
5249dd96
...
...
@@ -169,6 +169,8 @@ nr_sdap_entity_t *new_nr_sdap_entity(int is_gnb, bool has_sdap_rx, bool has_sdap
/* Entity Handling Related Functions */
nr_sdap_entity_t
*
nr_sdap_get_entity
(
ue_id_t
ue_id
,
int
pdusession_id
);
void
nr_sdap_release_drb
(
ue_id_t
ue_id
,
int
drb_id
,
int
pdusession_id
);
/**
* @brief Function to delete a single SDAP Entity based on the ue_id and pdusession_id.
* @note 1. SDAP entities may have the same ue_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