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
zzha zzha
OpenXG-RAN
Commits
124ccbf1
Commit
124ccbf1
authored
Sep 14, 2021
by
Xue Song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify pdusession modify procedure
parent
64a7359a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
63 additions
and
17 deletions
+63
-17
openair2/COMMON/ngap_messages_types.h
openair2/COMMON/ngap_messages_types.h
+10
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+6
-2
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+17
-6
openair3/NGAP/ngap_common.h
openair3/NGAP/ngap_common.h
+3
-0
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 @
124ccbf1
...
...
@@ -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
{
...
...
@@ -770,7 +779,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/rrc_gNB.c
View file @
124ccbf1
...
...
@@ -1335,6 +1335,8 @@ rrc_gNB_modify_dedicatedRRCReconfiguration(
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
#endif
return
0
;
}
//-----------------------------------------------------------------------------
...
...
@@ -2516,12 +2518,14 @@ rrc_gNB_decode_dcch(
//NGAP_PDUSESSION_RELEASE_RESPONSE
rrc_gNB_send_NGAP_PDUSESSION_RELEASE_RESPONSE
(
ctxt_pP
,
ue_context_p
,
xid
);
}
else
if
(
ue_context_p
->
ue_context
.
established_pdu_sessions_flag
!=
1
)
{
if
(
ue_context_p
->
ue_context
.
setup_pdu_
sessions
>
0
)
{
if
(
ue_context_p
->
ue_context
.
nb_of_pdu
sessions
>
0
)
{
rrc_gNB_send_NGAP_PDUSESSION_SETUP_RESP
(
ctxt_pP
,
ue_context_p
,
ul_dcch_msg
->
message
.
choice
.
c1
->
choice
.
rrcReconfigurationComplete
->
rrc_TransactionIdentifier
);
ue_context_p
->
ue_context
.
nb_of_pdusessions
=
0
;
}
}
else
if
(
ue_context_p
->
ue_context
.
nb_of_modify_pdusessions
>
0
)
{
}
if
(
ue_context_p
->
ue_context
.
nb_of_modify_pdusessions
>
0
)
{
rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP
(
ctxt_pP
,
ue_context_p
,
ul_dcch_msg
->
message
.
choice
.
c1
->
choice
.
rrcReconfigurationComplete
->
rrc_TransactionIdentifier
);
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
124ccbf1
...
...
@@ -1241,12 +1241,14 @@ rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(
}
if
(
ue_context_p
->
ue_context
.
nb_of_failed_pdusessions
<
ue_context_p
->
ue_context
.
nb_of_modify_pdusessions
)
{
LOG_D
(
NR_RRC
,
"generate RRCReconfiguration
\n
"
);
if
(
0
==
rrc_gNB_modify_dedicatedRRCReconfiguration
(
&
ctxt
,
ue_context_p
))
{
return
(
0
);
}
}
{
// modify failed
LOG_I
(
NR_RRC
,
"pdu session modify failed, fill NGAP_PDUSESSION_MODIFY_RESP with the pdu session information that failed to modify
\n
"
);
uint8_t
nb_of_pdu_sessions_failed
=
0
;
MessageDef
*
msg_fail_p
=
NULL
;
msg_fail_p
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
NGAP_PDUSESSION_MODIFY_RESP
);
...
...
@@ -1299,6 +1301,8 @@ rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(
return
(
-
1
);
}
LOG_I
(
NR_RRC
,
"send message NGAP_PDUSESSION_MODIFY_RESP
\n
"
);
NGAP_PDUSESSION_MODIFY_RESP
(
msg_p
).
gNB_ue_ngap_id
=
ue_context_pP
->
ue_context
.
gNB_ue_ngap_id
;
for
(
i
=
0
;
i
<
ue_context_pP
->
ue_context
.
nb_of_modify_pdusessions
;
i
++
)
{
...
...
@@ -1306,12 +1310,13 @@ rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(
if
(
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
status
==
PDU_SESSION_STATUS_DONE
)
{
for
(
j
=
0
;
j
<
ue_context_pP
->
ue_context
.
setup_pdu_sessions
;
j
++
)
{
if
(
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
pdusession_id
==
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
pdusession_id
)
{
ue_context_pP
->
ue_context
.
pduSession
[
j
].
param
.
pdusession_id
)
{
LOG_I
(
NR_RRC
,
"update pdu session %d
\n
"
,
ue_context_pP
->
ue_context
.
pduSession
[
j
].
param
.
pdusession_id
);
// Update ue_context_pP->ue_context.pduSession
ue_context_pP
->
ue_context
.
pduSession
[
i
].
status
=
PDU_SESSION_STATUS_ESTABLISHED
;
ue_context_pP
->
ue_context
.
pduSession
[
i
].
cause
=
NGAP_CAUSE_NOTHING
;
for
(
qos_flow_index
=
0
;
qos_flow_index
<
ue_context_pP
->
ue_context
.
pduS
ession
[
i
].
param
.
nb_qos
;
qos_flow_index
++
)
{
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
qos
[
qos_flow_index
]
=
ue_context_pP
->
ue_context
.
pduSession
[
j
].
status
=
PDU_SESSION_STATUS_ESTABLISHED
;
ue_context_pP
->
ue_context
.
pduSession
[
j
].
cause
=
NGAP_CAUSE_NOTHING
;
for
(
qos_flow_index
=
0
;
qos_flow_index
<
ue_context_pP
->
ue_context
.
modify_pdus
ession
[
i
].
param
.
nb_qos
;
qos_flow_index
++
)
{
ue_context_pP
->
ue_context
.
pduSession
[
j
].
param
.
qos
[
qos_flow_index
]
=
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
qos
[
qos_flow_index
];
}
break
;
...
...
@@ -1321,7 +1326,13 @@ rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(
if
(
j
<
ue_context_pP
->
ue_context
.
setup_pdu_sessions
)
{
NGAP_PDUSESSION_MODIFY_RESP
(
msg_p
).
pdusessions
[
pdu_sessions_done
].
pdusession_id
=
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
pdusession_id
;
LOG_D
(
NR_RRC
,
"gnb_gtp_addr (msg index %d, pdu session index %d, status %d, xid %d): nb_of_modify_pdusessions %d, pdusession_id %d
\n
"
,
for
(
qos_flow_index
=
0
;
qos_flow_index
<
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
nb_qos
;
qos_flow_index
++
)
{
NGAP_PDUSESSION_MODIFY_RESP
(
msg_p
).
pdusessions
[
pdu_sessions_done
].
qos
[
qos_flow_index
].
qfi
=
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
qos
[
qos_flow_index
].
qfi
;
}
NGAP_PDUSESSION_MODIFY_RESP
(
msg_p
).
pdusessions
[
pdu_sessions_done
].
nb_of_qos_flow
=
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
param
.
nb_qos
;
LOG_I
(
NR_RRC
,
"Modify Resp (msg index %d, pdu session index %d, status %d, xid %d): nb_of_modify_pdusessions %d, pdusession_id %d
\n
"
,
pdu_sessions_done
,
i
,
ue_context_pP
->
ue_context
.
modify_pdusession
[
i
].
status
,
xid
,
ue_context_pP
->
ue_context
.
nb_of_modify_pdusessions
,
NGAP_PDUSESSION_MODIFY_RESP
(
msg_p
).
pdusessions
[
pdu_sessions_done
].
pdusession_id
);
...
...
openair3/NGAP/ngap_common.h
View file @
124ccbf1
...
...
@@ -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_nas_procedures.c
View file @
124ccbf1
...
...
@@ -1257,7 +1257,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
;
...
...
@@ -1265,13 +1265,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