diff options
author | Henry Tieman <henry.w.tieman@intel.com> | 2020-05-11 18:01:43 -0700 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2020-05-22 21:42:20 -0700 |
commit | 165d80d6adab51b6a2f9c40ad0c8d3dec18d7bef (patch) | |
tree | 3bbd9d163242fafa6572a86014d42c3184b7a91a /drivers/net/ethernet/intel/ice/ice_fdir.h | |
parent | cac2a27cd9ab1638e21df11ec583d2bc919a3ae3 (diff) |
ice: Support IPv6 Flow Director filters
Extend supported filters to allow for IPv6 filters.
Supported fields are: src-ip, dst-ip, src-port, and dst-port
Supported flow-types are: tcp6, udp6, sctp6, ip6
Example usage:
ethtool -N eth0 flow-type tcp6 src-port 12 dst-port 13 \
src-ip fce0::1:34 dst-ip fce0::1:35 action 32
Signed-off-by: Henry Tieman <henry.w.tieman@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_fdir.h')
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_fdir.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_fdir.h b/drivers/net/ethernet/intel/ice/ice_fdir.h index 1a13c80e1eac..977dcbc1400d 100644 --- a/drivers/net/ethernet/intel/ice/ice_fdir.h +++ b/drivers/net/ethernet/intel/ice/ice_fdir.h @@ -80,6 +80,19 @@ struct ice_fdir_v4 { u8 proto; }; +#define ICE_IPV6_ADDR_LEN_AS_U32 4 + +struct ice_fdir_v6 { + __be32 dst_ip[ICE_IPV6_ADDR_LEN_AS_U32]; + __be32 src_ip[ICE_IPV6_ADDR_LEN_AS_U32]; + __be16 dst_port; + __be16 src_port; + __be32 l4_header; /* next header */ + __be32 sec_parm_idx; /* security parameter index */ + u8 tc; + u8 proto; +}; + struct ice_fdir_extra { u8 dst_mac[ETH_ALEN]; /* dest MAC address */ u32 usr_def[2]; /* user data */ @@ -91,8 +104,10 @@ struct ice_fdir_fltr { struct list_head fltr_node; enum ice_fltr_ptype flow_type; - struct ice_fdir_v4 ip; - struct ice_fdir_v4 mask; + union { + struct ice_fdir_v4 v4; + struct ice_fdir_v6 v6; + } ip, mask; struct ice_fdir_extra ext_data; struct ice_fdir_extra ext_mask; |