All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shiri Kuzin <shirik@nvidia.com>
To: dev@dpdk.org
Cc: viacheslavo@nvidia.com, adrien.mazarguil@6wind.com,
	orika@nvidia.com, ferruh.yigit@intel.com, thomas@monjalon.net,
	rasland@nvidia.com
Subject: [dpdk-dev] [PATCH 1/8] lib/librte_ethdev: introduce GENEVE header TLV option item
Date: Sun, 27 Dec 2020 18:06:16 +0200	[thread overview]
Message-ID: <1609085183-25229-2-git-send-email-shirik@nvidia.com> (raw)
In-Reply-To: <1609085183-25229-1-git-send-email-shirik@nvidia.com>

The Geneve tunneling protocol is designed to allow the
user to specify some data context on the packet.
The GENEVE TLV (Type-Length-Variable) Option
is the mean intended to present the user data.

In order to support GENEVE TLV Option the new rte_flow
item "rte_flow_item_geneve_opt" is added.
The new item contains the values and masks for the
following fields:
-option class
-option type
-length
-data

New item will be added to testpmd to support match and
raw encap/decap actions.

Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
---
 lib/librte_ethdev/rte_flow.c |  1 +
 lib/librte_ethdev/rte_flow.h | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
index a06f64c..2af7d96 100644
--- a/lib/librte_ethdev/rte_flow.c
+++ b/lib/librte_ethdev/rte_flow.c
@@ -97,6 +97,7 @@ struct rte_flow_desc_data {
 	MK_FLOW_ITEM(L2TPV3OIP, sizeof(struct rte_flow_item_l2tpv3oip)),
 	MK_FLOW_ITEM(PFCP, sizeof(struct rte_flow_item_pfcp)),
 	MK_FLOW_ITEM(ECPRI, sizeof(struct rte_flow_item_ecpri)),
+	MK_FLOW_ITEM(GENEVE_OPT, sizeof(struct rte_flow_item_geneve_opt)),
 };
 
 /** Generate flow_action[] entry. */
diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
index 0977a78..e17a630 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -543,6 +543,14 @@ enum rte_flow_item_type {
 	 * See struct rte_flow_item_ipv6_frag_ext.
 	 */
 	RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT,
+
+	/**
+	 * Matches Geneve Variable Length Option
+	 *
+	 * See struct rte_flow_item_geneve_opt
+	 */
+	RTE_FLOW_ITEM_TYPE_GENEVE_OPT,
+
 };
 
 /**
@@ -1626,7 +1634,32 @@ struct rte_flow_item_ecpri {
 	},
 };
 #endif
+#ifdef PEDANTIC
+#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
+/**
+ * RTE_FLOW_ITEM_TYPE_GENEVE_OPT
+ *
+ * Matches a GENEVE Variable Length Option
+ */
+RTE_STD_C11
+struct rte_flow_item_geneve_opt {
+	rte_be16_t option_class;
+	uint8_t option_type;
+	uint8_t option_len;
+	uint32_t *data;
+};
+#ifdef PEDANTIC
+#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
 
+/** Default mask for RTE_FLOW_ITEM_TYPE_GENEVE_OPT. */
+#ifndef __cplusplus
+static const struct rte_flow_item_geneve_opt
+rte_flow_item_geneve_opt_mask = {
+	.option_type = 0xff,
+};
+#endif
 /**
  * Matching pattern item definition.
  *
-- 
1.8.3.1


  reply	other threads:[~2020-12-27 16:06 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-27 16:06 [dpdk-dev] [PATCH 0/8] ethdev: introduce GENEVE header TLV option item Shiri Kuzin
2020-12-27 16:06 ` Shiri Kuzin [this message]
2020-12-27 17:25   ` [dpdk-dev] [PATCH 1/8] lib/librte_ethdev: " Stephen Hemminger
2020-12-29 10:12     ` Ori Kam
2020-12-30  8:22       ` Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 2/8] app/testpmd: add GENEVE option item support Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 3/8] common/mlx5: check GENEVE TLV support in HCA attributes Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 4/8] common/mlx5: create GENEVE TLV option object with DevX Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 5/8] net/mlx5: create GENEVE TLV option management Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 6/8] net/mlx5: add GENEVE TLV option flow validation Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 7/8] net/mlx5: add GENEVE TLV option flow translation Shiri Kuzin
2020-12-27 16:06 ` [dpdk-dev] [PATCH 8/8] doc: update GENEVE TLV option support Shiri Kuzin
2021-01-05 17:53 ` [dpdk-dev] [PATCH v2 0/8] ethdev: introduce GENEVE header TLV option item Shiri Kuzin
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 1/8] lib/librte_ethdev: " Shiri Kuzin
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 2/8] app/testpmd: add GENEVE option item support Shiri Kuzin
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 3/8] common/mlx5: check GENEVE TLV support in HCA attributes Shiri Kuzin
2021-01-06  9:23     ` Slava Ovsiienko
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 4/8] common/mlx5: create GENEVE TLV option object with DevX Shiri Kuzin
2021-01-06  9:24     ` Slava Ovsiienko
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 5/8] net/mlx5: create GENEVE TLV option management Shiri Kuzin
2021-01-06  9:24     ` Slava Ovsiienko
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 6/8] net/mlx5: add GENEVE TLV option flow validation Shiri Kuzin
2021-01-06  9:24     ` Slava Ovsiienko
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 7/8] net/mlx5: add GENEVE TLV option flow translation Shiri Kuzin
2021-01-06  9:25     ` Slava Ovsiienko
2021-01-05 17:53   ` [dpdk-dev] [PATCH v2 8/8] doc: update GENEVE TLV option support Shiri Kuzin
2021-01-06  9:26     ` Slava Ovsiienko

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=1609085183-25229-2-git-send-email-shirik@nvidia.com \
    --to=shirik@nvidia.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=orika@nvidia.com \
    --cc=rasland@nvidia.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@nvidia.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.