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
26750d18
Commit
26750d18
authored
Jul 06, 2022
by
laurent
Committed by
Sakthivel Velumani
Sep 13, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
e1ap bearer setup encoding invalid
parent
d092788a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
124 additions
and
194 deletions
+124
-194
CMakeLists.txt
CMakeLists.txt
+3
-1
doc/SW_archi.md
doc/SW_archi.md
+2
-1
openair2/E1AP/e1ap.c
openair2/E1AP/e1ap.c
+19
-5
openair2/E1AP/e1ap_common.c
openair2/E1AP/e1ap_common.c
+1
-1
openair2/E1AP/e1ap_common.h
openair2/E1AP/e1ap_common.h
+1
-1
openair2/GNB_APP/gnb_app.c
openair2/GNB_APP/gnb_app.c
+6
-4
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+36
-70
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+12
-12
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+15
-50
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+1
-2
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+7
-13
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+21
-34
No files found.
CMakeLists.txt
View file @
26750d18
...
...
@@ -334,7 +334,9 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
# Debug related options
#########################################
add_boolean_option
(
DEBUG_ASN1C False
"ASN1 coder/decoder Debug traces, see common/utils/config.h, the logs are regular OAI logs, in the log group 'ASN'"
)
add_boolean_option
(
ASN_EMIT_DEBUG True
"ASN1 coder/decoder Debug"
)
add_boolean_option
(
ASN_THREAD_SAFE True
"ASN1 coder/decoder Debug"
)
add_boolean_option
(
MSG_PRINT True
"print debug messages"
)
add_boolean_option
(
DISABLE_XER_PRINT False
"print XER Format"
)
add_boolean_option
(
XER_PRINT False
"print XER Format"
)
add_boolean_option
(
DEBUG_PDCP_PAYLOAD False
"print PDCP PDU to stdout"
)
# if true, make sure that global and PDCP log levels are trace
...
...
doc/SW_archi.md
View file @
26750d18
...
...
@@ -344,7 +344,8 @@ pdcp_config_set_security(): not yet developped
nr_DRB_preconfiguration(): the mac layer calls this for ???
nr_rrc_pdcp_config_asn1_req() adds a UE in pdcp, pdcp_remove_UE() removes it
nr_pdcp_add_srbs() adds UE SRBs in pdcp, pdcp_remove_UE() removes it
nr_pdcp_add_drbs() adds UE DRBs in pdcp, pdcp_remove_UE() removes it
# GTP
Gtp + UDP are two twin threads performing the data plane interface to the core network
...
...
openair2/E1AP/e1ap.c
View file @
26750d18
...
...
@@ -507,6 +507,12 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
E1AP_E1AP_PDU_t
pdu
=
{
0
};
/* Create */
/* 0. pdu Type */
e1ap_setup_req_t
*
setup
=
&
getCxtE1
(
CPtype
,
instance
)
->
setupReq
;
if
(
!
setup
)
{
LOG_E
(
E1AP
,
"got send_BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)
\n
"
,
instance
);
return
-
1
;
}
pdu
.
present
=
E1AP_E1AP_PDU_PR_initiatingMessage
;
asn1cCalloc
(
pdu
.
choice
.
initiatingMessage
,
msg
);
msg
->
procedureCode
=
E1AP_ProcedureCode_id_bearerContextSetup
;
...
...
@@ -527,7 +533,8 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
ieC2
->
criticality
=
E1AP_Criticality_reject
;
ieC2
->
value
.
present
=
E1AP_BearerContextSetupRequestIEs__value_PR_SecurityInformation
;
ieC2
->
value
.
choice
.
SecurityInformation
.
securityAlgorithm
.
cipheringAlgorithm
=
bearerCxt
->
cipheringAlgorithm
;
OCTET_STRING_fromBuf
(
&
ieC2
->
value
.
choice
.
SecurityInformation
.
uPSecuritykey
.
encryptionKey
,
bearerCxt
->
encryptionKey
,
strlen
(
bearerCxt
->
encryptionKey
));
OCTET_STRING_fromBuf
(
&
ieC2
->
value
.
choice
.
SecurityInformation
.
uPSecuritykey
.
encryptionKey
,
bearerCxt
->
encryptionKey
,
strlen
(
bearerCxt
->
encryptionKey
));
/* mandatory */
/* c3. UE DL Aggregate Maximum Bit Rate */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
E1AP_BearerContextSetupRequestIEs_t
,
ieC3
);
...
...
@@ -541,7 +548,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
ieC4
->
id
=
E1AP_ProtocolIE_ID_id_Serving_PLMN
;
ieC4
->
criticality
=
E1AP_Criticality_ignore
;
ieC4
->
value
.
present
=
E1AP_BearerContextSetupRequestIEs__value_PR_PLMN_Identity
;
e1ap_setup_req_t
*
setup
=
&
getCxtE1
(
CPtype
,
instance
)
->
setupReq
;
PLMN_ID_t
*
servingPLMN
=
setup
->
plmns
;
// First PLMN is serving PLMN. TODO: Remove hard coding here
MCC_MNC_TO_PLMNID
(
servingPLMN
->
mcc
,
servingPLMN
->
mnc
,
servingPLMN
->
mnc_digit_length
,
&
ieC4
->
value
.
choice
.
PLMN_Identity
);
/* mandatory */
...
...
@@ -600,7 +606,6 @@ int e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
for
(
pdu_session_to_setup_t
*
i
=
bearerCxt
->
pduSession
;
i
<
bearerCxt
->
pduSession
+
bearerCxt
->
numPDUSessions
;
i
++
)
{
asn1cSequenceAdd
(
pdu2Setup
->
list
,
E1AP_PDU_Session_Resource_To_Setup_Item_t
,
ieC6_1
);
ieC6_1
->
pDU_Session_ID
=
i
->
sessionId
;
ieC6_1
->
pDU_Session_Type
=
i
->
sessionType
;
INT32_TO_OCTET_STRING
(
i
->
sst
,
&
ieC6_1
->
sNSSAI
.
sST
);
...
...
@@ -791,6 +796,12 @@ int e1apCUUP_send_BEARER_CONTEXT_SETUP_FAILURE(instance_t instance) {
int
e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST
(
instance_t
instance
,
E1AP_E1AP_PDU_t
*
pdu
)
{
e1ap_bearer_setup_req_t
*
bearerCxt
=
&
getCxtE1
(
CPtype
,
instance
)
->
bearerSetupReq
;
if
(
!
bearerCxt
)
{
LOG_E
(
E1AP
,
"got BEARER_CONTEXT_SETUP_REQUEST on not established instance (%ld)
\n
"
,
instance
);
return
-
1
;
}
DevAssert
(
pdu
!=
NULL
);
AssertFatal
(
pdu
->
present
==
E1AP_E1AP_PDU_PR_initiatingMessage
,
"pdu->present != E1AP_E1AP_PDU_PR_initiatingMessage
\n
"
);
...
...
@@ -804,8 +815,6 @@ int e1apCUUP_handle_BEARER_CONTEXT_SETUP_REQUEST(instance_t instance,
E1AP_BearerContextSetupRequest_t
*
in
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
BearerContextSetupRequest
;
E1AP_BearerContextSetupRequestIEs_t
*
ie
;
e1ap_bearer_setup_req_t
*
bearerCxt
=
&
getCxtE1
(
CPtype
,
instance
)
->
bearerSetupReq
;
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_CUUP_E1
,
0
,
E1AP_BEARER_CONTEXT_SETUP_REQ
);
LOG_I
(
E1AP
,
"Bearer context setup number of IEs %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
...
...
@@ -1207,6 +1216,11 @@ void *E1AP_CUCP_task(void *arg) {
e1apCUCP_send_SETUP_RESPONSE
(
myInstance
,
&
E1AP_SETUP_RESP
(
msg
));
break
;
case
E1AP_BEARER_CONTEXT_SETUP_REQ
:
LOG_I
(
E1AP
,
"CUCP Task Received E1AP_BEARER_CONTEXT_SETUP_REQ
\n
"
);
e1apCUCP_send_BEARER_CONTEXT_SETUP_REQUEST
(
myInstance
,
&
E1AP_BEARER_CONTEXT_SETUP_REQ
(
msg
));
break
;
default:
LOG_E
(
E1AP
,
"Unknown message received in TASK_CUCP_E1
\n
"
);
break
;
...
...
openair2/E1AP/e1ap_common.c
View file @
26750d18
...
...
@@ -31,7 +31,7 @@ static e1ap_upcp_inst_t *e1ap_up_inst[NUMBER_OF_gNB_MAX] = {0};
e1ap_upcp_inst_t
*
getCxtE1
(
E1_t
type
,
instance_t
instance
)
{
AssertFatal
(
instance
<
sizeofArray
(
e1ap_cp_inst
),
"instance exceeds limit
\n
"
);
return
type
?
e1ap_up_inst
[
instance
]
:
e1ap_cp_inst
[
instance
];
return
type
==
UPtype
?
e1ap_up_inst
[
instance
]
:
e1ap_cp_inst
[
instance
];
}
int
e1ap_assoc_id
(
E1_t
type
,
instance_t
instance
)
{
...
...
openair2/E1AP/e1ap_common.h
View file @
26750d18
...
...
@@ -25,7 +25,7 @@
#define E1AP_COMMON_H_
#include "openair2/COMMON/e1ap_messages_types.h"
//#define ASN_DEBUG( x... ) LOG_I(ASN, x)
int
e1ap_decode_pdu
(
E1AP_E1AP_PDU_t
*
pdu
,
const
uint8_t
*
const
buffer
,
uint32_t
length
);
e1ap_upcp_inst_t
*
getCxtE1
(
E1_t
type
,
instance_t
instance
);
...
...
openair2/GNB_APP/gnb_app.c
View file @
26750d18
...
...
@@ -68,7 +68,6 @@ static void configure_nr_rrc(uint32_t gnb_id)
msg_p
=
itti_alloc_new_message
(
TASK_GNB_APP
,
0
,
NRRRC_CONFIGURATION_REQ
);
if
(
RC
.
nrrrc
[
gnb_id
])
{
RC
.
nrrrc
[
gnb_id
]
->
node_type
=
set_node_type
();
RCconfig_NRRRC
(
msg_p
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
]);
LOG_I
(
GNB_APP
,
"RRC starting with node type %d
\n
"
,
RC
.
nrrrc
[
gnb_id
]
->
node_type
);
...
...
@@ -143,7 +142,6 @@ void *gNB_app_task(void *args_p)
uint32_t
gnb_nb
=
RC
.
nb_nr_inst
;
uint32_t
gnb_id_start
=
0
;
uint32_t
gnb_id_end
=
gnb_id_start
+
gnb_nb
;
uint32_t
gnb_id
;
MessageDef
*
msg_p
=
NULL
;
const
char
*
msg_name
=
NULL
;
instance_t
instance
;
...
...
@@ -172,13 +170,17 @@ void *gNB_app_task(void *args_p)
RC
.
nrrrc
=
(
gNB_RRC_INST
**
)
malloc
(
RC
.
nb_nr_inst
*
sizeof
(
gNB_RRC_INST
*
));
LOG_I
(
PHY
,
"%s() RC.nb_nr_inst:%d RC.nrrrc:%p
\n
"
,
__FUNCTION__
,
RC
.
nb_nr_inst
,
RC
.
nrrrc
);
for
(
gnb_id
=
gnb_id_start
;
(
gnb_id
<
gnb_id_end
)
;
gnb_id
++
)
{
for
(
int
gnb_id
=
gnb_id_start
;
(
gnb_id
<
gnb_id_end
)
;
gnb_id
++
)
{
RC
.
nrrrc
[
gnb_id
]
=
(
gNB_RRC_INST
*
)
calloc
(
1
,
sizeof
(
gNB_RRC_INST
));
LOG_I
(
PHY
,
"%s() Creating RRC instance RC.nrrrc[%d]:%p (%d of %d)
\n
"
,
__FUNCTION__
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
],
gnb_id
+
1
,
gnb_id_end
);
RC
.
nrrrc
[
gnb_id
]
->
node_type
=
set_node_type
();
configure_nr_rrc
(
gnb_id
);
}
if
(
RC
.
nb_nr_inst
>
0
&&
!
get_softmodem_params
()
->
nsa
)
{
if
(
RC
.
nb_nr_inst
>
0
&&
!
get_softmodem_params
()
->
nsa
&&
!
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_DU
))
{
// we start pdcp in both cuup (for drb) and cucp (for srb)
init_pdcp
();
}
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
View file @
26750d18
...
...
@@ -1036,72 +1036,45 @@ static void add_drb(int is_gnb, int rnti, struct NR_DRB_ToAddMod *s,
LOG_I
(
PDCP
,
"%s:%s:%d: added DRB for UE RNTI %x
\n
"
,
__FILE__
,
__FUNCTION__
,
__LINE__
,
rnti
);
}
bool
nr_rrc_pdcp_config_asn1_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
NR_SRB_ToAddModList_t
*
const
srb2add_list
,
NR_DRB_ToAddModList_t
*
const
drb2add_list
,
NR_DRB_ToReleaseList_t
*
const
drb2release_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kRRCenc
,
uint8_t
*
const
kRRCint
,
uint8_t
*
const
kUPenc
,
uint8_t
*
const
kUPint
,
LTE_PMCH_InfoList_r9_t
*
pmch_InfoList_r9
,
rb_id_t
*
const
defaultDRB
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
)
{
int
rnti
=
ctxt_pP
->
rnti
;
int
i
;
if
(
//ctxt_pP->enb_flag != 1 ||
ctxt_pP
->
module_id
!=
0
||
ctxt_pP
->
instance
!=
0
||
ctxt_pP
->
eNB_index
!=
0
||
//ctxt_pP->configured != 2 ||
//srb2add_list == NULL ||
//drb2add_list != NULL ||
//drb2release_list != NULL ||
//security_modeP != 255 ||
//kRRCenc != NULL ||
//kRRCint != NULL ||
//kUPenc != NULL ||
pmch_InfoList_r9
!=
NULL
/*||
defaultDRB != NULL */
)
{
LOG_I
(
PDCP
,
"Releasing DRBs, oops
\n
"
);
TODO
;
}
void
nr_pdcp_add_srbs
(
eNB_flag_t
enb_flag
,
rnti_t
rnti
,
NR_SRB_ToAddModList_t
*
const
srb2add_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kRRCenc
,
uint8_t
*
const
kRRCint
)
{
if
(
srb2add_list
!=
NULL
)
{
for
(
i
=
0
;
i
<
srb2add_list
->
list
.
count
;
i
++
)
{
add_srb
(
ctxt_pP
->
enb_flag
,
rnti
,
srb2add_list
->
list
.
array
[
i
],
for
(
i
nt
i
=
0
;
i
<
srb2add_list
->
list
.
count
;
i
++
)
{
add_srb
(
enb_flag
,
rnti
,
srb2add_list
->
list
.
array
[
i
],
security_modeP
&
0x0f
,
(
security_modeP
>>
4
)
&
0x0f
,
kRRCenc
,
kRRCint
);
}
}
LOG_W
(
PDCP
,
"nr_pdcp_add_srbs() with void list
\n
"
);
if
(
kRRCenc
)
free
(
kRRCenc
);
if
(
kRRCint
)
free
(
kRRCint
);
}
void
nr_pdcp_add_drbs
(
eNB_flag_t
enb_flag
,
rnti_t
rnti
,
NR_DRB_ToAddModList_t
*
const
drb2add_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kUPenc
,
uint8_t
*
const
kUPint
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
)
{
if
(
drb2add_list
!=
NULL
)
{
for
(
i
=
0
;
i
<
drb2add_list
->
list
.
count
;
i
++
)
{
add_drb
(
ctxt_pP
->
enb_flag
,
rnti
,
drb2add_list
->
list
.
array
[
i
],
for
(
i
nt
i
=
0
;
i
<
drb2add_list
->
list
.
count
;
i
++
)
{
add_drb
(
enb_flag
,
rnti
,
drb2add_list
->
list
.
array
[
i
],
rlc_bearer2add_list
->
list
.
array
[
i
]
->
rlc_Config
,
security_modeP
&
0x0f
,
(
security_modeP
>>
4
)
&
0x0f
,
kUPenc
,
kUPint
);
}
}
/* update security */
if
(
kRRCint
!=
NULL
)
{
/* todo */
}
if
(
drb2release_list
!=
NULL
)
{
// TODO
}
free
(
kRRCenc
);
free
(
kRRCint
);
free
(
kUPenc
);
free
(
kUPint
);
return
0
;
}
else
LOG_W
(
PDCP
,
"nr_pdcp_add_drbs() with void list
\n
"
);
if
(
kUPenc
)
free
(
kUPenc
);
if
(
kUPint
)
free
(
kUPint
);
}
/* Dummy function due to dependency from LTE libraries */
...
...
@@ -1188,21 +1161,14 @@ void nr_DRB_preconfiguration(uint16_t crnti)
else
{
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
0
,
ENB_FLAG_NO
,
crnti
,
0
,
0
,
0
);
}
nr_rrc_pdcp_config_asn1_req
(
&
ctxt
,
(
NR_SRB_ToAddModList_t
*
)
NULL
,
rbconfig
->
drb_ToAddModList
,
rbconfig
->
drb_ToReleaseList
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
Rlc_Bearer_ToAdd_list
);
nr_pdcp_add_drbs
(
ctxt
.
enb_flag
,
ctxt
.
rnti
,
rbconfig
->
drb_ToAddModList
,
0
,
NULL
,
NULL
,
Rlc_Bearer_ToAdd_list
);
nr_rrc_rlc_config_asn1_req
(
&
ctxt
,
(
NR_SRB_ToAddModList_t
*
)
NULL
,
rbconfig
->
drb_ToAddModList
,
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
26750d18
...
...
@@ -206,15 +206,15 @@ rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt
const
LTE_PMCH_InfoList_r9_t
*
const
pmch_InfoList_r9_pP
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
);
bool
nr_rrc_pdcp_config_asn1_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
NR_SRB_ToAddModList_t
*
const
srb2add_list
,
NR_DRB_ToAddModList_t
*
const
drb2add_list
,
NR_DRB_ToReleaseList_t
*
const
drb2release_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kRRCenc
,
uint8_t
*
const
kRRCint
,
uint8_t
*
const
kUPenc
,
uint8_t
*
const
kUPint
,
LTE_PMCH_InfoList_r9_t
*
pmch_InfoList_r9
,
rb_id_t
*
const
defaultDRB
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
);
void
nr_pdcp_add_srbs
(
eNB_flag_t
enb_flag
,
rnti_t
rnti
,
NR_SRB_ToAddModList_t
*
const
srb2add_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kRRCenc
,
uint8_t
*
const
kUPint
);
void
nr_pdcp_add_drbs
(
eNB_flag_t
enb_flag
,
rnti_t
rnti
,
NR_DRB_ToAddModList_t
*
const
drb2add_list
,
const
uint8_t
security_modeP
,
uint8_t
*
const
kUPenc
,
uint8_t
*
const
kUPint
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
);
openair2/RRC/NR/rrc_gNB.c
View file @
26750d18
...
...
@@ -316,23 +316,7 @@ void apply_macrlc_config(gNB_RRC_INST *rrc,
}
void
apply_pdcp_config
(
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
)
{
nr_rrc_pdcp_config_asn1_req
(
ctxt_pP
,
ue_context_pP
->
ue_context
.
SRB_configList
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
->
rlc_BearerToAddModList
:
NULL
);
}
//-----------------------------------------------------------------------------
void
...
...
@@ -1340,19 +1324,21 @@ rrc_gNB_process_RRCReconfigurationComplete(
LOG_D
(
NR_RRC
,
"Configuring PDCP DRBs/SRBs for UE %x
\n
"
,
ue_context_pP
->
ue_context
.
rnti
);
nr_rrc_pdcp_config_asn1_req
(
ctxt_pP
,
SRB_configList
,
// NULL,
DRB_configList
,
DRB_Release_configList2
,
(
ue_context_pP
->
ue_context
.
integrity_algorithm
<<
4
)
|
ue_context_pP
->
ue_context
.
ciphering_algorithm
,
kRRCenc
,
kRRCint
,
kUPenc
,
kUPint
,
NULL
,
NULL
,
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
->
rlc_BearerToAddModList
:
NULL
);
nr_pdcp_add_srbs
(
ctxt_pP
->
enb_flag
,
ctxt_pP
->
rnti
,
SRB_configList
,
(
ue_context_pP
->
ue_context
.
integrity_algorithm
<<
4
)
|
ue_context_pP
->
ue_context
.
ciphering_algorithm
,
kRRCenc
,
kRRCint
);
nr_pdcp_add_drbs
(
ctxt_pP
->
enb_flag
,
ctxt_pP
->
rnti
,
DRB_configList
,
(
ue_context_pP
->
ue_context
.
integrity_algorithm
<<
4
)
|
ue_context_pP
->
ue_context
.
ciphering_algorithm
,
kUPenc
,
kUPint
,
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
->
rlc_BearerToAddModList
:
NULL
);
/* Refresh SRBs/DRBs */
if
(
!
NODE_IS_CU
(
RC
.
nrrrc
[
ctxt_pP
->
module_id
]
->
node_type
))
{
LOG_D
(
NR_RRC
,
"Configuring RLC DRBs/SRBs for UE %x
\n
"
,
ue_context_pP
->
ue_context
.
rnti
);
...
...
@@ -2188,27 +2174,6 @@ int nr_rrc_gNB_decode_ccch(protocol_ctxt_t *const ctxt_pP,
LOG_I
(
NR_RRC
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
"CALLING RLC CONFIG SRB1 (rbid %d)
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
Idx
);
// nr_rrc_pdcp_config_asn1_req(ctxt_pP,
// ue_context_p->ue_context.SRB_configList,
// NULL,
// NULL,
// 0xff,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL,
// NULL);
// if (!NODE_IS_CU(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
// nr_rrc_rlc_config_asn1_req(ctxt_pP,
// ue_context_p->ue_context.SRB_configList,
// NULL,
// NULL,
// NULL,
// NULL);
// }
}
break
;
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
26750d18
...
...
@@ -992,8 +992,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
At CU-CP we configure the E1 bearer context setup parameters (PDU sessions, DRBs and
QoS flows) same as in these functions. At CU-UP we create PDU Sessions and allocate DRBs.
*/
MessageDef
*
msg_p
=
NULL
;
msg_p
=
itti_alloc_new_message
(
TASK_CUCP_E1
,
0
,
E1AP_BEARER_CONTEXT_SETUP_REQ
);
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_CUCP_E1
,
0
,
E1AP_BEARER_CONTEXT_SETUP_REQ
);
e1ap_bearer_setup_req_t
*
bearer_req
=
&
E1AP_BEARER_CONTEXT_SETUP_REQ
(
msg_p
);
bearer_req
->
gNB_cu_cp_ue_id
=
gNB_ue_ngap_id
;
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
26750d18
...
...
@@ -383,21 +383,15 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
ctxt
.
subframe
,
ctxt
.
eNB_index
);
nr_rrc_pdcp_config_asn1_req
(
&
ctxt
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
(
NR_SRB_ToAddModList_t
*
)
NULL
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToAddModList
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToReleaseList
,
(
ue_context_p
->
ue_context
.
integrity_algorithm
<<
4
)
|
ue_context_p
->
ue_context
.
ciphering_algorithm
,
NULL
,
/* kRRCenc - unused */
NULL
,
/* kRRCint - unused */
kUPenc
,
/* kUPenc */
kUPint
,
/* kUPint */
NULL
,
NULL
,
ue_context_p
->
ue_context
.
secondaryCellGroup
->
rlc_BearerToAddModList
);
nr_pdcp_add_drbs
(
ctxt
.
enb_flag
,
ctxt
.
rnti
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToAddModList
,
(
ue_context_p
->
ue_context
.
integrity_algorithm
<<
4
)
|
ue_context_p
->
ue_context
.
ciphering_algorithm
,
kUPenc
,
kUPint
,
ue_context_p
->
ue_context
.
secondaryCellGroup
->
rlc_BearerToAddModList
);
nr_rrc_rlc_config_asn1_req
(
&
ctxt
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
(
NR_SRB_ToAddModList_t
*
)
NULL
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
NULL
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToAddModList
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToReleaseList
,
(
LTE_PMCH_InfoList_r9_t
*
)
NULL
,
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
26750d18
...
...
@@ -1989,19 +1989,12 @@ nr_rrc_ue_establish_srb2(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
,
&
kRRCint
);
// Refresh SRBs
nr_rrc_pdcp_config_asn1_req
(
ctxt_pP
,
radioBearerConfig
->
srb_ToAddModList
,
NULL
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
|
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
<<
4
),
kRRCenc
,
kRRCint
,
NULL
,
NULL
,
NULL
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cell_group_config
->
rlc_BearerToAddModList
);
nr_pdcp_add_srbs
(
ctxt_pP
->
enb_flag
,
ctxt_pP
->
rnti
,
radioBearerConfig
->
srb_ToAddModList
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
|
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
<<
4
),
kRRCenc
,
kRRCint
);
// Refresh SRBs
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
radioBearerConfig
->
srb_ToAddModList
,
...
...
@@ -2094,27 +2087,21 @@ nr_rrc_ue_establish_srb2(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
,
&
kUPint
);
// Refresh DRBs
nr_rrc_pdcp_config_asn1_req
(
ctxt_pP
,
NULL
,
radioBearerConfig
->
drb_ToAddModList
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
|
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
<<
4
),
NULL
,
NULL
,
kUPenc
,
kUPint
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
defaultDRB
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cell_group_config
->
rlc_BearerToAddModList
);
// Refresh DRBs
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
NULL
,
radioBearerConfig
->
drb_ToAddModList
,
NULL
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cell_group_config
->
rlc_BearerToAddModList
);
nr_pdcp_add_drbs
(
ctxt_pP
->
enb_flag
,
ctxt_pP
->
rnti
,
radioBearerConfig
->
drb_ToAddModList
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
|
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
<<
4
),
kUPenc
,
kUPint
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cell_group_config
->
rlc_BearerToAddModList
);
// Refresh DRBs
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
NULL
,
radioBearerConfig
->
drb_ToAddModList
,
NULL
,
NULL
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cell_group_config
->
rlc_BearerToAddModList
);
}
// drb_ToAddModList //
if
(
radioBearerConfig
->
drb_ToReleaseList
!=
NULL
)
{
...
...
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