All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory Etelson <getelson@nvidia.com>
To: <dev@dpdk.org>
Cc: <getelson@nvidia.com>, <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>,
	<mb@smartsharesystems.com>
Subject: [PATCH v4] net: add bit fields to IPv6 header definition
Date: Tue, 18 Jun 2024 15:18:41 +0300	[thread overview]
Message-ID: <20240618121841.10070-1-getelson@nvidia.com> (raw)
In-Reply-To: <20240618051751.220610-1-getelson@nvidia.com>

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.
v3:
Define both traffic_class and DS + ECN fields.
v4: 
The `packed` attribute works on bytes only.
Back to v2.
---
 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 */
+			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


  parent reply	other threads:[~2024-06-18 12:19 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-18  5:17 [PATCH] net: add bit fields to IPv6 header definition 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
2024-06-18  9:51 ` [PATCH v3] " Gregory Etelson
2024-06-18 10:47   ` Morten Brørup
2024-06-18 12:18 ` Gregory Etelson [this message]
2024-06-18 12:44   ` [PATCH v4] " Morten Brørup
2024-10-18 16:47     ` David Marchand

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=20240618121841.10070-1-getelson@nvidia.com \
    --to=getelson@nvidia.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=jasvinder.singh@intel.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=mb@smartsharesystems.com \
    --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 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.