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
spbro
OpenXG-RAN
Commits
d24454ce
Commit
d24454ce
authored
May 31, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE Context setup and modif
parent
d220ee23
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
57 additions
and
79 deletions
+57
-79
openair2/COMMON/f1ap_messages_types.h
openair2/COMMON/f1ap_messages_types.h
+1
-2
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+7
-12
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+8
-26
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+10
-12
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
+0
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+31
-26
No files found.
openair2/COMMON/f1ap_messages_types.h
View file @
d24454ce
...
...
@@ -378,9 +378,8 @@ typedef enum ReconfigurationCompl_e {
}
ReconfigurationCompl_t
;
typedef
struct
f1ap_ue_context_setup_s
{
uint32_t
gNB_CU_ue_id
;
// BK: need to replace by use from rnti
uint32_t
gNB_CU_ue_id
;
uint32_t
gNB_DU_ue_id
;
uint16_t
rnti
;
// SpCell Info
uint16_t
mcc
;
uint16_t
mnc
;
...
...
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
d24454ce
...
...
@@ -82,7 +82,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
ie1
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_UEContextSetupRequestIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
get_cu_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_ue_context_setup_req
->
rnti
);
//f1ap_
ue_context_setup_req->gNB_CU_ue_id;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_ue_context_setup_req
->
gNB_CU_ue_id
;
/* optional */
/* c2. GNB_DU_UE_F1AP_ID */
...
...
@@ -91,7 +91,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_ignore
;
ie2
->
value
.
present
=
F1AP_UEContextSetupRequestIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_
get_du_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_ue_context_setup_req
->
rnti
);
//*f1ap_
ue_context_setup_req->gNB_DU_ue_id;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
;
}
/* mandatory */
...
...
@@ -510,7 +510,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* Use a dummy address and teid for the outgoing GTP-U tunnel (DU) which will be updated once we get the UE context setup response from the DU */
transport_layer_addr_t
addr
=
{
.
length
=
32
,
.
buffer
=
{
0
}
};
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_ul_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_setup_req
->
rnti
,
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
0xFFFF
,
// We will set the right value from DU answer
...
...
@@ -654,8 +654,6 @@ int CU_handle_UE_CONTEXT_SETUP_RESPONSE(instance_t instance,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
f1ap_ue_context_setup_resp
->
gNB_DU_ue_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
F1AP
,
"f1ap_ue_context_setup_resp->gNB_DU_ue_id is: %d
\n
"
,
f1ap_ue_context_setup_resp
->
gNB_DU_ue_id
);
f1ap_ue_context_setup_resp
->
rnti
=
f1ap_get_rnti_by_du_id
(
CUtype
,
instance
,
f1ap_ue_context_setup_resp
->
gNB_DU_ue_id
);
// DUtoCURRCInformation
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextSetupResponseIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_DUtoCURRCInformation
,
true
);
...
...
@@ -695,7 +693,7 @@ int CU_handle_UE_CONTEXT_SETUP_RESPONSE(instance_t instance,
BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4
(
&
dl_up_tnl0
->
transportLayerAddress
,
drb_p
->
up_dl_tnl
[
0
].
tl_address
);
OCTET_STRING_TO_UINT32
(
&
dl_up_tnl0
->
gTP_TEID
,
drb_p
->
up_dl_tnl
[
0
].
teid
);
GtpuUpdateTunnelOutgoingAddressAndTeid
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_setup_resp
->
rnti
,
f1ap_ue_context_setup_resp
->
gNB_DU_ue_id
,
(
ebi_t
)
drbs_setup_item_p
->
dRBID
,
drb_p
->
up_dl_tnl
[
0
].
tl_address
,
drb_p
->
up_dl_tnl
[
0
].
teid
);
...
...
@@ -1002,14 +1000,14 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, f1ap_ue_context
ie1
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
get_cu_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_ue_context_modification_req
->
rnti
);
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
ue_context_modification_req
->
gNB_CU_ue_id
;
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationRequestIEs_t
,
ie2
);
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_
get_du_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_ue_context_modification_req
->
rnti
);
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_
ue_context_modification_req
->
gNB_DU_ue_id
;
/* optional */
/* c3. NRCGI */
...
...
@@ -1618,9 +1616,6 @@ int CU_handle_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance,
LOG_D
(
F1AP
,
"f1ap_ue_context_modification_resp->gNB_DU_ue_id is: %d
\n
"
,
f1ap_ue_context_modification_resp
->
gNB_DU_ue_id
);
f1ap_ue_context_modification_resp
->
rnti
=
f1ap_get_rnti_by_du_id
(
CUtype
,
instance
,
f1ap_ue_context_modification_resp
->
gNB_DU_ue_id
);
// DUtoCURRCInformation
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextModificationResponseIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_DUtoCURRCInformation
,
false
);
...
...
@@ -1656,7 +1651,7 @@ int CU_handle_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance,
BIT_STRING_TO_TRANSPORT_LAYER_ADDRESS_IPv4
(
&
dl_up_tnl0
->
transportLayerAddress
,
drb_p
->
up_dl_tnl
[
0
].
tl_address
);
OCTET_STRING_TO_UINT32
(
&
dl_up_tnl0
->
gTP_TEID
,
drb_p
->
up_dl_tnl
[
0
].
teid
);
GtpuUpdateTunnelOutgoingAddressAndTeid
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_modification_resp
->
rnti
,
f1ap_ue_context_modification_resp
->
gNB_DU_ue_id
,
(
ebi_t
)
drbs_setupmod_item_p
->
dRBID
,
drb_p
->
up_dl_tnl
[
0
].
tl_address
,
drb_p
->
up_dl_tnl
[
0
].
teid
);
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
d24454ce
...
...
@@ -77,21 +77,8 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* GNB_DU_UE_F1AP_ID */
F1AP_UEContextSetupRequestIEs_t
*
ieDU_UE
;
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextSetupRequestIEs_t
,
ieDU_UE
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
false
);
if
(
ieDU_UE
)
{
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
=
ieDU_UE
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
f1ap_ue_context_setup_req
->
rnti
=
f1ap_get_rnti_by_du_id
(
DUtype
,
instance
,
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
);
}
else
{
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
=
-
1
;
f1ap_ue_context_setup_req
->
rnti
=
f1ap_get_rnti_by_cu_id
(
DUtype
,
instance
,
f1ap_ue_context_setup_req
->
gNB_CU_ue_id
);
}
if
(
f1ap_ue_context_setup_req
->
rnti
<
0
)
LOG_E
(
F1AP
,
"Could not retrieve UE rnti based on the CU/DU UE id
\n
"
);
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
=
ieDU_UE
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
/* SpCell_ID */
F1AP_UEContextSetupRequestIEs_t
*
ieNet
;
...
...
@@ -247,7 +234,7 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
resp
->
rnti
)
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
resp
->
gNB_DU_ue_id
;
/* mandatory */
/* c3. DUtoCURRCInformation */
...
...
@@ -285,7 +272,8 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
ie4
->
criticality
=
F1AP_Criticality_ignore
;
ie4
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_C_RNTI
;
//C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
ie4
->
value
.
choice
.
C_RNTI
=
resp
->
rnti
;
ie4
->
value
.
choice
.
C_RNTI
=
0
;
AssertFatal
(
false
,
"not implemented
\n
"
);
LOG_E
(
F1AP
,
"RNTI to code!
\n
"
);
}
...
...
@@ -825,12 +813,6 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, uint32_t asso
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextModificationRequestIEs_t
,
ieDU_UE
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
f1ap_ue_context_modification_req
->
gNB_DU_ue_id
=
ieDU_UE
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
f1ap_ue_context_modification_req
->
rnti
=
f1ap_get_rnti_by_du_id
(
DUtype
,
instance
,
f1ap_ue_context_modification_req
->
gNB_DU_ue_id
);
if
(
f1ap_ue_context_modification_req
->
rnti
<
0
)
LOG_E
(
F1AP
,
"Could not retrieve UE rnti based on the DU UE id
\n
"
);
else
LOG_D
(
F1AP
,
"Retrieved rnti is: %d
\n
"
,
f1ap_ue_context_modification_req
->
rnti
);
/* SRB */
F1AP_UEContextModificationRequestIEs_t
*
ieSrb
;
...
...
@@ -944,7 +926,7 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, uint32_t asso
ieRRC
->
value
.
choice
.
RRCContainer
.
buf
,
ieRRC
->
value
.
choice
.
RRCContainer
.
size
);
protocol_ctxt_t
ctxt
;
// decode RRC Container and act on the message type
ctxt
.
rntiMaybeUEid
=
f1ap_ue_context_modification_req
->
rnti
;
ctxt
.
rntiMaybeUEid
=
f1ap_ue_context_modification_req
->
gNB_DU_ue_id
;
ctxt
.
instance
=
instance
;
ctxt
.
module_id
=
instance
;
ctxt
.
enb_flag
=
1
;
...
...
@@ -991,7 +973,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance, f1ap_ue_contex
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
resp
->
rnti
)
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
resp
->
gNB_DU_ue_id
;
/* optional */
/* c3. ResourceCoordinationTransferContainer */
...
...
@@ -1057,7 +1039,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance, f1ap_ue_contex
memcpy
(
tl_addr
.
buffer
,
&
drb
->
up_ul_tnl
[
0
].
tl_address
,
sizeof
(
drb
->
up_ul_tnl
[
0
].
tl_address
));
tl_addr
.
length
=
sizeof
(
drb
->
up_ul_tnl
[
0
].
tl_address
)
*
8
;
drb
->
up_dl_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
false
,
instance
)
->
gtpInst
,
resp
->
rnti
,
resp
->
gNB_DU_ue_id
,
drb
->
drb_id
,
drb
->
drb_id
,
drb
->
up_ul_tnl
[
j
].
teid
,
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
d24454ce
...
...
@@ -101,7 +101,6 @@ void ue_context_setup_request(const f1ap_ue_context_setup_t *req)
f1ap_ue_context_setup_t
resp
=
{
.
gNB_CU_ue_id
=
req
->
gNB_CU_ue_id
,
.
gNB_DU_ue_id
=
req
->
gNB_DU_ue_id
,
.
rnti
=
req
->
rnti
,
};
if
(
req
->
cu_to_du_rrc_information
!=
NULL
)
{
...
...
@@ -112,11 +111,11 @@ void ue_context_setup_request(const f1ap_ue_context_setup_t *req)
NR_SCHED_LOCK
(
&
mac
->
sched_lock
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
req
->
rnti
);
AssertFatal
(
UE
!=
NULL
,
"did not find UE with RNTI %04x, but UE Context Setup Failed not implemented
\n
"
,
req
->
rnti
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
req
->
gNB_DU_ue_id
);
AssertFatal
(
UE
!=
NULL
,
"did not find UE with RNTI %04x, but UE Context Setup Failed not implemented
\n
"
,
req
->
gNB_DU_ue_id
);
if
(
req
->
srbs_to_be_setup_length
>
0
)
{
resp
.
srbs_to_be_setup_length
=
handle_ue_context_srbs_setup
(
req
->
rnti
,
resp
.
srbs_to_be_setup_length
=
handle_ue_context_srbs_setup
(
req
->
gNB_DU_ue_id
,
req
->
srbs_to_be_setup_length
,
req
->
srbs_to_be_setup
,
&
resp
.
srbs_to_be_setup
,
...
...
@@ -124,7 +123,7 @@ void ue_context_setup_request(const f1ap_ue_context_setup_t *req)
}
if
(
req
->
drbs_to_be_setup_length
>
0
)
{
resp
.
drbs_to_be_setup_length
=
handle_ue_context_drbs_setup
(
req
->
rnti
,
resp
.
drbs_to_be_setup_length
=
handle_ue_context_drbs_setup
(
req
->
gNB_DU_ue_id
,
req
->
drbs_to_be_setup_length
,
req
->
drbs_to_be_setup
,
&
resp
.
drbs_to_be_setup
,
...
...
@@ -132,7 +131,7 @@ void ue_context_setup_request(const f1ap_ue_context_setup_t *req)
}
if
(
req
->
rrc_container
!=
NULL
)
nr_rlc_srb_recv_sdu
(
req
->
rnti
,
DCCH
,
req
->
rrc_container
,
req
->
rrc_container_length
);
nr_rlc_srb_recv_sdu
(
req
->
gNB_DU_ue_id
,
DCCH
,
req
->
rrc_container
,
req
->
rrc_container_length
);
//nr_mac_update_cellgroup()
resp
.
du_to_cu_rrc_information
=
calloc
(
1
,
sizeof
(
du_to_cu_rrc_information_t
));
...
...
@@ -172,7 +171,6 @@ void ue_context_modification_request(const f1ap_ue_context_modif_req_t *req)
f1ap_ue_context_modif_resp_t
resp
=
{
.
gNB_CU_ue_id
=
req
->
gNB_CU_ue_id
,
.
gNB_DU_ue_id
=
req
->
gNB_DU_ue_id
,
.
rnti
=
req
->
rnti
,
};
if
(
req
->
cu_to_du_rrc_information
!=
NULL
)
{
...
...
@@ -182,10 +180,10 @@ void ue_context_modification_request(const f1ap_ue_context_modif_req_t *req)
}
NR_SCHED_LOCK
(
&
mac
->
sched_lock
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
req
->
rnti
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
req
->
gNB_DU_ue_id
);
if
(
req
->
srbs_to_be_setup_length
>
0
)
{
resp
.
srbs_to_be_setup_length
=
handle_ue_context_srbs_setup
(
req
->
rnti
,
resp
.
srbs_to_be_setup_length
=
handle_ue_context_srbs_setup
(
req
->
gNB_DU_ue_id
,
req
->
srbs_to_be_setup_length
,
req
->
srbs_to_be_setup
,
&
resp
.
srbs_to_be_setup
,
...
...
@@ -193,7 +191,7 @@ void ue_context_modification_request(const f1ap_ue_context_modif_req_t *req)
}
if
(
req
->
drbs_to_be_setup_length
>
0
)
{
resp
.
drbs_to_be_setup_length
=
handle_ue_context_drbs_setup
(
req
->
rnti
,
resp
.
drbs_to_be_setup_length
=
handle_ue_context_drbs_setup
(
req
->
gNB_DU_ue_id
,
req
->
drbs_to_be_setup_length
,
req
->
drbs_to_be_setup
,
&
resp
.
drbs_to_be_setup
,
...
...
@@ -201,7 +199,7 @@ void ue_context_modification_request(const f1ap_ue_context_modif_req_t *req)
}
if
(
req
->
rrc_container
!=
NULL
)
nr_rlc_srb_recv_sdu
(
req
->
rnti
,
DCCH
,
req
->
rrc_container
,
req
->
rrc_container_length
);
nr_rlc_srb_recv_sdu
(
req
->
gNB_DU_ue_id
,
DCCH
,
req
->
rrc_container
,
req
->
rrc_container_length
);
if
(
req
->
ReconfigComplOutcome
!=
RRCreconf_info_not_present
&&
req
->
ReconfigComplOutcome
!=
RRCreconf_success
)
{
LOG_E
(
NR_MAC
,
...
...
@@ -225,7 +223,7 @@ void ue_context_modification_request(const f1ap_ue_context_modif_req_t *req)
resp
.
du_to_cu_rrc_information
->
cellGroupConfig_length
=
(
enc_rval
.
encoded
+
7
)
>>
3
;
/* works? */
nr_mac_update_cellgroup
(
RC
.
nrmac
[
0
],
req
->
rnti
,
UE
->
CellGroup
);
nr_mac_update_cellgroup
(
RC
.
nrmac
[
0
],
req
->
gNB_DU_ue_id
,
UE
->
CellGroup
);
}
NR_SCHED_UNLOCK
(
&
mac
->
sched_lock
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
View file @
d24454ce
...
...
@@ -64,7 +64,6 @@ 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
->
rnti
=
resp
->
rnti
;
f1ap_msg
->
mcc
=
resp
->
mcc
;
f1ap_msg
->
mnc
=
resp
->
mnc
;
f1ap_msg
->
mnc_digit_length
=
resp
->
mnc_digit_length
;
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
d24454ce
...
...
@@ -2002,10 +2002,10 @@ static void handle_rrcReconfigurationComplete(const protocol_ctxt_t *const ctxt_
}
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
0
];
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
UE
->
rnti
);
f1ap_ue_context_modif_req_t
ue_context_modif_req
=
{
.
gNB_CU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
gNB_DU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
rnti
=
UE
->
rnti
,
.
gNB_CU_ue_id
=
UE
->
cu_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
],
...
...
@@ -2286,7 +2286,7 @@ static void rrc_CU_process_ue_context_setup_response(MessageDef *msg_p, instance
{
f1ap_ue_context_setup_t
*
resp
=
&
F1AP_UE_CONTEXT_SETUP_RESP
(
msg_p
);
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
instance
];
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
rrc
,
resp
->
rnti
);
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
rrc
,
resp
->
gNB_CU_ue_id
);
gNB_RRC_UE_t
*
UE
=
&
ue_context_p
->
ue_context
;
NR_CellGroupConfig_t
*
cellGroupConfig
=
NULL
;
...
...
@@ -2343,9 +2343,9 @@ static void rrc_CU_process_ue_context_release_complete(MessageDef *msg_p)
static
void
rrc_CU_process_ue_context_modification_response
(
MessageDef
*
msg_p
,
instance_t
instance
)
{
f1ap_ue_context_modif_resp_t
*
resp
=
&
F1AP_UE_CONTEXT_MODIFICATION_RESP
(
msg_p
);
protocol_ctxt_t
ctxt
=
{.
rntiMaybeUEid
=
resp
->
rnti
,
.
module_id
=
instance
,
.
instance
=
instance
,
.
enb_flag
=
1
,
.
eNB_index
=
instance
};
protocol_ctxt_t
ctxt
=
{.
rntiMaybeUEid
=
resp
->
gNB_CU_ue_id
,
.
module_id
=
instance
,
.
instance
=
instance
,
.
enb_flag
=
1
,
.
eNB_index
=
instance
};
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
ctxt
.
module_id
];
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
rrc
,
resp
->
rnti
);
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
rrc
,
resp
->
gNB_CU_ue_id
);
gNB_RRC_UE_t
*
UE
=
&
ue_context_p
->
ue_context
;
if
(
resp
->
drbs_to_be_setup_length
>
0
)
{
...
...
@@ -2601,10 +2601,10 @@ void prepare_and_send_ue_context_modification_f1(rrc_gNB_ue_context_t *ue_contex
srbs
[
0
].
lcid
=
2
;
}
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
UE
->
rnti
);
f1ap_ue_context_modif_req_t
ue_context_modif_req
=
{
.
gNB_CU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
gNB_DU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
rnti
=
UE
->
rnti
,
.
gNB_CU_ue_id
=
UE
->
cu_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
],
...
...
@@ -2868,25 +2868,17 @@ void *rrc_gnb_task(void *args_p) {
}
}
typedef
struct
deliver_ue_ctxt_setup_data_t
{
gNB_RRC_INST
*
rrc
;
f1ap_ue_context_setup_t
*
setup_req
;
}
deliver_ue_ctxt_setup_data_t
;
static
void
rrc_deliver_ue_ctxt_setup_req
(
void
*
deliver_pdu_data
,
ue_id_t
ue_id
,
int
srb_id
,
char
*
buf
,
int
size
,
int
sdu_id
)
{
DevAssert
(
deliver_pdu_data
!=
NULL
);
gNB_RRC_INST
*
rrc
=
deliver_pdu_data
;
f1ap_ue_context_setup_t
ue_context_setup_req
=
{
.
gNB_CU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
gNB_DU_ue_id
=
0xffffffff
,
/* filled by F1 for the moment */
.
rnti
=
ue_id
,
.
mcc
=
rrc
->
configuration
.
mcc
[
0
],
.
mnc
=
rrc
->
configuration
.
mnc
[
0
],
.
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 */
.
drbs_to_be_setup
=
0
,
/* no new DRBs */
.
rrc_container
=
(
uint8_t
*
)
buf
,
/* security mode command */
.
rrc_container_length
=
size
,
};
rrc
->
mac_rrc
.
ue_context_setup_request
(
&
ue_context_setup_req
);
deliver_ue_ctxt_setup_data_t
*
data
=
deliver_pdu_data
;
data
->
setup_req
->
rrc_container
=
(
uint8_t
*
)
buf
;
data
->
setup_req
->
rrc_container_length
=
size
;
data
->
rrc
->
mac_rrc
.
ue_context_setup_request
(
data
->
setup_req
);
}
//-----------------------------------------------------------------------------
...
...
@@ -2911,7 +2903,20 @@ rrc_gNB_generate_SecurityModeCommand(
AssertFatal
(
!
NODE_IS_DU
(
rrc
->
node_type
),
"illegal node type DU!
\n
"
);
/* the callback will fill the UE context setup request and forward it */
nr_pdcp_data_req_srb
(
ctxt_pP
->
rntiMaybeUEid
,
DCCH
,
rrc_gNB_mui
++
,
size
,
buffer
,
rrc_deliver_ue_ctxt_setup_req
,
rrc
);
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
ue_p
->
rnti
);
f1ap_ue_context_setup_t
ue_context_setup_req
=
{
.
gNB_CU_ue_id
=
ue_p
->
cu_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
],
.
nr_cellid
=
rrc
->
nr_cellid
,
.
servCellId
=
0
,
/* TODO: correct value? */
.
srbs_to_be_setup
=
0
,
/* no new SRBs */
.
drbs_to_be_setup
=
0
,
/* no new DRBs */
};
deliver_ue_ctxt_setup_data_t
data
=
{.
rrc
=
rrc
,
.
setup_req
=
&
ue_context_setup_req
};
nr_pdcp_data_req_srb
(
ctxt_pP
->
rntiMaybeUEid
,
DCCH
,
rrc_gNB_mui
++
,
size
,
buffer
,
rrc_deliver_ue_ctxt_setup_req
,
&
data
);
}
void
...
...
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