cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

iavf_adv_rss.h (3183B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright (c) 2021, Intel Corporation. */
      3
      4#ifndef _IAVF_ADV_RSS_H_
      5#define _IAVF_ADV_RSS_H_
      6
      7struct iavf_adapter;
      8
      9/* State of advanced RSS configuration */
     10enum iavf_adv_rss_state_t {
     11	IAVF_ADV_RSS_ADD_REQUEST,	/* User requests to add RSS */
     12	IAVF_ADV_RSS_ADD_PENDING,	/* RSS pending add by the PF */
     13	IAVF_ADV_RSS_DEL_REQUEST,	/* Driver requests to delete RSS */
     14	IAVF_ADV_RSS_DEL_PENDING,	/* RSS pending delete by the PF */
     15	IAVF_ADV_RSS_ACTIVE,		/* RSS configuration is active */
     16};
     17
     18enum iavf_adv_rss_flow_seg_hdr {
     19	IAVF_ADV_RSS_FLOW_SEG_HDR_NONE	= 0x00000000,
     20	IAVF_ADV_RSS_FLOW_SEG_HDR_IPV4	= 0x00000001,
     21	IAVF_ADV_RSS_FLOW_SEG_HDR_IPV6	= 0x00000002,
     22	IAVF_ADV_RSS_FLOW_SEG_HDR_TCP	= 0x00000004,
     23	IAVF_ADV_RSS_FLOW_SEG_HDR_UDP	= 0x00000008,
     24	IAVF_ADV_RSS_FLOW_SEG_HDR_SCTP	= 0x00000010,
     25};
     26
     27#define IAVF_ADV_RSS_FLOW_SEG_HDR_L3		\
     28	(IAVF_ADV_RSS_FLOW_SEG_HDR_IPV4	|	\
     29	 IAVF_ADV_RSS_FLOW_SEG_HDR_IPV6)
     30
     31#define IAVF_ADV_RSS_FLOW_SEG_HDR_L4		\
     32	(IAVF_ADV_RSS_FLOW_SEG_HDR_TCP |	\
     33	 IAVF_ADV_RSS_FLOW_SEG_HDR_UDP |	\
     34	 IAVF_ADV_RSS_FLOW_SEG_HDR_SCTP)
     35
     36enum iavf_adv_rss_flow_field {
     37	/* L3 */
     38	IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV4_SA,
     39	IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV4_DA,
     40	IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV6_SA,
     41	IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV6_DA,
     42	/* L4 */
     43	IAVF_ADV_RSS_FLOW_FIELD_IDX_TCP_SRC_PORT,
     44	IAVF_ADV_RSS_FLOW_FIELD_IDX_TCP_DST_PORT,
     45	IAVF_ADV_RSS_FLOW_FIELD_IDX_UDP_SRC_PORT,
     46	IAVF_ADV_RSS_FLOW_FIELD_IDX_UDP_DST_PORT,
     47	IAVF_ADV_RSS_FLOW_FIELD_IDX_SCTP_SRC_PORT,
     48	IAVF_ADV_RSS_FLOW_FIELD_IDX_SCTP_DST_PORT,
     49
     50	/* The total number of enums must not exceed 64 */
     51	IAVF_ADV_RSS_FLOW_FIELD_IDX_MAX
     52};
     53
     54#define IAVF_ADV_RSS_HASH_INVALID	0
     55#define IAVF_ADV_RSS_HASH_FLD_IPV4_SA	\
     56	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV4_SA)
     57#define IAVF_ADV_RSS_HASH_FLD_IPV6_SA	\
     58	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV6_SA)
     59#define IAVF_ADV_RSS_HASH_FLD_IPV4_DA	\
     60	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV4_DA)
     61#define IAVF_ADV_RSS_HASH_FLD_IPV6_DA	\
     62	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_IPV6_DA)
     63#define IAVF_ADV_RSS_HASH_FLD_TCP_SRC_PORT	\
     64	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_TCP_SRC_PORT)
     65#define IAVF_ADV_RSS_HASH_FLD_TCP_DST_PORT	\
     66	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_TCP_DST_PORT)
     67#define IAVF_ADV_RSS_HASH_FLD_UDP_SRC_PORT	\
     68	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_UDP_SRC_PORT)
     69#define IAVF_ADV_RSS_HASH_FLD_UDP_DST_PORT	\
     70	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_UDP_DST_PORT)
     71#define IAVF_ADV_RSS_HASH_FLD_SCTP_SRC_PORT	\
     72	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_SCTP_SRC_PORT)
     73#define IAVF_ADV_RSS_HASH_FLD_SCTP_DST_PORT	\
     74	BIT_ULL(IAVF_ADV_RSS_FLOW_FIELD_IDX_SCTP_DST_PORT)
     75
     76/* bookkeeping of advanced RSS configuration */
     77struct iavf_adv_rss {
     78	enum iavf_adv_rss_state_t state;
     79	struct list_head list;
     80
     81	u32 packet_hdrs;
     82	u64 hash_flds;
     83
     84	struct virtchnl_rss_cfg cfg_msg;
     85};
     86
     87int
     88iavf_fill_adv_rss_cfg_msg(struct virtchnl_rss_cfg *rss_cfg,
     89			  u32 packet_hdrs, u64 hash_flds);
     90struct iavf_adv_rss *
     91iavf_find_adv_rss_cfg_by_hdrs(struct iavf_adapter *adapter, u32 packet_hdrs);
     92void
     93iavf_print_adv_rss_cfg(struct iavf_adapter *adapter, struct iavf_adv_rss *rss,
     94		       const char *action, const char *result);
     95#endif /* _IAVF_ADV_RSS_H_ */