From: "Morten Brørup" <mb@smartsharesystems.com>
To: "Gregory Etelson" <getelson@nvidia.com>, <dev@dpdk.org>
Cc: <andrew.rybchenko@oktetlabs.ru>, <bruce.richardson@intel.com>,
<cristian.dumitrescu@intel.com>, <ferruh.yigit@amd.com>,
<jasvinder.singh@intel.com>, <konstantin.v.ananyev@yandex.ru>,
<mkashani@nvidia.com>, <orika@nvidia.com>, <ruifeng.wang@arm.com>,
<thomas@monjalon.net>
Subject: RE: [PATCH v2] net: add bit fields to IPv6 header definition
Date: Tue, 18 Jun 2024 10:11:30 +0200 [thread overview]
Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F52C@smartserver.smartshare.dk> (raw)
In-Reply-To: <20240618075810.265960-1-getelson@nvidia.com>
> From: Gregory Etelson [mailto:getelson@nvidia.com]
> Sent: Tuesday, 18 June 2024 09.58
>
> DPDK IPv6 header definition combined the `version`, `traffic class`
> and `flow label` header fields into a single 32 bits structure member
> `vtc_flow`.
>
> The patch expands IPv6 header definition with dedicated structure
> members for the `version`, `traffic class` and `flow label` fields.
> The `traffic class` is also separated into DS and ECN fields.
>
> The patch also preserves existing `vtc_flow` structure member for
> backward compatibility.
>
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> ---
> v2:
> Replace uint32_t with rte_be32_t.
> Split traffic_class into DS and ECN bits.
> ---
> lib/net/rte_ip.h | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
> index 0d103d4127..fe1d596054 100644
> --- a/lib/net/rte_ip.h
> +++ b/lib/net/rte_ip.h
> @@ -524,7 +524,23 @@ rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf
> *m,
> * IPv6 Header
> */
> struct rte_ipv6_hdr {
> - rte_be32_t vtc_flow; /**< IP version, traffic class & flow label.
> */
> + union {
> + rte_be32_t vtc_flow; /**< IP version, traffic class & flow
> label. */
> + __extension__
> + struct {
> +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
> + rte_be32_t flow_label:20; /**< flow label */
I don't know if sub-unions of bitfields are possible and/or require special magic for packing the bits.
If possible, expanding the 8 bit "tc" field like this would be nice:
+ union {
+ rte_be32_t tc:8;
+ __extension__
+ struct {
> + rte_be32_t ecn:2; /**< ECN */
> + rte_be32_t ds:6; /**< differentiated services */
+ };
+ };
> + rte_be32_t version:4; /**< version */
> +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
> + rte_be32_t version:4; /**< version */
> + rte_be32_t ds:6; /**< differentiated services */
> + rte_be32_t ecn:2; /**< ECN */
> + rte_be32_t flow_label:20; /**< flow label */
> +#endif
> + };
> + };
> rte_be16_t payload_len; /**< IP payload size, including ext. headers
> */
> uint8_t proto; /**< Protocol, next header. */
> uint8_t hop_limits; /**< Hop limits. */
> --
> 2.43.0
Without the suggested addition,
Reviewed-by: Morten Brørup <mb@smartsharesystems.com>
With the suggested addition,
Acked-by: Morten Brørup <mb@smartsharesystems.com>
next prev parent reply other threads:[~2024-06-18 8:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-18 5:17 [PATCH] " Gregory Etelson
2024-06-18 6:42 ` Morten Brørup
2024-06-18 7:02 ` Morten Brørup
2024-06-18 8:07 ` Etelson, Gregory
2024-06-19 0:11 ` Tyler Retzlaff
2024-06-19 4:31 ` Etelson, Gregory
2024-06-18 7:58 ` [PATCH v2] " Gregory Etelson
2024-06-18 8:11 ` Morten Brørup [this message]
2024-06-18 9:51 ` [PATCH v3] " Gregory Etelson
2024-06-18 10:47 ` Morten Brørup
2024-06-18 12:18 ` [PATCH v4] " Gregory Etelson
2024-06-18 12:44 ` Morten Brørup
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=98CBD80474FA8B44BF855DF32C47DC35E9F52C@smartserver.smartshare.dk \
--to=mb@smartsharesystems.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=bruce.richardson@intel.com \
--cc=cristian.dumitrescu@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=getelson@nvidia.com \
--cc=jasvinder.singh@intel.com \
--cc=konstantin.v.ananyev@yandex.ru \
--cc=mkashani@nvidia.com \
--cc=orika@nvidia.com \
--cc=ruifeng.wang@arm.com \
--cc=thomas@monjalon.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).