[v6] ethdev: add new ext hdr for gtp psc

Message ID 20210617091716.2354978-1-rasland@nvidia.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [v6] ethdev: add new ext hdr for gtp psc |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing fail Testing issues
ci/iol-mellanox-Functional fail Functional Testing issues
ci/iol-intel-Performance success Performance Testing PASS

Commit Message

Raslan Darawsheh June 17, 2021, 9:17 a.m. UTC
  Define new rte header for gtp PDU session container
based on RFC 38415-g30

Signed-off-by: Raslan Darawsheh <rasland@nvidia.com>
---
v6 : fixed typos
     fixed indentation of comments for fields
---
 lib/net/rte_gtp.h | 78 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)
  

Comments

Singh, Aman Deep June 22, 2021, 7:27 a.m. UTC | #1
Hi Raslan,

Can you please provide link to this RFC 38415-g30
I just had some doubt on byte-order conversion as per RFC 1700 
<https://tools.ietf.org/html/rfc1700>

Regards
Aman
  
Andrew Rybchenko July 1, 2021, 2:06 p.m. UTC | #2
Hi Raslan,

could you reply, please.

Andrew.

On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
> Hi Raslan,
> 
> Can you please provide link to this RFC 38415-g30
> I just had some doubt on byte-order conversion as per RFC 1700
> <https://tools.ietf.org/html/rfc1700>
> 
> Regards
> Aman
  
Raslan Darawsheh July 6, 2021, 2:24 p.m. UTC | #3
Hi Guys,

Sorry for missing this mail, for some reason it was missed in my inbox, 
This is the link to this rfc:
https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip


Kindest regards,
Raslan Darawsheh

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Andrew Rybchenko
> Sent: Thursday, July 1, 2021 5:06 PM
> To: Singh, Aman Deep <aman.deep.singh@intel.com>; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
> 
> Hi Raslan,
> 
> could you reply, please.
> 
> Andrew.
> 
> On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
> > Hi Raslan,
> >
> > Can you please provide link to this RFC 38415-g30 I just had some
> > doubt on byte-order conversion as per RFC 1700
> > <https://tools.ietf.org/html/rfc1700>
> >
> > Regards
> > Aman
  
Andrew Rybchenko July 8, 2021, 9:23 a.m. UTC | #4
Hi Raslan,

On 7/6/21 5:24 PM, Raslan Darawsheh wrote:
> Hi Guys,
>
> Sorry for missing this mail, for some reason it was missed in my inbox, 
> This is the link to this rfc:
> https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip

Thanks for the link. The patch LGTM, but I have only one question left.
Where is it used? Are you going to upstream corresponding code in
the release cycle?

Andrew.

> Kindest regards,
> Raslan Darawsheh
>
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Andrew Rybchenko
>> Sent: Thursday, July 1, 2021 5:06 PM
>> To: Singh, Aman Deep <aman.deep.singh@intel.com>; dev@dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
>>
>> Hi Raslan,
>>
>> could you reply, please.
>>
>> Andrew.
>>
>> On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
>>> Hi Raslan,
>>>
>>> Can you please provide link to this RFC 38415-g30 I just had some
>>> doubt on byte-order conversion as per RFC 1700
>>> <https://tools.ietf.org/html/rfc1700>
>>>
>>> Regards
>>> Aman
  
Andrew Rybchenko July 8, 2021, 9:26 a.m. UTC | #5
On 6/17/21 12:17 PM, Raslan Darawsheh wrote:
> Define new rte header for gtp PDU session container
> based on RFC 38415-g30
> 
> Signed-off-by: Raslan Darawsheh <rasland@nvidia.com>

As I understand prefix should be "net: ", not "ethdev: ".

Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>

> ---
> v6 : fixed typos
>      fixed indentation of comments for fields
> ---
>  lib/net/rte_gtp.h | 78 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 78 insertions(+)

[snip]
  
Raslan Darawsheh July 8, 2021, 9:27 a.m. UTC | #6
Thank you for the review,

Basically it's not used yet since it will break the abi
The main usage was in rte_flow item of gtp_psc
To replace the current structure with the header definition. And since this will break the abi I'm adding the header definition now but will be used later in rte_flow.

Kindest regards,
Raslan Darawsheh
  
Andrew Rybchenko July 8, 2021, 9:39 a.m. UTC | #7
On 7/8/21 12:27 PM, Raslan Darawsheh wrote:
> Thank you for the review,
> 
> Basically it's not used yet since it will break the abi
> The main usage was in rte_flow item of gtp_psc
> To replace the current structure with the header definition. And since
> this will break the abi I'm adding the header definition now but will be
> used later in rte_flow.

@Thomas If so, should we accept it in the current release cycle
or should it simply wait for the code which uses it?

> Kindest regards,
> Raslan Darawsheh
> 
> ------------------------------------------------------------------------
> *From:* Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> *Sent:* Thursday, July 8, 2021, 12:23 PM
> *To:* Raslan Darawsheh; Singh, Aman Deep; dev@dpdk.org
> *Subject:* Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
> 
> Hi Raslan,
> 
> On 7/6/21 5:24 PM, Raslan Darawsheh wrote:
>> Hi Guys,
>>
>> Sorry for missing this mail, for some reason it was missed in my inbox, 
>> This is the link to this rfc:
>> https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip
> <https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip>
> 
> Thanks for the link. The patch LGTM, but I have only one question left.
> Where is it used? Are you going to upstream corresponding code in
> the release cycle?
> 
> Andrew.
> 
>> Kindest regards,
>> Raslan Darawsheh
>>
>>> -----Original Message-----
>>> From: dev <dev-bounces@dpdk.org> On Behalf Of Andrew Rybchenko
>>> Sent: Thursday, July 1, 2021 5:06 PM
>>> To: Singh, Aman Deep <aman.deep.singh@intel.com>; dev@dpdk.org
>>> Subject: Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
>>>
>>> Hi Raslan,
>>>
>>> could you reply, please.
>>>
>>> Andrew.
>>>
>>> On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
>>>> Hi Raslan,
>>>>
>>>> Can you please provide link to this RFC 38415-g30 I just had some
>>>> doubt on byte-order conversion as per RFC 1700
>>>> <https://tools.ietf.org/html/rfc1700 <https://tools.ietf.org/html/rfc1700>>
>>>>
>>>> Regards
>>>> Aman
> 
>
  
Singh, Aman Deep July 8, 2021, 9:52 a.m. UTC | #8
Thanks Raslan for the rfc link.The structure order for RTE_BIG_ENDIAN seems ok. I doubt for 
RTE_LITTLE_ENDIAN case, if there is a need to reverse the order of 
fields, as we are using uint8_t only. If you have already tested on x86 
then it should be fine ? Regards Aman

On 7/6/2021 7:54 PM, Raslan Darawsheh wrote:
> Hi Guys,
>
> Sorry for missing this mail, for some reason it was missed in my inbox,
> This is the link to this rfc:
> https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip
>
>
> Kindest regards,
> Raslan Darawsheh
>
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Andrew Rybchenko
>> Sent: Thursday, July 1, 2021 5:06 PM
>> To: Singh, Aman Deep <aman.deep.singh@intel.com>; dev@dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
>>
>> Hi Raslan,
>>
>> could you reply, please.
>>
>> Andrew.
>>
>> On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
>>> Hi Raslan,
>>>
>>> Can you please provide link to this RFC 38415-g30 I just had some
>>> doubt on byte-order conversion as per RFC 1700
>>> <https://tools.ietf.org/html/rfc1700>
>>>
>>> Regards
>>> Aman
  
Thomas Monjalon July 8, 2021, 10:29 a.m. UTC | #9
08/07/2021 11:39, Andrew Rybchenko:
> On 7/8/21 12:27 PM, Raslan Darawsheh wrote:
> > Thank you for the review,
> > 
> > Basically it's not used yet since it will break the abi
> > The main usage was in rte_flow item of gtp_psc
> > To replace the current structure with the header definition. And since
> > this will break the abi I'm adding the header definition now but will be
> > used later in rte_flow.
> 
> @Thomas If so, should we accept it in the current release cycle
> or should it simply wait for the code which uses it?

If no need, we can wait next release.


> > ------------------------------------------------------------------------
> > *From:* Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> > *Sent:* Thursday, July 8, 2021, 12:23 PM
> > *To:* Raslan Darawsheh; Singh, Aman Deep; dev@dpdk.org
> > *Subject:* Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
> > 
> > Hi Raslan,
> > 
> > On 7/6/21 5:24 PM, Raslan Darawsheh wrote:
> >> Hi Guys,
> >>
> >> Sorry for missing this mail, for some reason it was missed in my inbox, 
> >> This is the link to this rfc:
> >> https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip
> > <https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip>
> > 
> > Thanks for the link. The patch LGTM, but I have only one question left.
> > Where is it used? Are you going to upstream corresponding code in
> > the release cycle?
> > 
> > Andrew.
> > 
> >> Kindest regards,
> >> Raslan Darawsheh
> >>
> >>> -----Original Message-----
> >>> From: dev <dev-bounces@dpdk.org> On Behalf Of Andrew Rybchenko
> >>> Sent: Thursday, July 1, 2021 5:06 PM
> >>> To: Singh, Aman Deep <aman.deep.singh@intel.com>; dev@dpdk.org
> >>> Subject: Re: [dpdk-dev] [PATCH v6] ethdev: add new ext hdr for gtp psc
> >>>
> >>> Hi Raslan,
> >>>
> >>> could you reply, please.
> >>>
> >>> Andrew.
> >>>
> >>> On 6/22/21 10:27 AM, Singh, Aman Deep wrote:
> >>>> Hi Raslan,
> >>>>
> >>>> Can you please provide link to this RFC 38415-g30 I just had some
> >>>> doubt on byte-order conversion as per RFC 1700
> >>>> <https://tools.ietf.org/html/rfc1700 <https://tools.ietf.org/html/rfc1700>>
> >>>>
> >>>> Regards
> >>>> Aman
  

Patch

diff --git a/lib/net/rte_gtp.h b/lib/net/rte_gtp.h
index 6a6f9b238d..9f6deb9c7e 100644
--- a/lib/net/rte_gtp.h
+++ b/lib/net/rte_gtp.h
@@ -61,6 +61,84 @@  struct rte_gtp_hdr_ext_word {
 	uint8_t next_ext;     /**< Next Extension Header Type. */
 }  __rte_packed;
 
+/**
+ * Optional extension for GTP with next_ext set to 0x85
+ * defined based on RFC 38415-g30.
+ */
+__extension__
+struct rte_gtp_psc_generic_hdr {
+	uint8_t ext_hdr_len;	/**< PDU ext hdr len in multiples of 4 bytes */
+#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
+	uint8_t type:4;		/**< PDU type */
+	uint8_t qmp:1;		/**< Qos Monitoring Packet */
+	uint8_t pad:3;		/**< type specific pad bits */
+	uint8_t spare:2;	/**< type specific spare bits */
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+#else
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+	uint8_t spare:2;	/**< type specific spare bits */
+	uint8_t pad:3;		/**< type specific pad bits */
+	uint8_t qmp:1;		/**< Qos Monitoring Packet */
+	uint8_t type:4;		/**< PDU type */
+#endif
+	uint8_t data[0];	/**< variable length data fields */
+} __rte_packed;
+
+/**
+ * Optional extension for GTP with next_ext set to 0x85
+ * type0 defined based on RFC 38415-g30
+ */
+__extension__
+struct rte_gtp_psc_type0_hdr {
+	uint8_t ext_hdr_len;	/**< PDU ext hdr len in multiples of 4 bytes */
+#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
+	uint8_t type:4;		/**< PDU type */
+	uint8_t qmp:1;		/**< Qos Monitoring Packet */
+	uint8_t snp:1;		/**< Sequence number presence */
+	uint8_t spare_dl1:2;	/**< spare down link bits */
+	uint8_t ppp:1;		/**< Paging policy presence */
+	uint8_t rqi:1;		/**< Reflective Qos Indicator */
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+#else
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+	uint8_t rqi:1;		/**< Reflective Qos Indicator */
+	uint8_t ppp:1;		/**< Paging policy presence */
+	uint8_t spare_dl1:2;	/**< spare down link bits */
+	uint8_t snp:1;		/**< Sequence number presence */
+	uint8_t type:4;		/**< PDU type */
+#endif
+	uint8_t data[0];	/**< variable length data fields */
+} __rte_packed;
+
+/**
+ * Optional extension for GTP with next_ext set to 0x85
+ * type1 defined based on RFC 38415-g30
+ */
+__extension__
+struct rte_gtp_psc_type1_hdr {
+	uint8_t ext_hdr_len;	/**< PDU ext hdr len in multiples of 4 bytes */
+#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
+	uint8_t type:4;		/**< PDU type */
+	uint8_t qmp:1;		/**< Qos Monitoring Packet */
+	uint8_t dl_delay_ind:1;	/**< dl delay result presence */
+	uint8_t ul_delay_ind:1;	/**< ul delay result presence */
+	uint8_t snp:1;		/**< Sequence number presence ul */
+	uint8_t n_delay_ind:1;	/**< N3/N9 delay result presence */
+	uint8_t spare_ul2:1;	/**< spare up link bits */
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+#else
+	uint8_t qfi:6;		/**< Qos Flow Identifier */
+	uint8_t spare_ul2:1;	/**< spare up link bits */
+	uint8_t n_delay_ind:1;	/**< N3/N9 delay result presence */
+	uint8_t snp:1;		/**< Sequence number presence ul */
+	uint8_t ul_delay_ind:1;	/**< ul delay result presence */
+	uint8_t dl_delay_ind:1;	/**< dl delay result presence */
+	uint8_t qmp:1;		/**< Qos Monitoring Packet */
+	uint8_t type:4;		/**< PDU type */
+#endif
+	uint8_t data[0];	/**< variable length data fields */
+} __rte_packed;
+
 /** GTP header length */
 #define RTE_ETHER_GTP_HLEN \
 	(sizeof(struct rte_udp_hdr) + sizeof(struct rte_gtp_hdr))