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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
26750d18
Commit
26750d18
authored
Jul 06, 2022
by
laurent
Committed by
Sakthivel Velumani
Sep 13, 2022
1
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
)
{
...
...
FANG WANG
@wf
mentioned in commit
553f1d1a
·
Feb 11, 2023
mentioned in commit
553f1d1a
mentioned in commit 553f1d1a52845911be4ba61ec2bcc5c60ad42ae7
Toggle commit list
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