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
807e5dd7
Commit
807e5dd7
authored
Mar 03, 2022
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_SA_pdu_session_modify_release' into integration_2022_wk09
parents
48f26086
66d2a376
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
556 additions
and
23 deletions
+556
-23
openair2/COMMON/ngap_messages_types.h
openair2/COMMON/ngap_messages_types.h
+10
-1
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+8
-4
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+198
-1
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+268
-0
openair2/RRC/NR/rrc_gNB_NGAP.h
openair2/RRC/NR/rrc_gNB_NGAP.h
+22
-0
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+2
-2
openair3/NGAP/ngap_common.h
openair3/NGAP/ngap_common.h
+3
-0
openair3/NGAP/ngap_gNB_handlers.c
openair3/NGAP/ngap_gNB_handlers.c
+18
-7
openair3/NGAP/ngap_gNB_nas_procedures.c
openair3/NGAP/ngap_gNB_nas_procedures.c
+27
-8
No files found.
openair2/COMMON/ngap_messages_types.h
View file @
807e5dd7
...
...
@@ -353,9 +353,18 @@ typedef struct pdusession_tobeswitched_s {
uint32_t
gtp_teid
;
}
pdusession_tobeswitched_t
;
typedef
struct
qos_flow_tobe_modified_s
{
uint8_t
qfi
;
// 0~63
}
qos_flow_tobe_modified_t
;
typedef
struct
pdusession_modify_s
{
/* Unique pdusession_id for the UE. */
uint8_t
pdusession_id
;
uint8_t
nb_of_qos_flow
;
// qos_flow_add_or_modify
qos_flow_tobe_modified_t
qos
[
QOSFLOW_MAX_VALUE
];
}
pdusession_modify_t
;
typedef
enum
ngap_Cause_e
{
...
...
@@ -821,7 +830,7 @@ typedef struct ngap_pdusession_modify_req_s {
/* Number of pdusession to be modify in the list */
uint8_t
nb_pdusessions_tomodify
;
/*
E RAB
modify request */
/*
pdu session
modify request */
pdusession_t
pdusession_modify_params
[
NGAP_MAX_PDUSESSION
];
}
ngap_pdusession_modify_req_t
;
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
807e5dd7
...
...
@@ -345,14 +345,18 @@ typedef struct gNB_RRC_UE_s {
uint8_t
setup_e_rabs
;
/* Number of e_rab to be setup in the list */
uint8_t
nb_of_e_rabs
;
/* Total number of pdu session already setup in the list */
uint8_t
setup_pdu_sessions
;
/* Number of pdu session to be setup in the list */
uint8_t
nb_of_pdusessions
;
/* Number of e_rab to be modified in the list */
uint8_t
nb_of_modify_e_rabs
;
uint8_t
nb_of_failed_e_rabs
;
e_rab_param_t
modify_e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
/* Total number of pdu session already setup in the list */
uint8_t
setup_pdu_sessions
;
/* Number of pdu session to be setup in the list */
uint8_t
nb_of_pdusessions
;
/* Number of e_rab to be modified in the list */
uint8_t
nb_of_modify_pdusessions
;
uint8_t
nb_of_failed_pdusessions
;
pdu_session_param_t
modify_pdusession
[
NR_NB_RB_MAX
];
/* list of e_rab to be setup by RRC layers */
/* list of pdu session to be setup by RRC layers */
e_rab_param_t
e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
807e5dd7
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
807e5dd7
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_NGAP.h
View file @
807e5dd7
...
...
@@ -38,6 +38,7 @@
#include "NR_RRCSetupComplete-IEs.h"
#include "NR_RegisteredAMF.h"
#include "NR_UL-DCCH-Message.h"
#include "NGAP_CauseRadioNetwork.h"
typedef
struct
rrc_ue_ngap_ids_s
{
/* Tree related data */
...
...
@@ -107,6 +108,27 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
instance_t
instance
);
int
rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ
(
MessageDef
*
msg_p
,
const
char
*
msg_name
,
instance_t
instance
);
int
rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
uint8_t
xid
);
void
rrc_gNB_modify_dedicatedRRCReconfiguration
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
);
void
rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ
(
const
module_id_t
gnb_mod_idP
,
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
807e5dd7
...
...
@@ -2210,7 +2210,7 @@ nr_rrc_ue_establish_srb2(
// nr_rrc_ue_process_measConfig(ctxt_pP, gNB_index, ie->measConfig);
}
if
(
ie
->
nonCriticalExtension
->
masterCellGroup
!=
NULL
)
{
if
(
(
ie
->
nonCriticalExtension
)
&&
(
ie
->
nonCriticalExtension
->
masterCellGroup
!=
NULL
)
)
{
nr_rrc_ue_process_masterCellGroup
(
ctxt_pP
,
gNB_index
,
...
...
@@ -2223,7 +2223,7 @@ nr_rrc_ue_establish_srb2(
}
/* Check if there is dedicated NAS information to forward to NAS */
if
(
ie
->
nonCriticalExtension
->
dedicatedNAS_MessageList
!=
NULL
)
{
if
(
(
ie
->
nonCriticalExtension
)
&&
(
ie
->
nonCriticalExtension
->
dedicatedNAS_MessageList
!=
NULL
)
)
{
int
list_count
;
uint32_t
pdu_length
;
uint8_t
*
pdu_buffer
;
...
...
openair3/NGAP/ngap_common.h
View file @
807e5dd7
...
...
@@ -87,6 +87,9 @@
#include "NGAP_PDUSessionResourceModifyItemModReq.h"
#include "NGAP_PDUSessionResourceModifyRequestTransfer.h"
#include "NGAP_QosFlowAddOrModifyRequestItem.h"
#include "NGAP_PDUSessionResourceModifyResponseTransfer.h"
#include "NGAP_QosFlowAddOrModifyResponseList.h"
#include "NGAP_QosFlowAddOrModifyResponseItem.h"
#include "NGAP_TAIListForPagingItem.h"
#include "NGAP_GNB-ID.h"
#include "NGAP_GlobalGNB-ID.h"
...
...
openair3/NGAP/ngap_gNB_handlers.c
View file @
807e5dd7
...
...
@@ -1614,13 +1614,6 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t assoc_id,
return
-
1
;
}
/* PDUSession Resource modify request = UE-related procedure -> stream != 0 */
if
(
stream
==
0
)
{
NGAP_ERROR
(
"[SCTP %d] Received UE-related procedure on stream (%d)
\n
"
,
assoc_id
,
stream
);
return
-
1
;
}
ue_desc_p
->
rx_stream
=
stream
;
if
(
ue_desc_p
->
amf_ue_ngap_id
!=
amf_ue_ngap_id
)
{
...
...
@@ -1702,14 +1695,20 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t assoc_id,
switch
(
pdusessionTransfer_ies
->
id
)
{
/* optional PDUSessionAggregateMaximumBitRate */
case
NGAP_ProtocolIE_ID_id_PDUSessionAggregateMaximumBitRate
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_PDUSessionAggregateMaximumBitRate
\n
"
);
break
;
/* optional UL-NGU-UP-TNLModifyList */
case
NGAP_ProtocolIE_ID_id_UL_NGU_UP_TNLModifyList
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_UL_NGU_UP_TNLModifyList
\n
"
);
break
;
/* optional NetworkInstance */
case
NGAP_ProtocolIE_ID_id_NetworkInstance
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_NetworkInstance
\n
"
);
break
;
/* optional QosFlowAddOrModifyRequestList */
...
...
@@ -1729,6 +1728,12 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t assoc_id,
/* Set the QOS informations */
NGAP_PDUSESSION_MODIFY_REQ
(
message_p
).
pdusession_modify_params
[
i
].
qos
[
qosIdx
].
qfi
=
(
uint8_t
)
qosFlowItem_p
->
qosFlowIdentifier
;
if
(
qosFlowItem_p
->
qosFlowLevelQosParameters
)
{
if
(
qosFlowItem_p
->
qosFlowLevelQosParameters
->
qosCharacteristics
.
present
==
NGAP_QosCharacteristics_PR_nonDynamic5QI
)
{
NGAP_PDUSESSION_MODIFY_REQ
(
message_p
).
pdusession_modify_params
[
i
].
qos
[
qosIdx
].
fiveQI
=
qosFlowItem_p
->
qosFlowLevelQosParameters
->
qosCharacteristics
.
choice
.
nonDynamic5QI
->
fiveQI
;
}
else
if
(
qosFlowItem_p
->
qosFlowLevelQosParameters
->
qosCharacteristics
.
present
==
NGAP_QosCharacteristics_PR_dynamic5QI
)
{
// TODO
}
NGAP_PDUSESSION_MODIFY_REQ
(
message_p
).
pdusession_modify_params
[
i
].
qos
[
qosIdx
].
allocation_retention_priority
.
priority_level
=
qosFlowItem_p
->
qosFlowLevelQosParameters
->
allocationAndRetentionPriority
.
priorityLevelARP
;
NGAP_PDUSESSION_MODIFY_REQ
(
message_p
).
pdusession_modify_params
[
i
].
qos
[
qosIdx
].
allocation_retention_priority
.
pre_emp_capability
=
...
...
@@ -1742,14 +1747,20 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t assoc_id,
/* optional QosFlowToReleaseList */
case
NGAP_ProtocolIE_ID_id_QosFlowToReleaseList
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_QosFlowToReleaseList
\n
"
);
break
;
/* optional AdditionalUL-NGU-UP-TNLInformation */
case
NGAP_ProtocolIE_ID_id_AdditionalUL_NGU_UP_TNLInformation
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_AdditionalUL_NGU_UP_TNLInformation
\n
"
);
break
;
/* optional CommonNetworkInstance */
case
NGAP_ProtocolIE_ID_id_CommonNetworkInstance
:
// TODO
NGAP_ERROR
(
"Cant' handle NGAP_ProtocolIE_ID_id_CommonNetworkInstance
\n
"
);
break
;
default:
...
...
openair3/NGAP/ngap_gNB_nas_procedures.c
View file @
807e5dd7
...
...
@@ -1179,7 +1179,7 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
ie
->
value
.
choice
.
RAN_UE_NGAP_ID
=
pdusession_modify_resp_p
->
gNB_ue_ngap_id
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/*
PDUSessionResourceModifyListModRes
optional */
if
(
pdusession_modify_resp_p
->
nb_of_pdusessions
>
0
)
{
ie
=
(
NGAP_PDUSessionResourceModifyResponseIEs_t
*
)
calloc
(
1
,
sizeof
(
NGAP_PDUSessionResourceModifyResponseIEs_t
));
ie
->
id
=
NGAP_ProtocolIE_ID_id_PDUSessionResourceModifyListModRes
;
...
...
@@ -1187,13 +1187,32 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
ie
->
value
.
present
=
NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceModifyListModRes
;
for
(
i
=
0
;
i
<
pdusession_modify_resp_p
->
nb_of_pdusessions
;
i
++
)
{
NGAP_PDUSessionResourceModifyItemModRes_t
*
item
;
item
=
(
NGAP_PDUSessionResourceModifyItemModRes_t
*
)
calloc
(
1
,
sizeof
(
NGAP_PDUSessionResourceModifyItemModRes_t
));
item
->
pDUSessionID
=
pdusession_modify_resp_p
->
pdusessions
[
i
].
pdusession_id
;
NGAP_DEBUG
(
"pdusession_modify_resp: modified pdusession ID %ld
\n
"
,
item
->
pDUSessionID
);
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
PDUSessionResourceModifyListModRes
.
list
,
item
);
NGAP_PDUSessionResourceModifyItemModRes_t
*
item
;
NGAP_PDUSessionResourceModifyResponseTransfer_t
*
transfer_p
=
NULL
;
item
=
(
NGAP_PDUSessionResourceModifyItemModRes_t
*
)
calloc
(
1
,
sizeof
(
NGAP_PDUSessionResourceModifyItemModRes_t
));
item
->
pDUSessionID
=
pdusession_modify_resp_p
->
pdusessions
[
i
].
pdusession_id
;
transfer_p
=
(
NGAP_PDUSessionResourceModifyResponseTransfer_t
*
)
calloc
(
1
,
sizeof
(
NGAP_PDUSessionResourceModifyResponseTransfer_t
));
transfer_p
->
qosFlowAddOrModifyResponseList
=
(
NGAP_QosFlowAddOrModifyResponseList_t
*
)
calloc
(
1
,
sizeof
(
NGAP_QosFlowAddOrModifyResponseList_t
));
uint8_t
qos_flow_index
;
for
(
qos_flow_index
=
0
;
qos_flow_index
<
pdusession_modify_resp_p
->
pdusessions
[
i
].
nb_of_qos_flow
;
qos_flow_index
++
)
{
NGAP_QosFlowAddOrModifyResponseItem_t
*
qosFlowAddOrModifyResponseItem_p
=
calloc
(
1
,
sizeof
(
NGAP_QosFlowAddOrModifyResponseItem_t
));
qosFlowAddOrModifyResponseItem_p
->
qosFlowIdentifier
=
pdusession_modify_resp_p
->
pdusessions
[
i
].
qos
[
qos_flow_index
].
qfi
;
ASN_SEQUENCE_ADD
(
&
transfer_p
->
qosFlowAddOrModifyResponseList
->
list
,
qosFlowAddOrModifyResponseItem_p
);
}
memset
(
&
res
,
0
,
sizeof
(
res
));
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_ALIGNED_CANONICAL_PER
,
&
asn_DEF_NGAP_PDUSessionResourceModifyResponseTransfer
,
transfer_p
);
item
->
pDUSessionResourceModifyResponseTransfer
.
buf
=
res
.
buffer
;
item
->
pDUSessionResourceModifyResponseTransfer
.
size
=
res
.
result
.
encoded
;
ASN_STRUCT_FREE_CONTENTS_ONLY
(
asn_DEF_NGAP_PDUSessionResourceModifyResponseTransfer
,
transfer_p
);
NGAP_DEBUG
(
"pdusession_modify_resp: modified pdusession ID %ld
\n
"
,
item
->
pDUSessionID
);
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
PDUSessionResourceModifyListModRes
.
list
,
item
);
}
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
...
...
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