Skip to content

Commit

Permalink
net/ice: support drop any and steer all to queue
Browse files Browse the repository at this point in the history
This patch supports drop any and steer all to queue in switch
filter. Support new rte_flow pattern any to handle all packets.
The usage is listed below.

1. drop any:
flow create 0 ingress pattern any / end actions drop / end
All packets received in port 0 will be dropped.

2. steer all to queue:
flow create 0 ingress pattern any / end actions queue index 3 / end
All packets received in port 0 will be steered to queue 3.

Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
  • Loading branch information
Yuying2intel authored and qzhan16 committed Feb 9, 2022
1 parent a62f095 commit 9231796
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 0 deletions.
1 change: 1 addition & 0 deletions doc/guides/nics/features/ice.ini
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ x86-64 = Y

[rte_flow items]
ah = Y
any = Y
arp_eth_ipv4 = Y
esp = Y
eth = Y
Expand Down
6 changes: 6 additions & 0 deletions drivers/net/ice/ice_generic_flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ enum rte_flow_item_type pattern_empty[] = {
RTE_FLOW_ITEM_TYPE_END,
};

enum rte_flow_item_type pattern_any[] = {
RTE_FLOW_ITEM_TYPE_ANY,
RTE_FLOW_ITEM_TYPE_END,
};

/* raw */
enum rte_flow_item_type pattern_raw[] = {
RTE_FLOW_ITEM_TYPE_RAW,
Expand Down Expand Up @@ -2111,6 +2116,7 @@ struct ice_ptype_match {

static struct ice_ptype_match ice_ptype_map[] = {
{pattern_raw, ICE_PTYPE_IPV4_PAY},
{pattern_any, ICE_PTYPE_IPV4_PAY},
{pattern_eth_ipv4, ICE_PTYPE_IPV4_PAY},
{pattern_eth_ipv4_udp, ICE_PTYPE_IPV4_UDP_PAY},
{pattern_eth_ipv4_tcp, ICE_PTYPE_IPV4_TCP_PAY},
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/ice/ice_generic_flow.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@
/* empty pattern */
extern enum rte_flow_item_type pattern_empty[];

/* any pattern */
extern enum rte_flow_item_type pattern_any[];

/* raw pattern */
extern enum rte_flow_item_type pattern_raw[];

Expand Down
6 changes: 6 additions & 0 deletions drivers/net/ice/ice_switch_filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ static struct ice_flow_parser ice_switch_perm_parser;

static struct
ice_pattern_match_item ice_switch_pattern_dist_list[] = {
{pattern_any, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype_vlan, ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype_qinq, ICE_SW_INSET_MAC_QINQ, ICE_INSET_NONE, ICE_INSET_NONE},
Expand Down Expand Up @@ -289,6 +290,7 @@ ice_pattern_match_item ice_switch_pattern_dist_list[] = {

static struct
ice_pattern_match_item ice_switch_pattern_perm_list[] = {
{pattern_any, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype_vlan, ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_ethertype_qinq, ICE_SW_INSET_MAC_QINQ, ICE_INSET_NONE, ICE_INSET_NONE},
Expand Down Expand Up @@ -582,6 +584,10 @@ ice_switch_parse_pattern(const struct rte_flow_item pattern[],
item_type = item->type;

switch (item_type) {
case RTE_FLOW_ITEM_TYPE_ANY:
*tun_type = ICE_SW_TUN_AND_NON_TUN;
break;

case RTE_FLOW_ITEM_TYPE_ETH:
eth_spec = item->spec;
eth_mask = item->mask;
Expand Down

0 comments on commit 9231796

Please sign in to comment.