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: 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> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
This commit is contained in:
parent
a1db738273
commit
b7ed955a20
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -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 = {
|
||||
|
@ -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>
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <rte_eth_ctrl.h>
|
||||
#include <rte_time.h>
|
||||
#include <rte_kvargs.h>
|
||||
#include <rte_hash.h>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -11,6 +11,7 @@ if not is_linux
|
||||
endif
|
||||
deps += ['hash', 'vhost']
|
||||
allow_experimental_apis = true
|
||||
cflags += '-Wno-deprecated-declarations'
|
||||
sources = files(
|
||||
'main.c', 'vxlan.c', 'vxlan_setup.c'
|
||||
)
|
||||
|
@ -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)
|
||||
/**
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user