diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_fdir.h')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_fdir.h | 58 | 
1 files changed, 58 insertions, 0 deletions
| diff --git a/drivers/net/ethernet/intel/ice/ice_fdir.h b/drivers/net/ethernet/intel/ice/ice_fdir.h index 1c587766daab..d2d40e18ae8a 100644 --- a/drivers/net/ethernet/intel/ice/ice_fdir.h +++ b/drivers/net/ethernet/intel/ice/ice_fdir.h @@ -25,6 +25,25 @@  #define ICE_IPV6_UDP_DST_PORT_OFFSET	56  #define ICE_IPV6_SCTP_SRC_PORT_OFFSET	54  #define ICE_IPV6_SCTP_DST_PORT_OFFSET	56 +#define ICE_MAC_ETHTYPE_OFFSET		12 +#define ICE_IPV4_TOS_OFFSET		15 +#define ICE_IPV4_TTL_OFFSET		22 +#define ICE_IPV6_TC_OFFSET		14 +#define ICE_IPV6_HLIM_OFFSET		21 +#define ICE_IPV6_PROTO_OFFSET		20 +#define ICE_IPV4_GTPU_TEID_OFFSET	46 +#define ICE_IPV4_GTPU_QFI_OFFSET	56 +#define ICE_IPV4_L2TPV3_SESS_ID_OFFSET	34 +#define ICE_IPV6_L2TPV3_SESS_ID_OFFSET	54 +#define ICE_IPV4_ESP_SPI_OFFSET		34 +#define ICE_IPV6_ESP_SPI_OFFSET		54 +#define ICE_IPV4_AH_SPI_OFFSET		38 +#define ICE_IPV6_AH_SPI_OFFSET		58 +#define ICE_IPV4_NAT_T_ESP_SPI_OFFSET	42 +#define ICE_IPV6_NAT_T_ESP_SPI_OFFSET	62 + +#define ICE_FDIR_MAX_FLTRS		16384 +  /* IP v4 has 2 flag bits that enable fragment processing: DF and MF. DF   * requests that the packet not be fragmented. MF indicates that a packet has   * been fragmented. @@ -34,6 +53,8 @@  enum ice_fltr_prgm_desc_dest {  	ICE_FLTR_PRGM_DESC_DEST_DROP_PKT,  	ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QINDEX, +	ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QGROUP, +	ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER,  };  enum ice_fltr_prgm_desc_fd_status { @@ -86,6 +107,7 @@ struct ice_fdir_v4 {  	u8 tos;  	u8 ip_ver;  	u8 proto; +	u8 ttl;  };  #define ICE_IPV6_ADDR_LEN_AS_U32		4 @@ -99,10 +121,35 @@ struct ice_fdir_v6 {  	__be32 sec_parm_idx; /* security parameter index */  	u8 tc;  	u8 proto; +	u8 hlim; +}; + +struct ice_fdir_udp_gtp { +	u8 flags; +	u8 msg_type; +	__be16 rsrvd_len; +	__be32 teid; +	__be16 rsrvd_seq_nbr; +	u8 rsrvd_n_pdu_nbr; +	u8 rsrvd_next_ext_type; +	u8 rsvrd_ext_len; +	u8	pdu_type:4, +		spare:4; +	u8	ppp:1, +		rqi:1, +		qfi:6; +	u32 rsvrd; +	u8 next_ext; +}; + +struct ice_fdir_l2tpv3 { +	__be32 session_id;  };  struct ice_fdir_extra {  	u8 dst_mac[ETH_ALEN];	/* dest MAC address */ +	u8 src_mac[ETH_ALEN];	/* src MAC address */ +	__be16 ether_type;	/* for NON_IP_L2 */  	u32 usr_def[2];		/* user data */  	__be16 vlan_type;	/* VLAN ethertype */  	__be16 vlan_tag;	/* VLAN tag info */ @@ -117,11 +164,19 @@ struct ice_fdir_fltr {  		struct ice_fdir_v6 v6;  	} ip, mask; +	struct ice_fdir_udp_gtp gtpu_data; +	struct ice_fdir_udp_gtp gtpu_mask; + +	struct ice_fdir_l2tpv3 l2tpv3_data; +	struct ice_fdir_l2tpv3 l2tpv3_mask; +  	struct ice_fdir_extra ext_data;  	struct ice_fdir_extra ext_mask;  	/* flex byte filter data */  	__be16 flex_word; +	/* queue region size (=2^q_region) */ +	u8 q_region;  	u16 flex_offset;  	u16 flex_fltr; @@ -129,9 +184,12 @@ struct ice_fdir_fltr {  	u16 q_index;  	u16 dest_vsi;  	u8 dest_ctl; +	u8 cnt_ena;  	u8 fltr_status;  	u16 cnt_index;  	u32 fltr_id; +	u8 fdid_prio; +	u8 comp_report;  };  /* Dummy packet filter definition structure */ | 
