diff --git a/lib/gtp/v1/types.h b/lib/gtp/v1/types.h index 157f81102a..6dcb378503 100644 --- a/lib/gtp/v1/types.h +++ b/lib/gtp/v1/types.h @@ -218,6 +218,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 3882e0365e..b674174b4c 100644 --- a/src/mme/mme-gn-build.c +++ b/src/mme/mme-gn-build.c @@ -62,6 +62,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 d05b4e1776..6f1e14575c 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 */