From: Olivier Matz <olivier.matz@6wind.com>
To: Raslan Darawsheh <rasland@nvidia.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
"ferruh.yigit@intel.com" <ferruh.yigit@intel.com>,
Ori Kam <orika@nvidia.com>,
"andrew.rybchenko@oktetlabs.ru" <andrew.rybchenko@oktetlabs.ru>,
"ivan.malov@oktetlabs.ru" <ivan.malov@oktetlabs.ru>,
"ying.a.wang@intel.com" <ying.a.wang@intel.com>,
Slava Ovsiienko <viacheslavo@nvidia.com>,
Shiri Kuzin <shirik@nvidia.com>
Subject: Re: [dpdk-dev] [PATCH v4 1/2] ethdev: add new ext hdr for gtp psc
Date: Thu, 8 Apr 2021 16:10:36 +0200 [thread overview]
Message-ID: <20210408141036.GY1650@platinum> (raw)
In-Reply-To: <DM6PR12MB2748875A91FFD2F5CE464ECCCF749@DM6PR12MB2748.namprd12.prod.outlook.com>
On Thu, Apr 08, 2021 at 12:37:27PM +0000, Raslan Darawsheh wrote:
> Hi Olivier,
>
> > -----Original Message-----
> > From: Olivier Matz <olivier.matz@6wind.com>
> > Sent: Thursday, April 8, 2021 3:30 PM
> > To: Raslan Darawsheh <rasland@nvidia.com>
> > Cc: dev@dpdk.org; ferruh.yigit@intel.com; Ori Kam <orika@nvidia.com>;
> > andrew.rybchenko@oktetlabs.ru; ivan.malov@oktetlabs.ru;
> > ying.a.wang@intel.com; Slava Ovsiienko <viacheslavo@nvidia.com>; Shiri
> > Kuzin <shirik@nvidia.com>
> > Subject: Re: [PATCH v4 1/2] ethdev: add new ext hdr for gtp psc
> >
> > Hi Raslan,
> >
> > On Sun, Apr 04, 2021 at 10:45:51AM +0300, Raslan Darawsheh wrote:
> > > Define new rte header for gtp PDU session container
> > > based on RFC 38415-g30
> >
> > Do you have a link to this RFC?
> Yes sure,
> https://www.3gpp.org/ftp/Specs/archive/38_series/38.415/38415-g30.zip
>
> >
> > > Signed-off-by: Raslan Darawsheh <rasland@nvidia.com>
> > > ---
> > > lib/librte_net/rte_gtp.h | 34 ++++++++++++++++++++++++++++++++++
> > > 1 file changed, 34 insertions(+)
> > >
> > > diff --git a/lib/librte_net/rte_gtp.h b/lib/librte_net/rte_gtp.h
> > > index 6a6f9b238d..088b0b5a53 100644
> > > --- a/lib/librte_net/rte_gtp.h
> > > +++ b/lib/librte_net/rte_gtp.h
> > > @@ -61,6 +61,40 @@ 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_hdr {
> > > + uint8_t ext_hdr_len; /**< PDU ext hdr len in multiples of 4 bytes */
> > > + uint8_t type:4; /**< PDU type */
> > > + uint8_t qmp:1; /**< Qos Monitoring Packet */
> > > + union {
> > > + struct {
> > > + uint8_t snp:1; /**< Sequence number presence */
> > > + uint8_t spare_dl1:2; /**< spare down link bits */
> > > + };
> > > + struct {
> > > + uint8_t dl_delay_ind:1; /**< dl delay result presence
> > */
> > > + uint8_t ul_delay_ind:1; /**< ul delay result presence
> > */
> > > + uint8_t snp_ul1:1; /**< Sequence number presence
> > ul */
> > > + };
> > > + };
> > > + union {
> > > + struct {
> > > + uint8_t ppp:1; /**< Paging policy presence */
> > > + uint8_t rqi:1; /**< Reflective Qos Indicator */
> > > + };
> > > + struct {
> > > + 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 */
> > > + uint8_t data[0]; /**< data feilds */
> > > +} __rte_packed;
> >
> > With this header, sizeof(rte_gtp_psc_hdr) = 5, is it really expected?
> The data[0] is variable length data, I guess I should send another version to mention that in the comment maybe.
> The header size according to the spec should be 4 octets aligned in general.
What I wanted to highlight is that using union of structs containing
bitfields does not work as you expect: each union is at least 1 byte.
This results in a structure that does not match the expected header.
> >
> > It would help to see the specification to have a better idea of how to
> Sure, I've just posted the link above, please let me know of any suggestion that you have, and I'll be glad to do accordingly.
>
> > split, but a possible solution is to do something like this:
> >
> > struct rte_gtp_psc_generic_hdr {
> > uint8_t ext_hdr_len;
> > uint8_t type:4
> > uint8_t qmp:1;
> > uint8_t pad:3;
> > };
> >
> > struct rte_gtp_psc_<name1>_hdr {
> > uint8_t ext_hdr_len;
> > uint8_t type:4
> > uint8_t qmp:1;
> > uint8_t uint8_t snp:1;
> > uint8_t spare_dl1:2;
> > ...
> > };
> >
> > ...
> >
> > struct rte_gtp_psc_hdr {
> > union {
> > struct rte_gtp_psc_generic_hdr generic;
> > struct rte_gtp_psc_<name1>_hdr <name1>;
> > struct rte_gtp_psc_<name2>_hdr <name2>;
> > };
> > };
From what I see in the documation, I think this approach should
work. From afar, I suggest:
struct rte_gtp_psc_generic_hdr {
#if big endian
uint8_t type:4
uint8_t qmp:1;
uint8_t pad:3;
#else
uint8_t pad:3;
uint8_t qmp:1;
uint8_t type:4
#endif
};
struct rte_gtp_psc_type0_hdr {
#if big endian
uint8_t type:4
uint8_t qmp:1;
uint8_t snp:1;
uint8_t spare:2;
uint8_t ppp:1;
...
#else
uint8_t pad:3;
uint8_t qmp:1;
uint8_t type:4
uint8_t spare:2;
uint8_t snp:1;
...
#endif
uint8_t data[0]; /* for variable fields */
};
struct rte_gtp_psc_type1_hdr {
... same for fixed fields of type1
uint8_t data[0]; /* for variable fields */
};
I don't see in the spec where is the reference to ext_hdr_len.
Regards,
Olivier
next prev parent reply other threads:[~2021-04-08 14:10 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-23 12:11 [dpdk-dev] [PATCH] ethdev: update qfi definition Raslan Darawsheh
2021-03-26 13:12 ` Ferruh Yigit
2021-03-29 8:53 ` Ori Kam
2021-03-29 9:06 ` Raslan Darawsheh
2021-03-29 11:14 ` Ferruh Yigit
2021-03-30 7:50 ` [dpdk-dev] [PATCH v2 0/2] fix gtp psc qfi support Raslan Darawsheh
2021-03-30 7:50 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add new ext hdr for gtp psc Raslan Darawsheh
2021-03-30 8:00 ` [dpdk-dev] [PATCH v3 0/2] fix gtp psc qfi support Raslan Darawsheh
2021-03-30 8:00 ` [dpdk-dev] [PATCH v3 1/2] ethdev: add new ext hdr for gtp psc Raslan Darawsheh
2021-04-01 16:51 ` Ferruh Yigit
2021-04-04 7:17 ` Raslan Darawsheh
2021-03-30 8:00 ` [dpdk-dev] [PATCH v3 2/2] ethdev: update qfi definition Raslan Darawsheh
2021-04-01 16:54 ` Ferruh Yigit
2021-04-04 7:18 ` Raslan Darawsheh
2021-04-04 7:45 ` [dpdk-dev] [PATCH v4 0/2] fix gtp psc qfi support Raslan Darawsheh
2021-04-04 7:45 ` [dpdk-dev] [PATCH v4 1/2] ethdev: add new ext hdr for gtp psc Raslan Darawsheh
2021-04-08 12:29 ` Olivier Matz
2021-04-08 12:37 ` Raslan Darawsheh
2021-04-08 14:10 ` Ferruh Yigit
2021-04-08 14:10 ` Olivier Matz [this message]
2021-04-13 7:45 ` Raslan Darawsheh
2021-04-29 16:29 ` Tyler Retzlaff
2021-06-08 12:13 ` Andrew Rybchenko
2021-04-04 7:45 ` [dpdk-dev] [PATCH v4 2/2] ethdev: update qfi definition Raslan Darawsheh
2021-04-06 16:09 ` Ferruh Yigit
2021-04-13 8:14 ` Raslan Darawsheh
2021-04-13 9:24 ` Ori Kam
2021-04-14 12:16 ` Ferruh Yigit
2021-04-15 6:33 ` Raslan Darawsheh
2021-04-29 8:10 ` [dpdk-dev] [PATCH v5 0/1] add new hdr for gtp qfi Raslan Darawsheh
2021-04-29 8:10 ` [dpdk-dev] [PATCH v5 1/1] ethdev: add new ext hdr for gtp psc Raslan Darawsheh
2021-05-11 11:46 ` Ferruh Yigit
2021-06-08 12:17 ` Andrew Rybchenko
2021-06-08 12:18 ` Andrew Rybchenko
2021-06-08 14:07 ` Raslan Darawsheh
2021-03-30 7:50 ` [dpdk-dev] [PATCH v2 2/2] ethdev: update qfi definition Raslan Darawsheh
2021-04-14 12:40 ` [dpdk-dev] [PATCH] " Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210408141036.GY1650@platinum \
--to=olivier.matz@6wind.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=ivan.malov@oktetlabs.ru \
--cc=orika@nvidia.com \
--cc=rasland@nvidia.com \
--cc=shirik@nvidia.com \
--cc=viacheslavo@nvidia.com \
--cc=ying.a.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.