bnx2x_vfpf.h revision 08f6dd89d26f8599dd138c25506960e3856fd062
11ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior/* bnx2x_vfpf.h: Broadcom Everest network driver.
21ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior *
3247fa82be1301e4f89eaa5dc10be62a9cc84e8c5Yuval Mintz * Copyright (c) 2011-2013 Broadcom Corporation
41ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior *
51ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * Unless you and Broadcom execute a separate written software license
61ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * agreement governing use of this software, this software is licensed to you
71ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * under the terms of the GNU General Public License version 2, available
81ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL").
91ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior *
101ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * Notwithstanding the above, under no circumstances may you combine this
111ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * software in any way with any other Broadcom software provided under a
121ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * license other than the GPL, without Broadcom's express prior written
131ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * consent.
141ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior *
1508f6dd89d26f8599dd138c25506960e3856fd062Ariel Elior * Maintained by: Ariel Elior <ariel.elior@qlogic.com>
1608f6dd89d26f8599dd138c25506960e3856fd062Ariel Elior * Written by: Ariel Elior <ariel.elior@qlogic.com>
171ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior */
181ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior#ifndef VF_PF_IF_H
191ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior#define VF_PF_IF_H
201ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
216411280ac94db94a09770807d3871d2661803604Ariel Elior#ifdef CONFIG_BNX2X_SRIOV
226411280ac94db94a09770807d3871d2661803604Ariel Elior
23be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* Common definitions for all HVs */
24be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct vf_pf_resc_request {
25be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_rxqs;
26be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_txqs;
27be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_sbs;
28be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_mac_filters;
29be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_vlan_filters;
30be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8  num_mc_filters; /* No limit  so superfluous */
31be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
32be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
33be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct hw_sb_info {
34be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 hw_sb_id;	/* aka absolute igu id, used to ack the sb */
35be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 sb_qid;	/* used to update DHC for sb */
36be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
37be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
381ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior/* HW VF-PF channel definitions
391ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior * A.K.A VF-PF mailbox
401ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior */
411ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior#define TLV_BUFFER_SIZE			1024
42abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define PF_VF_BULLETIN_SIZE		512
431ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
448d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_TPA		0x0001
458d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_TPA_IPV6		0x0002
468d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_TPA_GRO		0x0004
478d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_CACHE_ALIGN	0x0008
488d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_STATS		0x0010
498d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_OV		0x0020
508d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_VLAN		0x0040
518d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_COS		0x0080
528d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_HC		0x0100
538d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_FLG_DHC		0x0200
54b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_QUEUE_FLG_LEADING_RSS	0x0400
558d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
568d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_DROP_IP_CS_ERR	(1 << 0)
578d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_DROP_TCP_CS_ERR	(1 << 1)
588d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_DROP_TTL0		(1 << 2)
598d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_QUEUE_DROP_UDP_CS_ERR	(1 << 3)
608d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
61381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_NONE		0x00000000
62381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST	0x00000001
63381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_MATCHED_MULTICAST	0x00000002
64381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_ALL_UNICAST		0x00000004
65381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_ALL_MULTICAST	0x00000008
66381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior#define VFPF_RX_MASK_ACCEPT_BROADCAST		0x00000010
67abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define BULLETIN_CONTENT_SIZE		(sizeof(struct pf_vf_bulletin_content))
68abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define BULLETIN_ATTEMPTS	5 /* crc failures before throwing towel */
69abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define BULLETIN_CRC_SEED	0
70381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior
71be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorenum {
72be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_WAITING = 0,
73be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_SUCCESS,
74be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_FAILURE,
75be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_NOT_SUPPORTED,
76be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_NO_RESOURCE
77be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
78be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
79be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* vf pf channel tlvs */
80be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* general tlv header (used for both vf->pf request and pf->vf response) */
81be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct channel_tlv {
82be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u16 type;
83be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u16 length;
84be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
85be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
86be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* header of first vf->pf tlv carries the offset used to calculate response
87be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior * buffer address
88be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior */
89be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct vfpf_first_tlv {
90be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
91be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u32 resp_msg_offset;
92be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
93be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
94be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* header of pf->vf tlvs, carries the status of handling the request */
95be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct pfvf_tlv {
96be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
97be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 status;
98be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 padding[3];
99be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
100be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
1014513f92576856c552212fb9608aca56b88022454Ariel Elior/* response tlv used for most tlvs */
1024513f92576856c552212fb9608aca56b88022454Ariel Eliorstruct pfvf_general_resp_tlv {
1034513f92576856c552212fb9608aca56b88022454Ariel Elior	struct pfvf_tlv hdr;
1044513f92576856c552212fb9608aca56b88022454Ariel Elior};
1054513f92576856c552212fb9608aca56b88022454Ariel Elior
106be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* used to terminate and pad a tlv list */
107be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct channel_list_end_tlv {
108be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
109be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 padding[4];
110be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
111be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
112be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* Acquire */
113be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct vfpf_acquire_tlv {
114be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_first_tlv first_tlv;
115be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
116be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vf_pf_vfdev_info {
117be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		/* the following fields are for debug purposes */
118be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  vf_id;		/* ME register value */
119be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  vf_os;		/* e.g. Linux, W2K8 */
120be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8 padding[2];
121be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} vfdev_info;
122be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
123be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vf_pf_resc_request resc_request;
124be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
125be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	aligned_u64 bulletin_addr;
126be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
127be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
1289b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior/* simple operation request on queue */
1299b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Eliorstruct vfpf_q_op_tlv {
1309b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_first_tlv	first_tlv;
1319b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 vf_qid;
1329b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 padding[3];
1339b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior};
1349b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior
135b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior/* receive side scaling tlv */
136b9871bcfd211d316adee317608dab44c58d6ea2dAriel Eliorstruct vfpf_rss_tlv {
137b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_first_tlv	first_tlv;
138b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32			rss_flags;
139b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_MODE_DISABLED	(1 << 0)
140b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_MODE_REGULAR	(1 << 1)
141b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_SET_SRCH	(1 << 2)
142b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4		(1 << 3)
143b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4_TCP	(1 << 4)
144b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4_UDP	(1 << 5)
145b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6		(1 << 6)
146b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6_TCP	(1 << 7)
147b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6_UDP	(1 << 8)
148b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			rss_result_mask;
149b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			ind_table_size;
150b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			rss_key_size;
151b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			padding;
152b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			ind_table[T_ETH_INDIRECTION_TABLE_SIZE];
153b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32			rss_key[T_ETH_RSS_KEY];	/* hash values */
154b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior};
155b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior
156be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* acquire response tlv - carries the allocated resources */
157be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct pfvf_acquire_resp_tlv {
158be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pfvf_tlv hdr;
159be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pf_vf_pfdev_info {
160be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u32 chip_num;
161be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u32 pf_cap;
162be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_RSS		0x00000001
163be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_DHC		0x00000002
164be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_TPA		0x00000004
16514a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon#define PFVF_CAP_TPA_UPDATE	0x00000008
166be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		char fw_ver[32];
167be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u16 db_size;
168be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  indices_per_sb;
169be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  padding;
170be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} pfdev_info;
171be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pf_vf_resc {
172be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		/* in case of status NO_RESOURCE in message hdr, pf will fill
173be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 * this struct with suggested amount of resources for next
174be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 * acquire request
175be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 */
176be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_MAX_QUEUES_PER_VF         16
177be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_MAX_SBS_PER_VF            16
178be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		struct hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF];
179be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	hw_qid[PFVF_MAX_QUEUES_PER_VF];
180be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_rxqs;
181be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_txqs;
182be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_sbs;
183be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_mac_filters;
184be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_vlan_filters;
185be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_mc_filters;
186be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	permanent_mac_addr[ETH_ALEN];
187be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	current_mac_addr[ETH_ALEN];
188be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	padding[2];
189be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} resc;
190be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
191be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
1923d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintzstruct vfpf_port_phys_id_resp_tlv {
1933d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	struct channel_tlv tl;
1943d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	u8 id[ETH_ALEN];
1953d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	u8 padding[2];
1963d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz};
1973d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz
198b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_INIT_FLG_STATS_COALESCE	(1 << 0) /* when set the VFs queues
199b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  * stats will be coalesced on
200b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  * the leading RSS queue
201b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  */
202b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior
2038d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Init VF */
2048d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_init_tlv {
2058d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2068d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 sb_addr[PFVF_MAX_SBS_PER_VF]; /* vf_sb based */
2078d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 spq_addr;
2088d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 stats_addr;
209b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u16 stats_stride;
210b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32 flags;
211b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32 padding[2];
2128d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2138d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2148d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Setup Queue */
2158d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_setup_q_tlv {
2168d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2178d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2188d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vf_pf_rxq_params {
2198d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* physical addresses */
2208d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rcq_addr;
2218d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rcq_np_addr;
2228d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rxq_addr;
2238d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 sge_addr;
2248d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2258d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* sb + hc info */
2268d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  vf_sb;		/* index in hw_sbs[] */
2278d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  sb_index;		/* Index in the SB */
2288d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 hc_rate;		/* desired interrupts per sec. */
2298d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					/* valid iff VFPF_QUEUE_FLG_HC */
2308d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* rx buffer info */
2318d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 mtu;
2328d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 buf_sz;
2338d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 flags;		/* VFPF_QUEUE_FLG_X flags */
2348d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 stat_id;		/* valid iff VFPF_QUEUE_FLG_STATS */
2358d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2368d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* valid iff VFPF_QUEUE_FLG_TPA */
2378d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 sge_buf_sz;
2388d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 tpa_agg_sz;
2398d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 max_sge_pkt;
2408d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2418d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 drop_flags;		/* VFPF_QUEUE_DROP_X, for Linux VMs
2428d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 * all the flags are turned off
2438d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 */
2448d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2458d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 cache_line_log;	/* VFPF_QUEUE_FLG_CACHE_ALIGN */
2468d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 padding;
2478d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	} rxq;
2488d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2498d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vf_pf_txq_params {
2508d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* physical addresses */
2518d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 txq_addr;
2528d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2538d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* sb + hc info */
2548d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  vf_sb;		/* index in hw_sbs[] */
2558d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  sb_index;		/* Index in the SB */
2568d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 hc_rate;		/* desired interrupts per sec. */
2578d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					/* valid iff VFPF_QUEUE_FLG_HC */
2588d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u32 flags;		/* VFPF_QUEUE_FLG_X flags */
2598d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 stat_id;		/* valid iff VFPF_QUEUE_FLG_STATS */
2608d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  traffic_type;	/* see in setup_context() */
2618d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  padding;
2628d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	} txq;
2638d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2648d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 vf_qid;			/* index in hw_qid[] */
2658d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 param_valid;
2668d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_RXQ_VALID		0x01
2678d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_TXQ_VALID		0x02
2688d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 padding[2];
2698d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2708d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2718d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Set Queue Filters */
2728d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_q_mac_vlan_filter {
2738d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 flags;
2748d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_DEST_MAC_VALID	0x01
2758d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_VLAN_TAG_VALID	0x02
2768d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_SET_MAC		0x100	/* set/clear */
2778d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8  mac[ETH_ALEN];
2788d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u16 vlan_tag;
2798d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2808d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2818d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* configure queue filters */
2828d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_set_q_filters_tlv {
2838d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2848d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2858d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 flags;
2868d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_MAC_VLAN_CHANGED	0x01
2878d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_MULTICAST_CHANGED	0x02
2888d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_RX_MASK_CHANGED	0x04
2898d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2908d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 vf_qid;			/* index in hw_qid[] */
2918d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 n_mac_vlan_filters;
2928d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 n_multicast;
2938d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 padding;
2948d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2958d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_MAC_FILTERS                   16
2968d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_VLAN_FILTERS                  16
2978d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_FILTERS               (PFVF_MAX_MAC_FILTERS +\
2988d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 PFVF_MAX_VLAN_FILTERS)
2998d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_q_mac_vlan_filter filters[PFVF_MAX_FILTERS];
3008d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
3018d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_MULTICAST_PER_VF              32
3028d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8  multicast[PFVF_MAX_MULTICAST_PER_VF][ETH_ALEN];
3038d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
3048d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 rx_mask;	/* see mask constants at the top of the file */
3058d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
3068d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
30714a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderonstruct vfpf_tpa_tlv {
30814a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vfpf_first_tlv	first_tlv;
30914a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon
31014a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vf_pf_tpa_client_info {
31114a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		aligned_u64 sge_addr[PFVF_MAX_QUEUES_PER_VF];
31214a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 update_ipv4;
31314a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 update_ipv6;
31414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 max_tpa_queues;
31514a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 max_sges_for_packet;
31614a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 complete_on_both_clients;
31714a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 dont_verify_thr;
31814a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 tpa_mode;
31914a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_buff_size;
32014a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 max_agg_size;
32114a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_pause_thr_low;
32214a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_pause_thr_high;
32314a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	} tpa_client_info;
32414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon};
32514a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon
3269b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior/* close VF (disable VF) */
3279b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Eliorstruct vfpf_close_tlv {
3289b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_first_tlv   first_tlv;
3299b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u16			vf_id;  /* for debug */
3309b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 padding[2];
3319b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior};
3329b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior
3334513f92576856c552212fb9608aca56b88022454Ariel Elior/* release the VF's acquired resources */
3344513f92576856c552212fb9608aca56b88022454Ariel Eliorstruct vfpf_release_tlv {
3354513f92576856c552212fb9608aca56b88022454Ariel Elior	struct vfpf_first_tlv	first_tlv;
3364513f92576856c552212fb9608aca56b88022454Ariel Elior	u16			vf_id;
3374513f92576856c552212fb9608aca56b88022454Ariel Elior	u8 padding[2];
3384513f92576856c552212fb9608aca56b88022454Ariel Elior};
3394513f92576856c552212fb9608aca56b88022454Ariel Elior
3401ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorstruct tlv_buffer_size {
3411ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	u8 tlv_buffer[TLV_BUFFER_SIZE];
3421ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
3431ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
3441ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorunion vfpf_tlvs {
345be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_first_tlv		first_tlv;
346be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_acquire_tlv		acquire;
3478d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_init_tlv		init;
3489b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_close_tlv		close;
3499b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_q_op_tlv		q_op;
3508d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_setup_q_tlv		setup_q;
3518d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_set_q_filters_tlv	set_q_filters;
352b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_release_tlv		release;
353b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_rss_tlv		update_rss;
35414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vfpf_tpa_tlv		update_tpa;
355b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct channel_list_end_tlv	list_end;
3561ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	struct tlv_buffer_size		tlv_buf_size;
3571ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
3581ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
3591ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorunion pfvf_tlvs {
360b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct pfvf_general_resp_tlv	general_resp;
361be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pfvf_acquire_resp_tlv	acquire_resp;
362be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_list_end_tlv	list_end;
3631ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	struct tlv_buffer_size		tlv_buf_size;
3641ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
365be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
366abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior/* This is a structure which is allocated in the VF, which the PF may update
367abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * when it deems it necessary to do so. The bulletin board is sampled
368abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * periodically by the VF. A copy per VF is maintained in the PF (to prevent
369abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * loss of data upon multiple updates (or the need for read modify write)).
370abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior */
371abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorstruct pf_vf_bulletin_size {
372abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u8 size[PF_VF_BULLETIN_SIZE];
373abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
374abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
375abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorstruct pf_vf_bulletin_content {
376abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u32 crc;			/* crc of structure to ensure is not in
377abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * mid-update
378abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
3794c133c39ae1bc541b3db5903a680da738a0c57e3Ariel Elior	u16 version;
3804c133c39ae1bc541b3db5903a680da738a0c57e3Ariel Elior	u16 length;
381abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
382abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	aligned_u64 valid_bitmap;	/* bitmap indicating which fields
383abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * hold valid values
384abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
385abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
386abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define MAC_ADDR_VALID		0	/* alert the vf that a new mac address
387abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * is available for it
388abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
3893ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior#define VLAN_VALID		1	/* when set, the vf should not access
3903ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior					 * the vfpf channel
3913ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior					 */
39278c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior#define CHANNEL_DOWN		2	/* vfpf channel is disabled. VFs are not
39378c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 * to attempt to send messages on the
39478c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 * channel after this bit is set
39578c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 */
396abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u8 mac[ETH_ALEN];
3973ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u8 mac_padding[2];
3983ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior
3993ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u16 vlan;
4003ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u8 vlan_padding[6];
401abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
402abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
403abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorunion pf_vf_bulletin {
404abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	struct pf_vf_bulletin_content content;
405abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	struct pf_vf_bulletin_size size;
406abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
407abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
408be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define MAX_TLVS_IN_LIST 50
409be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
410be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorenum channel_tlvs {
411be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_NONE,
412be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_ACQUIRE,
4138d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_INIT,
4148d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_SETUP_Q,
4158d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_SET_Q_FILTERS,
416b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_ACTIVATE_Q,
417b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_DEACTIVATE_Q,
4189b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	CHANNEL_TLV_TEARDOWN_Q,
4199b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	CHANNEL_TLV_CLOSE,
4204513f92576856c552212fb9608aca56b88022454Ariel Elior	CHANNEL_TLV_RELEASE,
421b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_UPDATE_RSS_DEPRECATED,
422f1929b016c2161c364e45c21788aaae938ae557cAriel Elior	CHANNEL_TLV_PF_RELEASE_VF,
423be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_LIST_END,
424d16132cef8a72ff7563aff95f03bf505779fe3e6Ariel Elior	CHANNEL_TLV_FLR,
425abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	CHANNEL_TLV_PF_SET_MAC,
4263ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	CHANNEL_TLV_PF_SET_VLAN,
427b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_UPDATE_RSS,
4283d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	CHANNEL_TLV_PHYS_PORT_ID,
42914a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	CHANNEL_TLV_UPDATE_TPA,
430be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_MAX
431be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
432be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
4336411280ac94db94a09770807d3871d2661803604Ariel Elior#endif /* CONFIG_BNX2X_SRIOV */
4341ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior#endif /* VF_PF_IF_H */
435