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