ethdev: new ntuple filter API

This patch defines ntuple filter type RTE_ETH_FILTER_NTUPLE and its structure rte_eth_ntuple_filter.
It also corrects the typo TCP_UGR_FLAG to TCP_URG_FLAG

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
Jingjing Wu 2015-02-10 12:48:28 +08:00 committed by Thomas Monjalon
parent 222928b3dd
commit 5e4944a1d6
2 changed files with 52 additions and 0 deletions

View File

@ -55,6 +55,7 @@ enum rte_filter_type {
RTE_ETH_FILTER_ETHERTYPE,
RTE_ETH_FILTER_FLEXIBLE,
RTE_ETH_FILTER_SYN,
RTE_ETH_FILTER_NTUPLE,
RTE_ETH_FILTER_TUNNEL,
RTE_ETH_FILTER_FDIR,
RTE_ETH_FILTER_HASH,
@ -148,6 +149,55 @@ struct rte_eth_syn_filter {
uint16_t queue; /**< Queue assigned to when match */
};
/**
* Define all structures for ntuple Filter type.
*/
#define RTE_NTUPLE_FLAGS_DST_IP 0x0001 /**< If set, dst_ip is part of ntuple */
#define RTE_NTUPLE_FLAGS_SRC_IP 0x0002 /**< If set, src_ip is part of ntuple */
#define RTE_NTUPLE_FLAGS_DST_PORT 0x0004 /**< If set, dst_port is part of ntuple */
#define RTE_NTUPLE_FLAGS_SRC_PORT 0x0008 /**< If set, src_port is part of ntuple */
#define RTE_NTUPLE_FLAGS_PROTO 0x0010 /**< If set, protocol is part of ntuple */
#define RTE_NTUPLE_FLAGS_TCP_FLAG 0x0020 /**< If set, tcp flag is involved */
#define RTE_5TUPLE_FLAGS ( \
RTE_NTUPLE_FLAGS_DST_IP | \
RTE_NTUPLE_FLAGS_SRC_IP | \
RTE_NTUPLE_FLAGS_DST_PORT | \
RTE_NTUPLE_FLAGS_SRC_PORT | \
RTE_NTUPLE_FLAGS_PROTO)
#define RTE_2TUPLE_FLAGS ( \
RTE_NTUPLE_FLAGS_DST_PORT | \
RTE_NTUPLE_FLAGS_PROTO)
/**
* A structure used to define the ntuple filter entry
* to support RTE_ETH_FILTER_NTUPLE with RTE_ETH_FILTER_ADD,
* RTE_ETH_FILTER_DELETE and RTE_ETH_FILTER_GET operations.
*/
struct rte_eth_ntuple_filter {
uint16_t flags; /**< Flags from RTE_NTUPLE_FLAGS_* */
uint32_t dst_ip; /**< Destination IP address in big endian. */
uint32_t dst_ip_mask; /**< Mask of destination IP address. */
uint32_t src_ip; /**< Source IP address in big endian. */
uint32_t src_ip_mask; /**< Mask of destination IP address. */
uint16_t dst_port; /**< Destination port in big endian. */
uint16_t dst_port_mask; /**< Mask of destination port. */
uint16_t src_port; /**< Source Port in big endian. */
uint16_t src_port_mask; /**< Mask of source port. */
uint8_t proto; /**< L4 protocol. */
uint8_t proto_mask; /**< Mask of L4 protocol. */
/** tcp_flags only meaningful when the proto is TCP.
The packet matched above ntuple fields and contain
any set bit in tcp_flags will hit this filter. */
uint8_t tcp_flags;
uint16_t priority; /**< seven levels (001b-111b), 111b is highest,
used when more than one filter matches. */
uint16_t queue; /**< Queue assigned to when match*/
};
/**
* Tunneled type.
*/

View File

@ -966,6 +966,8 @@ struct rte_eth_dev_callback;
/** @internal Structure to keep track of registered callbacks */
TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback);
#define TCP_URG_FLAG 0x20
#define TCP_UGR_FLAG 0x20
#define TCP_ACK_FLAG 0x10
#define TCP_PSH_FLAG 0x08