summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/intel/ice/ice_fdir.h
diff options
context:
space:
mode:
authorHenry Tieman <henry.w.tieman@intel.com>2020-05-11 18:01:44 -0700
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2020-05-22 21:44:48 -0700
commit2c57ffcb199004825184f96081fbf036d3b2426a (patch)
tree5d8d5bf9837f2d3c88f3dd1c254206c879a3e0a1 /drivers/net/ethernet/intel/ice/ice_fdir.h
parent165d80d6adab51b6a2f9c40ad0c8d3dec18d7bef (diff)
ice: Enable flex-bytes support
Flex-bytes allows for packet matching based on an offset and value. This is supported via the ethtool user-def option. It is specified by providing an offset followed by a 2 byte match value. Offset is measured from the start of the MAC address. The following restrictions apply to flex-bytes. The specified offset must be an even number and be smaller than 0x1fe. Example usage: ethtool -N eth0 flow-type tcp4 src-ip 192.168.0.55 dst-ip 172.16.0.55 \ src-port 12 dst-port 13 user-def 0x10ffff 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.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_fdir.h b/drivers/net/ethernet/intel/ice/ice_fdir.h
index 977dcbc1400d..1c587766daab 100644
--- a/drivers/net/ethernet/intel/ice/ice_fdir.h
+++ b/drivers/net/ethernet/intel/ice/ice_fdir.h
@@ -68,6 +68,14 @@ struct ice_fd_fltr_desc_ctx {
u8 fdid_mdid;
};
+#define ICE_FLTR_PRGM_FLEX_WORD_SIZE sizeof(__be16)
+
+struct ice_rx_flow_userdef {
+ u16 flex_word;
+ u16 flex_offset;
+ u16 flex_fltr;
+};
+
struct ice_fdir_v4 {
__be32 dst_ip;
__be32 src_ip;
@@ -112,6 +120,11 @@ struct ice_fdir_fltr {
struct ice_fdir_extra ext_data;
struct ice_fdir_extra ext_mask;
+ /* flex byte filter data */
+ __be16 flex_word;
+ u16 flex_offset;
+ u16 flex_fltr;
+
/* filter control */
u16 q_index;
u16 dest_vsi;