brintos

brintos / linux-shallow public Read only

0
0
Text · 3.1 KiB · e31eb2a Raw
97 lines · c
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_MAX52};53 54#define IAVF_ADV_RSS_HASH_INVALID	055#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	bool symm;84 85	struct virtchnl_rss_cfg cfg_msg;86};87 88int89iavf_fill_adv_rss_cfg_msg(struct virtchnl_rss_cfg *rss_cfg,90			  u32 packet_hdrs, u64 hash_flds, bool symm);91struct iavf_adv_rss *92iavf_find_adv_rss_cfg_by_hdrs(struct iavf_adapter *adapter, u32 packet_hdrs);93void94iavf_print_adv_rss_cfg(struct iavf_adapter *adapter, struct iavf_adv_rss *rss,95		       const char *action, const char *result);96#endif /* _IAVF_ADV_RSS_H_ */97