ethdev: add GRE key field to flow API
authorXiaoyu Min <jackmin@mellanox.com>
Fri, 5 Jul 2019 09:54:23 +0000 (17:54 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 8 Jul 2019 19:26:52 +0000 (21:26 +0200)
Add new rte_flow_item_gre_key in order to match the optional key field.

Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
doc/guides/prog_guide/rte_flow.rst
lib/librte_ethdev/rte_flow.c
lib/librte_ethdev/rte_flow.h

index bbe32db..7da446e 100644 (file)
@@ -980,6 +980,15 @@ Matches a GRE header.
 - ``protocol``: protocol type.
 - Default ``mask`` matches protocol only.
 
+Item: ``GRE_KEY``
+^^^^^^^^^^^^^^^^^
+
+Matches a GRE key field.
+This should be preceded by item ``GRE``.
+
+- Value to be matched is a big-endian 32 bit integer.
+- When this item present it implicitly match K bit in default mask as "1"
+
 Item: ``FUZZY``
 ^^^^^^^^^^^^^^^
 
index 0a83f53..18fcb01 100644 (file)
@@ -74,6 +74,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
                     sizeof(struct rte_flow_item_icmp6_nd_opt_tla_eth)),
        MK_FLOW_ITEM(MARK, sizeof(struct rte_flow_item_mark)),
        MK_FLOW_ITEM(META, sizeof(struct rte_flow_item_meta)),
+       MK_FLOW_ITEM(GRE_KEY, sizeof(rte_be32_t)),
 };
 
 /** Generate flow_action[] entry. */
index bc41023..b66bf14 100644 (file)
@@ -421,6 +421,19 @@ enum rte_flow_item_type {
         * See struct rte_flow_item_meta.
         */
        RTE_FLOW_ITEM_TYPE_META,
+
+       /**
+        * Matches a GRE optional key field.
+        *
+        * The value should a big-endian 32bit integer.
+        *
+        * When this item present the K bit is implicitly matched as "1"
+        * in the default mask.
+        *
+        * @p spec/mask type:
+        * @code rte_be32_t * @endcode
+        */
+       RTE_FLOW_ITEM_TYPE_GRE_KEY,
 };
 
 /**