Skip to content

Commit 31cde1d

Browse files
committed
Modified code to update qos from create session response only valid_qos flag is set
Signed-off-by: rashmi <[email protected]>
1 parent 5b098ed commit 31cde1d

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

lte/gateway/c/oai/lib/s8_proxy/s8_client_api.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ extern task_zmq_ctx_t grpc_service_task_zmq_ctx;
2828

2929
static void convert_proto_msg_to_itti_csr(
3030
magma::feg::CreateSessionResponsePgw& response,
31-
s8_create_session_response_t* s5_response);
31+
s8_create_session_response_t* s5_response, bearer_qos_t dflt_bearer_qos);
3232

3333
static void get_qos_from_proto_msg(
3434
const magma::feg::QosInformation& proto_qos, bearer_qos_t* bearer_qos) {
@@ -154,7 +154,8 @@ static void recv_s8_delete_session_response(
154154
}
155155

156156
static void recv_s8_create_session_response(
157-
imsi64_t imsi64, teid_t context_teid, const grpc::Status& status,
157+
imsi64_t imsi64, teid_t context_teid, bearer_qos_t dflt_bearer_qos,
158+
const grpc::Status& status,
158159
magma::feg::CreateSessionResponsePgw& response) {
159160
OAILOG_FUNC_IN(LOG_SGW_S8);
160161
s8_create_session_response_t* s5_response = NULL;
@@ -172,7 +173,7 @@ static void recv_s8_create_session_response(
172173
message_p->ittiMsgHeader.imsi = imsi64;
173174
s5_response->context_teid = context_teid;
174175
if (status.ok()) {
175-
convert_proto_msg_to_itti_csr(response, s5_response);
176+
convert_proto_msg_to_itti_csr(response, s5_response, dflt_bearer_qos);
176177
} else {
177178
OAILOG_ERROR(
178179
LOG_SGW_S8,
@@ -405,6 +406,7 @@ void send_s8_create_session_request(
405406
imsi64_t imsi64) {
406407
OAILOG_FUNC_IN(LOG_SGW_S8);
407408
magma::feg::CreateSessionRequestPgw csr_req;
409+
bearer_qos_t dflt_bearer_qos = {0};
408410

409411
// teid shall remain same for both sgw's s11 interface and s8 interface as
410412
// teid is allocated per PDN
@@ -414,18 +416,21 @@ void send_s8_create_session_request(
414416
sgw_s11_teid);
415417

416418
fill_s8_create_session_req(msg, &csr_req, sgw_s11_teid);
419+
dflt_bearer_qos =
420+
msg->bearer_contexts_to_be_created.bearer_contexts[0].bearer_level_qos;
417421

418422
magma::S8Client::s8_create_session_request(
419423
csr_req,
420-
[imsi64, sgw_s11_teid](
424+
[imsi64, sgw_s11_teid, dflt_bearer_qos](
421425
grpc::Status status, magma::feg::CreateSessionResponsePgw response) {
422-
recv_s8_create_session_response(imsi64, sgw_s11_teid, status, response);
426+
recv_s8_create_session_response(
427+
imsi64, sgw_s11_teid, dflt_bearer_qos, status, response);
423428
});
424429
}
425430

426431
static void convert_proto_msg_to_itti_csr(
427432
magma::feg::CreateSessionResponsePgw& response,
428-
s8_create_session_response_t* s5_response) {
433+
s8_create_session_response_t* s5_response, bearer_qos_t dflt_bearer_qos) {
429434
OAILOG_FUNC_IN(LOG_SGW_S8);
430435
s5_response->apn_restriction_value = response.apn_restriction();
431436
get_fteid_from_proto_msg(
@@ -437,7 +442,12 @@ static void convert_proto_msg_to_itti_csr(
437442
s8_bc->eps_bearer_id = response.bearer_context().id();
438443
s5_response->eps_bearer_id = s8_bc->eps_bearer_id;
439444
s8_bc->charging_id = response.bearer_context().charging_id();
440-
get_qos_from_proto_msg(response.bearer_context().qos(), &s8_bc->qos);
445+
if (response.bearer_context().valid_qos()) {
446+
get_qos_from_proto_msg(response.bearer_context().qos(), &s8_bc->qos);
447+
} else {
448+
// If qos is not received from PGW, set the qos that was sent in CS Req
449+
s8_bc->qos = dflt_bearer_qos;
450+
}
441451
get_fteid_from_proto_msg(
442452
response.bearer_context().user_plane_fteid(), &s8_bc->pgw_s8_up);
443453
if (response.has_gtp_error()) {

0 commit comments

Comments
 (0)