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
d8276eed
Commit
d8276eed
authored
Jul 17, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
F1AP: harmonize f1ap_plmn_t type in all messages
parent
d6e99a82
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
101 additions
and
99 deletions
+101
-99
openair2/COMMON/f1ap_messages_types.h
openair2/COMMON/f1ap_messages_types.h
+15
-33
openair2/F1AP/f1ap_common.h
openair2/F1AP/f1ap_common.h
+1
-1
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+6
-4
openair2/F1AP/f1ap_cu_paging.c
openair2/F1AP/f1ap_cu_paging.c
+1
-2
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+2
-1
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+25
-13
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+3
-3
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+27
-19
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
+1
-3
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+17
-17
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+3
-3
No files found.
openair2/COMMON/f1ap_messages_types.h
View file @
d8276eed
...
...
@@ -84,21 +84,21 @@ typedef struct f1ap_net_config_t {
uint16_t
DUport
;
}
f1ap_net_config_t
;
typedef
struct
cellIDs_s
{
typedef
struct
f1ap_plmn_t
{
uint16_t
mcc
;
uint16_t
mnc
;
uint8_t
mnc_digit_length
;
}
f1ap_plmn_t
;
typedef
struct
cellIDs_s
{
// Served Cell Information
/* Tracking area code */
uint32_t
tac
;
/* Mobile Country Codes
* Mobile Network Codes
*/
uint16_t
mcc
;
uint16_t
mnc
;
uint8_t
mnc_digit_length
;
// NR CGI
f1ap_plmn_t
plmn
;
uint64_t
nr_cellid
;
// NR Global Cell Id
// NR Global Cell Id
uint64_t
nr_cellid
;
// NR Physical Cell Ids
uint16_t
nr_pci
;
// Number of slide support items (max 16, could be increased to as much as 1024)
...
...
@@ -181,12 +181,7 @@ typedef struct f1ap_du_register_req_t {
}
f1ap_du_register_req_t
;
typedef
struct
served_cells_to_activate_s
{
/// mcc of DU cells
uint16_t
mcc
;
/// mnc of DU cells
uint16_t
mnc
;
/// mnc digit length of DU cells
uint8_t
mnc_digit_length
;
f1ap_plmn_t
plmn
;
// NR Global Cell Id
uint64_t
nr_cellid
;
/// NRPCI
...
...
@@ -243,9 +238,7 @@ typedef struct f1ap_setup_failure_s {
typedef
struct
f1ap_gnb_cu_configuration_update_acknowledge_s
{
uint16_t
num_cells_failed_to_be_activated
;
uint16_t
mcc
[
F1AP_MAX_NB_CELLS
];
uint16_t
mnc
[
F1AP_MAX_NB_CELLS
];
uint8_t
mnc_digit_length
[
F1AP_MAX_NB_CELLS
];
f1ap_plmn_t
plmn
[
F1AP_MAX_NB_CELLS
];
uint64_t
nr_cellid
[
F1AP_MAX_NB_CELLS
];
uint16_t
cause
[
F1AP_MAX_NB_CELLS
];
int
have_criticality
;
...
...
@@ -258,9 +251,7 @@ typedef struct f1ap_gnb_cu_configuration_update_acknowledge_s {
uint16_t
cause_failed
[
F1AP_MAX_NO_OF_TNL_ASSOCIATIONS
];
uint16_t
noofDedicatedSIDeliveryNeededUEs
;
uint32_t
gNB_CU_ue_id
[
F1AP_MAX_NO_UE_ID
];
uint16_t
ue_mcc
[
F1AP_MAX_NO_UE_ID
];
uint16_t
ue_mnc
[
F1AP_MAX_NO_UE_ID
];
uint8_t
ue_mnc_digit_length
[
F1AP_MAX_NO_UE_ID
];
f1ap_plmn_t
ue_plmn
[
F1AP_MAX_NO_UE_ID
];
uint64_t
ue_nr_cellid
[
F1AP_MAX_NO_UE_ID
];
}
f1ap_gnb_cu_configuration_update_acknowledge_t
;
...
...
@@ -288,12 +279,7 @@ typedef struct f1ap_dl_rrc_message_s {
typedef
struct
f1ap_initial_ul_rrc_message_s
{
uint32_t
gNB_DU_ue_id
;
/// mcc of DU cell
uint16_t
mcc
;
/// mnc of DU cell
uint16_t
mnc
;
/// mnc digit length of DU cells
uint8_t
mnc_digit_length
;
f1ap_plmn_t
plmn
;
/// nr cell id
uint64_t
nr_cellid
;
/// crnti
...
...
@@ -369,9 +355,7 @@ typedef struct f1ap_ue_context_setup_s {
uint32_t
gNB_CU_ue_id
;
uint32_t
gNB_DU_ue_id
;
// SpCell Info
uint16_t
mcc
;
uint16_t
mnc
;
uint8_t
mnc_digit_length
;
f1ap_plmn_t
plmn
;
uint64_t
nr_cellid
;
uint8_t
servCellIndex
;
uint8_t
*
cellULConfigured
;
...
...
@@ -441,9 +425,7 @@ typedef struct f1ap_paging_ind_s {
uint16_t
ueidentityindexvalue
;
uint64_t
fiveg_s_tmsi
;
uint8_t
fiveg_s_tmsi_length
;
uint16_t
mcc
;
uint16_t
mnc
;
uint8_t
mnc_digit_length
;
f1ap_plmn_t
plmn
;
uint64_t
nr_cellid
;
uint8_t
paging_drx
;
}
f1ap_paging_ind_t
;
...
...
openair2/F1AP/f1ap_common.h
View file @
d8276eed
...
...
@@ -421,7 +421,7 @@ void createF1inst(instance_t instanceP, f1ap_setup_req_t *req, f1ap_net_config_t
//lts: C struct type is not homogeneous, so we need macros instead of functions
#define addnRCGI(nRCGi, servedCelL) \
MCC_MNC_TO_PLMNID((servedCelL)->
mcc,(servedCelL)-> mnc,(servedCelL)->
mnc_digit_length, \
MCC_MNC_TO_PLMNID((servedCelL)->
plmn.mcc,(servedCelL)->plmn.mnc,(servedCelL)->plmn.
mnc_digit_length, \
&((nRCGi).pLMN_Identity)); \
NR_CELL_ID_TO_BIT_STRING((servedCelL)->nr_cellid, &((nRCGi).nRCellIdentity));
extern
RAN_CONTEXT_t
RC
;
...
...
openair2/F1AP/f1ap_cu_interface_management.c
View file @
d8276eed
...
...
@@ -127,14 +127,16 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
}
/* - nRCGI */
TBCD_TO_MCC_MNC
(
&
(
servedCellInformation
->
nRCGI
.
pLMN_Identity
),
req
->
cell
[
i
].
mcc
,
req
->
cell
[
i
].
mnc
,
req
->
cell
[
i
].
mnc_digit_length
);
TBCD_TO_MCC_MNC
(
&
(
servedCellInformation
->
nRCGI
.
pLMN_Identity
),
req
->
cell
[
i
].
plmn
.
mcc
,
req
->
cell
[
i
].
plmn
.
mnc
,
req
->
cell
[
i
].
plmn
.
mnc_digit_length
);
// NR cellID
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
servedCellInformation
->
nRCGI
.
nRCellIdentity
,
req
->
cell
[
i
].
nr_cellid
);
LOG_D
(
F1AP
,
"[SCTP %d] Received nRCGI: MCC %d, MNC %d, CELL_ID %llu
\n
"
,
assoc_id
,
req
->
cell
[
i
].
mcc
,
req
->
cell
[
i
].
mnc
,
req
->
cell
[
i
].
plmn
.
mcc
,
req
->
cell
[
i
].
plmn
.
mnc
,
(
long
long
unsigned
int
)
req
->
cell
[
i
].
nr_cellid
);
/* - nRPCI */
req
->
cell
[
i
].
nr_pci
=
servedCellInformation
->
nRPCI
;
...
...
openair2/F1AP/f1ap_cu_paging.c
View file @
d8276eed
...
...
@@ -101,8 +101,7 @@ int CU_send_Paging(instance_t instance, f1ap_paging_ind_t *paging) {
itemies
->
criticality
=
F1AP_Criticality_reject
;
itemies
->
value
.
present
=
F1AP_PagingCell_ItemIEs__value_PR_PagingCell_Item
;
F1AP_NRCGI_t
*
nRCGI
=
&
itemies
->
value
.
choice
.
PagingCell_Item
.
nRCGI
;
MCC_MNC_TO_PLMNID
(
paging
->
mcc
,
paging
->
mnc
,
paging
->
mnc_digit_length
,
&
nRCGI
->
pLMN_Identity
);
MCC_MNC_TO_PLMNID
(
paging
->
plmn
.
mcc
,
paging
->
plmn
.
mnc
,
paging
->
plmn
.
mnc_digit_length
,
&
nRCGI
->
pLMN_Identity
);
NR_CELL_ID_TO_BIT_STRING
(
paging
->
nr_cellid
,
&
nRCGI
->
nRCellIdentity
);
}
...
...
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
d8276eed
...
...
@@ -963,7 +963,8 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, f1ap_ue_context
uint8_t
*
buffer
=
NULL
;
uint32_t
len
=
0
;
// for test
cellIDs_t
hardCoded
=
{
.
mcc
=
208
,
.
mnc
=
93
,
.
mnc_digit_length
=
2
};
LOG_W
(
F1AP
,
"UE Context Modification Request PLMN is hardcoded!
\n
"
);
cellIDs_t
hardCoded
=
{
.
plmn
.
mcc
=
208
,
.
plmn
.
mnc
=
93
,
.
plmn
.
mnc_digit_length
=
2
};
/* Create */
/* 0. Message Type */
pdu
.
present
=
F1AP_F1AP_PDU_PR_initiatingMessage
;
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
d8276eed
...
...
@@ -169,7 +169,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance, f1ap_setup_req_t *setup_req)
/* servedPLMN information */
asn1cSequenceAdd
(
served_cell_information
->
servedPLMNs
.
list
,
F1AP_ServedPLMNs_Item_t
,
servedPLMN_item
);
MCC_MNC_TO_PLMNID
(
cell
->
mcc
,
cell
->
mnc
,
cell
->
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
MCC_MNC_TO_PLMNID
(
cell
->
plmn
.
mcc
,
cell
->
plmn
.
mnc
,
cell
->
plmn
.
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
*
nR_Mode_Info
=
&
served_cell_information
->
nR_Mode_Info
;
F1AP_ProtocolExtensionContainer_10696P34_t
*
p
=
calloc
(
1
,
sizeof
(
*
p
));
...
...
@@ -420,8 +420,10 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
cells_to_be_activated_list_item_ies
->
value
.
present
==
F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->value.present == F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item"
);
cell
=
&
cells_to_be_activated_list_item_ies
->
value
.
choice
.
Cells_to_be_Activated_List_Item
;
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
mcc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
mnc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
mnc_digit_length
);
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc_digit_length
);
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
0
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
1
],
...
...
@@ -452,9 +454,13 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
F1AP_GNB_CUSystemInformation_t
*
gNB_CUSystemInformation
=
(
F1AP_GNB_CUSystemInformation_t
*
)
&
cells_to_be_activated_list_itemExtIEs
->
extensionValue
.
choice
.
GNB_CUSystemInformation
;
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
num_SI
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
AssertFatal
(
ext
->
list
.
count
==
1
,
"At least one SI message should be there, and only 1 for now!
\n
"
);
LOG_D
(
F1AP
,
"F1AP: Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
mcc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
mnc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
nr_cellid
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
num_SI
);
LOG_D
(
F1AP
,
"F1AP: Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
nr_cellid
,
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
num_SI
);
for
(
int
si
=
0
;
si
<
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
si
++
)
{
F1AP_SibtypetobeupdatedListItem_t
*
sib_item
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
array
[
si
];
...
...
@@ -602,7 +608,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
}
asn1cSequenceAdd
(
served_cell_information
->
servedPLMNs
.
list
,
F1AP_ServedPLMNs_Item_t
,
servedPLMN_item
);
MCC_MNC_TO_PLMNID
(
cell
->
mcc
,
cell
->
mnc
,
cell
->
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
MCC_MNC_TO_PLMNID
(
cell
->
plmn
.
mcc
,
cell
->
plmn
.
mnc
,
cell
->
plmn
.
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
*
nR_Mode_Info
=&
served_cell_information
->
nR_Mode_Info
;
LOG_E
(
F1AP
,
"Here hardcoded values instead of values from configuration file
\n
"
);
...
...
@@ -696,7 +702,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
}
asn1cSequenceAdd
(
served_cell_information
->
servedPLMNs
.
list
,
F1AP_ServedPLMNs_Item_t
,
servedPLMN_item
);
MCC_MNC_TO_PLMNID
(
cell
->
mcc
,
cell
->
mnc
,
cell
->
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
MCC_MNC_TO_PLMNID
(
cell
->
plmn
.
mcc
,
cell
->
plmn
.
mnc
,
cell
->
plmn
.
mnc_digit_length
,
&
servedPLMN_item
->
pLMN_Identity
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
*
nR_Mode_Info
=
&
served_cell_information
->
nR_Mode_Info
;
...
...
@@ -847,8 +853,10 @@ int DU_handle_gNB_CU_CONFIGURATION_UPDATE(instance_t instance,
AssertFatal
(
cells_to_be_activated_list_item_ies
->
value
.
present
==
F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->value.present == F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item"
);
cell
=
&
cells_to_be_activated_list_item_ies
->
value
.
choice
.
Cells_to_be_Activated_List_Item
;
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
mcc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
mnc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
mnc_digit_length
);
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc_digit_length
);
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
0
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
1
],
...
...
@@ -879,9 +887,13 @@ int DU_handle_gNB_CU_CONFIGURATION_UPDATE(instance_t instance,
F1AP_GNB_CUSystemInformation_t
*
gNB_CUSystemInformation
=
(
F1AP_GNB_CUSystemInformation_t
*
)
&
cells_to_be_activated_list_itemExtIEs
->
extensionValue
.
choice
.
GNB_CUSystemInformation
;
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
num_SI
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
AssertFatal
(
ext
->
list
.
count
==
1
,
"At least one SI message should be there, and only 1 for now!
\n
"
);
LOG_D
(
F1AP
,
"F1AP: Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
mcc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
mnc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
nr_cellid
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
num_SI
);
LOG_D
(
F1AP
,
"F1AP: Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
nr_cellid
,
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
cells_to_activate
[
i
].
num_SI
);
for
(
int
si
=
0
;
si
<
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
si
++
)
{
F1AP_SibtypetobeupdatedListItem_t
*
sib_item
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
array
[
si
];
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
d8276eed
...
...
@@ -85,9 +85,9 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextSetupRequestIEs_t
,
ieNet
,
container
,
F1AP_ProtocolIE_ID_id_SpCell_ID
,
true
);
PLMNID_TO_MCC_MNC
(
&
ieNet
->
value
.
choice
.
NRCGI
.
pLMN_Identity
,
f1ap_ue_context_setup_req
->
mcc
,
f1ap_ue_context_setup_req
->
mnc
,
f1ap_ue_context_setup_req
->
mnc_digit_length
);
f1ap_ue_context_setup_req
->
plmn
.
mcc
,
f1ap_ue_context_setup_req
->
plmn
.
mnc
,
f1ap_ue_context_setup_req
->
plmn
.
mnc_digit_length
);
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
ieNet
->
value
.
choice
.
NRCGI
.
nRCellIdentity
,
f1ap_ue_context_setup_req
->
nr_cellid
);
/* ServCellIndex */
F1AP_UEContextSetupRequestIEs_t
*
ieCell
;
...
...
openair2/GNB_APP/gnb_config.c
View file @
d8276eed
...
...
@@ -1943,13 +1943,13 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i) {
f1Setup
->
gNB_DU_id
=
*
(
GNBParamList
.
paramarray
[
k
][
GNB_GNB_ID_IDX
].
uptr
);
f1Setup
->
gNB_DU_name
=
strdup
(
*
(
GNBParamList
.
paramarray
[
k
][
GNB_GNB_NAME_IDX
].
strptr
));
f1Setup
->
cell
[
k
].
tac
=
*
GNBParamList
.
paramarray
[
k
][
GNB_TRACKING_AREA_CODE_IDX
].
uptr
;
f1Setup
->
cell
[
k
].
mcc
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MOBILE_COUNTRY_CODE_IDX
].
uptr
;
f1Setup
->
cell
[
k
].
mnc
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MOBILE_NETWORK_CODE_IDX
].
uptr
;
f1Setup
->
cell
[
k
].
mnc_digit_length
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MNC_DIGIT_LENGTH
].
u8ptr
;
AssertFatal
((
f1Setup
->
cell
[
k
].
mnc_digit_length
==
2
)
||
(
f1Setup
->
cell
[
k
].
mnc_digit_length
==
3
),
f1Setup
->
cell
[
k
].
plmn
.
mcc
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MOBILE_COUNTRY_CODE_IDX
].
uptr
;
f1Setup
->
cell
[
k
].
plmn
.
mnc
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MOBILE_NETWORK_CODE_IDX
].
uptr
;
f1Setup
->
cell
[
k
].
plmn
.
mnc_digit_length
=
*
PLMNParamList
.
paramarray
[
k
][
GNB_MNC_DIGIT_LENGTH
].
u8ptr
;
AssertFatal
((
f1Setup
->
cell
[
k
].
plmn
.
mnc_digit_length
==
2
)
||
(
f1Setup
->
cell
[
k
].
plmn
.
mnc_digit_length
==
3
),
"BAD MNC DIGIT LENGTH %d"
,
f1Setup
->
cell
[
k
].
mnc_digit_length
);
f1Setup
->
cell
[
k
].
plmn
.
mnc_digit_length
);
f1Setup
->
cell
[
k
].
nr_cellid
=
(
uint64_t
)
*
(
GNBParamList
.
paramarray
[
i
][
GNB_NRCELLID_IDX
].
u64ptr
);
LOG_I
(
GNB_APP
,
"F1AP: gNB idx %d gNB_DU_id %ld, gNB_DU_name %s, TAC %d MCC/MNC/length %d/%d/%d cellID %ld
\n
"
,
...
...
@@ -1957,9 +1957,9 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i) {
f1Setup
->
gNB_DU_id
,
f1Setup
->
gNB_DU_name
,
f1Setup
->
cell
[
k
].
tac
,
f1Setup
->
cell
[
k
].
mcc
,
f1Setup
->
cell
[
k
].
mnc
,
f1Setup
->
cell
[
k
].
mnc_digit_length
,
f1Setup
->
cell
[
k
].
plmn
.
mcc
,
f1Setup
->
cell
[
k
].
plmn
.
mnc
,
f1Setup
->
cell
[
k
].
plmn
.
mnc_digit_length
,
f1Setup
->
cell
[
k
].
nr_cellid
);
F1AP_DU_REGISTER_REQ
(
msg_p
).
net_config
=
read_DU_IP_config
(
&
RC
.
nrmac
[
k
]
->
eth_params_n
);
...
...
@@ -1976,8 +1976,8 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i) {
pthread_mutex_unlock
(
&
rrc
->
cell_info_mutex
);
}
while
(
cell_info_configured
==
0
);
rrc
->
configuration
.
mcc
[
0
]
=
f1Setup
->
cell
[
k
].
mcc
;
rrc
->
configuration
.
mnc
[
0
]
=
f1Setup
->
cell
[
k
].
mnc
;
rrc
->
configuration
.
mcc
[
0
]
=
f1Setup
->
cell
[
k
].
plmn
.
mcc
;
rrc
->
configuration
.
mnc
[
0
]
=
f1Setup
->
cell
[
k
].
plmn
.
mnc
;
rrc
->
configuration
.
tac
=
f1Setup
->
cell
[
k
].
tac
;
rrc
->
nr_cellid
=
f1Setup
->
cell
[
k
].
nr_cellid
;
f1Setup
->
cell
[
k
].
nr_pci
=
*
rrc
->
configuration
.
scc
->
physCellId
;
...
...
@@ -2225,9 +2225,13 @@ int gNB_app_handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
LOG_I
(
GNB_APP
,
"Checking cell %d, rrc inst %d : rrc->nr_cellid %lx, resp->nr_cellid %lx
\n
"
,
j
,
i
,
RC
.
nrrrc
[
i
]
->
nr_cellid
,
resp
->
cells_to_activate
[
j
].
nr_cellid
);
if
(
RC
.
nrrrc
[
i
]
->
nr_cellid
==
resp
->
cells_to_activate
[
j
].
nr_cellid
&&
(
du_check_plmn_identity
(
carrier
,
resp
->
cells_to_activate
[
j
].
mcc
,
resp
->
cells_to_activate
[
j
].
mnc
,
resp
->
cells_to_activate
[
j
].
mnc_digit_length
)
>
0
&&
resp
->
cells_to_activate
[
j
].
nrpci
==
carrier
->
physCellId
))
{
if
(
RC
.
nrrrc
[
i
]
->
nr_cellid
==
resp
->
cells_to_activate
[
j
].
nr_cellid
&&
(
du_check_plmn_identity
(
carrier
,
resp
->
cells_to_activate
[
j
].
plmn
.
mcc
,
resp
->
cells_to_activate
[
j
].
plmn
.
mnc
,
resp
->
cells_to_activate
[
j
].
plmn
.
mnc_digit_length
)
>
0
&&
resp
->
cells_to_activate
[
j
].
nrpci
==
carrier
->
physCellId
))
{
// copy system information and decode it
for
(
si_ind
=
0
;
si_ind
<
resp
->
cells_to_activate
[
j
].
num_SI
;
si_ind
++
)
{
...
...
@@ -2257,11 +2261,15 @@ int gNB_app_handle_f1ap_gnb_cu_configuration_update(f1ap_gnb_cu_configuration_up
LOG_I
(
GNB_APP
,
"Checking cell %d, rrc inst %d : rrc->nr_cellid %lx, gnb_cu_cfg_updatenr_cellid %lx
\n
"
,
j
,
i
,
RC
.
nrrrc
[
i
]
->
nr_cellid
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
nr_cellid
);
if
(
RC
.
nrrrc
[
i
]
->
nr_cellid
==
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
nr_cellid
&&
(
du_check_plmn_identity
(
carrier
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
mcc
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
mnc
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
mnc_digit_length
)
>
0
&&
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
nrpci
==
carrier
->
physCellId
))
{
// copy system information and decode it
for
(
si_ind
=
0
;
si_ind
<
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
num_SI
;
si_ind
++
)
{
if
(
RC
.
nrrrc
[
i
]
->
nr_cellid
==
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
nr_cellid
&&
(
du_check_plmn_identity
(
carrier
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
plmn
.
mcc
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
plmn
.
mnc
,
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
plmn
.
mnc_digit_length
)
>
0
&&
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
nrpci
==
carrier
->
physCellId
))
{
// copy system information and decode it
for
(
si_ind
=
0
;
si_ind
<
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
num_SI
;
si_ind
++
)
{
du_extract_and_decode_SI
(
i
,
si_ind
,
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
View file @
d8276eed
...
...
@@ -64,9 +64,7 @@ static void ue_context_modification_response_direct(const f1ap_ue_context_modif_
f1ap_msg
->
gNB_CU_ue_id
=
resp
->
gNB_CU_ue_id
;
f1ap_msg
->
gNB_DU_ue_id
=
resp
->
gNB_DU_ue_id
;
f1ap_msg
->
mcc
=
resp
->
mcc
;
f1ap_msg
->
mnc
=
resp
->
mnc
;
f1ap_msg
->
mnc_digit_length
=
resp
->
mnc_digit_length
;
f1ap_msg
->
plmn
=
resp
->
plmn
;
f1ap_msg
->
nr_cellid
=
resp
->
nr_cellid
;
f1ap_msg
->
servCellIndex
=
resp
->
servCellIndex
;
AssertFatal
(
resp
->
cellULConfigured
==
NULL
,
"not handled
\n
"
);
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
d8276eed
...
...
@@ -1701,9 +1701,9 @@ static void handle_rrcReconfigurationComplete(const protocol_ctxt_t *const ctxt_
f1ap_ue_context_modif_req_t
ue_context_modif_req
=
{
.
gNB_CU_ue_id
=
UE
->
rrc_ue_id
,
.
gNB_DU_ue_id
=
ue_data
.
secondary_ue
,
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
plmn
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
plmn
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
plmn
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
nr_cellid
=
rrc
->
nr_cellid
,
.
servCellId
=
0
,
/* TODO: correct value? */
.
ReconfigComplOutcome
=
successful_reconfig
?
RRCreconf_success
:
RRCreconf_failure
,
...
...
@@ -1867,8 +1867,8 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *f1_setup_req) {
for
(
int
j
=
0
;
j
<
RC
.
nb_nr_inst
;
j
++
)
{
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
j
];
if
(
rrc
->
configuration
.
mcc
[
0
]
==
f1_setup_req
->
cell
[
i
].
mcc
&&
rrc
->
configuration
.
mnc
[
0
]
==
f1_setup_req
->
cell
[
i
].
mnc
&&
if
(
rrc
->
configuration
.
mcc
[
0
]
==
f1_setup_req
->
cell
[
i
].
plmn
.
mcc
&&
rrc
->
configuration
.
mnc
[
0
]
==
f1_setup_req
->
cell
[
i
].
plmn
.
mnc
&&
rrc
->
nr_cellid
==
f1_setup_req
->
cell
[
i
].
nr_cellid
)
{
//fixme: multi instance is not consistent here
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
=
rrc
->
node_name
;
...
...
@@ -1905,10 +1905,10 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *f1_setup_req) {
rrc
->
carrier
.
physCellId
=
f1_setup_req
->
cell
[
i
].
nr_pci
;
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
gNB_CU_name
=
rrc
->
node_name
;
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
mcc
=
rrc
->
configuration
.
mcc
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
mnc
=
rrc
->
configuration
.
mnc
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
nr_cellid
=
rrc
->
nr_cellid
;
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
plmn
.
mcc
=
rrc
->
configuration
.
mcc
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
plmn
.
mnc
=
rrc
->
configuration
.
mnc
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
plmn
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
];
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
nr_cellid
=
rrc
->
nr_cellid
;
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p2
).
cells_to_activate
[
cu_cell_ind
].
nrpci
=
f1_setup_req
->
cell
[
i
].
nr_pci
;
int
num_SI
=
0
;
...
...
@@ -1925,8 +1925,8 @@ void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *f1_setup_req) {
break
;
}
else
{
// setup_req mcc/mnc match rrc internal list element
LOG_W
(
NR_RRC
,
"[Inst %d] No matching MCC/MNC: rrc->mcc/f1_setup_req->mcc %d/%d rrc->mnc/f1_setup_req->mnc %d/%d rrc->nr_cellid/f1_setup_req->nr_cellid %ld/%ld
\n
"
,
j
,
rrc
->
configuration
.
mcc
[
0
],
f1_setup_req
->
cell
[
i
].
mcc
,
rrc
->
configuration
.
mnc
[
0
],
f1_setup_req
->
cell
[
i
].
mnc
,
j
,
rrc
->
configuration
.
mcc
[
0
],
f1_setup_req
->
cell
[
i
].
plmn
.
mcc
,
rrc
->
configuration
.
mnc
[
0
],
f1_setup_req
->
cell
[
i
].
plmn
.
mnc
,
rrc
->
nr_cellid
,
f1_setup_req
->
cell
[
i
].
nr_cellid
);
}
}
// for (int j=0;j<RC.nb_inst;j++)
...
...
@@ -2384,9 +2384,9 @@ void prepare_and_send_ue_context_modification_f1(rrc_gNB_ue_context_t *ue_contex
f1ap_ue_context_modif_req_t
ue_context_modif_req
=
{
.
gNB_CU_ue_id
=
UE
->
rrc_ue_id
,
.
gNB_DU_ue_id
=
ue_data
.
secondary_ue
,
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
plmn
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
plmn
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
plmn
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
nr_cellid
=
rrc
->
nr_cellid
,
.
servCellId
=
0
,
/* TODO: correct value? */
.
srbs_to_be_setup_length
=
nb_srb
,
...
...
@@ -2741,9 +2741,9 @@ rrc_gNB_generate_SecurityModeCommand(
f1ap_ue_context_setup_t
ue_context_setup_req
=
{
.
gNB_CU_ue_id
=
ue_p
->
rrc_ue_id
,
.
gNB_DU_ue_id
=
ue_data
.
secondary_ue
,
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
plmn
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
plmn
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
plmn
.
mnc_digit_length
=
rrc
->
configuration
.
mnc_digit_length
[
0
],
.
nr_cellid
=
rrc
->
nr_cellid
,
.
servCellId
=
0
,
/* TODO: correct value? */
.
srbs_to_be_setup
=
0
,
/* no new SRBs */
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
d8276eed
...
...
@@ -1333,9 +1333,9 @@ int rrc_gNB_process_PAGING_IND(MessageDef *msg_p, instance_t instance)
for
(
uint8_t
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
NODE_IS_CU
(
RC
.
nrrrc
[
instance
]
->
node_type
))
{
MessageDef
*
m
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
F1AP_PAGING_IND
);
F1AP_PAGING_IND
(
m
).
mcc
=
RC
.
nrrrc
[
j
]
->
configuration
.
mcc
[
0
];
F1AP_PAGING_IND
(
m
).
mnc
=
RC
.
nrrrc
[
j
]
->
configuration
.
mnc
[
0
];
F1AP_PAGING_IND
(
m
)
.
mnc_digit_length
=
RC
.
nrrrc
[
j
]
->
configuration
.
mnc_digit_length
[
0
];
F1AP_PAGING_IND
(
m
).
plmn
.
mcc
=
RC
.
nrrrc
[
j
]
->
configuration
.
mcc
[
0
];
F1AP_PAGING_IND
(
m
).
plmn
.
mnc
=
RC
.
nrrrc
[
j
]
->
configuration
.
mnc
[
0
];
F1AP_PAGING_IND
(
m
).
plmn
.
mnc_digit_length
=
RC
.
nrrrc
[
j
]
->
configuration
.
mnc_digit_length
[
0
];
F1AP_PAGING_IND
(
m
).
nr_cellid
=
RC
.
nrrrc
[
j
]
->
nr_cellid
;
F1AP_PAGING_IND
(
m
).
ueidentityindexvalue
=
(
uint16_t
)(
NGAP_PAGING_IND
(
msg_p
).
ue_paging_identity
.
s_tmsi
.
m_tmsi
%
1024
);
F1AP_PAGING_IND
(
m
).
fiveg_s_tmsi
=
NGAP_PAGING_IND
(
msg_p
).
ue_paging_identity
.
s_tmsi
.
m_tmsi
;
...
...
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