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
lizhongxiao
OpenXG UE
Commits
e2c9f5aa
Commit
e2c9f5aa
authored
Sep 19, 2018
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Better management of cu/du ue ids
Fix for some variables
parent
498ed231
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
277 additions
and
51 deletions
+277
-51
openair2/COMMON/f1ap_messages_types.h
openair2/COMMON/f1ap_messages_types.h
+1
-0
openair2/F1AP/f1ap_common.c
openair2/F1AP/f1ap_common.c
+153
-2
openair2/F1AP/f1ap_common.h
openair2/F1AP/f1ap_common.h
+60
-1
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+21
-30
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+35
-12
openair2/F1AP/f1ap_du_rrc_message_transfer.h
openair2/F1AP/f1ap_du_rrc_message_transfer.h
+3
-3
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+1
-1
openair2/LAYER2/RLC/rlc.c
openair2/LAYER2/RLC/rlc.c
+1
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+2
-1
No files found.
openair2/COMMON/f1ap_messages_types.h
View file @
e2c9f5aa
...
...
@@ -211,6 +211,7 @@ typedef struct f1ap_dl_rrc_message_s {
uint32_t
gNB_CU_ue_id
;
uint32_t
gNB_DU_ue_id
;
uint32_t
old_gNB_DU_ue_id
;
uint16_t
rnti
;
uint8_t
srb_id
;
uint8_t
execute_duplication
;
uint8_t
*
rrc_container
;
...
...
openair2/F1AP/f1ap_common.c
View file @
e2c9f5aa
...
...
@@ -209,9 +209,160 @@ uint8_t F1AP_get_next_transaction_identifier(module_id_t enb_mod_idP, module_id_
return
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
];
}
uint8
_t
F1AP_get_UE_identifier
(
module_id_t
enb_mod_idP
,
int
CC_idP
,
int
UE_id
)
{
static
uint8
_t
UE_identifier
[
NUMBER_OF_eNB_MAX
];
module_id
_t
F1AP_get_UE_identifier
(
module_id_t
enb_mod_idP
,
int
CC_idP
,
int
UE_id
)
{
static
module_id
_t
UE_identifier
[
NUMBER_OF_eNB_MAX
];
UE_identifier
[
enb_mod_idP
+
CC_idP
+
UE_id
]
=
(
UE_identifier
[
enb_mod_idP
+
CC_idP
+
UE_id
]
+
1
)
%
F1AP_UE_IDENTIFIER_NUMBER
;
//LOG_T(F1AP,"generated xid is %d\n",transaction_identifier[enb_mod_idP+du_mod_idP]);
return
UE_identifier
[
enb_mod_idP
+
CC_idP
+
UE_id
];
}
int
f1ap_add_ue
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
module_idP
,
int
CC_idP
,
int
UE_id
,
rnti_t
rntiP
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
rntiP
)
{
f1_ue_inst
->
f1ap_uid
[
i
]
=
i
;
f1_ue_inst
->
mac_uid
[
i
]
=
UE_id
;
LOG_I
(
F1AP
,
"Updating the index of UE with RNTI %x and du_ue_f1ap_id %d
\n
"
,
f1_ue_inst
->
rnti
[
i
],
f1_ue_inst
->
du_ue_f1ap_id
[
i
]);
return
i
;
}
}
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
0
){
f1_ue_inst
->
rnti
[
i
]
=
rntiP
;
f1_ue_inst
->
f1ap_uid
[
i
]
=
i
;
f1_ue_inst
->
mac_uid
[
i
]
=
UE_id
;
f1_ue_inst
->
du_ue_f1ap_id
[
i
]
=
F1AP_get_UE_identifier
(
module_idP
,
CC_idP
,
i
);
f1_ue_inst
->
cu_ue_f1ap_id
[
i
]
=
F1AP_get_UE_identifier
(
module_idP
,
CC_idP
,
i
);
f1_ue_inst
->
num_ues
++
;
LOG_I
(
F1AP
,
"Adding a new UE with RNTI %x and cu/du ue_f1ap_id %d
\n
"
,
f1_ue_inst
->
rnti
[
i
],
f1_ue_inst
->
du_ue_f1ap_id
[
i
]);
return
i
;
}
}
return
-
1
;
}
int
f1ap_remove_ue
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
rntiP
)
{
f1_ue_inst
->
rnti
[
i
]
=
0
;
break
;
}
}
return
0
;
}
int
f1ap_get_du_ue_f1ap_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
rntiP
)
{
return
f1_ue_inst
->
du_ue_f1ap_id
[
i
];
}
}
return
-
1
;
}
int
f1ap_get_cu_ue_f1ap_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
rntiP
)
{
return
f1_ue_inst
->
cu_ue_f1ap_id
[
i
];
}
}
return
-
1
;
}
int
f1ap_get_rnti_by_du_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
du_ue_f1ap_id
[
i
]
==
du_ue_f1ap_id
)
{
return
f1_ue_inst
->
rnti
[
i
];
}
}
return
-
1
;
}
int
f1ap_get_rnti_by_cu_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
cu_ue_f1ap_id
[
i
]
==
cu_ue_f1ap_id
)
{
return
f1_ue_inst
->
rnti
[
i
];
}
}
return
-
1
;
}
int
f1ap_get_du_uid
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
du_ue_f1ap_id
[
i
]
==
du_ue_f1ap_id
)
{
return
i
;
}
}
return
-
1
;
}
int
f1ap_get_cu_uid
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
cu_ue_f1ap_id
[
i
]
==
cu_ue_f1ap_id
)
{
return
i
;
}
}
return
-
1
;
}
int
f1ap_get_uid_by_rnti
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
){
int
i
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
){
if
(
f1_ue_inst
->
rnti
[
i
]
==
rntiP
)
{
return
i
;
}
}
return
-
1
;
}
int
f1ap_du_add_cu_ue_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
,
module_id_t
cu_ue_f1ap_id
){
module_id_t
f1ap_uid
=
f1ap_get_du_uid
(
f1_ue_inst
,
du_ue_f1ap_id
);
if
(
f1ap_uid
<
0
)
return
-
1
;
f1_ue_inst
->
cu_ue_f1ap_id
[
f1ap_uid
]
=
cu_ue_f1ap_id
;
LOG_I
(
F1AP
,
"Adding cu_ue_f1ap_id %d for UE with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1_ue_inst
->
rnti
[
f1ap_uid
]);
return
0
;
}
int
f1ap_cu_add_du_ue_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
,
module_id_t
du_ue_f1ap_id
){
module_id_t
f1ap_uid
=
f1ap_get_cu_uid
(
f1_ue_inst
,
cu_ue_f1ap_id
);
if
(
f1ap_uid
<
0
)
return
-
1
;
f1_ue_inst
->
du_ue_f1ap_id
[
f1ap_uid
]
=
du_ue_f1ap_id
;
LOG_I
(
F1AP
,
"Adding du_ue_f1ap_id %d for UE with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1_ue_inst
->
rnti
[
f1ap_uid
]);
return
0
;
}
\ No newline at end of file
openair2/F1AP/f1ap_common.h
View file @
e2c9f5aa
...
...
@@ -425,8 +425,67 @@ typedef int (*f1ap_message_decoded_callback)(
F1AP_F1AP_PDU_t
*
message_p
);
// instance and module_id are assumed to be the same
typedef
struct
f1ap_cudu_ue_inst_s
{
// used for eNB stats generation
rnti_t
rnti
[
MAX_MOBILES_PER_ENB
];
module_id_t
f1ap_uid
[
MAX_MOBILES_PER_ENB
];
module_id_t
mac_uid
[
MAX_MOBILES_PER_ENB
];
module_id_t
du_ue_f1ap_id
[
MAX_MOBILES_PER_ENB
];
module_id_t
cu_ue_f1ap_id
[
MAX_MOBILES_PER_ENB
];
uint16_t
num_ues
;
}
f1ap_cudu_ue_inst_t
;
uint8_t
F1AP_get_next_transaction_identifier
(
module_id_t
enb_mod_idP
,
module_id_t
cu_mod_idP
);
uint8_t
F1AP_get_UE_identifier
(
module_id_t
enb_mod_idP
,
int
CC_idP
,
int
UE_id
);
module_id_t
F1AP_get_UE_identifier
(
module_id_t
enb_mod_idP
,
int
CC_idP
,
int
UE_id
);
int
f1ap_add_ue
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
module_idP
,
int
CC_idP
,
int
UE_id
,
rnti_t
rntiP
);
int
f1ap_remove_ue
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
);
int
f1ap_get_du_ue_f1ap_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
);
int
f1ap_get_cu_ue_f1ap_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
);
int
f1ap_get_rnti_by_du_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
);
int
f1ap_get_rnti_by_cu_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
);
int
f1ap_get_du_uid
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
);
int
f1ap_get_cu_uid
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
);
int
f1ap_get_uid_by_rnti
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
rnti_t
rntiP
);
int
f1ap_du_add_cu_ue_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
du_ue_f1ap_id
,
module_id_t
cu_ue_f1ap_id
);
int
f1ap_cu_add_du_ue_id
(
f1ap_cudu_ue_inst_t
*
f1_ue_inst
,
module_id_t
cu_ue_f1ap_id
,
module_id_t
du_ue_f1ap_id
);
#endif
/* F1AP_COMMON_H_ */
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
e2c9f5aa
...
...
@@ -44,10 +44,15 @@
// a compile error
#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
;
f1ap_cudu_ue_inst_t
f1ap_cu_ue
[
MAX_eNB
];
/*
Initial UL RRC Message Transfer
*/
...
...
@@ -132,6 +137,14 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
}
AssertFatal
(
rrc_inst
>=
0
,
"couldn't find an RRC instance for nr_cell %ll
\n
"
,
nr_cellid
);
int
f1ap_uid
=
f1ap_add_ue
(
&
f1ap_cu_ue
[
rrc_inst
],
rrc_inst
,
CC_id
,
0
,
rnti
);
if
(
f1ap_uid
<
0
)
{
LOG_E
(
CU_F1AP
,
"Failed to add UE
\n
"
);
return
-
1
;
}
f1ap_cu_ue
[
rrc_inst
].
du_ue_f1ap_id
[
f1ap_uid
]
=
du_ue_f1ap_id
;
RRC_MAC_CCCH_DATA_IND
(
message_p
).
frame
=
0
;
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sub_frame
=
0
;
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu_size
=
ccch_sdu_len
;
...
...
@@ -141,32 +154,6 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
itti_send_msg_to_task
(
TASK_RRC_ENB
,
instance
,
message_p
);
// OR creat the ctxt and srb_info struct required by rrc_eNB_decode_ccch
/*
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
instance, // to fix
ENB_FLAG_YES,
rnti,
0, // frame
0); // slot
CC_id = RRC_MAC_CCCH_DATA_IND(msg_p).CC_id;
srb_info_p = &RC.rrc[instance]->carrier[CC_id].Srb0;
if (ccch_sdu_len >= RRC_BUFFER_SIZE_MAX) {
LOG_E(RRC, "CCCH message has size %d > %d\n",ccch_sdu_len,RRC_BUFFER_SIZE_MAX);
break;
}
memcpy(srb_info_p->Rx_buffer.Payload,
ccch_sdu,
ccch_sdu_len);
srb_info->Rx_buffer.payload_size = ccch_sdu_len;
rrc_eNB_decode_ccch(&ctxt, srb_info, CC_id);
*/
// if size > 0
// CU_send_DL_RRC_MESSAGE_TRANSFER(C.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload, RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size)
return
0
;
}
...
...
@@ -204,8 +191,11 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
dl_rrc
->
gNB_CU_ue_id
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
get_cu_ue_f1ap_id
(
&
f1ap_cu_ue
[
instance
],
f1ap_dl_rrc
->
rnti
)
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
LOG_I
(
CU_F1AP
,
"Setting GNB_CU_UE_F1AP_ID %d associated with UE RNTI %x (instance %d)
\n
"
,
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
,
instance
);
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
...
...
@@ -213,8 +203,9 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_dl_rrc
->
gNB_DU_ue_id
;
// TODO: f1ap_dl_rrc->gNB_DU_ue_id
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_
get_du_ue_f1ap_id
(
&
f1ap_cu_ue
[
instance
],
f1ap_dl_rrc
->
rnti
);
//f1ap_
dl_rrc->gNB_DU_ue_id; // TODO: f1ap_dl_rrc->gNB_DU_ue_id
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
LOG_I
(
CU_F1AP
,
"GNB_DU_UE_F1AP_ID %d associated with UE RNTI %x
\n
"
,
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
);
/* optional */
/* c3. oldgNB_DU_UE_F1AP_ID */
...
...
@@ -326,14 +317,14 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
,
true
);
cu_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
;
LOG_D
(
CU_F1AP
,
"cu_ue_f1ap_id %lu
\n
"
,
cu_ue_f1ap_id
);
LOG_D
(
CU_F1AP
,
"cu_ue_f1ap_id %lu
associated with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_ue
[
instance
],
cu_ue_f1ap_id
)
);
/* GNB_DU_UE_F1AP_ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
CU_F1AP
,
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
LOG_D
(
CU_F1AP
,
"du_ue_f1ap_id %lu
associated with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_ue
[
instance
],
du_ue_f1ap_id
)
);
/* mandatory */
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
e2c9f5aa
...
...
@@ -35,6 +35,7 @@
#include "f1ap_decoder.h"
#include "f1ap_itti_messaging.h"
#include "f1ap_du_rrc_message_transfer.h"
// undefine C_RNTI from
// openair1/PHY/LTE_TRANSPORT/transport_common.h which
// replaces in ie->value.choice.C_RNTI, causing
...
...
@@ -43,6 +44,11 @@
extern
f1ap_setup_req_t
*
f1ap_du_data
;
f1ap_cudu_ue_inst_t
f1ap_du_ue
[
MAX_eNB
];
/* DL RRC Message Transfer */
int
DU_handle_DL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
uint32_t
assoc_id
,
...
...
@@ -88,9 +94,13 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
DU_F1AP
,
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
LOG_D
(
DU_F1AP
,
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
// this should be the one transmitted via initial ul rrc message transfer
if
(
f1ap_du_add_cu_ue_id
(
&
f1ap_du_ue
[
instance
],
du_ue_f1ap_id
,
cu_ue_f1ap_id
)
<
0
)
{
LOG_E
(
DU_F1AP
,
"Failed to find the F1AP UID
\n
"
);
//return -1;
}
/* optional */
/* oldgNB_DU_UE_F1AP_ID */
if
(
0
)
{
...
...
@@ -105,7 +115,6 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
srb_id
=
ie
->
value
.
choice
.
SRBID
;
LOG_D
(
DU_F1AP
,
"srb_id %lu
\n
"
,
srb_id
);
/* optional */
/* ExecuteDuplication */
if
(
0
)
{
...
...
@@ -122,7 +131,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ProtocolIE_ID_id_RRCContainer
,
true
);
// BK: need check
// create an ITTI message and copy SDU
message_p
=
itti_alloc_new_message
(
TASK_
C
U_F1
,
RRC_MAC_CCCH_DATA_IND
);
message_p
=
itti_alloc_new_message
(
TASK_
D
U_F1
,
RRC_MAC_CCCH_DATA_IND
);
memset
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
0
,
CCCH_SDU_SIZE
);
ccch_sdu_len
=
ie
->
value
.
choice
.
RRCContainer
.
size
;
memcpy
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
ie
->
value
.
choice
.
RRCContainer
.
buf
,
...
...
@@ -152,10 +161,10 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
}
//void DU_send_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
module_id_t
module_id
P
,
int
CC
_idP
,
uint8_t
*
sduP
,
sdu_size_t
sdu_lenP
)
{
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
protocol_ctxt_t
*
ctxt_p
P
,
rb_id_t
srb
_idP
,
uint8_t
*
sduP
,
sdu_size_t
sdu_lenP
)
{
LOG_D
(
DU_F1AP
,
"DU_send_UL_RRC_MESSAGE_TRANSFER
\n
"
);
...
...
@@ -182,7 +191,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__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_du_ue
[
ctxt_pP
->
module_id
].
cu_ue_f1ap_id
[
f1ap_get_uid_by_rnti
(
&
f1ap_du_ue
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
)]
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
...
...
@@ -191,7 +200,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
F1AP_get_UE_identifier
(
module_idP
,
CC_idP
,
0
)
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_du_ue
[
ctxt_pP
->
module_id
].
du_ue_f1ap_id
[
f1ap_get_uid_by_rnti
(
&
f1ap_du_ue
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
)]
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
...
...
@@ -200,7 +209,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie
->
id
=
F1AP_ProtocolIE_ID_id_SRBID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_SRBID
;
ie
->
value
.
choice
.
SRBID
=
1
;
ie
->
value
.
choice
.
SRBID
=
srb_idP
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
// issue in here
...
...
@@ -236,6 +245,12 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
uint8_t
*
buffer
;
uint32_t
len
;
int
f1ap_uid
=
f1ap_add_ue
(
&
f1ap_du_ue
[
module_idP
],
module_idP
,
CC_idP
,
UE_id
,
rntiP
);
if
(
f1ap_uid
<
0
)
{
LOG_E
(
DU_F1AP
,
"Failed to add UE
\n
"
);
return
-
1
;
}
/* Create */
/* 0. Message Type */
...
...
@@ -254,7 +269,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
F1AP_get_UE_identifier
(
module_idP
,
CC_idP
,
UE_id
);
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_du_ue
[
module_idP
].
du_ue_f1ap_id
[
f1ap_uid
];
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
...
...
@@ -311,3 +326,11 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
du_f1ap_itti_send_sctp_data_req
(
0
,
f1ap_du_data
->
assoc_id
,
buffer
,
len
,
0
);
return
0
;
}
void
init_f1ap_du_ue_inst
(
void
)
{
memset
(
f1ap_du_ue
,
0
,
sizeof
(
f1ap_du_ue
));
}
openair2/F1AP/f1ap_du_rrc_message_transfer.h
View file @
e2c9f5aa
...
...
@@ -39,9 +39,9 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
module_id_t
module_id
P
,
int
CC
_idP
,
uint8_t
*
sduP
,
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
protocol_ctxt_t
*
ctxt_p
P
,
rb_id_t
srb
_idP
,
uint8_t
*
sduP
,
sdu_size_t
sdu_lenP
);
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
module_id_t
module_idP
,
...
...
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
e2c9f5aa
...
...
@@ -1135,7 +1135,7 @@ void pdcp_add_UE(const protocol_ctxt_t* const ctxt_pP){
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
i
]
=
ctxt_pP
->
rnti
;
pdcp_enb
[
ctxt_pP
->
module_id
].
uid
[
i
]
=
i
;
pdcp_enb
[
ctxt_pP
->
module_id
].
num_ues
++
;
printf
(
"add new uid is %d %x
\n\n
"
,
i
,
ctxt_pP
->
rnti
);
LOG_I
(
PDCP
,
"add new uid is %d %x
\n\n
"
,
i
,
ctxt_pP
->
rnti
);
// ret=1;
break
;
}
...
...
openair2/LAYER2/RLC/rlc.c
View file @
e2c9f5aa
...
...
@@ -707,7 +707,7 @@ void rlc_data_ind (
case
ngran_eNB_DU
:
case
ngran_gNB_DU
:
DU_send_UL_RRC_MESSAGE_TRANSFER
(
ctxt_pP
->
module_id
,
ctxt_pP
,
rb_idP
,
sdu_pP
,
sdu_sizeP
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
e2c9f5aa
...
...
@@ -5771,10 +5771,11 @@ rrc_eNB_generate_RRCConnectionSetup(
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
).
rnti
=
ue_p
->
rnti
;
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_CU_F1
,
UE_MODULE_ID_TO_INSTANCE
(
ctxt_pP
->
module_id
)
,
message_p
);
itti_send_msg_to_task
(
TASK_CU_F1
,
ctxt_pP
->
module_id
,
message_p
);
LOG_D
(
RRC
,
"Send F1AP_DL_RRC_MESSAGE with ITTI
\n
"
);
break
;
case
ngran_eNB_DU
:
...
...
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