Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
2565f21b
Commit
2565f21b
authored
Sep 16, 2018
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
send msg 4 in F1 DL RRC message transfer
parent
4b33546a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
142 additions
and
98 deletions
+142
-98
openair2/COMMON/f1ap_messages_def.h
openair2/COMMON/f1ap_messages_def.h
+1
-1
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+55
-18
openair2/F1AP/f1ap_cu_rrc_message_transfer.h
openair2/F1AP/f1ap_cu_rrc_message_transfer.h
+3
-1
openair2/F1AP/f1ap_cu_task.c
openair2/F1AP/f1ap_cu_task.c
+8
-0
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+4
-10
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h
+1
-2
openair2/RRC/LTE/L2_interface.c
openair2/RRC/LTE/L2_interface.c
+4
-4
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+64
-59
openair2/RRC/LTE/rrc_proto.h
openair2/RRC/LTE/rrc_proto.h
+1
-2
No files found.
openair2/COMMON/f1ap_messages_def.h
View file @
2565f21b
...
@@ -37,7 +37,7 @@ MESSAGE_DEF(F1AP_UL_RRC_MESSAGE , MESSAGE_PRIORITY_MED, f1ap_ul_r
...
@@ -37,7 +37,7 @@ MESSAGE_DEF(F1AP_UL_RRC_MESSAGE , MESSAGE_PRIORITY_MED, f1ap_ul_r
/* RRC -> F1AP messages */
/* RRC -> F1AP messages */
MESSAGE_DEF
(
F1AP_DL_RRC_MESSAGE
,
MESSAGE_PRIORITY_MED
,
f1ap_dl_rrc_message_t
,
f1ap_d
ownlink
_rrc_message
)
MESSAGE_DEF
(
F1AP_DL_RRC_MESSAGE
,
MESSAGE_PRIORITY_MED
,
f1ap_dl_rrc_message_t
,
f1ap_d
l
_rrc_message
)
//MESSAGE_DEF(F1AP_INITIAL_CONTEXT_SETUP_REQ , MESSAGE_PRIORITY_MED, f1ap_initial_context_setup_req_t , f1ap_initial_context_setup_req )
//MESSAGE_DEF(F1AP_INITIAL_CONTEXT_SETUP_REQ , MESSAGE_PRIORITY_MED, f1ap_initial_context_setup_req_t , f1ap_initial_context_setup_req )
...
...
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
2565f21b
...
@@ -41,6 +41,10 @@
...
@@ -41,6 +41,10 @@
// a compile error
// a compile error
#undef C_RNTI
#undef C_RNTI
// Bing Kai: create CU and DU context, and put all the information there.
uint64_t
du_ue_f1ap_id
=
0
;
uint32_t
f1ap_assoc_id
=
0
;
uint32_t
f1ap_stream
=
0
;
/*
/*
Initial UL RRC Message Transfer
Initial UL RRC Message Transfer
*/
*/
...
@@ -62,15 +66,18 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -62,15 +66,18 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint8_t
*
ccch_sdu
;
uint8_t
*
ccch_sdu
;
sdu_size_t
ccch_sdu_len
;
sdu_size_t
ccch_sdu_len
;
int
CC_id
=
0
;
int
CC_id
=
0
;
uint64_t
du_ue_f1ap_id
;
DevAssert
(
pdu
!=
NULL
);
DevAssert
(
pdu
!=
NULL
);
if
(
stream
!=
0
)
{
if
(
stream
!=
0
)
{
LOG_E
(
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
LOG_E
(
CU_
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
assoc_id
,
stream
);
assoc_id
,
stream
);
return
-
1
;
return
-
1
;
}
}
// TODO: use context
f1ap_stream
=
stream
;
f1ap_assoc_id
=
assoc_id
;
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
InitialULRRCMessageTransfer
;
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
InitialULRRCMessageTransfer
;
...
@@ -80,10 +87,13 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -80,10 +87,13 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
printf
(
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
printf
(
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
/* NRCGI */
/* NRCGI
* TODO: process NRCGI
*/
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_NRCGI
,
true
);
F1AP_ProtocolIE_ID_id_NRCGI
,
true
);
/* RNTI */
/* RNTI */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_C_RNTI
,
true
);
F1AP_ProtocolIE_ID_id_C_RNTI
,
true
);
...
@@ -148,16 +158,28 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -148,16 +158,28 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
*/
*/
//void CU_send_DL_RRC_MESSAGE_TRANSFER(F1AP_DLRRCMessageTransfer_t *DLRRCMessageTransfer) {
//void CU_send_DL_RRC_MESSAGE_TRANSFER(F1AP_DLRRCMessageTransfer_t *DLRRCMessageTransfer) {
int
CU_send_DL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
)
{
int
CU_send_DL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
F1AP_F1AP_PDU_t
pdu
;
f1ap_dl_rrc_message_t
*
f1ap_dl_rrc
)
{
F1AP_F1AP_PDU_t
pdu
;
F1AP_DLRRCMessageTransfer_t
*
out
;
F1AP_DLRRCMessageTransfer_t
*
out
;
F1AP_DLRRCMessageTransferIEs_t
*
ie
;
F1AP_DLRRCMessageTransferIEs_t
*
ie
;
uint8_t
*
buffer
;
uint8_t
*
buffer
;
uint32_t
len
;
uint32_t
len
;
if
(
f1ap_stream
==
0
)
{
LOG_E
(
CU_F1AP
,
"[CU %d] Received DL RRC message transfer on stream == %d
\n
"
,
f1ap_assoc_id
,
f1ap_stream
);
return
-
1
;
}
out
=
&
pdu
.
choice
.
initiatingMessage
->
value
.
choice
.
DLRRCMessageTransfer
;
/* Create */
/* Create */
/* 0. Message Type */
/* 0. Message Type */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
pdu
.
present
=
F1AP_F1AP_PDU_PR_initiatingMessage
;
pdu
.
present
=
F1AP_F1AP_PDU_PR_initiatingMessage
;
pdu
.
choice
.
initiatingMessage
=
(
F1AP_InitiatingMessage_t
*
)
calloc
(
1
,
sizeof
(
F1AP_InitiatingMessage_t
));
pdu
.
choice
.
initiatingMessage
=
(
F1AP_InitiatingMessage_t
*
)
calloc
(
1
,
sizeof
(
F1AP_InitiatingMessage_t
));
...
@@ -168,11 +190,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -168,11 +190,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
/* mandatory */
/* mandatory */
/* c1. GNB_CU_UE_F1AP_ID */
/* c1. GNB_CU_UE_F1AP_ID */
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
126L
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_dl_rrc
->
gNB_CU_ue_id
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* mandatory */
...
@@ -181,19 +204,19 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -181,19 +204,19 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
651L
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
du_ue_f1ap_id
;
// TODO: f1ap_dl_rrc->gNB_DU_ue_id
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/* optional */
/* c3. oldgNB_DU_UE_F1AP_ID */
/* c3. oldgNB_DU_UE_F1AP_ID */
if
(
0
)
{
/* if (f1ap_dl_rrc->old_gNB_DU_ue_id != 0xFFFFFFFF
) {
ie = (F1AP_DLRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_DLRRCMessageTransferIEs_t));
ie = (F1AP_DLRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_DLRRCMessageTransferIEs_t));
ie
->
id
=
F1AP_ProtocolIE_ID_id_oldgNB_DU_UE_F1AP_ID
;
ie->id
= F1AP_ProtocolIE_ID_id_oldgNB_DU_UE_F1AP_ID;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie->criticality
= F1AP_Criticality_reject;
//ie->value.present
= F1AP_DLRRCMessageTransferIEs__value_PR_NOTHING;
ie->value.present
= F1AP_DLRRCMessageTransferIEs__value_PR_NOTHING;
//ie->value.choice. = 1
;
ie->value.choice.oldgNB_DU_UE_F1AP_ID = f1ap_dl_rrc->old_gNB_DU_ue_id
;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
}
*/
/* mandatory */
/* mandatory */
/* c4. SRBID */
/* c4. SRBID */
...
@@ -201,12 +224,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -201,12 +224,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
ie
->
id
=
F1AP_ProtocolIE_ID_id_SRBID
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_SRBID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_SRBID
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_SRBID
;
ie
->
value
.
choice
.
SRBID
=
2L
;
ie
->
value
.
choice
.
SRBID
=
f1ap_dl_rrc
->
srb_id
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/* optional */
/* c5. ExecuteDuplication */
/* c5. ExecuteDuplication */
if
(
0
)
{
if
(
f1ap_dl_rrc
->
execute_duplication
)
{
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_ExecuteDuplication
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_ExecuteDuplication
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
...
@@ -222,11 +245,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -222,11 +245,12 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
ie
->
id
=
F1AP_ProtocolIE_ID_id_RRCContainer
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_RRCContainer
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_RRCContainer
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_RRCContainer
;
OCTET_STRING_fromBuf
(
&
ie
->
value
.
choice
.
RRCContainer
,
"A"
,
strlen
(
"A"
)
);
OCTET_STRING_fromBuf
(
&
ie
->
value
.
choice
.
RRCContainer
,
f1ap_dl_rrc
->
rrc_container
,
f1ap_dl_rrc
->
rrc_container_length
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/* optional */
/* c7. RAT_FrequencyPriorityInformation */
/* c7. RAT_FrequencyPriorityInformation */
/* TODO */
if
(
0
)
{
if
(
0
)
{
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
;
...
@@ -246,7 +270,20 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -246,7 +270,20 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
printf
(
"Failed to encode F1 setup request
\n
"
);
printf
(
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
return
-
1
;
}
}
#ifdef F1AP_TEST
printf
(
"
\n
"
);
/* decode */
if
(
f1ap_decode_pdu
(
&
pdu
,
buffer
,
len
)
>
0
)
{
printf
(
"Failed to decode F1 setup request
\n
"
);
return
-
1
;
}
#endif
cu_f1ap_itti_send_sctp_data_req
(
instance
,
f1ap_assoc_id
,
buffer
,
len
,
0
);
return
0
;
}
}
/*
/*
...
...
openair2/F1AP/f1ap_cu_rrc_message_transfer.h
View file @
2565f21b
...
@@ -38,11 +38,13 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -38,11 +38,13 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
F1AP_F1AP_PDU_t
*
pdu
);
int
CU_send_DL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
);
int
CU_send_DL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
f1ap_dl_rrc_message_t
*
f1ap_dl_rrc
);
int
CU_handle_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
int
CU_handle_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
assoc_id
,
uint32_t
stream
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
F1AP_F1AP_PDU_t
*
pdu
);
#endif
/* F1AP_CU_RRC_MESSAGE_TRANSFER_H_ */
#endif
/* F1AP_CU_RRC_MESSAGE_TRANSFER_H_ */
openair2/F1AP/f1ap_cu_task.c
View file @
2565f21b
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include "f1ap_common.h"
#include "f1ap_common.h"
#include "f1ap_handlers.h"
#include "f1ap_handlers.h"
#include "f1ap_cu_interface_management.h"
#include "f1ap_cu_interface_management.h"
#include "f1ap_cu_rrc_message_transfer.h"
#include "f1ap_cu_task.h"
#include "f1ap_cu_task.h"
extern
RAN_CONTEXT_t
RC
;
extern
RAN_CONTEXT_t
RC
;
...
@@ -144,6 +145,13 @@ void *F1AP_CU_task(void *arg) {
...
@@ -144,6 +145,13 @@ void *F1AP_CU_task(void *arg) {
&
F1AP_SETUP_RESP
(
received_msg
));
&
F1AP_SETUP_RESP
(
received_msg
));
break
;
break
;
case
F1AP_DL_RRC_MESSAGE
:
// from rrc
LOG_W
(
CU_F1AP
,
"F1AP_DL_RRC_MESSAGE
\n
"
);
// CU_send_f1setup_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
// &F1AP_SETUP_RESP(received_msg));
CU_send_DL_RRC_MESSAGE_TRANSFER
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_SETUP_RESP
(
received_msg
));
break
;
// case F1AP_SETUP_RESPONSE: // This is from RRC
// case F1AP_SETUP_RESPONSE: // This is from RRC
// CU_send_F1_SETUP_RESPONSE(instance, *f1ap_setup_ind, &(F1AP_SETUP_RESP) f1ap_setup_resp)
// CU_send_F1_SETUP_RESPONSE(instance, *f1ap_setup_ind, &(F1AP_SETUP_RESP) f1ap_setup_resp)
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
2565f21b
...
@@ -425,7 +425,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
...
@@ -425,7 +425,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
int
num_cells_to_activate
=
0
;
int
num_cells_to_activate
=
0
;
F1AP_Cells_to_be_Activated_List_Item_t
*
cell
;
F1AP_Cells_to_be_Activated_List_Item_t
*
cell
;
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_
ENB_APP
,
F1AP_SETUP_RESP
);
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_
DU_F1
,
F1AP_SETUP_RESP
);
printf
(
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
printf
(
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
in
->
protocolIEs
.
list
.
count
);
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
2565f21b
...
@@ -366,8 +366,6 @@ rx_sdu(const module_id_t enb_mod_idP,
...
@@ -366,8 +366,6 @@ rx_sdu(const module_id_t enb_mod_idP,
for
(
ii
=
0
;
ii
<
NB_RA_PROC_MAX
;
ii
++
)
{
for
(
ii
=
0
;
ii
<
NB_RA_PROC_MAX
;
ii
++
)
{
ra
=
&
mac
->
common_channels
[
CC_idP
].
ra
[
ii
];
ra
=
&
mac
->
common_channels
[
CC_idP
].
ra
[
ii
];
if
((
ra
->
rnti
==
current_rnti
)
&&
(
ra
->
state
!=
IDLE
))
{
if
((
ra
->
rnti
==
current_rnti
)
&&
(
ra
->
state
!=
IDLE
))
{
//int RC.cudu.du_flag = 1;
//int du_flag = 1;
mac_rrc_data_ind
(
mac_rrc_data_ind
(
enb_mod_idP
,
enb_mod_idP
,
CC_idP
,
CC_idP
,
...
@@ -376,8 +374,7 @@ rx_sdu(const module_id_t enb_mod_idP,
...
@@ -376,8 +374,7 @@ rx_sdu(const module_id_t enb_mod_idP,
DCCH
,
DCCH
,
(
uint8_t
*
)
payload_ptr
,
(
uint8_t
*
)
payload_ptr
,
rx_lengths
[
i
],
rx_lengths
[
i
],
0
,
0
RC
.
rrc
[
enb_mod_idP
]
->
node_type
);
);
// prepare transmission of Msg4(RRCConnectionReconfiguration)
// prepare transmission of Msg4(RRCConnectionReconfiguration)
ra
->
state
=
MSGCRNTI
;
ra
->
state
=
MSGCRNTI
;
...
@@ -618,19 +615,16 @@ rx_sdu(const module_id_t enb_mod_idP,
...
@@ -618,19 +615,16 @@ rx_sdu(const module_id_t enb_mod_idP,
// kill RA procedure
// kill RA procedure
}
}
//int RC.cudu.du_flag = 1;
//int du_flag = 1;
mac_rrc_data_ind
(
mac_rrc_data_ind
(
enb_mod_idP
,
enb_mod_idP
,
CC_idP
,
CC_idP
,
frameP
,
subframeP
,
UE_id
,
frameP
,
subframeP
,
UE_id
,
current_rnti
,
current_rnti
,
CCCH
,
CCCH
,
(
uint8_t
*
)
payload_ptr
,
(
uint8_t
*
)
payload_ptr
,
rx_lengths
[
i
],
rx_lengths
[
i
],
0
,
0
RC
.
rrc
[
enb_mod_idP
]
->
node_type
);
);
if
(
num_ce
>
0
)
{
// handle msg3 which is not RRCConnectionRequest
if
(
num_ce
>
0
)
{
// handle msg3 which is not RRCConnectionRequest
...
...
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h
View file @
2565f21b
...
@@ -56,8 +56,7 @@ mac_rrc_data_ind(
...
@@ -56,8 +56,7 @@ mac_rrc_data_ind(
const
rb_id_t
srb_idP
,
const
rb_id_t
srb_idP
,
const
uint8_t
*
sduP
,
const
uint8_t
*
sduP
,
const
sdu_size_t
sdu_lenP
,
const
sdu_size_t
sdu_lenP
,
const
uint8_t
mbsfn_sync_areaP
,
const
uint8_t
mbsfn_sync_areaP
const
int
du_flag
);
);
int8_t
int8_t
...
...
openair2/RRC/LTE/L2_interface.c
View file @
2565f21b
...
@@ -270,13 +270,13 @@ mac_rrc_data_ind(
...
@@ -270,13 +270,13 @@ mac_rrc_data_ind(
const
rb_id_t
srb_idP
,
const
rb_id_t
srb_idP
,
const
uint8_t
*
sduP
,
const
uint8_t
*
sduP
,
const
sdu_size_t
sdu_lenP
,
const
sdu_size_t
sdu_lenP
,
const
uint8_t
mbsfn_sync_areaP
,
const
uint8_t
mbsfn_sync_areaP
const
int
node_type
)
)
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
{
{
LOG_E
(
RRC
,
"node_type == %d
\n
"
,
node_type
);
if
(
node_type
==
ngran_eNB_DU
)
{
if
(
RC
.
rrc
[
module_idP
]
->
node_type
==
ngran_eNB_DU
)
{
LOG_W
(
RRC
,
"[DU %d][RAPROC] Received SDU for CCCH on SRB %d length %d for UE id %d RNTI %x
\n
"
,
LOG_W
(
RRC
,
"[DU %d][RAPROC] Received SDU for CCCH on SRB %d length %d for UE id %d RNTI %x
\n
"
,
module_idP
,
srb_idP
,
sdu_lenP
,
UE_id
,
rntiP
);
module_idP
,
srb_idP
,
sdu_lenP
,
UE_id
,
rntiP
);
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
2565f21b
...
@@ -5734,7 +5734,8 @@ rrc_eNB_generate_RRCConnectionSetup(
...
@@ -5734,7 +5734,8 @@ rrc_eNB_generate_RRCConnectionSetup(
SRB_ToAddModList_t
**
SRB_configList
;
SRB_ToAddModList_t
**
SRB_configList
;
SRB_ToAddMod_t
*
SRB1_config
;
SRB_ToAddMod_t
*
SRB1_config
;
int
cnt
;
int
cnt
;
MessageDef
*
message_p
;
T
(
T_ENB_RRC_CONNECTION_SETUP
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T
(
T_ENB_RRC_CONNECTION_SETUP
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
...
@@ -5757,8 +5758,34 @@ rrc_eNB_generate_RRCConnectionSetup(
...
@@ -5757,8 +5758,34 @@ rrc_eNB_generate_RRCConnectionSetup(
"[MSG] RRC Connection Setup
\n
"
);
"[MSG] RRC Connection Setup
\n
"
);
// configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
// configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
switch
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
){
if
(
*
SRB_configList
!=
NULL
)
{
case
ngran_eNB_CU
:
case
ngran_ng_eNB_CU
:
case
ngran_gNB_CU
:
// nothing to do for CU
break
;
case
ngran_eNB_DU
:
case
ngran_gNB_DU
:
// create an ITTI message
message_p
=
itti_alloc_new_message
(
TASK_CU_F1
,
F1AP_DL_RRC_MESSAGE
);
memset
(
F1AP_DL_RRC_MESSAGE
(
message_p
).
rrc_container
,
0
,
F1AP_DL_RRC_MESSAGE
);
memcpy
(
F1AP_DL_RRC_MESSAGE
(
message_p
).
rrc_container
,
(
uint8_t
*
)
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
Srb0
.
Tx_buffer
.
Payload
,
ue_p
->
Srb0
.
Tx_buffer
.
payload_size
);
F1AP_DL_RRC_MESSAGE
(
message_p
).
rrc_container_length
=
ue_p
->
Srb0
.
Tx_buffer
.
payload_size
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
gNB_CU_ue_id
=
0
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
gNB_DU_ue_id
=
0
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
old_gNB_DU_ue_id
=
0xFFFFFFFF
;
// unknown
F1AP_DL_RRC_MESSAGE
(
message_p
).
srb_id
=
CCCH
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
execute_duplication
=
1
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
RAT_frequency_priority_information
.
en_dc
=
0
;
itti_send_msg_to_task
(
TASK_RRC_ENB
,
UE_MODULE_ID_TO_INSTANCE
(
ctxt_pP
->
module_id
),
message_p
);
case
ngran_eNB
:
case
ngran_ng_eNB
:
case
ngran_gNB
:
if
(
*
SRB_configList
!=
NULL
)
{
for
(
cnt
=
0
;
cnt
<
(
*
SRB_configList
)
->
list
.
count
;
cnt
++
)
{
for
(
cnt
=
0
;
cnt
<
(
*
SRB_configList
)
->
list
.
count
;
cnt
++
)
{
if
((
*
SRB_configList
)
->
list
.
array
[
cnt
]
->
srb_Identity
==
1
)
{
if
((
*
SRB_configList
)
->
list
.
array
[
cnt
]
->
srb_Identity
==
1
)
{
SRB1_config
=
(
*
SRB_configList
)
->
list
.
array
[
cnt
];
SRB1_config
=
(
*
SRB_configList
)
->
list
.
array
[
cnt
];
...
@@ -5812,11 +5839,14 @@ rrc_eNB_generate_RRCConnectionSetup(
...
@@ -5812,11 +5839,14 @@ rrc_eNB_generate_RRCConnectionSetup(
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
#endif
#endif
);
);
break
;
}
}
}
}
}
}
break
;
default
:
LOG_W
(
RRC
,
"Unknown node type %d
\n
"
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
);
}
MSC_LOG_TX_MESSAGE
(
MSC_LOG_TX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_ENB
,
MSC_RRC_UE
,
MSC_RRC_UE
,
...
@@ -6058,36 +6088,6 @@ rrc_eNB_decode_ccch(
...
@@ -6058,36 +6088,6 @@ rrc_eNB_decode_ccch(
0
,
0
,
0
);
0
);
/*
#if defined(ENABLE_ITTI)
# if defined(DISABLE_ITTI_XER_PRINT)
{
MessageDef *message_p;
message_p = itti_alloc_new_message(TASK_RRC_ENB, RRC_UL_CCCH_MESSAGE);
memcpy(&message_p->ittiMsg, (void *)ul_ccch_msg, sizeof(RrcUlCcchMessage));
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
}
# else
{
char message_string[10000];
size_t message_string_size;
if ((message_string_size =
xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_CCCH_Message, (void *)ul_ccch_msg)) > 0) {
MessageDef *msg_p;
msg_p = itti_alloc_new_message_sized(TASK_RRC_ENB, RRC_UL_CCCH, message_string_size + sizeof(IttiMsgText));
msg_p->ittiMsg.rrc_ul_ccch.size = message_string_size;
memcpy(&msg_p->ittiMsg.rrc_ul_ccch.text, message_string, message_string_size);
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
}
}
# endif
#endif
*/
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
LOG_T
(
RRC
,
"%x."
,
((
uint8_t
*
)
&
ul_ccch_msg
)[
i
]);
LOG_T
(
RRC
,
"%x."
,
((
uint8_t
*
)
&
ul_ccch_msg
)[
i
]);
...
@@ -6317,18 +6317,19 @@ rrc_eNB_decode_ccch(
...
@@ -6317,18 +6317,19 @@ rrc_eNB_decode_ccch(
#endif
#endif
,
NULL
);
,
NULL
);
rrc_rlc_config_asn1_req
(
ctxt_pP
,
rrc_rlc_config_asn1_req
(
ctxt_pP
,
ue_context_p
->
ue_context
.
SRB_configList
,
ue_context_p
->
ue_context
.
SRB_configList
,
(
DRB_ToAddModList_t
*
)
NULL
,
(
DRB_ToAddModList_t
*
)
NULL
,
(
DRB_ToReleaseList_t
*
)
NULL
(
DRB_ToReleaseList_t
*
)
NULL
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
,
(
PMCH_InfoList_r9_t
*
)
NULL
,
,
(
PMCH_InfoList_r9_t
*
)
NULL
,
0
,
0
0
,
0
# endif
# endif
);
);
#endif //NO_RRM
#endif //NO_RRM
}
}
break
;
break
;
case
UL_CCCH_MessageType__c1_PR_rrcConnectionRequest
:
case
UL_CCCH_MessageType__c1_PR_rrcConnectionRequest
:
T
(
T_ENB_RRC_CONNECTION_REQUEST
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T
(
T_ENB_RRC_CONNECTION_REQUEST
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
...
@@ -6362,12 +6363,12 @@ rrc_eNB_decode_ccch(
...
@@ -6362,12 +6363,12 @@ rrc_eNB_decode_ccch(
rrcConnectionRequest
=
&
ul_ccch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionRequest
.
criticalExtensions
.
choice
.
rrcConnectionRequest_r8
;
rrcConnectionRequest
=
&
ul_ccch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionRequest
.
criticalExtensions
.
choice
.
rrcConnectionRequest_r8
;
{
{
if
(
InitialUE_Identity_PR_randomValue
==
rrcConnectionRequest
->
ue_Identity
.
present
)
{
if
(
InitialUE_Identity_PR_randomValue
==
rrcConnectionRequest
->
ue_Identity
.
present
)
{
if
(
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
!=
5
)
if
(
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
!=
5
)
{
{
LOG_I
(
RRC
,
"wrong InitialUE-Identity randomValue size, expected 5, provided %lu"
,
LOG_I
(
RRC
,
"wrong InitialUE-Identity randomValue size, expected 5, provided %lu"
,
(
long
unsigned
int
)
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
);
(
long
unsigned
int
)
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
);
return
-
1
;
return
-
1
;
}
}
memcpy
(((
uint8_t
*
)
&
random_value
)
+
3
,
memcpy
(((
uint8_t
*
)
&
random_value
)
+
3
,
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
buf
,
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
buf
,
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
);
rrcConnectionRequest
->
ue_Identity
.
choice
.
randomValue
.
size
);
...
@@ -6437,8 +6438,8 @@ rrc_eNB_decode_ccch(
...
@@ -6437,8 +6438,8 @@ rrc_eNB_decode_ccch(
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionRequest without random UE identity or S-TMSI not supported, let's reject the UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionRequest without random UE identity or S-TMSI not supported, let's reject the UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
rrc_eNB_generate_RRCConnectionReject
(
ctxt_pP
,
rrc_eNB_generate_RRCConnectionReject
(
ctxt_pP
,
rrc_eNB_get_ue_context
(
RC
.
rrc
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
),
rrc_eNB_get_ue_context
(
RC
.
rrc
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
),
CC_id
);
CC_id
);
// navid:
// navid:
break
;
break
;
}
}
...
@@ -6546,17 +6547,21 @@ rrc_eNB_decode_ccch(
...
@@ -6546,17 +6547,21 @@ rrc_eNB_decode_ccch(
#endif
#endif
,
NULL
);
,
NULL
);
rrc_rlc_config_asn1_req
(
ctxt_pP
,
if
(
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
!=
ngran_eNB_CU
)
||
ue_context_p
->
ue_context
.
SRB_configList
,
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
!=
ngran_ng_eNB_CU
)
||
(
DRB_ToAddModList_t
*
)
NULL
,
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
!=
ngran_gNB_CU
)
)
{
(
DRB_ToReleaseList_t
*
)
NULL
rrc_rlc_config_asn1_req
(
ctxt_pP
,
ue_context_p
->
ue_context
.
SRB_configList
,
(
DRB_ToAddModList_t
*
)
NULL
,
(
DRB_ToReleaseList_t
*
)
NULL
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
,
(
PMCH_InfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
,
0
,
0
,
0
,
0
#endif
#endif
);
);
#endif //NO_RRM
#endif //NO_RRM
}
break
;
break
;
default:
default:
...
...
openair2/RRC/LTE/rrc_proto.h
View file @
2565f21b
...
@@ -430,8 +430,7 @@ mac_rrc_data_ind(
...
@@ -430,8 +430,7 @@ mac_rrc_data_ind(
const
rb_id_t
srb_idP
,
const
rb_id_t
srb_idP
,
const
uint8_t
*
sduP
,
const
uint8_t
*
sduP
,
const
sdu_size_t
sdu_lenP
,
const
sdu_size_t
sdu_lenP
,
const
uint8_t
mbsfn_sync_areaP
,
const
uint8_t
mbsfn_sync_areaP
const
int
node_type
);
);
int8_t
int8_t
...
...
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