DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
@ 2019-04-17  0:36 Thomas Monjalon
  2019-04-17  0:36 ` Thomas Monjalon
                   ` (5 more replies)
  0 siblings, 6 replies; 18+ messages in thread
From: Thomas Monjalon @ 2019-04-17  0:36 UTC (permalink / raw)
  To: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

As stated in the deprecation notice from December 2016,
"the legacy filter API, including rte_eth_dev_filter_supported(),
rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
by the generic flow API (rte_flow)".

After a long wait of more than two years, the legacy filter API
is marked as deprecated, while still tested with testpmd and
the tep_termination example.

The next step will be to announce a deadline for complete removal.
As preparation of the removal of rte_eth_ctrl.h,
RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
are moved to rte_ethdev.h and rte_flow.h.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 app/test-pmd/cmdline.c               |  1 -
 app/test-pmd/cmdline_flow.c          |  1 -
 drivers/net/dpaa2/dpaa2_flow.c       |  1 -
 drivers/net/dpaa2/dpaa2_mux.c        |  1 -
 drivers/net/enic/enic_clsf.c         |  1 -
 drivers/net/failsafe/failsafe_ops.c  | 20 +--------
 drivers/net/i40e/i40e_ethdev.c       |  1 -
 drivers/net/i40e/i40e_ethdev.h       |  1 -
 drivers/net/i40e/i40e_flow.c         |  1 -
 drivers/net/mlx4/mlx4_flow.c         |  1 -
 drivers/net/mlx4/mlx4_flow.h         |  1 -
 drivers/net/mlx5/mlx5_flow.c         |  1 -
 drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
 drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
 drivers/net/sfc/sfc_flow.c           |  1 -
 examples/tep_termination/Makefile    |  2 +
 examples/tep_termination/meson.build |  1 +
 lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
 lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
 lib/librte_ethdev/rte_flow.h         | 11 ++++-
 20 files changed, 75 insertions(+), 99 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 2ab03c111..3e405d262 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -44,7 +44,6 @@
 #include <rte_ethdev.h>
 #include <rte_string_fns.h>
 #include <rte_devargs.h>
-#include <rte_eth_ctrl.h>
 #include <rte_flow.h>
 #include <rte_gro.h>
 
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 54ff1753c..3070e0e0d 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -15,7 +15,6 @@
 
 #include <rte_string_fns.h>
 #include <rte_common.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev.h>
 #include <rte_byteorder.h>
 #include <cmdline_parse.h>
diff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c
index c94c7ef6b..98f68139b 100644
--- a/drivers/net/dpaa2/dpaa2_flow.c
+++ b/drivers/net/dpaa2/dpaa2_flow.c
@@ -12,7 +12,6 @@
 
 #include <rte_ethdev.h>
 #include <rte_log.h>
-#include <rte_eth_ctrl.h>
 #include <rte_malloc.h>
 #include <rte_flow_driver.h>
 #include <rte_tailq.h>
diff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c
index 1d043dcdc..e487c6b54 100644
--- a/drivers/net/dpaa2/dpaa2_mux.c
+++ b/drivers/net/dpaa2/dpaa2_mux.c
@@ -12,7 +12,6 @@
 
 #include <rte_ethdev.h>
 #include <rte_log.h>
-#include <rte_eth_ctrl.h>
 #include <rte_malloc.h>
 #include <rte_flow_driver.h>
 #include <rte_tailq.h>
diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
index 48c8e6264..53f57b01a 100644
--- a/drivers/net/enic/enic_clsf.c
+++ b/drivers/net/enic/enic_clsf.c
@@ -11,7 +11,6 @@
 #include <rte_tcp.h>
 #include <rte_udp.h>
 #include <rte_sctp.h>
-#include <rte_eth_ctrl.h>
 
 #include "enic_compat.h"
 #include "enic.h"
diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 65957a2e5..43d6a828f 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,
 }
 
 static int
-fs_filter_ctrl(struct rte_eth_dev *dev,
+fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
 		enum rte_filter_type type,
 		enum rte_filter_op op,
 		void *arg)
 {
-	struct sub_device *sdev;
-	uint8_t i;
-	int ret;
-
 	if (type == RTE_ETH_FILTER_GENERIC &&
 	    op == RTE_ETH_FILTER_GET) {
 		*(const void **)arg = &fs_flow_ops;
 		return 0;
 	}
-	fs_lock(dev, 0);
-	FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
-		DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d", i);
-		ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op, arg);
-		if ((ret = fs_err(sdev, ret))) {
-			ERROR("Operation rte_eth_dev_filter_ctrl failed for sub_device %d"
-			      " with error %d", i, ret);
-			fs_unlock(dev, 0);
-			return ret;
-		}
-	}
-	fs_unlock(dev, 0);
-	return 0;
+	return -ENOTSUP;
 }
 
 const struct eth_dev_ops failsafe_ops = {
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 5b01dc1f0..f6fc0056c 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -24,7 +24,6 @@
 #include <rte_memcpy.h>
 #include <rte_alarm.h>
 #include <rte_dev.h>
-#include <rte_eth_ctrl.h>
 #include <rte_tailq.h>
 #include <rte_hash_crc.h>
 
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index 930eb9aba..98550380e 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -7,7 +7,6 @@
 
 #include <stdint.h>
 
-#include <rte_eth_ctrl.h>
 #include <rte_time.h>
 #include <rte_kvargs.h>
 #include <rte_hash.h>
diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 3694df255..5447e4ea5 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -15,7 +15,6 @@
 #include <rte_ethdev_driver.h>
 #include <rte_log.h>
 #include <rte_malloc.h>
-#include <rte_eth_ctrl.h>
 #include <rte_tailq.h>
 #include <rte_flow_driver.h>
 
diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index 038dc71d3..1dcdb31a0 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -28,7 +28,6 @@
 
 #include <rte_byteorder.h>
 #include <rte_errno.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_ether.h>
 #include <rte_flow.h>
diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
index 03a4bd05e..26465c66a 100644
--- a/drivers/net/mlx4/mlx4_flow.h
+++ b/drivers/net/mlx4/mlx4_flow.h
@@ -18,7 +18,6 @@
 #pragma GCC diagnostic error "-Wpedantic"
 #endif
 
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 1c78a5f8e..63420fc3e 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -21,7 +21,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index ccb2f7593..04c969b73 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -19,7 +19,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index 3956df1a7..dc074bfb3 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -20,7 +20,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
index cffcd9a4c..944296d7d 100644
--- a/drivers/net/sfc/sfc_flow.c
+++ b/drivers/net/sfc/sfc_flow.c
@@ -11,7 +11,6 @@
 #include <rte_tailq.h>
 #include <rte_common.h>
 #include <rte_ethdev_driver.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ether.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/examples/tep_termination/Makefile b/examples/tep_termination/Makefile
index 2da41922f..222679bc9 100644
--- a/examples/tep_termination/Makefile
+++ b/examples/tep_termination/Makefile
@@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
 CFLAGS += -DALLOW_EXPERIMENTAL_API
+CFLAGS += -Wno-deprecated-declarations
 
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
@@ -60,6 +61,7 @@ endif
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -Wno-deprecated-declarations
 
 include $(RTE_SDK)/mk/rte.extapp.mk
 endif
diff --git a/examples/tep_termination/meson.build b/examples/tep_termination/meson.build
index 6d3636243..0e0cb44f0 100644
--- a/examples/tep_termination/meson.build
+++ b/examples/tep_termination/meson.build
@@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
 endif
 deps += ['hash', 'vhost']
 allow_experimental_apis = true
+cflags += '-Wno-deprecated-declarations'
 sources = files(
 	'main.c', 'vxlan.c', 'vxlan_setup.c'
 )
diff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h
index b3416341b..9fb0657e5 100644
--- a/lib/librte_ethdev/rte_eth_ctrl.h
+++ b/lib/librte_ethdev/rte_eth_ctrl.h
@@ -8,55 +8,20 @@
 #include <stdint.h>
 #include <rte_common.h>
 #include "rte_ether.h"
+#include "rte_flow.h"
 
 /**
+ * @deprecated Please use rte_flow API instead of this legacy one.
  * @file
  *
  * Ethernet device features and related data structures used
  * by control APIs should be defined in this file.
- *
  */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * A packet can be identified by hardware as different flow types. Different
- * NIC hardwares may support different flow types.
- * Basically, the NIC hardware identifies the flow type as deep protocol as
- * possible, and exclusively. For example, if a packet is identified as
- * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,
- * though it is an actual IPV4 packet.
- * Note that the flow types are used to define RSS offload types in
- * rte_ethdev.h.
- */
-#define RTE_ETH_FLOW_UNKNOWN             0
-#define RTE_ETH_FLOW_RAW                 1
-#define RTE_ETH_FLOW_IPV4                2
-#define RTE_ETH_FLOW_FRAG_IPV4           3
-#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
-#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
-#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
-#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
-#define RTE_ETH_FLOW_IPV6                8
-#define RTE_ETH_FLOW_FRAG_IPV6           9
-#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
-#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
-#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
-#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
-#define RTE_ETH_FLOW_L2_PAYLOAD         14
-#define RTE_ETH_FLOW_IPV6_EX            15
-#define RTE_ETH_FLOW_IPV6_TCP_EX        16
-#define RTE_ETH_FLOW_IPV6_UDP_EX        17
-#define RTE_ETH_FLOW_PORT               18
-	/**< Consider device port number as a flow differentiator */
-#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */
-#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */
-#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */
-#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */
-#define RTE_ETH_FLOW_MAX                23
-
 /**
  * Feature filter types
  */
@@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
 	uint16_t queue;          /**< Queue assigned to when match*/
 };
 
-/**
- * Tunneled type.
- */
-enum rte_eth_tunnel_type {
-	RTE_TUNNEL_TYPE_NONE = 0,
-	RTE_TUNNEL_TYPE_VXLAN,
-	RTE_TUNNEL_TYPE_GENEVE,
-	RTE_TUNNEL_TYPE_TEREDO,
-	RTE_TUNNEL_TYPE_NVGRE,
-	RTE_TUNNEL_TYPE_IP_IN_GRE,
-	RTE_L2_TUNNEL_TYPE_E_TAG,
-	RTE_TUNNEL_TYPE_VXLAN_GPE,
-	RTE_TUNNEL_TYPE_MAX,
-};
-
 /**
  * filter type of tunneling packet
  */
@@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
 	RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
 };
 
-/**
- * Hash function types.
- */
-enum rte_eth_hash_function {
-	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
-	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
-	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
-	RTE_ETH_HASH_FUNCTION_MAX,
-};
-
 #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
 	(RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
 /**
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 40a068fe8..ca3a990ae 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -158,7 +158,6 @@ extern "C" {
 #include <rte_config.h>
 
 #include "rte_ether.h"
-#include "rte_eth_ctrl.h"
 #include "rte_dev_info.h"
 
 extern int rte_eth_dev_logtype;
@@ -448,8 +447,43 @@ struct rte_eth_rss_conf {
 };
 
 /*
- * The RSS offload types are defined based on flow types which are defined
- * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS offload
+ * A packet can be identified by hardware as different flow types. Different
+ * NIC hardwares may support different flow types.
+ * Basically, the NIC hardware identifies the flow type as deep protocol as
+ * possible, and exclusively. For example, if a packet is identified as
+ * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,
+ * though it is an actual IPV4 packet.
+ * Note that the flow types are used to define RSS offload types.
+ */
+#define RTE_ETH_FLOW_UNKNOWN             0
+#define RTE_ETH_FLOW_RAW                 1
+#define RTE_ETH_FLOW_IPV4                2
+#define RTE_ETH_FLOW_FRAG_IPV4           3
+#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
+#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
+#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
+#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
+#define RTE_ETH_FLOW_IPV6                8
+#define RTE_ETH_FLOW_FRAG_IPV6           9
+#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
+#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
+#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
+#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
+#define RTE_ETH_FLOW_L2_PAYLOAD         14
+#define RTE_ETH_FLOW_IPV6_EX            15
+#define RTE_ETH_FLOW_IPV6_TCP_EX        16
+#define RTE_ETH_FLOW_IPV6_UDP_EX        17
+#define RTE_ETH_FLOW_PORT               18
+	/**< Consider device port number as a flow differentiator */
+#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */
+#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */
+#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */
+#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */
+#define RTE_ETH_FLOW_MAX                23
+
+/*
+ * The RSS offload types are defined based on flow types.
+ * Different NIC hardwares may support different RSS offload
  * types. The supported flow types or RSS offload types can be queried by
  * rte_eth_dev_info_get().
  */
@@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
 	uint8_t priority;          /**< VLAN User Priority. */
 };
 
+/**
+ * Tunneled type.
+ */
+enum rte_eth_tunnel_type {
+	RTE_TUNNEL_TYPE_NONE = 0,
+	RTE_TUNNEL_TYPE_VXLAN,
+	RTE_TUNNEL_TYPE_GENEVE,
+	RTE_TUNNEL_TYPE_TEREDO,
+	RTE_TUNNEL_TYPE_NVGRE,
+	RTE_TUNNEL_TYPE_IP_IN_GRE,
+	RTE_L2_TUNNEL_TYPE_E_TAG,
+	RTE_TUNNEL_TYPE_VXLAN_GPE,
+	RTE_TUNNEL_TYPE_MAX,
+};
+
+/* Deprecated API file for rte_eth_dev_filter_* functions */
+#include "rte_eth_ctrl.h"
+
 /**
  *  Memory space that can be configured to store Flow Director filters
  *  in the board memory.
@@ -934,7 +986,7 @@ struct rte_eth_conf {
 	/** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC
 	    is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */
 	uint32_t dcb_capability_en;
-	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
+	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. DEPRECATED */
 	struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
 };
 
@@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t port_id,
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EIO) if device is removed.
  */
+__rte_deprecated
 int rte_eth_dev_filter_supported(uint16_t port_id,
 		enum rte_filter_type filter_type);
 
@@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
  *   - (-EIO) if device is removed.
  *   - others depends on the specific operations implementation.
  */
+__rte_deprecated
 int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type filter_type,
 			enum rte_filter_op filter_op, void *arg);
 
diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
index c0fe87924..63f84fca6 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -20,7 +20,6 @@
 #include <rte_arp.h>
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_icmp.h>
 #include <rte_ip.h>
 #include <rte_sctp.h>
@@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
 	uint64_t bytes; /**< Number of bytes through this rule [out]. */
 };
 
+/**
+ * Hash function types.
+ */
+enum rte_eth_hash_function {
+	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
+	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
+	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
+	RTE_ETH_HASH_FUNCTION_MAX,
+};
+
 /**
  * RTE_FLOW_ACTION_TYPE_RSS
  *
-- 
2.21.0

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
@ 2019-04-17  0:36 ` Thomas Monjalon
  2019-04-17  5:41 ` Shahaf Shuler
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 18+ messages in thread
From: Thomas Monjalon @ 2019-04-17  0:36 UTC (permalink / raw)
  To: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

As stated in the deprecation notice from December 2016,
"the legacy filter API, including rte_eth_dev_filter_supported(),
rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
by the generic flow API (rte_flow)".

After a long wait of more than two years, the legacy filter API
is marked as deprecated, while still tested with testpmd and
the tep_termination example.

The next step will be to announce a deadline for complete removal.
As preparation of the removal of rte_eth_ctrl.h,
RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
are moved to rte_ethdev.h and rte_flow.h.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 app/test-pmd/cmdline.c               |  1 -
 app/test-pmd/cmdline_flow.c          |  1 -
 drivers/net/dpaa2/dpaa2_flow.c       |  1 -
 drivers/net/dpaa2/dpaa2_mux.c        |  1 -
 drivers/net/enic/enic_clsf.c         |  1 -
 drivers/net/failsafe/failsafe_ops.c  | 20 +--------
 drivers/net/i40e/i40e_ethdev.c       |  1 -
 drivers/net/i40e/i40e_ethdev.h       |  1 -
 drivers/net/i40e/i40e_flow.c         |  1 -
 drivers/net/mlx4/mlx4_flow.c         |  1 -
 drivers/net/mlx4/mlx4_flow.h         |  1 -
 drivers/net/mlx5/mlx5_flow.c         |  1 -
 drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
 drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
 drivers/net/sfc/sfc_flow.c           |  1 -
 examples/tep_termination/Makefile    |  2 +
 examples/tep_termination/meson.build |  1 +
 lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
 lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
 lib/librte_ethdev/rte_flow.h         | 11 ++++-
 20 files changed, 75 insertions(+), 99 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 2ab03c111..3e405d262 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -44,7 +44,6 @@
 #include <rte_ethdev.h>
 #include <rte_string_fns.h>
 #include <rte_devargs.h>
-#include <rte_eth_ctrl.h>
 #include <rte_flow.h>
 #include <rte_gro.h>
 
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 54ff1753c..3070e0e0d 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -15,7 +15,6 @@
 
 #include <rte_string_fns.h>
 #include <rte_common.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev.h>
 #include <rte_byteorder.h>
 #include <cmdline_parse.h>
diff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c
index c94c7ef6b..98f68139b 100644
--- a/drivers/net/dpaa2/dpaa2_flow.c
+++ b/drivers/net/dpaa2/dpaa2_flow.c
@@ -12,7 +12,6 @@
 
 #include <rte_ethdev.h>
 #include <rte_log.h>
-#include <rte_eth_ctrl.h>
 #include <rte_malloc.h>
 #include <rte_flow_driver.h>
 #include <rte_tailq.h>
diff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c
index 1d043dcdc..e487c6b54 100644
--- a/drivers/net/dpaa2/dpaa2_mux.c
+++ b/drivers/net/dpaa2/dpaa2_mux.c
@@ -12,7 +12,6 @@
 
 #include <rte_ethdev.h>
 #include <rte_log.h>
-#include <rte_eth_ctrl.h>
 #include <rte_malloc.h>
 #include <rte_flow_driver.h>
 #include <rte_tailq.h>
diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
index 48c8e6264..53f57b01a 100644
--- a/drivers/net/enic/enic_clsf.c
+++ b/drivers/net/enic/enic_clsf.c
@@ -11,7 +11,6 @@
 #include <rte_tcp.h>
 #include <rte_udp.h>
 #include <rte_sctp.h>
-#include <rte_eth_ctrl.h>
 
 #include "enic_compat.h"
 #include "enic.h"
diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 65957a2e5..43d6a828f 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,
 }
 
 static int
-fs_filter_ctrl(struct rte_eth_dev *dev,
+fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
 		enum rte_filter_type type,
 		enum rte_filter_op op,
 		void *arg)
 {
-	struct sub_device *sdev;
-	uint8_t i;
-	int ret;
-
 	if (type == RTE_ETH_FILTER_GENERIC &&
 	    op == RTE_ETH_FILTER_GET) {
 		*(const void **)arg = &fs_flow_ops;
 		return 0;
 	}
-	fs_lock(dev, 0);
-	FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
-		DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d", i);
-		ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op, arg);
-		if ((ret = fs_err(sdev, ret))) {
-			ERROR("Operation rte_eth_dev_filter_ctrl failed for sub_device %d"
-			      " with error %d", i, ret);
-			fs_unlock(dev, 0);
-			return ret;
-		}
-	}
-	fs_unlock(dev, 0);
-	return 0;
+	return -ENOTSUP;
 }
 
 const struct eth_dev_ops failsafe_ops = {
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 5b01dc1f0..f6fc0056c 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -24,7 +24,6 @@
 #include <rte_memcpy.h>
 #include <rte_alarm.h>
 #include <rte_dev.h>
-#include <rte_eth_ctrl.h>
 #include <rte_tailq.h>
 #include <rte_hash_crc.h>
 
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index 930eb9aba..98550380e 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -7,7 +7,6 @@
 
 #include <stdint.h>
 
-#include <rte_eth_ctrl.h>
 #include <rte_time.h>
 #include <rte_kvargs.h>
 #include <rte_hash.h>
diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 3694df255..5447e4ea5 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -15,7 +15,6 @@
 #include <rte_ethdev_driver.h>
 #include <rte_log.h>
 #include <rte_malloc.h>
-#include <rte_eth_ctrl.h>
 #include <rte_tailq.h>
 #include <rte_flow_driver.h>
 
diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index 038dc71d3..1dcdb31a0 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -28,7 +28,6 @@
 
 #include <rte_byteorder.h>
 #include <rte_errno.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_ether.h>
 #include <rte_flow.h>
diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
index 03a4bd05e..26465c66a 100644
--- a/drivers/net/mlx4/mlx4_flow.h
+++ b/drivers/net/mlx4/mlx4_flow.h
@@ -18,7 +18,6 @@
 #pragma GCC diagnostic error "-Wpedantic"
 #endif
 
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 1c78a5f8e..63420fc3e 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -21,7 +21,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index ccb2f7593..04c969b73 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -19,7 +19,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index 3956df1a7..dc074bfb3 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -20,7 +20,6 @@
 
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ethdev_driver.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
index cffcd9a4c..944296d7d 100644
--- a/drivers/net/sfc/sfc_flow.c
+++ b/drivers/net/sfc/sfc_flow.c
@@ -11,7 +11,6 @@
 #include <rte_tailq.h>
 #include <rte_common.h>
 #include <rte_ethdev_driver.h>
-#include <rte_eth_ctrl.h>
 #include <rte_ether.h>
 #include <rte_flow.h>
 #include <rte_flow_driver.h>
diff --git a/examples/tep_termination/Makefile b/examples/tep_termination/Makefile
index 2da41922f..222679bc9 100644
--- a/examples/tep_termination/Makefile
+++ b/examples/tep_termination/Makefile
@@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
 CFLAGS += -DALLOW_EXPERIMENTAL_API
+CFLAGS += -Wno-deprecated-declarations
 
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
@@ -60,6 +61,7 @@ endif
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -Wno-deprecated-declarations
 
 include $(RTE_SDK)/mk/rte.extapp.mk
 endif
diff --git a/examples/tep_termination/meson.build b/examples/tep_termination/meson.build
index 6d3636243..0e0cb44f0 100644
--- a/examples/tep_termination/meson.build
+++ b/examples/tep_termination/meson.build
@@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
 endif
 deps += ['hash', 'vhost']
 allow_experimental_apis = true
+cflags += '-Wno-deprecated-declarations'
 sources = files(
 	'main.c', 'vxlan.c', 'vxlan_setup.c'
 )
diff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h
index b3416341b..9fb0657e5 100644
--- a/lib/librte_ethdev/rte_eth_ctrl.h
+++ b/lib/librte_ethdev/rte_eth_ctrl.h
@@ -8,55 +8,20 @@
 #include <stdint.h>
 #include <rte_common.h>
 #include "rte_ether.h"
+#include "rte_flow.h"
 
 /**
+ * @deprecated Please use rte_flow API instead of this legacy one.
  * @file
  *
  * Ethernet device features and related data structures used
  * by control APIs should be defined in this file.
- *
  */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * A packet can be identified by hardware as different flow types. Different
- * NIC hardwares may support different flow types.
- * Basically, the NIC hardware identifies the flow type as deep protocol as
- * possible, and exclusively. For example, if a packet is identified as
- * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,
- * though it is an actual IPV4 packet.
- * Note that the flow types are used to define RSS offload types in
- * rte_ethdev.h.
- */
-#define RTE_ETH_FLOW_UNKNOWN             0
-#define RTE_ETH_FLOW_RAW                 1
-#define RTE_ETH_FLOW_IPV4                2
-#define RTE_ETH_FLOW_FRAG_IPV4           3
-#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
-#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
-#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
-#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
-#define RTE_ETH_FLOW_IPV6                8
-#define RTE_ETH_FLOW_FRAG_IPV6           9
-#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
-#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
-#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
-#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
-#define RTE_ETH_FLOW_L2_PAYLOAD         14
-#define RTE_ETH_FLOW_IPV6_EX            15
-#define RTE_ETH_FLOW_IPV6_TCP_EX        16
-#define RTE_ETH_FLOW_IPV6_UDP_EX        17
-#define RTE_ETH_FLOW_PORT               18
-	/**< Consider device port number as a flow differentiator */
-#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */
-#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */
-#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */
-#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */
-#define RTE_ETH_FLOW_MAX                23
-
 /**
  * Feature filter types
  */
@@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
 	uint16_t queue;          /**< Queue assigned to when match*/
 };
 
-/**
- * Tunneled type.
- */
-enum rte_eth_tunnel_type {
-	RTE_TUNNEL_TYPE_NONE = 0,
-	RTE_TUNNEL_TYPE_VXLAN,
-	RTE_TUNNEL_TYPE_GENEVE,
-	RTE_TUNNEL_TYPE_TEREDO,
-	RTE_TUNNEL_TYPE_NVGRE,
-	RTE_TUNNEL_TYPE_IP_IN_GRE,
-	RTE_L2_TUNNEL_TYPE_E_TAG,
-	RTE_TUNNEL_TYPE_VXLAN_GPE,
-	RTE_TUNNEL_TYPE_MAX,
-};
-
 /**
  * filter type of tunneling packet
  */
@@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
 	RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
 };
 
-/**
- * Hash function types.
- */
-enum rte_eth_hash_function {
-	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
-	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
-	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
-	RTE_ETH_HASH_FUNCTION_MAX,
-};
-
 #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
 	(RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
 /**
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 40a068fe8..ca3a990ae 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -158,7 +158,6 @@ extern "C" {
 #include <rte_config.h>
 
 #include "rte_ether.h"
-#include "rte_eth_ctrl.h"
 #include "rte_dev_info.h"
 
 extern int rte_eth_dev_logtype;
@@ -448,8 +447,43 @@ struct rte_eth_rss_conf {
 };
 
 /*
- * The RSS offload types are defined based on flow types which are defined
- * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS offload
+ * A packet can be identified by hardware as different flow types. Different
+ * NIC hardwares may support different flow types.
+ * Basically, the NIC hardware identifies the flow type as deep protocol as
+ * possible, and exclusively. For example, if a packet is identified as
+ * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,
+ * though it is an actual IPV4 packet.
+ * Note that the flow types are used to define RSS offload types.
+ */
+#define RTE_ETH_FLOW_UNKNOWN             0
+#define RTE_ETH_FLOW_RAW                 1
+#define RTE_ETH_FLOW_IPV4                2
+#define RTE_ETH_FLOW_FRAG_IPV4           3
+#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
+#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
+#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
+#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
+#define RTE_ETH_FLOW_IPV6                8
+#define RTE_ETH_FLOW_FRAG_IPV6           9
+#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
+#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
+#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
+#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
+#define RTE_ETH_FLOW_L2_PAYLOAD         14
+#define RTE_ETH_FLOW_IPV6_EX            15
+#define RTE_ETH_FLOW_IPV6_TCP_EX        16
+#define RTE_ETH_FLOW_IPV6_UDP_EX        17
+#define RTE_ETH_FLOW_PORT               18
+	/**< Consider device port number as a flow differentiator */
+#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */
+#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */
+#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */
+#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */
+#define RTE_ETH_FLOW_MAX                23
+
+/*
+ * The RSS offload types are defined based on flow types.
+ * Different NIC hardwares may support different RSS offload
  * types. The supported flow types or RSS offload types can be queried by
  * rte_eth_dev_info_get().
  */
@@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
 	uint8_t priority;          /**< VLAN User Priority. */
 };
 
+/**
+ * Tunneled type.
+ */
+enum rte_eth_tunnel_type {
+	RTE_TUNNEL_TYPE_NONE = 0,
+	RTE_TUNNEL_TYPE_VXLAN,
+	RTE_TUNNEL_TYPE_GENEVE,
+	RTE_TUNNEL_TYPE_TEREDO,
+	RTE_TUNNEL_TYPE_NVGRE,
+	RTE_TUNNEL_TYPE_IP_IN_GRE,
+	RTE_L2_TUNNEL_TYPE_E_TAG,
+	RTE_TUNNEL_TYPE_VXLAN_GPE,
+	RTE_TUNNEL_TYPE_MAX,
+};
+
+/* Deprecated API file for rte_eth_dev_filter_* functions */
+#include "rte_eth_ctrl.h"
+
 /**
  *  Memory space that can be configured to store Flow Director filters
  *  in the board memory.
@@ -934,7 +986,7 @@ struct rte_eth_conf {
 	/** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC
 	    is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */
 	uint32_t dcb_capability_en;
-	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
+	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. DEPRECATED */
 	struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
 };
 
@@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t port_id,
  *   - (-ENODEV) if *port_id* invalid.
  *   - (-EIO) if device is removed.
  */
+__rte_deprecated
 int rte_eth_dev_filter_supported(uint16_t port_id,
 		enum rte_filter_type filter_type);
 
@@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
  *   - (-EIO) if device is removed.
  *   - others depends on the specific operations implementation.
  */
+__rte_deprecated
 int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type filter_type,
 			enum rte_filter_op filter_op, void *arg);
 
diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
index c0fe87924..63f84fca6 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -20,7 +20,6 @@
 #include <rte_arp.h>
 #include <rte_common.h>
 #include <rte_ether.h>
-#include <rte_eth_ctrl.h>
 #include <rte_icmp.h>
 #include <rte_ip.h>
 #include <rte_sctp.h>
@@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
 	uint64_t bytes; /**< Number of bytes through this rule [out]. */
 };
 
+/**
+ * Hash function types.
+ */
+enum rte_eth_hash_function {
+	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
+	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
+	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
+	RTE_ETH_HASH_FUNCTION_MAX,
+};
+
 /**
  * RTE_FLOW_ACTION_TYPE_RSS
  *
-- 
2.21.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
  2019-04-17  0:36 ` Thomas Monjalon
@ 2019-04-17  5:41 ` Shahaf Shuler
  2019-04-17  5:41   ` Shahaf Shuler
                     ` (2 more replies)
  2019-04-17 16:54 ` Stephen Hemminger
                   ` (3 subsequent siblings)
  5 siblings, 3 replies; 18+ messages in thread
From: Shahaf Shuler @ 2019-04-17  5:41 UTC (permalink / raw)
  To: Thomas Monjalon, Wenzhuo Lu, Jingjing Wu, Bernard Iremonger,
	Adrien Mazarguil, Hemant Agrawal, Shreyansh Jain, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
> Subject: [PATCH] ethdev: deprecate legacy filter API
> 
> As stated in the deprecation notice from December 2016, "the legacy filter
> API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API is marked as
> deprecated, while still tested with testpmd and the tep_termination
> example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
> RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
> moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Shahaf Shuler <shahafs@mellanox.com>

It's about time 😊. 

> ---
>  app/test-pmd/cmdline.c               |  1 -
>  app/test-pmd/cmdline_flow.c          |  1 -
>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -
>  drivers/net/enic/enic_clsf.c         |  1 -
>  drivers/net/failsafe/failsafe_ops.c  | 20 +--------
>  drivers/net/i40e/i40e_ethdev.c       |  1 -
>  drivers/net/i40e/i40e_ethdev.h       |  1 -
>  drivers/net/i40e/i40e_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.h         |  1 -
>  drivers/net/mlx5/mlx5_flow.c         |  1 -
>  drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
>  drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
>  drivers/net/sfc/sfc_flow.c           |  1 -
>  examples/tep_termination/Makefile    |  2 +
>  examples/tep_termination/meson.build |  1 +
>  lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
>  lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
>  lib/librte_ethdev/rte_flow.h         | 11 ++++-
>  20 files changed, 75 insertions(+), 99 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 2ab03c111..3e405d262 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -44,7 +44,6 @@
>  #include <rte_ethdev.h>
>  #include <rte_string_fns.h>
>  #include <rte_devargs.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_flow.h>
>  #include <rte_gro.h>
> 
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 54ff1753c..3070e0e0d 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -15,7 +15,6 @@
> 
>  #include <rte_string_fns.h>
>  #include <rte_common.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev.h>
>  #include <rte_byteorder.h>
>  #include <cmdline_parse.h>
> diff --git a/drivers/net/dpaa2/dpaa2_flow.c
> b/drivers/net/dpaa2/dpaa2_flow.c index c94c7ef6b..98f68139b 100644
> --- a/drivers/net/dpaa2/dpaa2_flow.c
> +++ b/drivers/net/dpaa2/dpaa2_flow.c
> @@ -12,7 +12,6 @@
> 
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/dpaa2/dpaa2_mux.c
> b/drivers/net/dpaa2/dpaa2_mux.c index 1d043dcdc..e487c6b54 100644
> --- a/drivers/net/dpaa2/dpaa2_mux.c
> +++ b/drivers/net/dpaa2/dpaa2_mux.c
> @@ -12,7 +12,6 @@
> 
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c index
> 48c8e6264..53f57b01a 100644
> --- a/drivers/net/enic/enic_clsf.c
> +++ b/drivers/net/enic/enic_clsf.c
> @@ -11,7 +11,6 @@
>  #include <rte_tcp.h>
>  #include <rte_udp.h>
>  #include <rte_sctp.h>
> -#include <rte_eth_ctrl.h>
> 
>  #include "enic_compat.h"
>  #include "enic.h"
> diff --git a/drivers/net/failsafe/failsafe_ops.c
> b/drivers/net/failsafe/failsafe_ops.c
> index 65957a2e5..43d6a828f 100644
> --- a/drivers/net/failsafe/failsafe_ops.c
> +++ b/drivers/net/failsafe/failsafe_ops.c
> @@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,  }
> 
>  static int
> -fs_filter_ctrl(struct rte_eth_dev *dev,
> +fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
>  		enum rte_filter_type type,
>  		enum rte_filter_op op,
>  		void *arg)
>  {
> -	struct sub_device *sdev;
> -	uint8_t i;
> -	int ret;
> -
>  	if (type == RTE_ETH_FILTER_GENERIC &&
>  	    op == RTE_ETH_FILTER_GET) {
>  		*(const void **)arg = &fs_flow_ops;
>  		return 0;
>  	}
> -	fs_lock(dev, 0);
> -	FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
> -		DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d",
> i);
> -		ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op, arg);
> -		if ((ret = fs_err(sdev, ret))) {
> -			ERROR("Operation rte_eth_dev_filter_ctrl failed for
> sub_device %d"
> -			      " with error %d", i, ret);
> -			fs_unlock(dev, 0);
> -			return ret;
> -		}
> -	}
> -	fs_unlock(dev, 0);
> -	return 0;
> +	return -ENOTSUP;
>  }
> 
>  const struct eth_dev_ops failsafe_ops = { diff --git
> a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index
> 5b01dc1f0..f6fc0056c 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -24,7 +24,6 @@
>  #include <rte_memcpy.h>
>  #include <rte_alarm.h>
>  #include <rte_dev.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_hash_crc.h>
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.h
> b/drivers/net/i40e/i40e_ethdev.h index 930eb9aba..98550380e 100644
> --- a/drivers/net/i40e/i40e_ethdev.h
> +++ b/drivers/net/i40e/i40e_ethdev.h
> @@ -7,7 +7,6 @@
> 
>  #include <stdint.h>
> 
> -#include <rte_eth_ctrl.h>
>  #include <rte_time.h>
>  #include <rte_kvargs.h>
>  #include <rte_hash.h>
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 3694df255..5447e4ea5 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -15,7 +15,6 @@
>  #include <rte_ethdev_driver.h>
>  #include <rte_log.h>
>  #include <rte_malloc.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_flow_driver.h>
> 
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 038dc71d3..1dcdb31a0 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -28,7 +28,6 @@
> 
>  #include <rte_byteorder.h>
>  #include <rte_errno.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
> diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
> index 03a4bd05e..26465c66a 100644
> --- a/drivers/net/mlx4/mlx4_flow.h
> +++ b/drivers/net/mlx4/mlx4_flow.h
> @@ -18,7 +18,6 @@
>  #pragma GCC diagnostic error "-Wpedantic"
>  #endif
> 
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 1c78a5f8e..63420fc3e 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -21,7 +21,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c index ccb2f7593..04c969b73 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -19,7 +19,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c
> b/drivers/net/mlx5/mlx5_flow_verbs.c
> index 3956df1a7..dc074bfb3 100644
> --- a/drivers/net/mlx5/mlx5_flow_verbs.c
> +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
> @@ -20,7 +20,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c index
> cffcd9a4c..944296d7d 100644
> --- a/drivers/net/sfc/sfc_flow.c
> +++ b/drivers/net/sfc/sfc_flow.c
> @@ -11,7 +11,6 @@
>  #include <rte_tailq.h>
>  #include <rte_common.h>
>  #include <rte_ethdev_driver.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/examples/tep_termination/Makefile
> b/examples/tep_termination/Makefile
> index 2da41922f..222679bc9 100644
> --- a/examples/tep_termination/Makefile
> +++ b/examples/tep_termination/Makefile
> @@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
> LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
> 
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
> +CFLAGS += -Wno-deprecated-declarations
> 
>  build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
>  	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
> @@ -60,6 +61,7 @@ endif  CFLAGS += -DALLOW_EXPERIMENTAL_API
> CFLAGS += -O3  CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -Wno-deprecated-declarations
> 
>  include $(RTE_SDK)/mk/rte.extapp.mk
>  endif
> diff --git a/examples/tep_termination/meson.build
> b/examples/tep_termination/meson.build
> index 6d3636243..0e0cb44f0 100644
> --- a/examples/tep_termination/meson.build
> +++ b/examples/tep_termination/meson.build
> @@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
>  endif
>  deps += ['hash', 'vhost']
>  allow_experimental_apis = true
> +cflags += '-Wno-deprecated-declarations'
>  sources = files(
>  	'main.c', 'vxlan.c', 'vxlan_setup.c'
>  )
> diff --git a/lib/librte_ethdev/rte_eth_ctrl.h
> b/lib/librte_ethdev/rte_eth_ctrl.h
> index b3416341b..9fb0657e5 100644
> --- a/lib/librte_ethdev/rte_eth_ctrl.h
> +++ b/lib/librte_ethdev/rte_eth_ctrl.h
> @@ -8,55 +8,20 @@
>  #include <stdint.h>
>  #include <rte_common.h>
>  #include "rte_ether.h"
> +#include "rte_flow.h"
> 
>  /**
> + * @deprecated Please use rte_flow API instead of this legacy one.
>   * @file
>   *
>   * Ethernet device features and related data structures used
>   * by control APIs should be defined in this file.
> - *
>   */
> 
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
> 
> -/*
> - * A packet can be identified by hardware as different flow types. Different
> - * NIC hardwares may support different flow types.
> - * Basically, the NIC hardware identifies the flow type as deep protocol as
> - * possible, and exclusively. For example, if a packet is identified as
> - * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> - * though it is an actual IPV4 packet.
> - * Note that the flow types are used to define RSS offload types in
> - * rte_ethdev.h.
> - */
> -#define RTE_ETH_FLOW_UNKNOWN             0
> -#define RTE_ETH_FLOW_RAW                 1
> -#define RTE_ETH_FLOW_IPV4                2
> -#define RTE_ETH_FLOW_FRAG_IPV4           3
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> -#define RTE_ETH_FLOW_IPV6                8
> -#define RTE_ETH_FLOW_FRAG_IPV6           9
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12 -#define
> RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> -#define RTE_ETH_FLOW_L2_PAYLOAD         14
> -#define RTE_ETH_FLOW_IPV6_EX            15
> -#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> -#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> -#define RTE_ETH_FLOW_PORT               18
> -	/**< Consider device port number as a flow differentiator */
> -#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> -#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> -#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> -#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol
> based flow */
> -#define RTE_ETH_FLOW_MAX                23
> -
>  /**
>   * Feature filter types
>   */
> @@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
>  	uint16_t queue;          /**< Queue assigned to when match*/
>  };
> 
> -/**
> - * Tunneled type.
> - */
> -enum rte_eth_tunnel_type {
> -	RTE_TUNNEL_TYPE_NONE = 0,
> -	RTE_TUNNEL_TYPE_VXLAN,
> -	RTE_TUNNEL_TYPE_GENEVE,
> -	RTE_TUNNEL_TYPE_TEREDO,
> -	RTE_TUNNEL_TYPE_NVGRE,
> -	RTE_TUNNEL_TYPE_IP_IN_GRE,
> -	RTE_L2_TUNNEL_TYPE_E_TAG,
> -	RTE_TUNNEL_TYPE_VXLAN_GPE,
> -	RTE_TUNNEL_TYPE_MAX,
> -};
> -
>  /**
>   * filter type of tunneling packet
>   */
> @@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
>  	RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
>  };
> 
> -/**
> - * Hash function types.
> - */
> -enum rte_eth_hash_function {
> -	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> -	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> -	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> -	RTE_ETH_HASH_FUNCTION_MAX,
> -};
> -
>  #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
>  	(RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
>  /**
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 40a068fe8..ca3a990ae 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -158,7 +158,6 @@ extern "C" {
>  #include <rte_config.h>
> 
>  #include "rte_ether.h"
> -#include "rte_eth_ctrl.h"
>  #include "rte_dev_info.h"
> 
>  extern int rte_eth_dev_logtype;
> @@ -448,8 +447,43 @@ struct rte_eth_rss_conf {  };
> 
>  /*
> - * The RSS offload types are defined based on flow types which are defined
> - * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS
> offload
> + * A packet can be identified by hardware as different flow types.
> +Different
> + * NIC hardwares may support different flow types.
> + * Basically, the NIC hardware identifies the flow type as deep
> +protocol as
> + * possible, and exclusively. For example, if a packet is identified as
> + * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> +types,
> + * though it is an actual IPV4 packet.
> + * Note that the flow types are used to define RSS offload types.
> + */
> +#define RTE_ETH_FLOW_UNKNOWN             0
> +#define RTE_ETH_FLOW_RAW                 1
> +#define RTE_ETH_FLOW_IPV4                2
> +#define RTE_ETH_FLOW_FRAG_IPV4           3
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> +#define RTE_ETH_FLOW_IPV6                8
> +#define RTE_ETH_FLOW_FRAG_IPV6           9
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12 #define
> +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> +#define RTE_ETH_FLOW_L2_PAYLOAD         14
> +#define RTE_ETH_FLOW_IPV6_EX            15
> +#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> +#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> +#define RTE_ETH_FLOW_PORT               18
> +	/**< Consider device port number as a flow differentiator */
> +#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> +#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> +#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> +#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol
> based flow */
> +#define RTE_ETH_FLOW_MAX                23
> +
> +/*
> + * The RSS offload types are defined based on flow types.
> + * Different NIC hardwares may support different RSS offload
>   * types. The supported flow types or RSS offload types can be queried by
>   * rte_eth_dev_info_get().
>   */
> @@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
>  	uint8_t priority;          /**< VLAN User Priority. */
>  };
> 
> +/**
> + * Tunneled type.
> + */
> +enum rte_eth_tunnel_type {
> +	RTE_TUNNEL_TYPE_NONE = 0,
> +	RTE_TUNNEL_TYPE_VXLAN,
> +	RTE_TUNNEL_TYPE_GENEVE,
> +	RTE_TUNNEL_TYPE_TEREDO,
> +	RTE_TUNNEL_TYPE_NVGRE,
> +	RTE_TUNNEL_TYPE_IP_IN_GRE,
> +	RTE_L2_TUNNEL_TYPE_E_TAG,
> +	RTE_TUNNEL_TYPE_VXLAN_GPE,
> +	RTE_TUNNEL_TYPE_MAX,
> +};
> +
> +/* Deprecated API file for rte_eth_dev_filter_* functions */ #include
> +"rte_eth_ctrl.h"
> +
>  /**
>   *  Memory space that can be configured to store Flow Director filters
>   *  in the board memory.
> @@ -934,7 +986,7 @@ struct rte_eth_conf {
>  	/** Currently,Priority Flow Control(PFC) are supported,if DCB with
> PFC
>  	    is needed,and the variable must be set ETH_DCB_PFC_SUPPORT.
> */
>  	uint32_t dcb_capability_en;
> -	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
> +	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. DEPRECATED
> */
>  	struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
> };
> 
> @@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t
> port_id,
>   *   - (-ENODEV) if *port_id* invalid.
>   *   - (-EIO) if device is removed.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_supported(uint16_t port_id,
>  		enum rte_filter_type filter_type);
> 
> @@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
>   *   - (-EIO) if device is removed.
>   *   - others depends on the specific operations implementation.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type
> filter_type,
>  			enum rte_filter_op filter_op, void *arg);
> 
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index
> c0fe87924..63f84fca6 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -20,7 +20,6 @@
>  #include <rte_arp.h>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_icmp.h>
>  #include <rte_ip.h>
>  #include <rte_sctp.h>
> @@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
>  	uint64_t bytes; /**< Number of bytes through this rule [out]. */  };
> 
> +/**
> + * Hash function types.
> + */
> +enum rte_eth_hash_function {
> +	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> +	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> +	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> +	RTE_ETH_HASH_FUNCTION_MAX,
> +};
> +
>  /**
>   * RTE_FLOW_ACTION_TYPE_RSS
>   *
> --
> 2.21.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  5:41 ` Shahaf Shuler
@ 2019-04-17  5:41   ` Shahaf Shuler
  2019-04-17  5:59   ` Andrew Rybchenko
  2019-04-17  6:00   ` Jerin Jacob Kollanukkaran
  2 siblings, 0 replies; 18+ messages in thread
From: Shahaf Shuler @ 2019-04-17  5:41 UTC (permalink / raw)
  To: Thomas Monjalon, Wenzhuo Lu, Jingjing Wu, Bernard Iremonger,
	Adrien Mazarguil, Hemant Agrawal, Shreyansh Jain, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
> Subject: [PATCH] ethdev: deprecate legacy filter API
> 
> As stated in the deprecation notice from December 2016, "the legacy filter
> API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API is marked as
> deprecated, while still tested with testpmd and the tep_termination
> example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
> RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
> moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Shahaf Shuler <shahafs@mellanox.com>

It's about time 😊. 

> ---
>  app/test-pmd/cmdline.c               |  1 -
>  app/test-pmd/cmdline_flow.c          |  1 -
>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -
>  drivers/net/enic/enic_clsf.c         |  1 -
>  drivers/net/failsafe/failsafe_ops.c  | 20 +--------
>  drivers/net/i40e/i40e_ethdev.c       |  1 -
>  drivers/net/i40e/i40e_ethdev.h       |  1 -
>  drivers/net/i40e/i40e_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.h         |  1 -
>  drivers/net/mlx5/mlx5_flow.c         |  1 -
>  drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
>  drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
>  drivers/net/sfc/sfc_flow.c           |  1 -
>  examples/tep_termination/Makefile    |  2 +
>  examples/tep_termination/meson.build |  1 +
>  lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
>  lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
>  lib/librte_ethdev/rte_flow.h         | 11 ++++-
>  20 files changed, 75 insertions(+), 99 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 2ab03c111..3e405d262 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -44,7 +44,6 @@
>  #include <rte_ethdev.h>
>  #include <rte_string_fns.h>
>  #include <rte_devargs.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_flow.h>
>  #include <rte_gro.h>
> 
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 54ff1753c..3070e0e0d 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -15,7 +15,6 @@
> 
>  #include <rte_string_fns.h>
>  #include <rte_common.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev.h>
>  #include <rte_byteorder.h>
>  #include <cmdline_parse.h>
> diff --git a/drivers/net/dpaa2/dpaa2_flow.c
> b/drivers/net/dpaa2/dpaa2_flow.c index c94c7ef6b..98f68139b 100644
> --- a/drivers/net/dpaa2/dpaa2_flow.c
> +++ b/drivers/net/dpaa2/dpaa2_flow.c
> @@ -12,7 +12,6 @@
> 
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/dpaa2/dpaa2_mux.c
> b/drivers/net/dpaa2/dpaa2_mux.c index 1d043dcdc..e487c6b54 100644
> --- a/drivers/net/dpaa2/dpaa2_mux.c
> +++ b/drivers/net/dpaa2/dpaa2_mux.c
> @@ -12,7 +12,6 @@
> 
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c index
> 48c8e6264..53f57b01a 100644
> --- a/drivers/net/enic/enic_clsf.c
> +++ b/drivers/net/enic/enic_clsf.c
> @@ -11,7 +11,6 @@
>  #include <rte_tcp.h>
>  #include <rte_udp.h>
>  #include <rte_sctp.h>
> -#include <rte_eth_ctrl.h>
> 
>  #include "enic_compat.h"
>  #include "enic.h"
> diff --git a/drivers/net/failsafe/failsafe_ops.c
> b/drivers/net/failsafe/failsafe_ops.c
> index 65957a2e5..43d6a828f 100644
> --- a/drivers/net/failsafe/failsafe_ops.c
> +++ b/drivers/net/failsafe/failsafe_ops.c
> @@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,  }
> 
>  static int
> -fs_filter_ctrl(struct rte_eth_dev *dev,
> +fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
>  		enum rte_filter_type type,
>  		enum rte_filter_op op,
>  		void *arg)
>  {
> -	struct sub_device *sdev;
> -	uint8_t i;
> -	int ret;
> -
>  	if (type == RTE_ETH_FILTER_GENERIC &&
>  	    op == RTE_ETH_FILTER_GET) {
>  		*(const void **)arg = &fs_flow_ops;
>  		return 0;
>  	}
> -	fs_lock(dev, 0);
> -	FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
> -		DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d",
> i);
> -		ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op, arg);
> -		if ((ret = fs_err(sdev, ret))) {
> -			ERROR("Operation rte_eth_dev_filter_ctrl failed for
> sub_device %d"
> -			      " with error %d", i, ret);
> -			fs_unlock(dev, 0);
> -			return ret;
> -		}
> -	}
> -	fs_unlock(dev, 0);
> -	return 0;
> +	return -ENOTSUP;
>  }
> 
>  const struct eth_dev_ops failsafe_ops = { diff --git
> a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index
> 5b01dc1f0..f6fc0056c 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -24,7 +24,6 @@
>  #include <rte_memcpy.h>
>  #include <rte_alarm.h>
>  #include <rte_dev.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_hash_crc.h>
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.h
> b/drivers/net/i40e/i40e_ethdev.h index 930eb9aba..98550380e 100644
> --- a/drivers/net/i40e/i40e_ethdev.h
> +++ b/drivers/net/i40e/i40e_ethdev.h
> @@ -7,7 +7,6 @@
> 
>  #include <stdint.h>
> 
> -#include <rte_eth_ctrl.h>
>  #include <rte_time.h>
>  #include <rte_kvargs.h>
>  #include <rte_hash.h>
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 3694df255..5447e4ea5 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -15,7 +15,6 @@
>  #include <rte_ethdev_driver.h>
>  #include <rte_log.h>
>  #include <rte_malloc.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_flow_driver.h>
> 
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 038dc71d3..1dcdb31a0 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -28,7 +28,6 @@
> 
>  #include <rte_byteorder.h>
>  #include <rte_errno.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
> diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
> index 03a4bd05e..26465c66a 100644
> --- a/drivers/net/mlx4/mlx4_flow.h
> +++ b/drivers/net/mlx4/mlx4_flow.h
> @@ -18,7 +18,6 @@
>  #pragma GCC diagnostic error "-Wpedantic"
>  #endif
> 
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 1c78a5f8e..63420fc3e 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -21,7 +21,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c index ccb2f7593..04c969b73 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -19,7 +19,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c
> b/drivers/net/mlx5/mlx5_flow_verbs.c
> index 3956df1a7..dc074bfb3 100644
> --- a/drivers/net/mlx5/mlx5_flow_verbs.c
> +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
> @@ -20,7 +20,6 @@
> 
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c index
> cffcd9a4c..944296d7d 100644
> --- a/drivers/net/sfc/sfc_flow.c
> +++ b/drivers/net/sfc/sfc_flow.c
> @@ -11,7 +11,6 @@
>  #include <rte_tailq.h>
>  #include <rte_common.h>
>  #include <rte_ethdev_driver.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/examples/tep_termination/Makefile
> b/examples/tep_termination/Makefile
> index 2da41922f..222679bc9 100644
> --- a/examples/tep_termination/Makefile
> +++ b/examples/tep_termination/Makefile
> @@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
> LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
> 
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
> +CFLAGS += -Wno-deprecated-declarations
> 
>  build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
>  	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
> @@ -60,6 +61,7 @@ endif  CFLAGS += -DALLOW_EXPERIMENTAL_API
> CFLAGS += -O3  CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -Wno-deprecated-declarations
> 
>  include $(RTE_SDK)/mk/rte.extapp.mk
>  endif
> diff --git a/examples/tep_termination/meson.build
> b/examples/tep_termination/meson.build
> index 6d3636243..0e0cb44f0 100644
> --- a/examples/tep_termination/meson.build
> +++ b/examples/tep_termination/meson.build
> @@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
>  endif
>  deps += ['hash', 'vhost']
>  allow_experimental_apis = true
> +cflags += '-Wno-deprecated-declarations'
>  sources = files(
>  	'main.c', 'vxlan.c', 'vxlan_setup.c'
>  )
> diff --git a/lib/librte_ethdev/rte_eth_ctrl.h
> b/lib/librte_ethdev/rte_eth_ctrl.h
> index b3416341b..9fb0657e5 100644
> --- a/lib/librte_ethdev/rte_eth_ctrl.h
> +++ b/lib/librte_ethdev/rte_eth_ctrl.h
> @@ -8,55 +8,20 @@
>  #include <stdint.h>
>  #include <rte_common.h>
>  #include "rte_ether.h"
> +#include "rte_flow.h"
> 
>  /**
> + * @deprecated Please use rte_flow API instead of this legacy one.
>   * @file
>   *
>   * Ethernet device features and related data structures used
>   * by control APIs should be defined in this file.
> - *
>   */
> 
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
> 
> -/*
> - * A packet can be identified by hardware as different flow types. Different
> - * NIC hardwares may support different flow types.
> - * Basically, the NIC hardware identifies the flow type as deep protocol as
> - * possible, and exclusively. For example, if a packet is identified as
> - * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> - * though it is an actual IPV4 packet.
> - * Note that the flow types are used to define RSS offload types in
> - * rte_ethdev.h.
> - */
> -#define RTE_ETH_FLOW_UNKNOWN             0
> -#define RTE_ETH_FLOW_RAW                 1
> -#define RTE_ETH_FLOW_IPV4                2
> -#define RTE_ETH_FLOW_FRAG_IPV4           3
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> -#define RTE_ETH_FLOW_IPV6                8
> -#define RTE_ETH_FLOW_FRAG_IPV6           9
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12 -#define
> RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> -#define RTE_ETH_FLOW_L2_PAYLOAD         14
> -#define RTE_ETH_FLOW_IPV6_EX            15
> -#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> -#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> -#define RTE_ETH_FLOW_PORT               18
> -	/**< Consider device port number as a flow differentiator */
> -#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> -#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> -#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> -#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol
> based flow */
> -#define RTE_ETH_FLOW_MAX                23
> -
>  /**
>   * Feature filter types
>   */
> @@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
>  	uint16_t queue;          /**< Queue assigned to when match*/
>  };
> 
> -/**
> - * Tunneled type.
> - */
> -enum rte_eth_tunnel_type {
> -	RTE_TUNNEL_TYPE_NONE = 0,
> -	RTE_TUNNEL_TYPE_VXLAN,
> -	RTE_TUNNEL_TYPE_GENEVE,
> -	RTE_TUNNEL_TYPE_TEREDO,
> -	RTE_TUNNEL_TYPE_NVGRE,
> -	RTE_TUNNEL_TYPE_IP_IN_GRE,
> -	RTE_L2_TUNNEL_TYPE_E_TAG,
> -	RTE_TUNNEL_TYPE_VXLAN_GPE,
> -	RTE_TUNNEL_TYPE_MAX,
> -};
> -
>  /**
>   * filter type of tunneling packet
>   */
> @@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
>  	RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
>  };
> 
> -/**
> - * Hash function types.
> - */
> -enum rte_eth_hash_function {
> -	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> -	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> -	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> -	RTE_ETH_HASH_FUNCTION_MAX,
> -};
> -
>  #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
>  	(RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
>  /**
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 40a068fe8..ca3a990ae 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -158,7 +158,6 @@ extern "C" {
>  #include <rte_config.h>
> 
>  #include "rte_ether.h"
> -#include "rte_eth_ctrl.h"
>  #include "rte_dev_info.h"
> 
>  extern int rte_eth_dev_logtype;
> @@ -448,8 +447,43 @@ struct rte_eth_rss_conf {  };
> 
>  /*
> - * The RSS offload types are defined based on flow types which are defined
> - * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS
> offload
> + * A packet can be identified by hardware as different flow types.
> +Different
> + * NIC hardwares may support different flow types.
> + * Basically, the NIC hardware identifies the flow type as deep
> +protocol as
> + * possible, and exclusively. For example, if a packet is identified as
> + * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> +types,
> + * though it is an actual IPV4 packet.
> + * Note that the flow types are used to define RSS offload types.
> + */
> +#define RTE_ETH_FLOW_UNKNOWN             0
> +#define RTE_ETH_FLOW_RAW                 1
> +#define RTE_ETH_FLOW_IPV4                2
> +#define RTE_ETH_FLOW_FRAG_IPV4           3
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> +#define RTE_ETH_FLOW_IPV6                8
> +#define RTE_ETH_FLOW_FRAG_IPV6           9
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12 #define
> +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> +#define RTE_ETH_FLOW_L2_PAYLOAD         14
> +#define RTE_ETH_FLOW_IPV6_EX            15
> +#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> +#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> +#define RTE_ETH_FLOW_PORT               18
> +	/**< Consider device port number as a flow differentiator */
> +#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> +#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> +#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> +#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol
> based flow */
> +#define RTE_ETH_FLOW_MAX                23
> +
> +/*
> + * The RSS offload types are defined based on flow types.
> + * Different NIC hardwares may support different RSS offload
>   * types. The supported flow types or RSS offload types can be queried by
>   * rte_eth_dev_info_get().
>   */
> @@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
>  	uint8_t priority;          /**< VLAN User Priority. */
>  };
> 
> +/**
> + * Tunneled type.
> + */
> +enum rte_eth_tunnel_type {
> +	RTE_TUNNEL_TYPE_NONE = 0,
> +	RTE_TUNNEL_TYPE_VXLAN,
> +	RTE_TUNNEL_TYPE_GENEVE,
> +	RTE_TUNNEL_TYPE_TEREDO,
> +	RTE_TUNNEL_TYPE_NVGRE,
> +	RTE_TUNNEL_TYPE_IP_IN_GRE,
> +	RTE_L2_TUNNEL_TYPE_E_TAG,
> +	RTE_TUNNEL_TYPE_VXLAN_GPE,
> +	RTE_TUNNEL_TYPE_MAX,
> +};
> +
> +/* Deprecated API file for rte_eth_dev_filter_* functions */ #include
> +"rte_eth_ctrl.h"
> +
>  /**
>   *  Memory space that can be configured to store Flow Director filters
>   *  in the board memory.
> @@ -934,7 +986,7 @@ struct rte_eth_conf {
>  	/** Currently,Priority Flow Control(PFC) are supported,if DCB with
> PFC
>  	    is needed,and the variable must be set ETH_DCB_PFC_SUPPORT.
> */
>  	uint32_t dcb_capability_en;
> -	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
> +	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. DEPRECATED
> */
>  	struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
> };
> 
> @@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t
> port_id,
>   *   - (-ENODEV) if *port_id* invalid.
>   *   - (-EIO) if device is removed.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_supported(uint16_t port_id,
>  		enum rte_filter_type filter_type);
> 
> @@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
>   *   - (-EIO) if device is removed.
>   *   - others depends on the specific operations implementation.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type
> filter_type,
>  			enum rte_filter_op filter_op, void *arg);
> 
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index
> c0fe87924..63f84fca6 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -20,7 +20,6 @@
>  #include <rte_arp.h>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_icmp.h>
>  #include <rte_ip.h>
>  #include <rte_sctp.h>
> @@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
>  	uint64_t bytes; /**< Number of bytes through this rule [out]. */  };
> 
> +/**
> + * Hash function types.
> + */
> +enum rte_eth_hash_function {
> +	RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> +	RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> +	RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> +	RTE_ETH_HASH_FUNCTION_MAX,
> +};
> +
>  /**
>   * RTE_FLOW_ACTION_TYPE_RSS
>   *
> --
> 2.21.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  5:41 ` Shahaf Shuler
  2019-04-17  5:41   ` Shahaf Shuler
@ 2019-04-17  5:59   ` Andrew Rybchenko
  2019-04-17  5:59     ` Andrew Rybchenko
  2019-04-17  6:00   ` Jerin Jacob Kollanukkaran
  2 siblings, 1 reply; 18+ messages in thread
From: Andrew Rybchenko @ 2019-04-17  5:59 UTC (permalink / raw)
  To: Shahaf Shuler, Thomas Monjalon, Wenzhuo Lu, Jingjing Wu,
	Bernard Iremonger, Adrien Mazarguil, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Yongseok Koh, John McNamara,
	Pablo de Lara, Bruce Richardson, Harry van Haaren, Xiaoyun Li,
	Ferruh Yigit
  Cc: dev

On 4/17/19 8:41 AM, Shahaf Shuler wrote:
> Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
>> Subject: [PATCH] ethdev: deprecate legacy filter API
>>
>> As stated in the deprecation notice from December 2016, "the legacy filter
>> API, including rte_eth_dev_filter_supported(),
>> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
>> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
>> by the generic flow API (rte_flow)".
>>
>> After a long wait of more than two years, the legacy filter API is marked as
>> deprecated, while still tested with testpmd and the tep_termination
>> example.
>>
>> The next step will be to announce a deadline for complete removal.
>> As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
>> RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
>> moved to rte_ethdev.h and rte_flow.h.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
>
> It's about time 😊.

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  5:59   ` Andrew Rybchenko
@ 2019-04-17  5:59     ` Andrew Rybchenko
  0 siblings, 0 replies; 18+ messages in thread
From: Andrew Rybchenko @ 2019-04-17  5:59 UTC (permalink / raw)
  To: Shahaf Shuler, Thomas Monjalon, Wenzhuo Lu, Jingjing Wu,
	Bernard Iremonger, Adrien Mazarguil, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Yongseok Koh, John McNamara,
	Pablo de Lara, Bruce Richardson, Harry van Haaren, Xiaoyun Li,
	Ferruh Yigit
  Cc: dev

On 4/17/19 8:41 AM, Shahaf Shuler wrote:
> Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
>> Subject: [PATCH] ethdev: deprecate legacy filter API
>>
>> As stated in the deprecation notice from December 2016, "the legacy filter
>> API, including rte_eth_dev_filter_supported(),
>> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
>> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
>> by the generic flow API (rte_flow)".
>>
>> After a long wait of more than two years, the legacy filter API is marked as
>> deprecated, while still tested with testpmd and the tep_termination
>> example.
>>
>> The next step will be to announce a deadline for complete removal.
>> As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
>> RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
>> moved to rte_ethdev.h and rte_flow.h.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
>
> It's about time 😊.

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  5:41 ` Shahaf Shuler
  2019-04-17  5:41   ` Shahaf Shuler
  2019-04-17  5:59   ` Andrew Rybchenko
@ 2019-04-17  6:00   ` Jerin Jacob Kollanukkaran
  2019-04-17  6:00     ` Jerin Jacob Kollanukkaran
  2 siblings, 1 reply; 18+ messages in thread
From: Jerin Jacob Kollanukkaran @ 2019-04-17  6:00 UTC (permalink / raw)
  To: Shahaf Shuler, Thomas Monjalon, Wenzhuo Lu, Jingjing Wu,
	Bernard Iremonger, Adrien Mazarguil, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Yongseok Koh,
	Andrew Rybchenko, John McNamara, Pablo de Lara, Bruce Richardson,
	Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Shahaf Shuler
> Sent: Wednesday, April 17, 2019 11:11 AM
> To: Thomas Monjalon <thomas@monjalon.net>; Wenzhuo Lu
> <wenzhuo.lu@intel.com>; Jingjing Wu <jingjing.wu@intel.com>; Bernard
> Iremonger <bernard.iremonger@intel.com>; Adrien Mazarguil
> <adrien.mazarguil@6wind.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Shreyansh Jain <shreyansh.jain@nxp.com>; John
> Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>; Gaetan
> Rivet <gaetan.rivet@6wind.com>; Beilei Xing <beilei.xing@intel.com>; Qi Zhang
> <qi.z.zhang@intel.com>; Matan Azrad <matan@mellanox.com>; Yongseok Koh
> <yskoh@mellanox.com>; Andrew Rybchenko <arybchenko@solarflare.com>;
> John McNamara <john.mcnamara@intel.com>; Pablo de Lara
> <pablo.de.lara.guarch@intel.com>; Bruce Richardson
> <bruce.richardson@intel.com>; Harry van Haaren
> <harry.van.haaren@intel.com>; Xiaoyun Li <xiaoyun.li@intel.com>; Ferruh Yigit
> <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
> 
> Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
> > Subject: [PATCH] ethdev: deprecate legacy filter API
> >
> > As stated in the deprecation notice from December 2016, "the legacy
> > filter API, including rte_eth_dev_filter_supported(),
> > rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> > FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> > by the generic flow API (rte_flow)".
> >
> > After a long wait of more than two years, the legacy filter API is
> > marked as deprecated, while still tested with testpmd and the
> > tep_termination example.
> >
> > The next step will be to announce a deadline for complete removal.
> > As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
> > RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
> moved to
> > rte_ethdev.h and rte_flow.h.
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Acked-by: Shahaf Shuler <shahafs@mellanox.com>

Acked-by: Jerin Jacob <jerinj@marvell.com>


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  6:00   ` Jerin Jacob Kollanukkaran
@ 2019-04-17  6:00     ` Jerin Jacob Kollanukkaran
  0 siblings, 0 replies; 18+ messages in thread
From: Jerin Jacob Kollanukkaran @ 2019-04-17  6:00 UTC (permalink / raw)
  To: Shahaf Shuler, Thomas Monjalon, Wenzhuo Lu, Jingjing Wu,
	Bernard Iremonger, Adrien Mazarguil, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Yongseok Koh,
	Andrew Rybchenko, John McNamara, Pablo de Lara, Bruce Richardson,
	Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Shahaf Shuler
> Sent: Wednesday, April 17, 2019 11:11 AM
> To: Thomas Monjalon <thomas@monjalon.net>; Wenzhuo Lu
> <wenzhuo.lu@intel.com>; Jingjing Wu <jingjing.wu@intel.com>; Bernard
> Iremonger <bernard.iremonger@intel.com>; Adrien Mazarguil
> <adrien.mazarguil@6wind.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Shreyansh Jain <shreyansh.jain@nxp.com>; John
> Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>; Gaetan
> Rivet <gaetan.rivet@6wind.com>; Beilei Xing <beilei.xing@intel.com>; Qi Zhang
> <qi.z.zhang@intel.com>; Matan Azrad <matan@mellanox.com>; Yongseok Koh
> <yskoh@mellanox.com>; Andrew Rybchenko <arybchenko@solarflare.com>;
> John McNamara <john.mcnamara@intel.com>; Pablo de Lara
> <pablo.de.lara.guarch@intel.com>; Bruce Richardson
> <bruce.richardson@intel.com>; Harry van Haaren
> <harry.van.haaren@intel.com>; Xiaoyun Li <xiaoyun.li@intel.com>; Ferruh Yigit
> <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
> 
> Wednesday, April 17, 2019 3:36 AM, Thomas Monjalon:
> > Subject: [PATCH] ethdev: deprecate legacy filter API
> >
> > As stated in the deprecation notice from December 2016, "the legacy
> > filter API, including rte_eth_dev_filter_supported(),
> > rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> > FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> > by the generic flow API (rte_flow)".
> >
> > After a long wait of more than two years, the legacy filter API is
> > marked as deprecated, while still tested with testpmd and the
> > tep_termination example.
> >
> > The next step will be to announce a deadline for complete removal.
> > As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*,
> > RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are
> moved to
> > rte_ethdev.h and rte_flow.h.
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Acked-by: Shahaf Shuler <shahafs@mellanox.com>

Acked-by: Jerin Jacob <jerinj@marvell.com>


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
  2019-04-17  0:36 ` Thomas Monjalon
  2019-04-17  5:41 ` Shahaf Shuler
@ 2019-04-17 16:54 ` Stephen Hemminger
  2019-04-17 16:54   ` Stephen Hemminger
  2019-04-18  9:24 ` [dpdk-dev] [EXT] " Hemant Agrawal
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 18+ messages in thread
From: Stephen Hemminger @ 2019-04-17 16:54 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit,
	dev

On Wed, 17 Apr 2019 02:36:27 +0200
Thomas Monjalon <thomas@monjalon.net> wrote:

> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Stephen Hemminger <stephen@networkplumber.org>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17 16:54 ` Stephen Hemminger
@ 2019-04-17 16:54   ` Stephen Hemminger
  0 siblings, 0 replies; 18+ messages in thread
From: Stephen Hemminger @ 2019-04-17 16:54 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit,
	dev

On Wed, 17 Apr 2019 02:36:27 +0200
Thomas Monjalon <thomas@monjalon.net> wrote:

> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Stephen Hemminger <stephen@networkplumber.org>


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
                   ` (2 preceding siblings ...)
  2019-04-17 16:54 ` Stephen Hemminger
@ 2019-04-18  9:24 ` Hemant Agrawal
  2019-04-18  9:24   ` Hemant Agrawal
  2019-04-18 12:37 ` [dpdk-dev] " Adrien Mazarguil
  2019-04-18 17:58 ` Ajit Khaparde
  5 siblings, 1 reply; 18+ messages in thread
From: Hemant Agrawal @ 2019-04-18  9:24 UTC (permalink / raw)
  To: Thomas Monjalon, Wenzhuo Lu, Jingjing Wu, Bernard Iremonger,
	Adrien Mazarguil, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -

Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH] ethdev: deprecate legacy filter API
  2019-04-18  9:24 ` [dpdk-dev] [EXT] " Hemant Agrawal
@ 2019-04-18  9:24   ` Hemant Agrawal
  0 siblings, 0 replies; 18+ messages in thread
From: Hemant Agrawal @ 2019-04-18  9:24 UTC (permalink / raw)
  To: Thomas Monjalon, Wenzhuo Lu, Jingjing Wu, Bernard Iremonger,
	Adrien Mazarguil, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit
  Cc: dev

>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -

Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
                   ` (3 preceding siblings ...)
  2019-04-18  9:24 ` [dpdk-dev] [EXT] " Hemant Agrawal
@ 2019-04-18 12:37 ` Adrien Mazarguil
  2019-04-18 12:37   ` Adrien Mazarguil
  2019-04-18 17:58 ` Ajit Khaparde
  5 siblings, 1 reply; 18+ messages in thread
From: Adrien Mazarguil @ 2019-04-18 12:37 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler, Yongseok Koh,
	Andrew Rybchenko, John McNamara, Pablo de Lara, Bruce Richardson,
	Harry van Haaren, Xiaoyun Li, Ferruh Yigit, dev

On Wed, Apr 17, 2019 at 02:36:27AM +0200, Thomas Monjalon wrote:
> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

-- 
Adrien Mazarguil
6WIND

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-18 12:37 ` [dpdk-dev] " Adrien Mazarguil
@ 2019-04-18 12:37   ` Adrien Mazarguil
  0 siblings, 0 replies; 18+ messages in thread
From: Adrien Mazarguil @ 2019-04-18 12:37 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Hemant Agrawal,
	Shreyansh Jain, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler, Yongseok Koh,
	Andrew Rybchenko, John McNamara, Pablo de Lara, Bruce Richardson,
	Harry van Haaren, Xiaoyun Li, Ferruh Yigit, dev

On Wed, Apr 17, 2019 at 02:36:27AM +0200, Thomas Monjalon wrote:
> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
> 
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
> 
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

-- 
Adrien Mazarguil
6WIND

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
                   ` (4 preceding siblings ...)
  2019-04-18 12:37 ` [dpdk-dev] " Adrien Mazarguil
@ 2019-04-18 17:58 ` Ajit Khaparde
  2019-04-18 17:58   ` Ajit Khaparde
  2019-04-18 18:16   ` Ferruh Yigit
  5 siblings, 2 replies; 18+ messages in thread
From: Ajit Khaparde @ 2019-04-18 17:58 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit,
	dev

On Tue, Apr 16, 2019 at 5:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:

> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
>
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
>
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>


> ---
>  app/test-pmd/cmdline.c               |  1 -
>  app/test-pmd/cmdline_flow.c          |  1 -
>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -
>  drivers/net/enic/enic_clsf.c         |  1 -
>  drivers/net/failsafe/failsafe_ops.c  | 20 +--------
>  drivers/net/i40e/i40e_ethdev.c       |  1 -
>  drivers/net/i40e/i40e_ethdev.h       |  1 -
>  drivers/net/i40e/i40e_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.h         |  1 -
>  drivers/net/mlx5/mlx5_flow.c         |  1 -
>  drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
>  drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
>  drivers/net/sfc/sfc_flow.c           |  1 -
>  examples/tep_termination/Makefile    |  2 +
>  examples/tep_termination/meson.build |  1 +
>  lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
>  lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
>  lib/librte_ethdev/rte_flow.h         | 11 ++++-
>  20 files changed, 75 insertions(+), 99 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 2ab03c111..3e405d262 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -44,7 +44,6 @@
>  #include <rte_ethdev.h>
>  #include <rte_string_fns.h>
>  #include <rte_devargs.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_flow.h>
>  #include <rte_gro.h>
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 54ff1753c..3070e0e0d 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -15,7 +15,6 @@
>
>  #include <rte_string_fns.h>
>  #include <rte_common.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev.h>
>  #include <rte_byteorder.h>
>  #include <cmdline_parse.h>
> diff --git a/drivers/net/dpaa2/dpaa2_flow.c
> b/drivers/net/dpaa2/dpaa2_flow.c
> index c94c7ef6b..98f68139b 100644
> --- a/drivers/net/dpaa2/dpaa2_flow.c
> +++ b/drivers/net/dpaa2/dpaa2_flow.c
> @@ -12,7 +12,6 @@
>
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c
> index 1d043dcdc..e487c6b54 100644
> --- a/drivers/net/dpaa2/dpaa2_mux.c
> +++ b/drivers/net/dpaa2/dpaa2_mux.c
> @@ -12,7 +12,6 @@
>
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
> index 48c8e6264..53f57b01a 100644
> --- a/drivers/net/enic/enic_clsf.c
> +++ b/drivers/net/enic/enic_clsf.c
> @@ -11,7 +11,6 @@
>  #include <rte_tcp.h>
>  #include <rte_udp.h>
>  #include <rte_sctp.h>
> -#include <rte_eth_ctrl.h>
>
>  #include "enic_compat.h"
>  #include "enic.h"
> diff --git a/drivers/net/failsafe/failsafe_ops.c
> b/drivers/net/failsafe/failsafe_ops.c
> index 65957a2e5..43d6a828f 100644
> --- a/drivers/net/failsafe/failsafe_ops.c
> +++ b/drivers/net/failsafe/failsafe_ops.c
> @@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,
>  }
>
>  static int
> -fs_filter_ctrl(struct rte_eth_dev *dev,
> +fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
>                 enum rte_filter_type type,
>                 enum rte_filter_op op,
>                 void *arg)
>  {
> -       struct sub_device *sdev;
> -       uint8_t i;
> -       int ret;
> -
>         if (type == RTE_ETH_FILTER_GENERIC &&
>             op == RTE_ETH_FILTER_GET) {
>                 *(const void **)arg = &fs_flow_ops;
>                 return 0;
>         }
> -       fs_lock(dev, 0);
> -       FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
> -               DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d",
> i);
> -               ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op,
> arg);
> -               if ((ret = fs_err(sdev, ret))) {
> -                       ERROR("Operation rte_eth_dev_filter_ctrl failed
> for sub_device %d"
> -                             " with error %d", i, ret);
> -                       fs_unlock(dev, 0);
> -                       return ret;
> -               }
> -       }
> -       fs_unlock(dev, 0);
> -       return 0;
> +       return -ENOTSUP;
>  }
>
>  const struct eth_dev_ops failsafe_ops = {
> diff --git a/drivers/net/i40e/i40e_ethdev.c
> b/drivers/net/i40e/i40e_ethdev.c
> index 5b01dc1f0..f6fc0056c 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -24,7 +24,6 @@
>  #include <rte_memcpy.h>
>  #include <rte_alarm.h>
>  #include <rte_dev.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_hash_crc.h>
>
> diff --git a/drivers/net/i40e/i40e_ethdev.h
> b/drivers/net/i40e/i40e_ethdev.h
> index 930eb9aba..98550380e 100644
> --- a/drivers/net/i40e/i40e_ethdev.h
> +++ b/drivers/net/i40e/i40e_ethdev.h
> @@ -7,7 +7,6 @@
>
>  #include <stdint.h>
>
> -#include <rte_eth_ctrl.h>
>  #include <rte_time.h>
>  #include <rte_kvargs.h>
>  #include <rte_hash.h>
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 3694df255..5447e4ea5 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -15,7 +15,6 @@
>  #include <rte_ethdev_driver.h>
>  #include <rte_log.h>
>  #include <rte_malloc.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_flow_driver.h>
>
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 038dc71d3..1dcdb31a0 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -28,7 +28,6 @@
>
>  #include <rte_byteorder.h>
>  #include <rte_errno.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
> diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
> index 03a4bd05e..26465c66a 100644
> --- a/drivers/net/mlx4/mlx4_flow.h
> +++ b/drivers/net/mlx4/mlx4_flow.h
> @@ -18,7 +18,6 @@
>  #pragma GCC diagnostic error "-Wpedantic"
>  #endif
>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 1c78a5f8e..63420fc3e 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -21,7 +21,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c
> index ccb2f7593..04c969b73 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -19,7 +19,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c
> b/drivers/net/mlx5/mlx5_flow_verbs.c
> index 3956df1a7..dc074bfb3 100644
> --- a/drivers/net/mlx5/mlx5_flow_verbs.c
> +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
> @@ -20,7 +20,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
> index cffcd9a4c..944296d7d 100644
> --- a/drivers/net/sfc/sfc_flow.c
> +++ b/drivers/net/sfc/sfc_flow.c
> @@ -11,7 +11,6 @@
>  #include <rte_tailq.h>
>  #include <rte_common.h>
>  #include <rte_ethdev_driver.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/examples/tep_termination/Makefile
> b/examples/tep_termination/Makefile
> index 2da41922f..222679bc9 100644
> --- a/examples/tep_termination/Makefile
> +++ b/examples/tep_termination/Makefile
> @@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
>  LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
>
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
> +CFLAGS += -Wno-deprecated-declarations
>
>  build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
>         $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
> @@ -60,6 +61,7 @@ endif
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
>  CFLAGS += -O3
>  CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -Wno-deprecated-declarations
>
>  include $(RTE_SDK)/mk/rte.extapp.mk
>  endif
> diff --git a/examples/tep_termination/meson.build
> b/examples/tep_termination/meson.build
> index 6d3636243..0e0cb44f0 100644
> --- a/examples/tep_termination/meson.build
> +++ b/examples/tep_termination/meson.build
> @@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
>  endif
>  deps += ['hash', 'vhost']
>  allow_experimental_apis = true
> +cflags += '-Wno-deprecated-declarations'
>  sources = files(
>         'main.c', 'vxlan.c', 'vxlan_setup.c'
>  )
> diff --git a/lib/librte_ethdev/rte_eth_ctrl.h
> b/lib/librte_ethdev/rte_eth_ctrl.h
> index b3416341b..9fb0657e5 100644
> --- a/lib/librte_ethdev/rte_eth_ctrl.h
> +++ b/lib/librte_ethdev/rte_eth_ctrl.h
> @@ -8,55 +8,20 @@
>  #include <stdint.h>
>  #include <rte_common.h>
>  #include "rte_ether.h"
> +#include "rte_flow.h"
>
>  /**
> + * @deprecated Please use rte_flow API instead of this legacy one.
>   * @file
>   *
>   * Ethernet device features and related data structures used
>   * by control APIs should be defined in this file.
> - *
>   */
>
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
>
> -/*
> - * A packet can be identified by hardware as different flow types.
> Different
> - * NIC hardwares may support different flow types.
> - * Basically, the NIC hardware identifies the flow type as deep protocol
> as
> - * possible, and exclusively. For example, if a packet is identified as
> - * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> - * though it is an actual IPV4 packet.
> - * Note that the flow types are used to define RSS offload types in
> - * rte_ethdev.h.
> - */
> -#define RTE_ETH_FLOW_UNKNOWN             0
> -#define RTE_ETH_FLOW_RAW                 1
> -#define RTE_ETH_FLOW_IPV4                2
> -#define RTE_ETH_FLOW_FRAG_IPV4           3
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> -#define RTE_ETH_FLOW_IPV6                8
> -#define RTE_ETH_FLOW_FRAG_IPV6           9
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> -#define RTE_ETH_FLOW_L2_PAYLOAD         14
> -#define RTE_ETH_FLOW_IPV6_EX            15
> -#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> -#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> -#define RTE_ETH_FLOW_PORT               18
> -       /**< Consider device port number as a flow differentiator */
> -#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> -#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> -#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> -#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based
> flow */
> -#define RTE_ETH_FLOW_MAX                23
> -
>  /**
>   * Feature filter types
>   */
> @@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
>         uint16_t queue;          /**< Queue assigned to when match*/
>  };
>
> -/**
> - * Tunneled type.
> - */
> -enum rte_eth_tunnel_type {
> -       RTE_TUNNEL_TYPE_NONE = 0,
> -       RTE_TUNNEL_TYPE_VXLAN,
> -       RTE_TUNNEL_TYPE_GENEVE,
> -       RTE_TUNNEL_TYPE_TEREDO,
> -       RTE_TUNNEL_TYPE_NVGRE,
> -       RTE_TUNNEL_TYPE_IP_IN_GRE,
> -       RTE_L2_TUNNEL_TYPE_E_TAG,
> -       RTE_TUNNEL_TYPE_VXLAN_GPE,
> -       RTE_TUNNEL_TYPE_MAX,
> -};
> -
>  /**
>   * filter type of tunneling packet
>   */
> @@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
>         RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
>  };
>
> -/**
> - * Hash function types.
> - */
> -enum rte_eth_hash_function {
> -       RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> -       RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> -       RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> -       RTE_ETH_HASH_FUNCTION_MAX,
> -};
> -
>  #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
>         (RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
>  /**
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index 40a068fe8..ca3a990ae 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -158,7 +158,6 @@ extern "C" {
>  #include <rte_config.h>
>
>  #include "rte_ether.h"
> -#include "rte_eth_ctrl.h"
>  #include "rte_dev_info.h"
>
>  extern int rte_eth_dev_logtype;
> @@ -448,8 +447,43 @@ struct rte_eth_rss_conf {
>  };
>
>  /*
> - * The RSS offload types are defined based on flow types which are defined
> - * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS
> offload
> + * A packet can be identified by hardware as different flow types.
> Different
> + * NIC hardwares may support different flow types.
> + * Basically, the NIC hardware identifies the flow type as deep protocol
> as
> + * possible, and exclusively. For example, if a packet is identified as
> + * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> + * though it is an actual IPV4 packet.
> + * Note that the flow types are used to define RSS offload types.
> + */
> +#define RTE_ETH_FLOW_UNKNOWN             0
> +#define RTE_ETH_FLOW_RAW                 1
> +#define RTE_ETH_FLOW_IPV4                2
> +#define RTE_ETH_FLOW_FRAG_IPV4           3
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> +#define RTE_ETH_FLOW_IPV6                8
> +#define RTE_ETH_FLOW_FRAG_IPV6           9
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> +#define RTE_ETH_FLOW_L2_PAYLOAD         14
> +#define RTE_ETH_FLOW_IPV6_EX            15
> +#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> +#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> +#define RTE_ETH_FLOW_PORT               18
> +       /**< Consider device port number as a flow differentiator */
> +#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> +#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> +#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> +#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based
> flow */
> +#define RTE_ETH_FLOW_MAX                23
> +
> +/*
> + * The RSS offload types are defined based on flow types.
> + * Different NIC hardwares may support different RSS offload
>   * types. The supported flow types or RSS offload types can be queried by
>   * rte_eth_dev_info_get().
>   */
> @@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
>         uint8_t priority;          /**< VLAN User Priority. */
>  };
>
> +/**
> + * Tunneled type.
> + */
> +enum rte_eth_tunnel_type {
> +       RTE_TUNNEL_TYPE_NONE = 0,
> +       RTE_TUNNEL_TYPE_VXLAN,
> +       RTE_TUNNEL_TYPE_GENEVE,
> +       RTE_TUNNEL_TYPE_TEREDO,
> +       RTE_TUNNEL_TYPE_NVGRE,
> +       RTE_TUNNEL_TYPE_IP_IN_GRE,
> +       RTE_L2_TUNNEL_TYPE_E_TAG,
> +       RTE_TUNNEL_TYPE_VXLAN_GPE,
> +       RTE_TUNNEL_TYPE_MAX,
> +};
> +
> +/* Deprecated API file for rte_eth_dev_filter_* functions */
> +#include "rte_eth_ctrl.h"
> +
>  /**
>   *  Memory space that can be configured to store Flow Director filters
>   *  in the board memory.
> @@ -934,7 +986,7 @@ struct rte_eth_conf {
>         /** Currently,Priority Flow Control(PFC) are supported,if DCB with
> PFC
>             is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */
>         uint32_t dcb_capability_en;
> -       struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
> +       struct rte_fdir_conf fdir_conf; /**< FDIR configuration.
> DEPRECATED */
>         struct rte_intr_conf intr_conf; /**< Interrupt mode configuration.
> */
>  };
>
> @@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t port_id,
>   *   - (-ENODEV) if *port_id* invalid.
>   *   - (-EIO) if device is removed.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_supported(uint16_t port_id,
>                 enum rte_filter_type filter_type);
>
> @@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
>   *   - (-EIO) if device is removed.
>   *   - others depends on the specific operations implementation.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type
> filter_type,
>                         enum rte_filter_op filter_op, void *arg);
>
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index c0fe87924..63f84fca6 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -20,7 +20,6 @@
>  #include <rte_arp.h>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_icmp.h>
>  #include <rte_ip.h>
>  #include <rte_sctp.h>
> @@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
>         uint64_t bytes; /**< Number of bytes through this rule [out]. */
>  };
>
> +/**
> + * Hash function types.
> + */
> +enum rte_eth_hash_function {
> +       RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> +       RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> +       RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> +       RTE_ETH_HASH_FUNCTION_MAX,
> +};
> +
>  /**
>   * RTE_FLOW_ACTION_TYPE_RSS
>   *
> --
> 2.21.0
>
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-18 17:58 ` Ajit Khaparde
@ 2019-04-18 17:58   ` Ajit Khaparde
  2019-04-18 18:16   ` Ferruh Yigit
  1 sibling, 0 replies; 18+ messages in thread
From: Ajit Khaparde @ 2019-04-18 17:58 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, Ferruh Yigit,
	dev

On Tue, Apr 16, 2019 at 5:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:

> As stated in the deprecation notice from December 2016,
> "the legacy filter API, including rte_eth_dev_filter_supported(),
> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
> by the generic flow API (rte_flow)".
>
> After a long wait of more than two years, the legacy filter API
> is marked as deprecated, while still tested with testpmd and
> the tep_termination example.
>
> The next step will be to announce a deadline for complete removal.
> As preparation of the removal of rte_eth_ctrl.h,
> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
> are moved to rte_ethdev.h and rte_flow.h.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>


> ---
>  app/test-pmd/cmdline.c               |  1 -
>  app/test-pmd/cmdline_flow.c          |  1 -
>  drivers/net/dpaa2/dpaa2_flow.c       |  1 -
>  drivers/net/dpaa2/dpaa2_mux.c        |  1 -
>  drivers/net/enic/enic_clsf.c         |  1 -
>  drivers/net/failsafe/failsafe_ops.c  | 20 +--------
>  drivers/net/i40e/i40e_ethdev.c       |  1 -
>  drivers/net/i40e/i40e_ethdev.h       |  1 -
>  drivers/net/i40e/i40e_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.c         |  1 -
>  drivers/net/mlx4/mlx4_flow.h         |  1 -
>  drivers/net/mlx5/mlx5_flow.c         |  1 -
>  drivers/net/mlx5/mlx5_flow_dv.c      |  1 -
>  drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -
>  drivers/net/sfc/sfc_flow.c           |  1 -
>  examples/tep_termination/Makefile    |  2 +
>  examples/tep_termination/meson.build |  1 +
>  lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------
>  lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--
>  lib/librte_ethdev/rte_flow.h         | 11 ++++-
>  20 files changed, 75 insertions(+), 99 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 2ab03c111..3e405d262 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -44,7 +44,6 @@
>  #include <rte_ethdev.h>
>  #include <rte_string_fns.h>
>  #include <rte_devargs.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_flow.h>
>  #include <rte_gro.h>
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 54ff1753c..3070e0e0d 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -15,7 +15,6 @@
>
>  #include <rte_string_fns.h>
>  #include <rte_common.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev.h>
>  #include <rte_byteorder.h>
>  #include <cmdline_parse.h>
> diff --git a/drivers/net/dpaa2/dpaa2_flow.c
> b/drivers/net/dpaa2/dpaa2_flow.c
> index c94c7ef6b..98f68139b 100644
> --- a/drivers/net/dpaa2/dpaa2_flow.c
> +++ b/drivers/net/dpaa2/dpaa2_flow.c
> @@ -12,7 +12,6 @@
>
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c
> index 1d043dcdc..e487c6b54 100644
> --- a/drivers/net/dpaa2/dpaa2_mux.c
> +++ b/drivers/net/dpaa2/dpaa2_mux.c
> @@ -12,7 +12,6 @@
>
>  #include <rte_ethdev.h>
>  #include <rte_log.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_malloc.h>
>  #include <rte_flow_driver.h>
>  #include <rte_tailq.h>
> diff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c
> index 48c8e6264..53f57b01a 100644
> --- a/drivers/net/enic/enic_clsf.c
> +++ b/drivers/net/enic/enic_clsf.c
> @@ -11,7 +11,6 @@
>  #include <rte_tcp.h>
>  #include <rte_udp.h>
>  #include <rte_sctp.h>
> -#include <rte_eth_ctrl.h>
>
>  #include "enic_compat.h"
>  #include "enic.h"
> diff --git a/drivers/net/failsafe/failsafe_ops.c
> b/drivers/net/failsafe/failsafe_ops.c
> index 65957a2e5..43d6a828f 100644
> --- a/drivers/net/failsafe/failsafe_ops.c
> +++ b/drivers/net/failsafe/failsafe_ops.c
> @@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,
>  }
>
>  static int
> -fs_filter_ctrl(struct rte_eth_dev *dev,
> +fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,
>                 enum rte_filter_type type,
>                 enum rte_filter_op op,
>                 void *arg)
>  {
> -       struct sub_device *sdev;
> -       uint8_t i;
> -       int ret;
> -
>         if (type == RTE_ETH_FILTER_GENERIC &&
>             op == RTE_ETH_FILTER_GET) {
>                 *(const void **)arg = &fs_flow_ops;
>                 return 0;
>         }
> -       fs_lock(dev, 0);
> -       FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
> -               DEBUG("Calling rte_eth_dev_filter_ctrl on sub_device %d",
> i);
> -               ret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op,
> arg);
> -               if ((ret = fs_err(sdev, ret))) {
> -                       ERROR("Operation rte_eth_dev_filter_ctrl failed
> for sub_device %d"
> -                             " with error %d", i, ret);
> -                       fs_unlock(dev, 0);
> -                       return ret;
> -               }
> -       }
> -       fs_unlock(dev, 0);
> -       return 0;
> +       return -ENOTSUP;
>  }
>
>  const struct eth_dev_ops failsafe_ops = {
> diff --git a/drivers/net/i40e/i40e_ethdev.c
> b/drivers/net/i40e/i40e_ethdev.c
> index 5b01dc1f0..f6fc0056c 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -24,7 +24,6 @@
>  #include <rte_memcpy.h>
>  #include <rte_alarm.h>
>  #include <rte_dev.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_hash_crc.h>
>
> diff --git a/drivers/net/i40e/i40e_ethdev.h
> b/drivers/net/i40e/i40e_ethdev.h
> index 930eb9aba..98550380e 100644
> --- a/drivers/net/i40e/i40e_ethdev.h
> +++ b/drivers/net/i40e/i40e_ethdev.h
> @@ -7,7 +7,6 @@
>
>  #include <stdint.h>
>
> -#include <rte_eth_ctrl.h>
>  #include <rte_time.h>
>  #include <rte_kvargs.h>
>  #include <rte_hash.h>
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 3694df255..5447e4ea5 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -15,7 +15,6 @@
>  #include <rte_ethdev_driver.h>
>  #include <rte_log.h>
>  #include <rte_malloc.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_tailq.h>
>  #include <rte_flow_driver.h>
>
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 038dc71d3..1dcdb31a0 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -28,7 +28,6 @@
>
>  #include <rte_byteorder.h>
>  #include <rte_errno.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
> diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
> index 03a4bd05e..26465c66a 100644
> --- a/drivers/net/mlx4/mlx4_flow.h
> +++ b/drivers/net/mlx4/mlx4_flow.h
> @@ -18,7 +18,6 @@
>  #pragma GCC diagnostic error "-Wpedantic"
>  #endif
>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 1c78a5f8e..63420fc3e 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -21,7 +21,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c
> index ccb2f7593..04c969b73 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -19,7 +19,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c
> b/drivers/net/mlx5/mlx5_flow_verbs.c
> index 3956df1a7..dc074bfb3 100644
> --- a/drivers/net/mlx5/mlx5_flow_verbs.c
> +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
> @@ -20,7 +20,6 @@
>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ethdev_driver.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
> index cffcd9a4c..944296d7d 100644
> --- a/drivers/net/sfc/sfc_flow.c
> +++ b/drivers/net/sfc/sfc_flow.c
> @@ -11,7 +11,6 @@
>  #include <rte_tailq.h>
>  #include <rte_common.h>
>  #include <rte_ethdev_driver.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_ether.h>
>  #include <rte_flow.h>
>  #include <rte_flow_driver.h>
> diff --git a/examples/tep_termination/Makefile
> b/examples/tep_termination/Makefile
> index 2da41922f..222679bc9 100644
> --- a/examples/tep_termination/Makefile
> +++ b/examples/tep_termination/Makefile
> @@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
>  LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
>
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
> +CFLAGS += -Wno-deprecated-declarations
>
>  build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
>         $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
> @@ -60,6 +61,7 @@ endif
>  CFLAGS += -DALLOW_EXPERIMENTAL_API
>  CFLAGS += -O3
>  CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -Wno-deprecated-declarations
>
>  include $(RTE_SDK)/mk/rte.extapp.mk
>  endif
> diff --git a/examples/tep_termination/meson.build
> b/examples/tep_termination/meson.build
> index 6d3636243..0e0cb44f0 100644
> --- a/examples/tep_termination/meson.build
> +++ b/examples/tep_termination/meson.build
> @@ -11,6 +11,7 @@ if host_machine.system() != 'linux'
>  endif
>  deps += ['hash', 'vhost']
>  allow_experimental_apis = true
> +cflags += '-Wno-deprecated-declarations'
>  sources = files(
>         'main.c', 'vxlan.c', 'vxlan_setup.c'
>  )
> diff --git a/lib/librte_ethdev/rte_eth_ctrl.h
> b/lib/librte_ethdev/rte_eth_ctrl.h
> index b3416341b..9fb0657e5 100644
> --- a/lib/librte_ethdev/rte_eth_ctrl.h
> +++ b/lib/librte_ethdev/rte_eth_ctrl.h
> @@ -8,55 +8,20 @@
>  #include <stdint.h>
>  #include <rte_common.h>
>  #include "rte_ether.h"
> +#include "rte_flow.h"
>
>  /**
> + * @deprecated Please use rte_flow API instead of this legacy one.
>   * @file
>   *
>   * Ethernet device features and related data structures used
>   * by control APIs should be defined in this file.
> - *
>   */
>
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
>
> -/*
> - * A packet can be identified by hardware as different flow types.
> Different
> - * NIC hardwares may support different flow types.
> - * Basically, the NIC hardware identifies the flow type as deep protocol
> as
> - * possible, and exclusively. For example, if a packet is identified as
> - * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> - * though it is an actual IPV4 packet.
> - * Note that the flow types are used to define RSS offload types in
> - * rte_ethdev.h.
> - */
> -#define RTE_ETH_FLOW_UNKNOWN             0
> -#define RTE_ETH_FLOW_RAW                 1
> -#define RTE_ETH_FLOW_IPV4                2
> -#define RTE_ETH_FLOW_FRAG_IPV4           3
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> -#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> -#define RTE_ETH_FLOW_IPV6                8
> -#define RTE_ETH_FLOW_FRAG_IPV6           9
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
> -#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> -#define RTE_ETH_FLOW_L2_PAYLOAD         14
> -#define RTE_ETH_FLOW_IPV6_EX            15
> -#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> -#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> -#define RTE_ETH_FLOW_PORT               18
> -       /**< Consider device port number as a flow differentiator */
> -#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> -#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> -#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> -#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based
> flow */
> -#define RTE_ETH_FLOW_MAX                23
> -
>  /**
>   * Feature filter types
>   */
> @@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {
>         uint16_t queue;          /**< Queue assigned to when match*/
>  };
>
> -/**
> - * Tunneled type.
> - */
> -enum rte_eth_tunnel_type {
> -       RTE_TUNNEL_TYPE_NONE = 0,
> -       RTE_TUNNEL_TYPE_VXLAN,
> -       RTE_TUNNEL_TYPE_GENEVE,
> -       RTE_TUNNEL_TYPE_TEREDO,
> -       RTE_TUNNEL_TYPE_NVGRE,
> -       RTE_TUNNEL_TYPE_IP_IN_GRE,
> -       RTE_L2_TUNNEL_TYPE_E_TAG,
> -       RTE_TUNNEL_TYPE_VXLAN_GPE,
> -       RTE_TUNNEL_TYPE_MAX,
> -};
> -
>  /**
>   * filter type of tunneling packet
>   */
> @@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {
>         RTE_ETH_HASH_FILTER_INFO_TYPE_MAX,
>  };
>
> -/**
> - * Hash function types.
> - */
> -enum rte_eth_hash_function {
> -       RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> -       RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> -       RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> -       RTE_ETH_HASH_FUNCTION_MAX,
> -};
> -
>  #define RTE_SYM_HASH_MASK_ARRAY_SIZE \
>         (RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)
>  /**
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index 40a068fe8..ca3a990ae 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -158,7 +158,6 @@ extern "C" {
>  #include <rte_config.h>
>
>  #include "rte_ether.h"
> -#include "rte_eth_ctrl.h"
>  #include "rte_dev_info.h"
>
>  extern int rte_eth_dev_logtype;
> @@ -448,8 +447,43 @@ struct rte_eth_rss_conf {
>  };
>
>  /*
> - * The RSS offload types are defined based on flow types which are defined
> - * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS
> offload
> + * A packet can be identified by hardware as different flow types.
> Different
> + * NIC hardwares may support different flow types.
> + * Basically, the NIC hardware identifies the flow type as deep protocol
> as
> + * possible, and exclusively. For example, if a packet is identified as
> + * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow
> types,
> + * though it is an actual IPV4 packet.
> + * Note that the flow types are used to define RSS offload types.
> + */
> +#define RTE_ETH_FLOW_UNKNOWN             0
> +#define RTE_ETH_FLOW_RAW                 1
> +#define RTE_ETH_FLOW_IPV4                2
> +#define RTE_ETH_FLOW_FRAG_IPV4           3
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6
> +#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7
> +#define RTE_ETH_FLOW_IPV6                8
> +#define RTE_ETH_FLOW_FRAG_IPV6           9
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12
> +#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13
> +#define RTE_ETH_FLOW_L2_PAYLOAD         14
> +#define RTE_ETH_FLOW_IPV6_EX            15
> +#define RTE_ETH_FLOW_IPV6_TCP_EX        16
> +#define RTE_ETH_FLOW_IPV6_UDP_EX        17
> +#define RTE_ETH_FLOW_PORT               18
> +       /**< Consider device port number as a flow differentiator */
> +#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow
> */
> +#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based
> flow */
> +#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow
> */
> +#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based
> flow */
> +#define RTE_ETH_FLOW_MAX                23
> +
> +/*
> + * The RSS offload types are defined based on flow types.
> + * Different NIC hardwares may support different RSS offload
>   * types. The supported flow types or RSS offload types can be queried by
>   * rte_eth_dev_info_get().
>   */
> @@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {
>         uint8_t priority;          /**< VLAN User Priority. */
>  };
>
> +/**
> + * Tunneled type.
> + */
> +enum rte_eth_tunnel_type {
> +       RTE_TUNNEL_TYPE_NONE = 0,
> +       RTE_TUNNEL_TYPE_VXLAN,
> +       RTE_TUNNEL_TYPE_GENEVE,
> +       RTE_TUNNEL_TYPE_TEREDO,
> +       RTE_TUNNEL_TYPE_NVGRE,
> +       RTE_TUNNEL_TYPE_IP_IN_GRE,
> +       RTE_L2_TUNNEL_TYPE_E_TAG,
> +       RTE_TUNNEL_TYPE_VXLAN_GPE,
> +       RTE_TUNNEL_TYPE_MAX,
> +};
> +
> +/* Deprecated API file for rte_eth_dev_filter_* functions */
> +#include "rte_eth_ctrl.h"
> +
>  /**
>   *  Memory space that can be configured to store Flow Director filters
>   *  in the board memory.
> @@ -934,7 +986,7 @@ struct rte_eth_conf {
>         /** Currently,Priority Flow Control(PFC) are supported,if DCB with
> PFC
>             is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */
>         uint32_t dcb_capability_en;
> -       struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
> +       struct rte_fdir_conf fdir_conf; /**< FDIR configuration.
> DEPRECATED */
>         struct rte_intr_conf intr_conf; /**< Interrupt mode configuration.
> */
>  };
>
> @@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t port_id,
>   *   - (-ENODEV) if *port_id* invalid.
>   *   - (-EIO) if device is removed.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_supported(uint16_t port_id,
>                 enum rte_filter_type filter_type);
>
> @@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,
>   *   - (-EIO) if device is removed.
>   *   - others depends on the specific operations implementation.
>   */
> +__rte_deprecated
>  int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type
> filter_type,
>                         enum rte_filter_op filter_op, void *arg);
>
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index c0fe87924..63f84fca6 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -20,7 +20,6 @@
>  #include <rte_arp.h>
>  #include <rte_common.h>
>  #include <rte_ether.h>
> -#include <rte_eth_ctrl.h>
>  #include <rte_icmp.h>
>  #include <rte_ip.h>
>  #include <rte_sctp.h>
> @@ -1738,6 +1737,16 @@ struct rte_flow_query_count {
>         uint64_t bytes; /**< Number of bytes through this rule [out]. */
>  };
>
> +/**
> + * Hash function types.
> + */
> +enum rte_eth_hash_function {
> +       RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
> +       RTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */
> +       RTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */
> +       RTE_ETH_HASH_FUNCTION_MAX,
> +};
> +
>  /**
>   * RTE_FLOW_ACTION_TYPE_RSS
>   *
> --
> 2.21.0
>
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-18 17:58 ` Ajit Khaparde
  2019-04-18 17:58   ` Ajit Khaparde
@ 2019-04-18 18:16   ` Ferruh Yigit
  2019-04-18 18:16     ` Ferruh Yigit
  1 sibling, 1 reply; 18+ messages in thread
From: Ferruh Yigit @ 2019-04-18 18:16 UTC (permalink / raw)
  To: Ajit Khaparde, Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, dev

On 4/18/2019 6:58 PM, Ajit Khaparde wrote:
> On Tue, Apr 16, 2019 at 5:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> 
>> As stated in the deprecation notice from December 2016,
>> "the legacy filter API, including rte_eth_dev_filter_supported(),
>> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
>> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
>> by the generic flow API (rte_flow)".
>>
>> After a long wait of more than two years, the legacy filter API
>> is marked as deprecated, while still tested with testpmd and
>> the tep_termination example.
>>
>> The next step will be to announce a deadline for complete removal.
>> As preparation of the removal of rte_eth_ctrl.h,
>> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
>> are moved to rte_ethdev.h and rte_flow.h.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>>
> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

    Acked-by: Shahaf Shuler <shahafs@mellanox.com>
    Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
    Acked-by: Jerin Jacob <jerinj@marvell.com>
    Acked-by: Stephen Hemminger <stephen@networkplumber.org>
    Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
    Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

Applied to dpdk-next-net/master, thanks.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API
  2019-04-18 18:16   ` Ferruh Yigit
@ 2019-04-18 18:16     ` Ferruh Yigit
  0 siblings, 0 replies; 18+ messages in thread
From: Ferruh Yigit @ 2019-04-18 18:16 UTC (permalink / raw)
  To: Ajit Khaparde, Thomas Monjalon
  Cc: Wenzhuo Lu, Jingjing Wu, Bernard Iremonger, Adrien Mazarguil,
	Hemant Agrawal, Shreyansh Jain, John Daley, Hyong Youb Kim,
	Gaetan Rivet, Beilei Xing, Qi Zhang, Matan Azrad, Shahaf Shuler,
	Yongseok Koh, Andrew Rybchenko, John McNamara, Pablo de Lara,
	Bruce Richardson, Harry van Haaren, Xiaoyun Li, dev

On 4/18/2019 6:58 PM, Ajit Khaparde wrote:
> On Tue, Apr 16, 2019 at 5:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> 
>> As stated in the deprecation notice from December 2016,
>> "the legacy filter API, including rte_eth_dev_filter_supported(),
>> rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,
>> FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded
>> by the generic flow API (rte_flow)".
>>
>> After a long wait of more than two years, the legacy filter API
>> is marked as deprecated, while still tested with testpmd and
>> the tep_termination example.
>>
>> The next step will be to announce a deadline for complete removal.
>> As preparation of the removal of rte_eth_ctrl.h,
>> RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions
>> are moved to rte_ethdev.h and rte_flow.h.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>>
> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

    Acked-by: Shahaf Shuler <shahafs@mellanox.com>
    Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
    Acked-by: Jerin Jacob <jerinj@marvell.com>
    Acked-by: Stephen Hemminger <stephen@networkplumber.org>
    Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
    Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

Applied to dpdk-next-net/master, thanks.

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2019-04-18 18:16 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-17  0:36 [dpdk-dev] [PATCH] ethdev: deprecate legacy filter API Thomas Monjalon
2019-04-17  0:36 ` Thomas Monjalon
2019-04-17  5:41 ` Shahaf Shuler
2019-04-17  5:41   ` Shahaf Shuler
2019-04-17  5:59   ` Andrew Rybchenko
2019-04-17  5:59     ` Andrew Rybchenko
2019-04-17  6:00   ` Jerin Jacob Kollanukkaran
2019-04-17  6:00     ` Jerin Jacob Kollanukkaran
2019-04-17 16:54 ` Stephen Hemminger
2019-04-17 16:54   ` Stephen Hemminger
2019-04-18  9:24 ` [dpdk-dev] [EXT] " Hemant Agrawal
2019-04-18  9:24   ` Hemant Agrawal
2019-04-18 12:37 ` [dpdk-dev] " Adrien Mazarguil
2019-04-18 12:37   ` Adrien Mazarguil
2019-04-18 17:58 ` Ajit Khaparde
2019-04-18 17:58   ` Ajit Khaparde
2019-04-18 18:16   ` Ferruh Yigit
2019-04-18 18:16     ` Ferruh Yigit

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).