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
littleBu
OpenXG-RAN
Commits
f0ab2683
Commit
f0ab2683
authored
Jan 24, 2025
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "F1AP IDs: Allow AddMod, fix concurrency bug"
This reverts commit
6d5e29f5
.
parent
6d5e29f5
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
30 additions
and
37 deletions
+30
-37
openair2/F1AP/f1ap_ids.c
openair2/F1AP/f1ap_ids.c
+6
-6
openair2/F1AP/f1ap_ids.h
openair2/F1AP/f1ap_ids.h
+2
-2
openair2/F1AP/f1ap_ids_test.c
openair2/F1AP/f1ap_ids_test.c
+6
-18
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+2
-2
openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c
openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c
+1
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+6
-3
openair2/RRC/NR/rrc_gNB_UE_context.c
openair2/RRC/NR/rrc_gNB_UE_context.c
+1
-1
openair2/RRC/NR/rrc_gNB_cuup.c
openair2/RRC/NR/rrc_gNB_cuup.c
+2
-1
openair2/RRC/NR/rrc_gNB_du.c
openair2/RRC/NR/rrc_gNB_du.c
+2
-1
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+2
-2
No files found.
openair2/F1AP/f1ap_ids.c
View file @
f0ab2683
...
...
@@ -60,14 +60,14 @@ void cu_init_f1_ue_data(void)
pthread_mutex_unlock
(
&
cu2du_mutex
);
}
bool
cu_add
mod
_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
)
bool
cu_add_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
)
{
pthread_mutex_lock
(
&
cu2du_mutex
);
DevAssert
(
cu2du_ue_mapping
!=
NULL
);
uint64_t
key
=
ue_id
;
if
(
hashtable_is_key_exists
(
cu2du_ue_mapping
,
key
)
==
HASH_TABLE_OK
)
{
hashtable_rc_t
ret
=
hashtable_remove
(
cu2du_ue_mapping
,
key
);
DevAssert
(
ret
==
HASH_TABLE_OK
)
;
pthread_mutex_unlock
(
&
cu2du_mutex
);
return
false
;
}
bool
ret
=
add_hashtable_data
(
cu2du_ue_mapping
,
key
,
data
);
pthread_mutex_unlock
(
&
cu2du_mutex
);
...
...
@@ -116,14 +116,14 @@ void du_init_f1_ue_data(void)
pthread_mutex_unlock
(
&
du2cu_mutex
);
}
bool
du_add
mod
_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
)
bool
du_add_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
)
{
pthread_mutex_lock
(
&
du2cu_mutex
);
DevAssert
(
du2cu_ue_mapping
!=
NULL
);
uint64_t
key
=
ue_id
;
if
(
hashtable_is_key_exists
(
du2cu_ue_mapping
,
key
)
==
HASH_TABLE_OK
)
{
hashtable_rc_t
ret
=
hashtable_remove
(
du2cu_ue_mapping
,
key
);
DevAssert
(
ret
==
HASH_TABLE_OK
)
;
pthread_mutex_unlock
(
&
du2cu_mutex
);
return
false
;
}
bool
ret
=
add_hashtable_data
(
du2cu_ue_mapping
,
key
,
data
);
pthread_mutex_unlock
(
&
du2cu_mutex
);
...
...
openair2/F1AP/f1ap_ids.h
View file @
f0ab2683
...
...
@@ -38,13 +38,13 @@ typedef struct f1_ue_data_t {
}
f1_ue_data_t
;
void
cu_init_f1_ue_data
(
void
);
bool
cu_add
mod
_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
);
bool
cu_add_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
);
bool
cu_exists_f1_ue_data
(
uint32_t
ue_id
);
f1_ue_data_t
cu_get_f1_ue_data
(
uint32_t
ue_id
);
bool
cu_remove_f1_ue_data
(
uint32_t
ue_id
);
void
du_init_f1_ue_data
(
void
);
bool
du_add
mod
_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
);
bool
du_add_f1_ue_data
(
uint32_t
ue_id
,
const
f1_ue_data_t
*
data
);
bool
du_exists_f1_ue_data
(
uint32_t
ue_id
);
f1_ue_data_t
du_get_f1_ue_data
(
uint32_t
ue_id
);
bool
du_remove_f1_ue_data
(
uint32_t
ue_id
);
...
...
openair2/F1AP/f1ap_ids_test.c
View file @
f0ab2683
...
...
@@ -30,11 +30,10 @@ void du_data_test()
du_init_f1_ue_data
();
int
rnti
=
13
;
f1_ue_data_t
data
=
{.
secondary_ue
=
1
};
bool
ret
=
du_addmod_f1_ue_data
(
rnti
,
&
data
);
DevAssert
(
ret
);
// we can overwrite, no problem
ret
=
du_addmod_f1_ue_data
(
rnti
,
&
data
);
bool
ret
=
du_add_f1_ue_data
(
rnti
,
&
data
);
DevAssert
(
ret
);
ret
=
du_add_f1_ue_data
(
rnti
,
&
data
);
DevAssert
(
!
ret
);
bool
exists
=
du_exists_f1_ue_data
(
rnti
);
DevAssert
(
exists
);
f1_ue_data_t
rdata
=
du_get_f1_ue_data
(
rnti
);
...
...
@@ -46,25 +45,14 @@ void cu_data_test()
cu_init_f1_ue_data
();
int
ue_id
=
13
;
f1_ue_data_t
data
=
{.
secondary_ue
=
1
};
bool
ret
=
cu_addmod_f1_ue_data
(
ue_id
,
&
data
);
DevAssert
(
ret
);
// we can overwrite, no problem
data
.
secondary_ue
=
2
;
ret
=
cu_addmod_f1_ue_data
(
ue_id
,
&
data
);
bool
ret
=
cu_add_f1_ue_data
(
ue_id
,
&
data
);
DevAssert
(
ret
);
ret
=
cu_add_f1_ue_data
(
ue_id
,
&
data
);
DevAssert
(
!
ret
);
bool
exists
=
cu_exists_f1_ue_data
(
ue_id
);
DevAssert
(
exists
);
f1_ue_data_t
rdata
=
cu_get_f1_ue_data
(
ue_id
);
DevAssert
(
rdata
.
secondary_ue
==
data
.
secondary_ue
);
rdata
.
secondary_ue
=
3
;
// overwrite once more
ret
=
cu_addmod_f1_ue_data
(
ue_id
,
&
rdata
);
DevAssert
(
ret
);
exists
=
cu_exists_f1_ue_data
(
ue_id
);
DevAssert
(
exists
);
f1_ue_data_t
r2data
=
cu_get_f1_ue_data
(
ue_id
);
DevAssert
(
r2data
.
secondary_ue
==
rdata
.
secondary_ue
);
}
int
main
()
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
f0ab2683
...
...
@@ -482,7 +482,7 @@ static NR_UE_info_t *create_new_UE(gNB_MAC_INST *mac, uint32_t cu_id)
return
NULL
;
f1_ue_data_t
new_ue_data
=
{.
secondary_ue
=
cu_id
};
du_add
mod
_f1_ue_data
(
rnti
,
&
new_ue_data
);
du_add_f1_ue_data
(
rnti
,
&
new_ue_data
);
const
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
common_channels
[
CC_id
].
ServingCellConfigCommon
;
const
NR_ServingCellConfig_t
*
sccd
=
mac
->
common_channels
[
CC_id
].
pre_ServingCellConfig
;
...
...
@@ -826,7 +826,7 @@ void dl_rrc_message_transfer(const f1ap_dl_rrc_message_t *dl_rrc)
if
(
!
du_exists_f1_ue_data
(
dl_rrc
->
gNB_DU_ue_id
))
{
LOG_D
(
NR_MAC
,
"No CU UE ID stored for UE RNTI %04x, adding CU UE ID %d
\n
"
,
dl_rrc
->
gNB_DU_ue_id
,
dl_rrc
->
gNB_CU_ue_id
);
f1_ue_data_t
new_ue_data
=
{.
secondary_ue
=
dl_rrc
->
gNB_CU_ue_id
};
du_add
mod
_f1_ue_data
(
dl_rrc
->
gNB_DU_ue_id
,
&
new_ue_data
);
du_add_f1_ue_data
(
dl_rrc
->
gNB_DU_ue_id
,
&
new_ue_data
);
}
if
(
UE
->
expect_reconfiguration
&&
dl_rrc
->
srb_id
==
1
)
{
...
...
openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c
View file @
f0ab2683
...
...
@@ -150,7 +150,7 @@ void e1_bearer_context_setup(const e1ap_bearer_setup_req_t *req)
uint32_t
cu_up_ue_id
=
req
->
gNB_cu_cp_ue_id
;
f1_ue_data_t
ued
=
{.
secondary_ue
=
req
->
gNB_cu_cp_ue_id
};
if
(
need_ue_id_mgmt
)
{
cu_add
mod
_f1_ue_data
(
cu_up_ue_id
,
&
ued
);
cu_add_f1_ue_data
(
cu_up_ue_id
,
&
ued
);
LOG_I
(
E1AP
,
"adding UE with CU-CP UE ID %d and CU-UP UE ID %d
\n
"
,
req
->
gNB_cu_cp_ue_id
,
cu_up_ue_id
);
}
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
f0ab2683
...
...
@@ -1181,7 +1181,8 @@ static void rrc_handle_RRCReestablishmentRequest(gNB_RRC_INST *rrc,
/* update to old DU assoc id -- RNTI + secondary DU UE ID further below */
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
UE
->
rrc_ue_id
);
ue_data
.
du_assoc_id
=
source_ctx
->
du
->
assoc_id
;
cu_addmod_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
cu_remove_f1_ue_data
(
UE
->
rrc_ue_id
);
cu_add_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
nr_rrc_finalize_ho
(
UE
);
}
else
if
(
physCellId
!=
cell_info
->
nr_pci
)
{
/* UE was moving from previous cell so quickly that RRCReestablishment for previous cell was received in this cell */
...
...
@@ -1211,7 +1212,8 @@ static void rrc_handle_RRCReestablishmentRequest(gNB_RRC_INST *rrc,
UE
->
nr_cellid
=
msg
->
nr_cellid
;
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
UE
->
rrc_ue_id
);
ue_data
.
secondary_ue
=
msg
->
gNB_DU_ue_id
;
cu_addmod_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
cu_remove_f1_ue_data
(
UE
->
rrc_ue_id
);
cu_add_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
rrc_gNB_generate_RRCReestablishment
(
ue_context_p
,
msg
->
du2cu_rrc_container
,
old_rnti
,
du
);
return
;
...
...
@@ -2123,7 +2125,8 @@ static void rrc_CU_process_ue_context_modification_response(MessageDef *msg_p, i
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
UE
->
rrc_ue_id
);
ue_data
.
secondary_ue
=
target_ctx
->
du_ue_id
;
ue_data
.
du_assoc_id
=
target_ctx
->
du
->
assoc_id
;
cu_addmod_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
cu_remove_f1_ue_data
(
UE
->
rrc_ue_id
);
cu_add_f1_ue_data
(
UE
->
rrc_ue_id
,
&
ue_data
);
LOG_I
(
NR_RRC
,
"UE %d handover: update RNTI from %04x to %04x
\n
"
,
UE
->
rrc_ue_id
,
UE
->
rnti
,
target_ctx
->
new_rnti
);
nr_ho_source_cu_t
*
source_ctx
=
UE
->
ho_context
->
source
;
DevAssert
(
source_ctx
->
old_rnti
==
UE
->
rnti
);
...
...
openair2/RRC/NR/rrc_gNB_UE_context.c
View file @
f0ab2683
...
...
@@ -204,7 +204,7 @@ rrc_gNB_ue_context_t *rrc_gNB_create_ue_context(sctp_assoc_t assoc_id,
AssertFatal
(
!
cu_exists_f1_ue_data
(
ue
->
rrc_ue_id
),
"UE F1 Context for ID %d already exists, logic bug
\n
"
,
ue
->
rrc_ue_id
);
cu_add
mod
_f1_ue_data
(
ue
->
rrc_ue_id
,
&
ue_data
);
cu_add_f1_ue_data
(
ue
->
rrc_ue_id
,
&
ue_data
);
RB_INSERT
(
rrc_nr_ue_tree_s
,
&
rrc_instance_pP
->
rrc_ue_head
,
ue_context_p
);
LOG_UE_EVENT
(
ue
,
...
...
openair2/RRC/NR/rrc_gNB_cuup.c
View file @
f0ab2683
...
...
@@ -132,7 +132,8 @@ sctp_assoc_t get_new_cuup_for_ue(const gNB_RRC_INST *rrc, const gNB_RRC_UE_t *ue
/* update the association for the UE so it will be picked up later */
ue_data
.
e1_assoc_id
=
selected
->
assoc_id
;
cu_addmod_f1_ue_data
(
ue
->
rrc_ue_id
,
&
ue_data
);
cu_remove_f1_ue_data
(
ue
->
rrc_ue_id
);
cu_add_f1_ue_data
(
ue
->
rrc_ue_id
,
&
ue_data
);
LOG_I
(
RRC
,
"UE %d associating to CU-UP assoc_id %d out of %ld CU-UPs
\n
"
,
ue
->
rrc_ue_id
,
ue_data
.
e1_assoc_id
,
rrc
->
num_cuups
);
return
ue_data
.
e1_assoc_id
;
...
...
openair2/RRC/NR/rrc_gNB_du.c
View file @
f0ab2683
...
...
@@ -426,8 +426,9 @@ static int invalidate_du_connections(gNB_RRC_INST *rrc, sctp_assoc_t assoc_id)
if
(
ue_data
.
du_assoc_id
==
assoc_id
)
{
/* this UE belongs to the DU that disconnected, set du_assoc_id to 0,
* meaning DU is offline, then trigger release request */
cu_remove_f1_ue_data
(
ue_id
);
ue_data
.
du_assoc_id
=
0
;
cu_add
mod
_f1_ue_data
(
ue_id
,
&
ue_data
);
cu_add_f1_ue_data
(
ue_id
,
&
ue_data
);
rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ
(
0
,
ue_context_p
,
NGAP_CAUSE_RADIO_NETWORK
,
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
f0ab2683
...
...
@@ -355,9 +355,9 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *ue_context_p, x2a
uint32_t
du_ue_id
=
ue_context_p
->
ue_context
.
rnti
;
uint32_t
rrc_ue_id
=
ue_context_p
->
ue_context
.
rrc_ue_id
;
f1_ue_data_t
du_ue_data
=
{.
secondary_ue
=
rrc_ue_id
};
du_add
mod
_f1_ue_data
(
du_ue_id
,
&
du_ue_data
);
du_add_f1_ue_data
(
du_ue_id
,
&
du_ue_data
);
f1_ue_data_t
cu_ue_data
=
{.
secondary_ue
=
du_ue_id
};
cu_add
mod
_f1_ue_data
(
rrc_ue_id
,
&
cu_ue_data
);
cu_add_f1_ue_data
(
rrc_ue_id
,
&
cu_ue_data
);
LOG_I
(
RRC
,
"Assign CU UE ID %d and DU UE ID %d to UE RNTI %04x
\n
"
,
rrc_ue_id
,
du_ue_id
,
ue_context_p
->
ue_context
.
rnti
);
// configure MAC and RLC
...
...
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