All of lore.kernel.org
 help / color / mirror / Atom feed
From: Beilei Xing <beilei.xing@intel.com>
To: jingjing.wu@intel.com
Cc: helin.zhang@intel.com, bernard.iremonger@intel.com, dev@dpdk.org
Subject: [PATCH v3 1/4] ethdev: add MPLS and GRE items
Date: Tue, 28 Mar 2017 14:40:05 +0800	[thread overview]
Message-ID: <1490683208-38096-2-git-send-email-beilei.xing@intel.com> (raw)
In-Reply-To: <1490683208-38096-1-git-send-email-beilei.xing@intel.com>

This patch adds MPLS and GRE items to generic rte flow.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
 doc/guides/prog_guide/rte_flow.rst | 21 ++++++++++++++--
 lib/librte_ether/rte_flow.h        | 51 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 2 deletions(-)

diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst
index 3bf8871..5ee045e 100644
--- a/doc/guides/prog_guide/rte_flow.rst
+++ b/doc/guides/prog_guide/rte_flow.rst
@@ -187,8 +187,8 @@ Pattern item
 Pattern items fall in two categories:
 
 - Matching protocol headers and packet data (ANY, RAW, ETH, VLAN, IPV4,
-  IPV6, ICMP, UDP, TCP, SCTP, VXLAN and so on), usually associated with a
-  specification structure.
+  IPV6, ICMP, UDP, TCP, SCTP, VXLAN, MPLS, GRE and so on), usually
+  associated with a specification structure.
 
 - Matching meta-data or affecting pattern processing (END, VOID, INVERT, PF,
   VF, PORT and so on), often without a specification structure.
@@ -863,6 +863,23 @@ Matches a VXLAN header (RFC 7348).
 - ``rsvd1``: reserved, normally 0x00.
 - Default ``mask`` matches VNI only.
 
+Item: ``MPLS``
+^^^^^^^^^^^^^^
+
+Matches a MPLS header.
+
+- ``label_tc_s_ttl``: label, TC, Bottom of Stack and TTL.
+- Default ``mask`` matches label only.
+
+Item: ``GRE``
+^^^^^^^^^^^^^^
+
+Matches a GRE header.
+
+- ``c_rsvd0_ver``: checksum, reserved 0 and version.
+- ``protocol``: protocol type.
+- Default ``mask`` matches protocol only.
+
 Actions
 ~~~~~~~
 
diff --git a/lib/librte_ether/rte_flow.h b/lib/librte_ether/rte_flow.h
index 171a569..8013eca 100644
--- a/lib/librte_ether/rte_flow.h
+++ b/lib/librte_ether/rte_flow.h
@@ -282,6 +282,20 @@ enum rte_flow_item_type {
 	 * See struct rte_flow_item_nvgre.
 	 */
 	RTE_FLOW_ITEM_TYPE_NVGRE,
+
+	/**
+	 * Matches a MPLS header.
+	 *
+	 * See struct rte_flow_item_mpls.
+	 */
+	RTE_FLOW_ITEM_TYPE_MPLS,
+
+	/**
+	 * Matches a GRE header.
+	 *
+	 * See struct rte_flow_item_gre.
+	 */
+	RTE_FLOW_ITEM_TYPE_GRE,
 };
 
 /**
@@ -599,6 +613,43 @@ struct rte_flow_item_nvgre {
 };
 
 /**
+ * RTE_FLOW_ITEM_TYPE_MPLS.
+ *
+ * Matches a MPLS header.
+ */
+struct rte_flow_item_mpls {
+	/**
+	 * Label (20b), TC (3b), Bottom of Stack (1b).
+	 */
+	uint8_t label_tc_s[3];
+	uint8_t ttl; /** Time-to-Live. */
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_MPLS. */
+static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
+	.label_tc_s = "\xff\xff\xf0",
+};
+
+/**
+ * RTE_FLOW_ITEM_TYPE_GRE.
+ *
+ * Matches a GRE header.
+ */
+struct rte_flow_item_gre {
+	/**
+	 * Checksum (1b), reserved 0 (12b), version (3b).
+	 * Refer to RFC 2784.
+	 */
+	uint16_t c_rsvd0_ver;
+	uint16_t protocol; /**< Protocol type. */
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_GRE. */
+static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
+	.protocol = 0xffff,
+};
+
+/**
  * Matching pattern item definition.
  *
  * A pattern is formed by stacking items starting from the lowest protocol
-- 
2.5.5

  reply	other threads:[~2017-03-28  6:41 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03  9:43 [PATCH 0/3] enable MPLS cloud filter Beilei Xing
2017-03-03  9:43 ` [PATCH 1/3] app/testpmd: support MPLS for generic filter Beilei Xing
2017-03-03 11:09   ` Adrien Mazarguil
2017-03-06  2:39     ` Xing, Beilei
2017-03-03  9:43 ` [PATCH 2/3] net/i40e: add MPLS parsing function Beilei Xing
2017-03-03  9:43 ` [PATCH 3/3] net/i40e: enable cloud filter for MPLS Beilei Xing
2017-03-08 16:05   ` Ferruh Yigit
2017-03-09  3:57     ` Xing, Beilei
2017-03-09 11:13   ` Iremonger, Bernard
2017-03-09 11:39     ` Xing, Beilei
2017-03-09 11:53       ` Iremonger, Bernard
2017-03-09 12:06         ` Xing, Beilei
2017-03-09 13:48           ` Iremonger, Bernard
2017-03-23 10:57 ` [PATCH v2 0/3] add support for MPLS tunnel filter Beilei Xing
2017-03-23 10:57   ` [PATCH v2 1/3] app/testpmd: add support for MPLS and GRE items Beilei Xing
2017-03-23 19:39     ` Adrien Mazarguil
2017-03-24  2:17       ` Xing, Beilei
2017-03-24 10:00         ` Adrien Mazarguil
2017-03-23 10:57   ` [PATCH v2 2/3] net/i40e: add MPLS parsing function Beilei Xing
2017-03-23 10:57   ` [PATCH v2 3/3] net/i40e: enable tunnel filter for MPLS Beilei Xing
2017-03-28  6:40   ` [PATCH v3 0/4] add support for MPLS tunnel filter Beilei Xing
2017-03-28  6:40     ` Beilei Xing [this message]
2017-03-28 12:28       ` [PATCH v3 1/4] ethdev: add MPLS and GRE items Adrien Mazarguil
2017-03-28  6:40     ` [PATCH v3 2/4] app/testpmd: add MPLS and GRE fields to flow command Beilei Xing
2017-03-28 12:29       ` Adrien Mazarguil
2017-03-28  6:40     ` [PATCH v3 3/4] net/i40e: add MPLS parsing function Beilei Xing
2017-03-28  6:40     ` [PATCH v3 4/4] net/i40e: enable tunnel filter for MPLS Beilei Xing
2017-03-30  4:07     ` [PATCH v4 0/4] add support for MPLS tunnel filter Beilei Xing
2017-03-30  4:07       ` [PATCH v4 1/4] ethdev: add MPLS and GRE items Beilei Xing
2017-03-30  4:07       ` [PATCH v4 2/4] app/testpmd: add MPLS and GRE fields to flow command Beilei Xing
2017-03-30  4:07       ` [PATCH v4 3/4] net/i40e: add MPLS parsing function Beilei Xing
2017-03-30  6:04         ` Wu, Jingjing
2017-03-30  6:35           ` Xing, Beilei
2017-03-30  4:07       ` [PATCH v4 4/4] net/i40e: enable tunnel filter for MPLS Beilei Xing
2017-03-30  6:16         ` Wu, Jingjing
2017-03-30  6:20           ` Xing, Beilei
2017-03-30  6:56       ` [PATCH v5 0/4] add support for MPLS tunnel filter Beilei Xing
2017-03-30  6:56         ` [PATCH v5 1/4] ethdev: add MPLS and GRE items Beilei Xing
2017-03-30  6:56         ` [PATCH v5 2/4] app/testpmd: add MPLS and GRE fields to flow command Beilei Xing
2017-03-30  6:56         ` [PATCH v5 3/4] net/i40e: add MPLS parsing function Beilei Xing
2017-03-30  8:22           ` Wu, Jingjing
2017-03-30  6:56         ` [PATCH v5 4/4] net/i40e: enable tunnel filter for MPLS Beilei Xing
2017-03-30  8:22           ` Wu, Jingjing

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=1490683208-38096-2-git-send-email-beilei.xing@intel.com \
    --to=beilei.xing@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=helin.zhang@intel.com \
    --cc=jingjing.wu@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.