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))
686495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define BULLETIN_CONTENT_LEGACY_SIZE	(32)
69abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define BULLETIN_ATTEMPTS	5 /* crc failures before throwing towel */
70abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define BULLETIN_CRC_SEED	0
71381ac16b10ae9369ebbbd74bb52b970818f68022Ariel Elior
72be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorenum {
73be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_WAITING = 0,
74be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_SUCCESS,
75be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_FAILURE,
76be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_NOT_SUPPORTED,
77be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	PFVF_STATUS_NO_RESOURCE
78be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
79be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
80be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* vf pf channel tlvs */
81be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* general tlv header (used for both vf->pf request and pf->vf response) */
82be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct channel_tlv {
83be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u16 type;
84be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u16 length;
85be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
86be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
87be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* header of first vf->pf tlv carries the offset used to calculate response
88be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior * buffer address
89be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior */
90be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct vfpf_first_tlv {
91be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
92be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u32 resp_msg_offset;
93be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
94be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
95be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* header of pf->vf tlvs, carries the status of handling the request */
96be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct pfvf_tlv {
97be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
98be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 status;
99be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 padding[3];
100be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
101be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
1024513f92576856c552212fb9608aca56b88022454Ariel Elior/* response tlv used for most tlvs */
1034513f92576856c552212fb9608aca56b88022454Ariel Eliorstruct pfvf_general_resp_tlv {
1044513f92576856c552212fb9608aca56b88022454Ariel Elior	struct pfvf_tlv hdr;
1054513f92576856c552212fb9608aca56b88022454Ariel Elior};
1064513f92576856c552212fb9608aca56b88022454Ariel Elior
107be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* used to terminate and pad a tlv list */
108be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct channel_list_end_tlv {
109be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_tlv tl;
110be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	u8 padding[4];
111be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
112be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
113be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* Acquire */
114be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct vfpf_acquire_tlv {
115be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_first_tlv first_tlv;
116be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
117be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vf_pf_vfdev_info {
118be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		/* the following fields are for debug purposes */
119be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  vf_id;		/* ME register value */
120be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  vf_os;		/* e.g. Linux, W2K8 */
121ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz#define VF_OS_SUBVERSION_MASK	(0x1f)
122ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz#define VF_OS_MASK		(0xe0)
123ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz#define VF_OS_SHIFT		(5)
124ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz#define VF_OS_UNDEFINED		(0 << VF_OS_SHIFT)
125ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz#define VF_OS_WINDOWS		(1 << VF_OS_SHIFT)
126ebf457f931e363cd5f57e661e103386af5a21629Yuval Mintz
1276495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov		u8 padding;
1286495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov		u8 caps;
1296495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define VF_CAP_SUPPORT_EXT_BULLETIN	(1 << 0)
130be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} vfdev_info;
131be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
132be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vf_pf_resc_request resc_request;
133be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
134be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	aligned_u64 bulletin_addr;
135be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
136be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
1379b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior/* simple operation request on queue */
1389b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Eliorstruct vfpf_q_op_tlv {
1399b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_first_tlv	first_tlv;
1409b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 vf_qid;
1419b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 padding[3];
1429b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior};
1439b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior
144b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior/* receive side scaling tlv */
145b9871bcfd211d316adee317608dab44c58d6ea2dAriel Eliorstruct vfpf_rss_tlv {
146b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_first_tlv	first_tlv;
147b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32			rss_flags;
148b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_MODE_DISABLED	(1 << 0)
149b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_MODE_REGULAR	(1 << 1)
150b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_SET_SRCH	(1 << 2)
151b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4		(1 << 3)
152b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4_TCP	(1 << 4)
153b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV4_UDP	(1 << 5)
154b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6		(1 << 6)
155b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6_TCP	(1 << 7)
156b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_RSS_IPV6_UDP	(1 << 8)
157b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			rss_result_mask;
158b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			ind_table_size;
159b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			rss_key_size;
160b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			padding;
161b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u8			ind_table[T_ETH_INDIRECTION_TABLE_SIZE];
162b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32			rss_key[T_ETH_RSS_KEY];	/* hash values */
163b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior};
164b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior
165be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior/* acquire response tlv - carries the allocated resources */
166be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorstruct pfvf_acquire_resp_tlv {
167be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pfvf_tlv hdr;
168be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pf_vf_pfdev_info {
169be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u32 chip_num;
170be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u32 pf_cap;
171be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_RSS		0x00000001
172be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_DHC		0x00000002
173be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_CAP_TPA		0x00000004
17414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon#define PFVF_CAP_TPA_UPDATE	0x00000008
175be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		char fw_ver[32];
176be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u16 db_size;
177be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  indices_per_sb;
178be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8  padding;
179be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} pfdev_info;
180be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pf_vf_resc {
181be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		/* in case of status NO_RESOURCE in message hdr, pf will fill
182be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 * this struct with suggested amount of resources for next
183be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 * acquire request
184be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		 */
185be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_MAX_QUEUES_PER_VF         16
186be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define PFVF_MAX_SBS_PER_VF            16
187be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		struct hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF];
188be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	hw_qid[PFVF_MAX_QUEUES_PER_VF];
189be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_rxqs;
190be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_txqs;
191be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_sbs;
192be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_mac_filters;
193be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_vlan_filters;
194be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	num_mc_filters;
195be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	permanent_mac_addr[ETH_ALEN];
196be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	current_mac_addr[ETH_ALEN];
197be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior		u8	padding[2];
198be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	} resc;
199be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
200be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
2013d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintzstruct vfpf_port_phys_id_resp_tlv {
2023d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	struct channel_tlv tl;
2033d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	u8 id[ETH_ALEN];
2043d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	u8 padding[2];
2053d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz};
2063d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz
207b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior#define VFPF_INIT_FLG_STATS_COALESCE	(1 << 0) /* when set the VFs queues
208b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  * stats will be coalesced on
209b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  * the leading RSS queue
210b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior						  */
211b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior
2128d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Init VF */
2138d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_init_tlv {
2148d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2158d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 sb_addr[PFVF_MAX_SBS_PER_VF]; /* vf_sb based */
2168d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 spq_addr;
2178d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	aligned_u64 stats_addr;
218b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u16 stats_stride;
219b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32 flags;
220b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	u32 padding[2];
2218d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2228d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2238d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Setup Queue */
2248d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_setup_q_tlv {
2258d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2268d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2278d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vf_pf_rxq_params {
2288d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* physical addresses */
2298d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rcq_addr;
2308d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rcq_np_addr;
2318d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 rxq_addr;
2328d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 sge_addr;
2338d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2348d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* sb + hc info */
2358d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  vf_sb;		/* index in hw_sbs[] */
2368d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  sb_index;		/* Index in the SB */
2378d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 hc_rate;		/* desired interrupts per sec. */
2388d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					/* valid iff VFPF_QUEUE_FLG_HC */
2398d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* rx buffer info */
2408d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 mtu;
2418d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 buf_sz;
2428d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 flags;		/* VFPF_QUEUE_FLG_X flags */
2438d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 stat_id;		/* valid iff VFPF_QUEUE_FLG_STATS */
2448d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2458d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* valid iff VFPF_QUEUE_FLG_TPA */
2468d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 sge_buf_sz;
2478d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 tpa_agg_sz;
2488d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 max_sge_pkt;
2498d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2508d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 drop_flags;		/* VFPF_QUEUE_DROP_X, for Linux VMs
2518d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 * all the flags are turned off
2528d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 */
2538d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2548d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 cache_line_log;	/* VFPF_QUEUE_FLG_CACHE_ALIGN */
2558d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8 padding;
2568d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	} rxq;
2578d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2588d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vf_pf_txq_params {
2598d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* physical addresses */
2608d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		aligned_u64 txq_addr;
2618d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2628d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		/* sb + hc info */
2638d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  vf_sb;		/* index in hw_sbs[] */
2648d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  sb_index;		/* Index in the SB */
2658d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 hc_rate;		/* desired interrupts per sec. */
2668d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					/* valid iff VFPF_QUEUE_FLG_HC */
2678d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u32 flags;		/* VFPF_QUEUE_FLG_X flags */
2688d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u16 stat_id;		/* valid iff VFPF_QUEUE_FLG_STATS */
2698d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  traffic_type;	/* see in setup_context() */
2708d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior		u8  padding;
2718d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	} txq;
2728d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2738d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 vf_qid;			/* index in hw_qid[] */
2748d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 param_valid;
2758d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_RXQ_VALID		0x01
2768d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_TXQ_VALID		0x02
2778d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 padding[2];
2788d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2798d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2808d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* Set Queue Filters */
2818d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_q_mac_vlan_filter {
2828d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 flags;
2838d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_DEST_MAC_VALID	0x01
2848d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_VLAN_TAG_VALID	0x02
2858d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_Q_FILTER_SET_MAC		0x100	/* set/clear */
2868d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8  mac[ETH_ALEN];
2878d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u16 vlan_tag;
2888d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
2898d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2908d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior/* configure queue filters */
2918d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Eliorstruct vfpf_set_q_filters_tlv {
2928d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_first_tlv first_tlv;
2938d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2948d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 flags;
2958d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_MAC_VLAN_CHANGED	0x01
2968d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_MULTICAST_CHANGED	0x02
2978d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define VFPF_SET_Q_FILTERS_RX_MASK_CHANGED	0x04
2988d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
2998d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 vf_qid;			/* index in hw_qid[] */
3008d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 n_mac_vlan_filters;
3018d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 n_multicast;
3028d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8 padding;
3038d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
3048d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_MAC_FILTERS                   16
3058d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_VLAN_FILTERS                  16
3068d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_FILTERS               (PFVF_MAX_MAC_FILTERS +\
3078d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior					 PFVF_MAX_VLAN_FILTERS)
3088d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_q_mac_vlan_filter filters[PFVF_MAX_FILTERS];
3098d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
3108d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior#define PFVF_MAX_MULTICAST_PER_VF              32
3118d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u8  multicast[PFVF_MAX_MULTICAST_PER_VF][ETH_ALEN];
3128d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
3138d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	u32 rx_mask;	/* see mask constants at the top of the file */
3148d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior};
3158d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior
31614a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderonstruct vfpf_tpa_tlv {
31714a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vfpf_first_tlv	first_tlv;
31814a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon
31914a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vf_pf_tpa_client_info {
32014a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		aligned_u64 sge_addr[PFVF_MAX_QUEUES_PER_VF];
32114a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 update_ipv4;
32214a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 update_ipv6;
32314a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 max_tpa_queues;
32414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 max_sges_for_packet;
32514a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 complete_on_both_clients;
32614a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 dont_verify_thr;
32714a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u8 tpa_mode;
32814a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_buff_size;
32914a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 max_agg_size;
33014a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_pause_thr_low;
33114a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon		u16 sge_pause_thr_high;
33214a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	} tpa_client_info;
33314a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon};
33414a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon
3359b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior/* close VF (disable VF) */
3369b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Eliorstruct vfpf_close_tlv {
3379b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_first_tlv   first_tlv;
3389b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u16			vf_id;  /* for debug */
3399b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	u8 padding[2];
3409b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior};
3419b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior
3424513f92576856c552212fb9608aca56b88022454Ariel Elior/* release the VF's acquired resources */
3434513f92576856c552212fb9608aca56b88022454Ariel Eliorstruct vfpf_release_tlv {
3444513f92576856c552212fb9608aca56b88022454Ariel Elior	struct vfpf_first_tlv	first_tlv;
3454513f92576856c552212fb9608aca56b88022454Ariel Elior	u16			vf_id;
3464513f92576856c552212fb9608aca56b88022454Ariel Elior	u8 padding[2];
3474513f92576856c552212fb9608aca56b88022454Ariel Elior};
3484513f92576856c552212fb9608aca56b88022454Ariel Elior
3491ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorstruct tlv_buffer_size {
3501ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	u8 tlv_buffer[TLV_BUFFER_SIZE];
3511ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
3521ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
3531ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorunion vfpf_tlvs {
354be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_first_tlv		first_tlv;
355be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct vfpf_acquire_tlv		acquire;
3568d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_init_tlv		init;
3579b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_close_tlv		close;
3589b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	struct vfpf_q_op_tlv		q_op;
3598d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_setup_q_tlv		setup_q;
3608d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	struct vfpf_set_q_filters_tlv	set_q_filters;
361b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_release_tlv		release;
362b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct vfpf_rss_tlv		update_rss;
36314a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	struct vfpf_tpa_tlv		update_tpa;
364b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct channel_list_end_tlv	list_end;
3651ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	struct tlv_buffer_size		tlv_buf_size;
3661ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
3671ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior
3681ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Eliorunion pfvf_tlvs {
369b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	struct pfvf_general_resp_tlv	general_resp;
370be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct pfvf_acquire_resp_tlv	acquire_resp;
371be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	struct channel_list_end_tlv	list_end;
3721ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior	struct tlv_buffer_size		tlv_buf_size;
3731ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior};
374be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
375abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior/* This is a structure which is allocated in the VF, which the PF may update
376abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * when it deems it necessary to do so. The bulletin board is sampled
377abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * periodically by the VF. A copy per VF is maintained in the PF (to prevent
378abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior * loss of data upon multiple updates (or the need for read modify write)).
379abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior */
380abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorstruct pf_vf_bulletin_size {
381abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u8 size[PF_VF_BULLETIN_SIZE];
382abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
383abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
384abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorstruct pf_vf_bulletin_content {
385abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u32 crc;			/* crc of structure to ensure is not in
386abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * mid-update
387abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
3884c133c39ae1bc541b3db5903a680da738a0c57e3Ariel Elior	u16 version;
3894c133c39ae1bc541b3db5903a680da738a0c57e3Ariel Elior	u16 length;
390abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
391abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	aligned_u64 valid_bitmap;	/* bitmap indicating which fields
392abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * hold valid values
393abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
394abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
395abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior#define MAC_ADDR_VALID		0	/* alert the vf that a new mac address
396abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 * is available for it
397abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior					 */
3983ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior#define VLAN_VALID		1	/* when set, the vf should not access
3993ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior					 * the vfpf channel
4003ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior					 */
40178c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior#define CHANNEL_DOWN		2	/* vfpf channel is disabled. VFs are not
40278c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 * to attempt to send messages on the
40378c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 * channel after this bit is set
40478c3bcc5d1af64f51d9f30b0f5a2d1985bf69734Ariel Elior					 */
4056495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define LINK_VALID		3	/* alert the VF thet a new link status
4066495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov					 * update is available for it
4076495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov					 */
408abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	u8 mac[ETH_ALEN];
4093ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u8 mac_padding[2];
4103ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior
4113ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u16 vlan;
4123ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	u8 vlan_padding[6];
4136495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov
4146495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov	u16 link_speed;			 /* Effective line speed */
4156495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov	u8 link_speed_padding[6];
4166495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov	u32 link_flags;			 /* VFPF_LINK_REPORT_XXX flags */
4176495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define VFPF_LINK_REPORT_LINK_DOWN	 (1 << 0)
4186495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define VFPF_LINK_REPORT_FULL_DUPLEX	 (1 << 1)
4196495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define VFPF_LINK_REPORT_RX_FC_ON	 (1 << 2)
4206495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov#define VFPF_LINK_REPORT_TX_FC_ON	 (1 << 3)
4216495d15a7cb1f3328dc38557c48afb754f900c14Dmitry Kravkov	u8 link_flags_padding[4];
422abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
423abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
424abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Eliorunion pf_vf_bulletin {
425abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	struct pf_vf_bulletin_content content;
426abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	struct pf_vf_bulletin_size size;
427abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior};
428abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior
429be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior#define MAX_TLVS_IN_LIST 50
430be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
431be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Eliorenum channel_tlvs {
432be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_NONE,
433be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_ACQUIRE,
4348d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_INIT,
4358d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_SETUP_Q,
4368d9ac297d18dbe05b6e7cb4378da51e67143b452Ariel Elior	CHANNEL_TLV_SET_Q_FILTERS,
437b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_ACTIVATE_Q,
438b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_DEACTIVATE_Q,
4399b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	CHANNEL_TLV_TEARDOWN_Q,
4409b176b6b63ed07472c26b6833a0ac23b373e6bf8Ariel Elior	CHANNEL_TLV_CLOSE,
4414513f92576856c552212fb9608aca56b88022454Ariel Elior	CHANNEL_TLV_RELEASE,
442b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_UPDATE_RSS_DEPRECATED,
443f1929b016c2161c364e45c21788aaae938ae557cAriel Elior	CHANNEL_TLV_PF_RELEASE_VF,
444be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_LIST_END,
445d16132cef8a72ff7563aff95f03bf505779fe3e6Ariel Elior	CHANNEL_TLV_FLR,
446abc5a021ba645cd162205209bd5664a0d4b866a6Ariel Elior	CHANNEL_TLV_PF_SET_MAC,
4473ec9f9ca79757c54b12f87e51a6664ba1e597b17Ariel Elior	CHANNEL_TLV_PF_SET_VLAN,
448b9871bcfd211d316adee317608dab44c58d6ea2dAriel Elior	CHANNEL_TLV_UPDATE_RSS,
4493d7d562ca4a884089344eb13451b5903a18d3817Yuval Mintz	CHANNEL_TLV_PHYS_PORT_ID,
45014a94ebd48c12f1aee7495c1a1518c33efd3647cMichal Kalderon	CHANNEL_TLV_UPDATE_TPA,
451be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior	CHANNEL_TLV_MAX
452be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior};
453be1f1ffaf9acf06f556a00e2d1548c70af2b6deaAriel Elior
4546411280ac94db94a09770807d3871d2661803604Ariel Elior#endif /* CONFIG_BNX2X_SRIOV */
4551ab4434c64f8d4786e4a26299e0ebb138a0a6415Ariel Elior#endif /* VF_PF_IF_H */
456