From 70210324f262ffd1f2c874b7a5a49474b4ce07cf Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Fri, 26 Jan 2024 18:35:36 +0100 Subject: [PATCH] [SMF,MME] Gn: Set Delivery order QoS field to No Before this patch, it was set as 0, which is Reserved in Network to MS direction. (cherry picked from commit d95c82b21c0a195f9918da82ccb4bc7af3f45126) --- lib/gtp/v1/types.h | 6 ++++++ src/mme/mme-gn-build.c | 7 +++++++ src/smf/gn-build.c | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/lib/gtp/v1/types.h b/lib/gtp/v1/types.h index 843d6c19a..9748fdd6b 100644 --- a/lib/gtp/v1/types.h +++ b/lib/gtp/v1/types.h @@ -211,6 +211,12 @@ typedef struct ogs_gtp1_gsn_addr_s { #define OGS_GTP1_APN_RESTRICTION_PRIVATE_1 3 #define OGS_GTP1_APN_RESTRICTION_PRIVATE_2 4 +/* Table 10.5.156/3GPP TS 24.008 Quality of service */ +/* Delivery order, octet 6 (see also 3GPP TS 23.107) */ +#define OGS_GTP1_DELIVERY_ORDER_SUBSCRIBED 0 +#define OGS_GTP1_DELIVERY_ORDER_YES 1 +#define OGS_GTP1_DELIVERY_ORDER_NO 2 + /* TS 29.060 7.7.34 Quality of Service (QoS) Profile */ #define OGS_GTP1_QOS_PROFILE_MAX_LEN 255 /* TS 24.008 10.5.6.5 Quality of service */ diff --git a/src/mme/mme-gn-build.c b/src/mme/mme-gn-build.c index 76acd0fdb..afb90500f 100644 --- a/src/mme/mme-gn-build.c +++ b/src/mme/mme-gn-build.c @@ -69,6 +69,13 @@ static void build_qos_profile_from_session(ogs_gtp1_qos_profile_decoded_t *qos_p qos_pdec->qos_profile.arp = session->qos.arp.priority_level; + /* 3GPP TS 23.107 "Delivery order should be set to 'no' for PDP Type = + * 'IPv4' or 'IPv6'. The SGSN shall ensure that the appropriate value is set." + * 3GPP TS 23.401 D.3.5 2b NOTE4: The GTP and PDCP sequence numbers are not + * relevant as the network does not configure usage of "delivery order + * required" [...] as described in clause "compatibility issues" (4.8.1) */ + qos_pdec->qos_profile.data.delivery_order = OGS_GTP1_DELIVERY_ORDER_NO; + /* 3GPP TS 23.401 Annex E table Table E.3 */ /* Also take into account table 7 in 3GPP TS 23.107 9.1.2.2 */ switch (session->qos.index) { /* QCI */ diff --git a/src/smf/gn-build.c b/src/smf/gn-build.c index 02bd52482..21fe6cb3c 100644 --- a/src/smf/gn-build.c +++ b/src/smf/gn-build.c @@ -32,6 +32,13 @@ static void build_qos_profile_from_session(ogs_gtp1_qos_profile_decoded_t *qos_p qos_pdec->qos_profile.arp = sess->session.qos.arp.priority_level; + /* 3GPP TS 23.107 "Delivery order should be set to 'no' for PDP Type = + * 'IPv4' or 'IPv6'. The SGSN shall ensure that the appropriate value is set." + * 3GPP TS 23.401 D.3.5 2b NOTE4: The GTP and PDCP sequence numbers are not + * relevant as the network does not configure usage of "delivery order + * required" [...] as described in clause "compatibility issues" (4.8.1) */ + qos_pdec->qos_profile.data.delivery_order = OGS_GTP1_DELIVERY_ORDER_NO; + /* 3GPP TS 23.401 Annex E table Table E.3 */ /* Also take into account table 7 in 3GPP TS 23.107 9.1.2.2 */ switch (sess->session.qos.index) { /* QCI */