1*14b24e2bSVaishali Kulkarni /* 2*14b24e2bSVaishali Kulkarni * CDDL HEADER START 3*14b24e2bSVaishali Kulkarni * 4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the 5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1, (the "License"). 6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 7*14b24e2bSVaishali Kulkarni * 8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0. 10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions 11*14b24e2bSVaishali Kulkarni * and limitations under the License. 12*14b24e2bSVaishali Kulkarni * 13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each 14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the 16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying 17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner] 18*14b24e2bSVaishali Kulkarni * 19*14b24e2bSVaishali Kulkarni * CDDL HEADER END 20*14b24e2bSVaishali Kulkarni */ 21*14b24e2bSVaishali Kulkarni 22*14b24e2bSVaishali Kulkarni /* 23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc. 24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development 25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1, (the "License"). 26*14b24e2bSVaishali Kulkarni 27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 28*14b24e2bSVaishali Kulkarni 29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available 30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0 31*14b24e2bSVaishali Kulkarni 32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and 33*14b24e2bSVaishali Kulkarni * limitations under the License. 34*14b24e2bSVaishali Kulkarni */ 35*14b24e2bSVaishali Kulkarni 36*14b24e2bSVaishali Kulkarni #ifndef __ECORE_VF_PF_IF_H__ 37*14b24e2bSVaishali Kulkarni #define __ECORE_VF_PF_IF_H__ 38*14b24e2bSVaishali Kulkarni 39*14b24e2bSVaishali Kulkarni #define T_ETH_INDIRECTION_TABLE_SIZE 128 /* @@@ TBD MichalK this should be HSI? */ 40*14b24e2bSVaishali Kulkarni #define T_ETH_RSS_KEY_SIZE 10 /* @@@ TBD this should be HSI? */ 41*14b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE 42*14b24e2bSVaishali Kulkarni #define ETH_ALEN 6 /* @@@ TBD MichalK - should this be defined here?*/ 43*14b24e2bSVaishali Kulkarni #endif 44*14b24e2bSVaishali Kulkarni 45*14b24e2bSVaishali Kulkarni /*********************************************** 46*14b24e2bSVaishali Kulkarni * 47*14b24e2bSVaishali Kulkarni * Common definitions for all HVs 48*14b24e2bSVaishali Kulkarni * 49*14b24e2bSVaishali Kulkarni **/ 50*14b24e2bSVaishali Kulkarni struct vf_pf_resc_request { 51*14b24e2bSVaishali Kulkarni u8 num_rxqs; 52*14b24e2bSVaishali Kulkarni u8 num_txqs; 53*14b24e2bSVaishali Kulkarni u8 num_sbs; 54*14b24e2bSVaishali Kulkarni u8 num_mac_filters; 55*14b24e2bSVaishali Kulkarni u8 num_vlan_filters; 56*14b24e2bSVaishali Kulkarni u8 num_mc_filters; /* No limit so superfluous */ 57*14b24e2bSVaishali Kulkarni u8 num_cids; 58*14b24e2bSVaishali Kulkarni u8 padding; 59*14b24e2bSVaishali Kulkarni }; 60*14b24e2bSVaishali Kulkarni 61*14b24e2bSVaishali Kulkarni struct hw_sb_info { 62*14b24e2bSVaishali Kulkarni u16 hw_sb_id; /* aka absolute igu id, used to ack the sb */ 63*14b24e2bSVaishali Kulkarni u8 sb_qid; /* used to update DHC for sb */ 64*14b24e2bSVaishali Kulkarni u8 padding[5]; 65*14b24e2bSVaishali Kulkarni }; 66*14b24e2bSVaishali Kulkarni 67*14b24e2bSVaishali Kulkarni /*********************************************** 68*14b24e2bSVaishali Kulkarni * 69*14b24e2bSVaishali Kulkarni * HW VF-PF channel definitions 70*14b24e2bSVaishali Kulkarni * 71*14b24e2bSVaishali Kulkarni * A.K.A VF-PF mailbox 72*14b24e2bSVaishali Kulkarni * 73*14b24e2bSVaishali Kulkarni **/ 74*14b24e2bSVaishali Kulkarni #define TLV_BUFFER_SIZE 1024 75*14b24e2bSVaishali Kulkarni 76*14b24e2bSVaishali Kulkarni /* vf pf channel tlvs */ 77*14b24e2bSVaishali Kulkarni /* general tlv header (used for both vf->pf request and pf->vf response) */ 78*14b24e2bSVaishali Kulkarni struct channel_tlv { 79*14b24e2bSVaishali Kulkarni u16 type; 80*14b24e2bSVaishali Kulkarni u16 length; 81*14b24e2bSVaishali Kulkarni }; 82*14b24e2bSVaishali Kulkarni 83*14b24e2bSVaishali Kulkarni /* header of first vf->pf tlv carries the offset used to calculate reponse 84*14b24e2bSVaishali Kulkarni * buffer address 85*14b24e2bSVaishali Kulkarni */ 86*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv { 87*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 88*14b24e2bSVaishali Kulkarni u32 padding; 89*14b24e2bSVaishali Kulkarni u64 reply_address; 90*14b24e2bSVaishali Kulkarni }; 91*14b24e2bSVaishali Kulkarni 92*14b24e2bSVaishali Kulkarni /* header of pf->vf tlvs, carries the status of handling the request */ 93*14b24e2bSVaishali Kulkarni struct pfvf_tlv { 94*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 95*14b24e2bSVaishali Kulkarni u8 status; 96*14b24e2bSVaishali Kulkarni u8 padding[3]; 97*14b24e2bSVaishali Kulkarni }; 98*14b24e2bSVaishali Kulkarni 99*14b24e2bSVaishali Kulkarni /* response tlv used for most tlvs */ 100*14b24e2bSVaishali Kulkarni struct pfvf_def_resp_tlv { 101*14b24e2bSVaishali Kulkarni struct pfvf_tlv hdr; 102*14b24e2bSVaishali Kulkarni }; 103*14b24e2bSVaishali Kulkarni 104*14b24e2bSVaishali Kulkarni /* used to terminate and pad a tlv list */ 105*14b24e2bSVaishali Kulkarni struct channel_list_end_tlv { 106*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 107*14b24e2bSVaishali Kulkarni u8 padding[4]; 108*14b24e2bSVaishali Kulkarni }; 109*14b24e2bSVaishali Kulkarni 110*14b24e2bSVaishali Kulkarni /* Acquire */ 111*14b24e2bSVaishali Kulkarni struct vfpf_acquire_tlv { 112*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 113*14b24e2bSVaishali Kulkarni 114*14b24e2bSVaishali Kulkarni struct vf_pf_vfdev_info { 115*14b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE 116*14b24e2bSVaishali Kulkarni /* First bit was used on 8.7.x and 8.8.x versions, which had different 117*14b24e2bSVaishali Kulkarni * FWs used but with the same faspath HSI. As this was prior to the 118*14b24e2bSVaishali Kulkarni * fastpath versioning, wanted to have ability to override fw matching 119*14b24e2bSVaishali Kulkarni * and allow them to interact. 120*14b24e2bSVaishali Kulkarni */ 121*14b24e2bSVaishali Kulkarni #endif 122*14b24e2bSVaishali Kulkarni #define VFPF_ACQUIRE_CAP_PRE_FP_HSI (1 << 0) /* VF pre-FP hsi version */ 123*14b24e2bSVaishali Kulkarni #define VFPF_ACQUIRE_CAP_100G (1 << 1) /* VF can support 100g */ 124*14b24e2bSVaishali Kulkarni 125*14b24e2bSVaishali Kulkarni /* A requirement for supporting multi-Tx queues on a single queue-zone, 126*14b24e2bSVaishali Kulkarni * VF would pass qids as additional information whenever passing queue 127*14b24e2bSVaishali Kulkarni * references. 128*14b24e2bSVaishali Kulkarni * TODO - due to the CID limitations in Bar0, VFs currently don't pass 129*14b24e2bSVaishali Kulkarni * this, and use the legacy CID scheme. 130*14b24e2bSVaishali Kulkarni */ 131*14b24e2bSVaishali Kulkarni #define VFPF_ACQUIRE_CAP_QUEUE_QIDS (1 << 2) 132*14b24e2bSVaishali Kulkarni u64 capabilities; 133*14b24e2bSVaishali Kulkarni u8 fw_major; 134*14b24e2bSVaishali Kulkarni u8 fw_minor; 135*14b24e2bSVaishali Kulkarni u8 fw_revision; 136*14b24e2bSVaishali Kulkarni u8 fw_engineering; 137*14b24e2bSVaishali Kulkarni u32 driver_version; 138*14b24e2bSVaishali Kulkarni u16 opaque_fid; /* ME register value */ 139*14b24e2bSVaishali Kulkarni u8 os_type; /* VFPF_ACQUIRE_OS_* value */ 140*14b24e2bSVaishali Kulkarni u8 eth_fp_hsi_major; 141*14b24e2bSVaishali Kulkarni u8 eth_fp_hsi_minor; 142*14b24e2bSVaishali Kulkarni u8 padding[3]; 143*14b24e2bSVaishali Kulkarni } vfdev_info; 144*14b24e2bSVaishali Kulkarni 145*14b24e2bSVaishali Kulkarni struct vf_pf_resc_request resc_request; 146*14b24e2bSVaishali Kulkarni 147*14b24e2bSVaishali Kulkarni u64 bulletin_addr; 148*14b24e2bSVaishali Kulkarni u32 bulletin_size; 149*14b24e2bSVaishali Kulkarni u32 padding; 150*14b24e2bSVaishali Kulkarni }; 151*14b24e2bSVaishali Kulkarni 152*14b24e2bSVaishali Kulkarni /* receive side scaling tlv */ 153*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_rss_tlv { 154*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 155*14b24e2bSVaishali Kulkarni 156*14b24e2bSVaishali Kulkarni u8 update_rss_flags; 157*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_RSS_CONFIG_FLAG (1 << 0) 158*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_RSS_CAPS_FLAG (1 << 1) 159*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_RSS_IND_TABLE_FLAG (1 << 2) 160*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_RSS_KEY_FLAG (1 << 3) 161*14b24e2bSVaishali Kulkarni 162*14b24e2bSVaishali Kulkarni u8 rss_enable; 163*14b24e2bSVaishali Kulkarni u8 rss_caps; 164*14b24e2bSVaishali Kulkarni u8 rss_table_size_log; /* The table size is 2 ^ rss_table_size_log */ 165*14b24e2bSVaishali Kulkarni u16 rss_ind_table[T_ETH_INDIRECTION_TABLE_SIZE]; 166*14b24e2bSVaishali Kulkarni u32 rss_key[T_ETH_RSS_KEY_SIZE]; 167*14b24e2bSVaishali Kulkarni }; 168*14b24e2bSVaishali Kulkarni 169*14b24e2bSVaishali Kulkarni struct pfvf_storm_stats { 170*14b24e2bSVaishali Kulkarni u32 address; 171*14b24e2bSVaishali Kulkarni u32 len; 172*14b24e2bSVaishali Kulkarni }; 173*14b24e2bSVaishali Kulkarni 174*14b24e2bSVaishali Kulkarni struct pfvf_stats_info { 175*14b24e2bSVaishali Kulkarni struct pfvf_storm_stats mstats; 176*14b24e2bSVaishali Kulkarni struct pfvf_storm_stats pstats; 177*14b24e2bSVaishali Kulkarni struct pfvf_storm_stats tstats; 178*14b24e2bSVaishali Kulkarni struct pfvf_storm_stats ustats; 179*14b24e2bSVaishali Kulkarni }; 180*14b24e2bSVaishali Kulkarni 181*14b24e2bSVaishali Kulkarni /* acquire response tlv - carries the allocated resources */ 182*14b24e2bSVaishali Kulkarni struct pfvf_acquire_resp_tlv { 183*14b24e2bSVaishali Kulkarni struct pfvf_tlv hdr; 184*14b24e2bSVaishali Kulkarni 185*14b24e2bSVaishali Kulkarni struct pf_vf_pfdev_info { 186*14b24e2bSVaishali Kulkarni u32 chip_num; 187*14b24e2bSVaishali Kulkarni u32 mfw_ver; 188*14b24e2bSVaishali Kulkarni 189*14b24e2bSVaishali Kulkarni u16 fw_major; 190*14b24e2bSVaishali Kulkarni u16 fw_minor; 191*14b24e2bSVaishali Kulkarni u16 fw_rev; 192*14b24e2bSVaishali Kulkarni u16 fw_eng; 193*14b24e2bSVaishali Kulkarni 194*14b24e2bSVaishali Kulkarni u64 capabilities; 195*14b24e2bSVaishali Kulkarni #define PFVF_ACQUIRE_CAP_DEFAULT_UNTAGGED (1 << 0) 196*14b24e2bSVaishali Kulkarni #define PFVF_ACQUIRE_CAP_100G (1 << 1) /* If set, 100g PF */ 197*14b24e2bSVaishali Kulkarni /* There are old PF versions where the PF might mistakenly override the sanity 198*14b24e2bSVaishali Kulkarni * mechanism [version-based] and allow a VF that can't be supported to pass 199*14b24e2bSVaishali Kulkarni * the acquisition phase. 200*14b24e2bSVaishali Kulkarni * To overcome this, PFs now indicate that they're past that point and the new 201*14b24e2bSVaishali Kulkarni * VFs would fail probe on the older PFs that fail to do so. 202*14b24e2bSVaishali Kulkarni */ 203*14b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE 204*14b24e2bSVaishali Kulkarni /* Said bug was in quest/serpens; Can't be certain no official release included 205*14b24e2bSVaishali Kulkarni * the bug since the fix arrived very late in the programs. 206*14b24e2bSVaishali Kulkarni */ 207*14b24e2bSVaishali Kulkarni #endif 208*14b24e2bSVaishali Kulkarni #define PFVF_ACQUIRE_CAP_POST_FW_OVERRIDE (1 << 2) 209*14b24e2bSVaishali Kulkarni 210*14b24e2bSVaishali Kulkarni /* PF expects queues to be received with additional qids */ 211*14b24e2bSVaishali Kulkarni #define PFVF_ACQUIRE_CAP_QUEUE_QIDS (1 << 3) 212*14b24e2bSVaishali Kulkarni 213*14b24e2bSVaishali Kulkarni u16 db_size; 214*14b24e2bSVaishali Kulkarni u8 indices_per_sb; 215*14b24e2bSVaishali Kulkarni u8 os_type; 216*14b24e2bSVaishali Kulkarni 217*14b24e2bSVaishali Kulkarni /* These should match the PF's ecore_dev values */ 218*14b24e2bSVaishali Kulkarni u16 chip_rev; 219*14b24e2bSVaishali Kulkarni u8 dev_type; 220*14b24e2bSVaishali Kulkarni 221*14b24e2bSVaishali Kulkarni u8 padding; 222*14b24e2bSVaishali Kulkarni 223*14b24e2bSVaishali Kulkarni struct pfvf_stats_info stats_info; 224*14b24e2bSVaishali Kulkarni 225*14b24e2bSVaishali Kulkarni u8 port_mac[ETH_ALEN]; 226*14b24e2bSVaishali Kulkarni 227*14b24e2bSVaishali Kulkarni /* It's possible PF had to configure an older fastpath HSI 228*14b24e2bSVaishali Kulkarni * [in case VF is newer than PF]. This is communicated back 229*14b24e2bSVaishali Kulkarni * to the VF. It can also be used in case of error due to 230*14b24e2bSVaishali Kulkarni * non-matching versions to shed light in VF about failure. 231*14b24e2bSVaishali Kulkarni */ 232*14b24e2bSVaishali Kulkarni u8 major_fp_hsi; 233*14b24e2bSVaishali Kulkarni u8 minor_fp_hsi; 234*14b24e2bSVaishali Kulkarni } pfdev_info; 235*14b24e2bSVaishali Kulkarni 236*14b24e2bSVaishali Kulkarni struct pf_vf_resc { 237*14b24e2bSVaishali Kulkarni /* in case of status NO_RESOURCE in message hdr, pf will fill 238*14b24e2bSVaishali Kulkarni * this struct with suggested amount of resources for next 239*14b24e2bSVaishali Kulkarni * acquire request 240*14b24e2bSVaishali Kulkarni */ 241*14b24e2bSVaishali Kulkarni #define PFVF_MAX_QUEUES_PER_VF 16 242*14b24e2bSVaishali Kulkarni #define PFVF_MAX_SBS_PER_VF 16 243*14b24e2bSVaishali Kulkarni struct hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF]; 244*14b24e2bSVaishali Kulkarni u8 hw_qid[PFVF_MAX_QUEUES_PER_VF]; 245*14b24e2bSVaishali Kulkarni u8 cid[PFVF_MAX_QUEUES_PER_VF]; 246*14b24e2bSVaishali Kulkarni 247*14b24e2bSVaishali Kulkarni u8 num_rxqs; 248*14b24e2bSVaishali Kulkarni u8 num_txqs; 249*14b24e2bSVaishali Kulkarni u8 num_sbs; 250*14b24e2bSVaishali Kulkarni u8 num_mac_filters; 251*14b24e2bSVaishali Kulkarni u8 num_vlan_filters; 252*14b24e2bSVaishali Kulkarni u8 num_mc_filters; 253*14b24e2bSVaishali Kulkarni u8 num_cids; 254*14b24e2bSVaishali Kulkarni u8 padding; 255*14b24e2bSVaishali Kulkarni } resc; 256*14b24e2bSVaishali Kulkarni 257*14b24e2bSVaishali Kulkarni u32 bulletin_size; 258*14b24e2bSVaishali Kulkarni u32 padding; 259*14b24e2bSVaishali Kulkarni }; 260*14b24e2bSVaishali Kulkarni 261*14b24e2bSVaishali Kulkarni struct pfvf_start_queue_resp_tlv { 262*14b24e2bSVaishali Kulkarni struct pfvf_tlv hdr; 263*14b24e2bSVaishali Kulkarni u32 offset; /* offset to consumer/producer of queue */ 264*14b24e2bSVaishali Kulkarni u8 padding[4]; 265*14b24e2bSVaishali Kulkarni }; 266*14b24e2bSVaishali Kulkarni 267*14b24e2bSVaishali Kulkarni /* Extended queue information - additional index for reference inside qzone. 268*14b24e2bSVaishali Kulkarni * If commmunicated between VF/PF, each TLV relating to queues should be 269*14b24e2bSVaishali Kulkarni * extended by one such [or have a future base TLV that already contains info]. 270*14b24e2bSVaishali Kulkarni */ 271*14b24e2bSVaishali Kulkarni struct vfpf_qid_tlv { 272*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 273*14b24e2bSVaishali Kulkarni u8 qid; 274*14b24e2bSVaishali Kulkarni u8 padding[3]; 275*14b24e2bSVaishali Kulkarni }; 276*14b24e2bSVaishali Kulkarni 277*14b24e2bSVaishali Kulkarni /* Setup Queue */ 278*14b24e2bSVaishali Kulkarni struct vfpf_start_rxq_tlv { 279*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 280*14b24e2bSVaishali Kulkarni 281*14b24e2bSVaishali Kulkarni /* physical addresses */ 282*14b24e2bSVaishali Kulkarni u64 rxq_addr; 283*14b24e2bSVaishali Kulkarni u64 deprecated_sge_addr; 284*14b24e2bSVaishali Kulkarni u64 cqe_pbl_addr; 285*14b24e2bSVaishali Kulkarni 286*14b24e2bSVaishali Kulkarni u16 cqe_pbl_size; 287*14b24e2bSVaishali Kulkarni u16 hw_sb; 288*14b24e2bSVaishali Kulkarni u16 rx_qid; 289*14b24e2bSVaishali Kulkarni u16 hc_rate; /* desired interrupts per sec. */ 290*14b24e2bSVaishali Kulkarni 291*14b24e2bSVaishali Kulkarni u16 bd_max_bytes; 292*14b24e2bSVaishali Kulkarni u16 stat_id; 293*14b24e2bSVaishali Kulkarni u8 sb_index; 294*14b24e2bSVaishali Kulkarni u8 padding[3]; 295*14b24e2bSVaishali Kulkarni 296*14b24e2bSVaishali Kulkarni }; 297*14b24e2bSVaishali Kulkarni 298*14b24e2bSVaishali Kulkarni struct vfpf_start_txq_tlv { 299*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 300*14b24e2bSVaishali Kulkarni 301*14b24e2bSVaishali Kulkarni /* physical addresses */ 302*14b24e2bSVaishali Kulkarni u64 pbl_addr; 303*14b24e2bSVaishali Kulkarni u16 pbl_size; 304*14b24e2bSVaishali Kulkarni u16 stat_id; 305*14b24e2bSVaishali Kulkarni u16 tx_qid; 306*14b24e2bSVaishali Kulkarni u16 hw_sb; 307*14b24e2bSVaishali Kulkarni 308*14b24e2bSVaishali Kulkarni u32 flags; /* VFPF_QUEUE_FLG_X flags */ 309*14b24e2bSVaishali Kulkarni u16 hc_rate; /* desired interrupts per sec. */ 310*14b24e2bSVaishali Kulkarni u8 sb_index; 311*14b24e2bSVaishali Kulkarni u8 padding[3]; 312*14b24e2bSVaishali Kulkarni }; 313*14b24e2bSVaishali Kulkarni 314*14b24e2bSVaishali Kulkarni /* Stop RX Queue */ 315*14b24e2bSVaishali Kulkarni struct vfpf_stop_rxqs_tlv { 316*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 317*14b24e2bSVaishali Kulkarni 318*14b24e2bSVaishali Kulkarni u16 rx_qid; 319*14b24e2bSVaishali Kulkarni 320*14b24e2bSVaishali Kulkarni /* While the API supports multiple Rx-queues on a single TLV 321*14b24e2bSVaishali Kulkarni * message, in practice older VFs always used it as one [ecore]. 322*14b24e2bSVaishali Kulkarni * And there are PFs [starting with the CHANNEL_TLV_QID] which 323*14b24e2bSVaishali Kulkarni * would start assuming this is always a '1'. So in practice this 324*14b24e2bSVaishali Kulkarni * field should be considered deprecated and *Always* set to '1'. 325*14b24e2bSVaishali Kulkarni */ 326*14b24e2bSVaishali Kulkarni u8 num_rxqs; 327*14b24e2bSVaishali Kulkarni 328*14b24e2bSVaishali Kulkarni u8 cqe_completion; 329*14b24e2bSVaishali Kulkarni u8 padding[4]; 330*14b24e2bSVaishali Kulkarni }; 331*14b24e2bSVaishali Kulkarni 332*14b24e2bSVaishali Kulkarni /* Stop TX Queues */ 333*14b24e2bSVaishali Kulkarni struct vfpf_stop_txqs_tlv { 334*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 335*14b24e2bSVaishali Kulkarni 336*14b24e2bSVaishali Kulkarni u16 tx_qid; 337*14b24e2bSVaishali Kulkarni 338*14b24e2bSVaishali Kulkarni /* While the API supports multiple Tx-queues on a single TLV 339*14b24e2bSVaishali Kulkarni * message, in practice older VFs always used it as one [ecore]. 340*14b24e2bSVaishali Kulkarni * And there are PFs [starting with the CHANNEL_TLV_QID] which 341*14b24e2bSVaishali Kulkarni * would start assuming this is always a '1'. So in practice this 342*14b24e2bSVaishali Kulkarni * field should be considered deprecated and *Always* set to '1'. 343*14b24e2bSVaishali Kulkarni */ 344*14b24e2bSVaishali Kulkarni u8 num_txqs; 345*14b24e2bSVaishali Kulkarni u8 padding[5]; 346*14b24e2bSVaishali Kulkarni }; 347*14b24e2bSVaishali Kulkarni 348*14b24e2bSVaishali Kulkarni struct vfpf_update_rxq_tlv { 349*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 350*14b24e2bSVaishali Kulkarni 351*14b24e2bSVaishali Kulkarni u64 deprecated_sge_addr[PFVF_MAX_QUEUES_PER_VF]; 352*14b24e2bSVaishali Kulkarni 353*14b24e2bSVaishali Kulkarni u16 rx_qid; 354*14b24e2bSVaishali Kulkarni u8 num_rxqs; 355*14b24e2bSVaishali Kulkarni u8 flags; 356*14b24e2bSVaishali Kulkarni #define VFPF_RXQ_UPD_INIT_SGE_DEPRECATE_FLAG (1 << 0) 357*14b24e2bSVaishali Kulkarni #define VFPF_RXQ_UPD_COMPLETE_CQE_FLAG (1 << 1) 358*14b24e2bSVaishali Kulkarni #define VFPF_RXQ_UPD_COMPLETE_EVENT_FLAG (1 << 2) 359*14b24e2bSVaishali Kulkarni 360*14b24e2bSVaishali Kulkarni u8 padding[4]; 361*14b24e2bSVaishali Kulkarni }; 362*14b24e2bSVaishali Kulkarni 363*14b24e2bSVaishali Kulkarni /* Set Queue Filters */ 364*14b24e2bSVaishali Kulkarni struct vfpf_q_mac_vlan_filter { 365*14b24e2bSVaishali Kulkarni u32 flags; 366*14b24e2bSVaishali Kulkarni #define VFPF_Q_FILTER_DEST_MAC_VALID 0x01 367*14b24e2bSVaishali Kulkarni #define VFPF_Q_FILTER_VLAN_TAG_VALID 0x02 368*14b24e2bSVaishali Kulkarni #define VFPF_Q_FILTER_SET_MAC 0x100 /* set/clear */ 369*14b24e2bSVaishali Kulkarni 370*14b24e2bSVaishali Kulkarni u8 mac[ETH_ALEN]; 371*14b24e2bSVaishali Kulkarni u16 vlan_tag; 372*14b24e2bSVaishali Kulkarni 373*14b24e2bSVaishali Kulkarni u8 padding[4]; 374*14b24e2bSVaishali Kulkarni }; 375*14b24e2bSVaishali Kulkarni 376*14b24e2bSVaishali Kulkarni /* Start a vport */ 377*14b24e2bSVaishali Kulkarni struct vfpf_vport_start_tlv { 378*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 379*14b24e2bSVaishali Kulkarni 380*14b24e2bSVaishali Kulkarni u64 sb_addr[PFVF_MAX_SBS_PER_VF]; 381*14b24e2bSVaishali Kulkarni 382*14b24e2bSVaishali Kulkarni u32 tpa_mode; 383*14b24e2bSVaishali Kulkarni u16 dep1; 384*14b24e2bSVaishali Kulkarni u16 mtu; 385*14b24e2bSVaishali Kulkarni 386*14b24e2bSVaishali Kulkarni u8 vport_id; 387*14b24e2bSVaishali Kulkarni u8 inner_vlan_removal; 388*14b24e2bSVaishali Kulkarni 389*14b24e2bSVaishali Kulkarni u8 only_untagged; 390*14b24e2bSVaishali Kulkarni u8 max_buffers_per_cqe; 391*14b24e2bSVaishali Kulkarni 392*14b24e2bSVaishali Kulkarni u8 padding[4]; 393*14b24e2bSVaishali Kulkarni }; 394*14b24e2bSVaishali Kulkarni 395*14b24e2bSVaishali Kulkarni /* Extended tlvs - need to add rss, mcast, accept mode tlvs */ 396*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_activate_tlv { 397*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 398*14b24e2bSVaishali Kulkarni u8 update_rx; 399*14b24e2bSVaishali Kulkarni u8 update_tx; 400*14b24e2bSVaishali Kulkarni u8 active_rx; 401*14b24e2bSVaishali Kulkarni u8 active_tx; 402*14b24e2bSVaishali Kulkarni }; 403*14b24e2bSVaishali Kulkarni 404*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_tx_switch_tlv { 405*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 406*14b24e2bSVaishali Kulkarni u8 tx_switching; 407*14b24e2bSVaishali Kulkarni u8 padding[3]; 408*14b24e2bSVaishali Kulkarni }; 409*14b24e2bSVaishali Kulkarni 410*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_vlan_strip_tlv { 411*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 412*14b24e2bSVaishali Kulkarni u8 remove_vlan; 413*14b24e2bSVaishali Kulkarni u8 padding[3]; 414*14b24e2bSVaishali Kulkarni }; 415*14b24e2bSVaishali Kulkarni 416*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_mcast_bin_tlv { 417*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 418*14b24e2bSVaishali Kulkarni u8 padding[4]; 419*14b24e2bSVaishali Kulkarni 420*14b24e2bSVaishali Kulkarni u64 bins[8]; 421*14b24e2bSVaishali Kulkarni }; 422*14b24e2bSVaishali Kulkarni 423*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_accept_param_tlv { 424*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 425*14b24e2bSVaishali Kulkarni u8 update_rx_mode; 426*14b24e2bSVaishali Kulkarni u8 update_tx_mode; 427*14b24e2bSVaishali Kulkarni u8 rx_accept_filter; 428*14b24e2bSVaishali Kulkarni u8 tx_accept_filter; 429*14b24e2bSVaishali Kulkarni }; 430*14b24e2bSVaishali Kulkarni 431*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_accept_any_vlan_tlv { 432*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 433*14b24e2bSVaishali Kulkarni u8 update_accept_any_vlan_flg; 434*14b24e2bSVaishali Kulkarni u8 accept_any_vlan; 435*14b24e2bSVaishali Kulkarni 436*14b24e2bSVaishali Kulkarni u8 padding[2]; 437*14b24e2bSVaishali Kulkarni }; 438*14b24e2bSVaishali Kulkarni 439*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_sge_tpa_tlv { 440*14b24e2bSVaishali Kulkarni struct channel_tlv tl; 441*14b24e2bSVaishali Kulkarni 442*14b24e2bSVaishali Kulkarni u16 sge_tpa_flags; 443*14b24e2bSVaishali Kulkarni #define VFPF_TPA_IPV4_EN_FLAG (1 << 0) 444*14b24e2bSVaishali Kulkarni #define VFPF_TPA_IPV6_EN_FLAG (1 << 1) 445*14b24e2bSVaishali Kulkarni #define VFPF_TPA_PKT_SPLIT_FLAG (1 << 2) 446*14b24e2bSVaishali Kulkarni #define VFPF_TPA_HDR_DATA_SPLIT_FLAG (1 << 3) 447*14b24e2bSVaishali Kulkarni #define VFPF_TPA_GRO_CONSIST_FLAG (1 << 4) 448*14b24e2bSVaishali Kulkarni 449*14b24e2bSVaishali Kulkarni u8 update_sge_tpa_flags; 450*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_SGE_DEPRECATED_FLAG (1 << 0) 451*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_TPA_EN_FLAG (1 << 1) 452*14b24e2bSVaishali Kulkarni #define VFPF_UPDATE_TPA_PARAM_FLAG (1 << 2) 453*14b24e2bSVaishali Kulkarni 454*14b24e2bSVaishali Kulkarni u8 max_buffers_per_cqe; 455*14b24e2bSVaishali Kulkarni 456*14b24e2bSVaishali Kulkarni u16 deprecated_sge_buff_size; 457*14b24e2bSVaishali Kulkarni u16 tpa_max_size; 458*14b24e2bSVaishali Kulkarni u16 tpa_min_size_to_start; 459*14b24e2bSVaishali Kulkarni u16 tpa_min_size_to_cont; 460*14b24e2bSVaishali Kulkarni 461*14b24e2bSVaishali Kulkarni u8 tpa_max_aggs_num; 462*14b24e2bSVaishali Kulkarni u8 padding[7]; 463*14b24e2bSVaishali Kulkarni 464*14b24e2bSVaishali Kulkarni }; 465*14b24e2bSVaishali Kulkarni 466*14b24e2bSVaishali Kulkarni /* Primary tlv as a header for various extended tlvs for 467*14b24e2bSVaishali Kulkarni * various functionalities in vport update ramrod. 468*14b24e2bSVaishali Kulkarni */ 469*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_tlv { 470*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 471*14b24e2bSVaishali Kulkarni }; 472*14b24e2bSVaishali Kulkarni 473*14b24e2bSVaishali Kulkarni struct vfpf_ucast_filter_tlv { 474*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 475*14b24e2bSVaishali Kulkarni 476*14b24e2bSVaishali Kulkarni u8 opcode; 477*14b24e2bSVaishali Kulkarni u8 type; 478*14b24e2bSVaishali Kulkarni 479*14b24e2bSVaishali Kulkarni u8 mac[ETH_ALEN]; 480*14b24e2bSVaishali Kulkarni 481*14b24e2bSVaishali Kulkarni u16 vlan; 482*14b24e2bSVaishali Kulkarni u16 padding[3]; 483*14b24e2bSVaishali Kulkarni }; 484*14b24e2bSVaishali Kulkarni 485*14b24e2bSVaishali Kulkarni /* tunnel update param tlv */ 486*14b24e2bSVaishali Kulkarni struct vfpf_update_tunn_param_tlv { 487*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 488*14b24e2bSVaishali Kulkarni 489*14b24e2bSVaishali Kulkarni u8 tun_mode_update_mask; 490*14b24e2bSVaishali Kulkarni u8 tunn_mode; 491*14b24e2bSVaishali Kulkarni u8 update_tun_cls; 492*14b24e2bSVaishali Kulkarni u8 vxlan_clss; 493*14b24e2bSVaishali Kulkarni u8 l2gre_clss; 494*14b24e2bSVaishali Kulkarni u8 ipgre_clss; 495*14b24e2bSVaishali Kulkarni u8 l2geneve_clss; 496*14b24e2bSVaishali Kulkarni u8 ipgeneve_clss; 497*14b24e2bSVaishali Kulkarni u8 update_geneve_port; 498*14b24e2bSVaishali Kulkarni u8 update_vxlan_port; 499*14b24e2bSVaishali Kulkarni u16 geneve_port; 500*14b24e2bSVaishali Kulkarni u16 vxlan_port; 501*14b24e2bSVaishali Kulkarni u8 padding[2]; 502*14b24e2bSVaishali Kulkarni }; 503*14b24e2bSVaishali Kulkarni 504*14b24e2bSVaishali Kulkarni struct pfvf_update_tunn_param_tlv { 505*14b24e2bSVaishali Kulkarni struct pfvf_tlv hdr; 506*14b24e2bSVaishali Kulkarni 507*14b24e2bSVaishali Kulkarni u16 tunn_feature_mask; 508*14b24e2bSVaishali Kulkarni u8 vxlan_mode; 509*14b24e2bSVaishali Kulkarni u8 l2geneve_mode; 510*14b24e2bSVaishali Kulkarni u8 ipgeneve_mode; 511*14b24e2bSVaishali Kulkarni u8 l2gre_mode; 512*14b24e2bSVaishali Kulkarni u8 ipgre_mode; 513*14b24e2bSVaishali Kulkarni u8 vxlan_clss; 514*14b24e2bSVaishali Kulkarni u8 l2gre_clss; 515*14b24e2bSVaishali Kulkarni u8 ipgre_clss; 516*14b24e2bSVaishali Kulkarni u8 l2geneve_clss; 517*14b24e2bSVaishali Kulkarni u8 ipgeneve_clss; 518*14b24e2bSVaishali Kulkarni u16 vxlan_udp_port; 519*14b24e2bSVaishali Kulkarni u16 geneve_udp_port; 520*14b24e2bSVaishali Kulkarni }; 521*14b24e2bSVaishali Kulkarni 522*14b24e2bSVaishali Kulkarni struct tlv_buffer_size { 523*14b24e2bSVaishali Kulkarni u8 tlv_buffer[TLV_BUFFER_SIZE]; 524*14b24e2bSVaishali Kulkarni }; 525*14b24e2bSVaishali Kulkarni 526*14b24e2bSVaishali Kulkarni struct vfpf_update_coalesce { 527*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 528*14b24e2bSVaishali Kulkarni u16 rx_coal; 529*14b24e2bSVaishali Kulkarni u16 tx_coal; 530*14b24e2bSVaishali Kulkarni u16 qid; 531*14b24e2bSVaishali Kulkarni u8 padding[2]; 532*14b24e2bSVaishali Kulkarni }; 533*14b24e2bSVaishali Kulkarni 534*14b24e2bSVaishali Kulkarni union vfpf_tlvs { 535*14b24e2bSVaishali Kulkarni struct vfpf_first_tlv first_tlv; 536*14b24e2bSVaishali Kulkarni struct vfpf_acquire_tlv acquire; 537*14b24e2bSVaishali Kulkarni struct vfpf_start_rxq_tlv start_rxq; 538*14b24e2bSVaishali Kulkarni struct vfpf_start_txq_tlv start_txq; 539*14b24e2bSVaishali Kulkarni struct vfpf_stop_rxqs_tlv stop_rxqs; 540*14b24e2bSVaishali Kulkarni struct vfpf_stop_txqs_tlv stop_txqs; 541*14b24e2bSVaishali Kulkarni struct vfpf_update_rxq_tlv update_rxq; 542*14b24e2bSVaishali Kulkarni struct vfpf_vport_start_tlv start_vport; 543*14b24e2bSVaishali Kulkarni struct vfpf_vport_update_tlv vport_update; 544*14b24e2bSVaishali Kulkarni struct vfpf_ucast_filter_tlv ucast_filter; 545*14b24e2bSVaishali Kulkarni struct vfpf_update_tunn_param_tlv tunn_param_update; 546*14b24e2bSVaishali Kulkarni struct vfpf_update_coalesce update_coalesce; 547*14b24e2bSVaishali Kulkarni struct tlv_buffer_size tlv_buf_size; 548*14b24e2bSVaishali Kulkarni }; 549*14b24e2bSVaishali Kulkarni 550*14b24e2bSVaishali Kulkarni union pfvf_tlvs { 551*14b24e2bSVaishali Kulkarni struct pfvf_def_resp_tlv default_resp; 552*14b24e2bSVaishali Kulkarni struct pfvf_acquire_resp_tlv acquire_resp; 553*14b24e2bSVaishali Kulkarni struct tlv_buffer_size tlv_buf_size; 554*14b24e2bSVaishali Kulkarni struct pfvf_start_queue_resp_tlv queue_start; 555*14b24e2bSVaishali Kulkarni struct pfvf_update_tunn_param_tlv tunn_param_resp; 556*14b24e2bSVaishali Kulkarni }; 557*14b24e2bSVaishali Kulkarni 558*14b24e2bSVaishali Kulkarni /* This is a structure which is allocated in the VF, which the PF may update 559*14b24e2bSVaishali Kulkarni * when it deems it necessary to do so. The bulletin board is sampled 560*14b24e2bSVaishali Kulkarni * periodically by the VF. A copy per VF is maintained in the PF (to prevent 561*14b24e2bSVaishali Kulkarni * loss of data upon multiple updates (or the need for read modify write)). 562*14b24e2bSVaishali Kulkarni */ 563*14b24e2bSVaishali Kulkarni enum ecore_bulletin_bit { 564*14b24e2bSVaishali Kulkarni /* Alert the VF that a forced MAC was set by the PF */ 565*14b24e2bSVaishali Kulkarni MAC_ADDR_FORCED = 0, 566*14b24e2bSVaishali Kulkarni 567*14b24e2bSVaishali Kulkarni /* The VF should not access the vfpf channel */ 568*14b24e2bSVaishali Kulkarni VFPF_CHANNEL_INVALID = 1, 569*14b24e2bSVaishali Kulkarni 570*14b24e2bSVaishali Kulkarni /* Alert the VF that a forced VLAN was set by the PF */ 571*14b24e2bSVaishali Kulkarni VLAN_ADDR_FORCED = 2, 572*14b24e2bSVaishali Kulkarni 573*14b24e2bSVaishali Kulkarni /* Indicate that `default_only_untagged' contains actual data */ 574*14b24e2bSVaishali Kulkarni VFPF_BULLETIN_UNTAGGED_DEFAULT = 3, 575*14b24e2bSVaishali Kulkarni VFPF_BULLETIN_UNTAGGED_DEFAULT_FORCED = 4, 576*14b24e2bSVaishali Kulkarni 577*14b24e2bSVaishali Kulkarni /* Alert the VF that suggested mac was sent by the PF. 578*14b24e2bSVaishali Kulkarni * MAC_ADDR will be disabled in case MAC_ADDR_FORCED is set 579*14b24e2bSVaishali Kulkarni */ 580*14b24e2bSVaishali Kulkarni VFPF_BULLETIN_MAC_ADDR = 5 581*14b24e2bSVaishali Kulkarni }; 582*14b24e2bSVaishali Kulkarni 583*14b24e2bSVaishali Kulkarni struct ecore_bulletin_content { 584*14b24e2bSVaishali Kulkarni /* crc of structure to ensure is not in mid-update */ 585*14b24e2bSVaishali Kulkarni u32 crc; 586*14b24e2bSVaishali Kulkarni 587*14b24e2bSVaishali Kulkarni u32 version; 588*14b24e2bSVaishali Kulkarni 589*14b24e2bSVaishali Kulkarni /* bitmap indicating which fields hold valid values */ 590*14b24e2bSVaishali Kulkarni u64 valid_bitmap; 591*14b24e2bSVaishali Kulkarni 592*14b24e2bSVaishali Kulkarni /* used for MAC_ADDR or MAC_ADDR_FORCED */ 593*14b24e2bSVaishali Kulkarni u8 mac[ETH_ALEN]; 594*14b24e2bSVaishali Kulkarni 595*14b24e2bSVaishali Kulkarni /* If valid, 1 => only untagged Rx if no vlan is configured */ 596*14b24e2bSVaishali Kulkarni u8 default_only_untagged; 597*14b24e2bSVaishali Kulkarni u8 padding; 598*14b24e2bSVaishali Kulkarni 599*14b24e2bSVaishali Kulkarni /* The following is a 'copy' of ecore_mcp_link_state, 600*14b24e2bSVaishali Kulkarni * ecore_mcp_link_params and ecore_mcp_link_capabilities. Since it's 601*14b24e2bSVaishali Kulkarni * possible the structs will increase further along the road we cannot 602*14b24e2bSVaishali Kulkarni * have it here; Instead we need to have all of its fields. 603*14b24e2bSVaishali Kulkarni */ 604*14b24e2bSVaishali Kulkarni u8 req_autoneg; 605*14b24e2bSVaishali Kulkarni u8 req_autoneg_pause; 606*14b24e2bSVaishali Kulkarni u8 req_forced_rx; 607*14b24e2bSVaishali Kulkarni u8 req_forced_tx; 608*14b24e2bSVaishali Kulkarni u8 padding2[4]; 609*14b24e2bSVaishali Kulkarni 610*14b24e2bSVaishali Kulkarni u32 req_adv_speed; 611*14b24e2bSVaishali Kulkarni u32 req_forced_speed; 612*14b24e2bSVaishali Kulkarni u32 req_loopback; 613*14b24e2bSVaishali Kulkarni u32 padding3; 614*14b24e2bSVaishali Kulkarni 615*14b24e2bSVaishali Kulkarni u8 link_up; 616*14b24e2bSVaishali Kulkarni u8 full_duplex; 617*14b24e2bSVaishali Kulkarni u8 autoneg; 618*14b24e2bSVaishali Kulkarni u8 autoneg_complete; 619*14b24e2bSVaishali Kulkarni u8 parallel_detection; 620*14b24e2bSVaishali Kulkarni u8 pfc_enabled; 621*14b24e2bSVaishali Kulkarni u8 partner_tx_flow_ctrl_en; 622*14b24e2bSVaishali Kulkarni u8 partner_rx_flow_ctrl_en; 623*14b24e2bSVaishali Kulkarni 624*14b24e2bSVaishali Kulkarni u8 partner_adv_pause; 625*14b24e2bSVaishali Kulkarni u8 sfp_tx_fault; 626*14b24e2bSVaishali Kulkarni u16 vxlan_udp_port; 627*14b24e2bSVaishali Kulkarni u16 geneve_udp_port; 628*14b24e2bSVaishali Kulkarni u8 padding4[2]; 629*14b24e2bSVaishali Kulkarni 630*14b24e2bSVaishali Kulkarni u32 speed; 631*14b24e2bSVaishali Kulkarni u32 partner_adv_speed; 632*14b24e2bSVaishali Kulkarni 633*14b24e2bSVaishali Kulkarni u32 capability_speed; 634*14b24e2bSVaishali Kulkarni 635*14b24e2bSVaishali Kulkarni /* Forced vlan */ 636*14b24e2bSVaishali Kulkarni u16 pvid; 637*14b24e2bSVaishali Kulkarni u16 padding5; 638*14b24e2bSVaishali Kulkarni }; 639*14b24e2bSVaishali Kulkarni 640*14b24e2bSVaishali Kulkarni struct ecore_bulletin { 641*14b24e2bSVaishali Kulkarni dma_addr_t phys; 642*14b24e2bSVaishali Kulkarni struct ecore_bulletin_content *p_virt; 643*14b24e2bSVaishali Kulkarni u32 size; 644*14b24e2bSVaishali Kulkarni }; 645*14b24e2bSVaishali Kulkarni 646*14b24e2bSVaishali Kulkarni enum { 647*14b24e2bSVaishali Kulkarni /*!!!!! Make sure to update STRINGS structure accordingly !!!!!*/ 648*14b24e2bSVaishali Kulkarni 649*14b24e2bSVaishali Kulkarni CHANNEL_TLV_NONE, /* ends tlv sequence */ 650*14b24e2bSVaishali Kulkarni CHANNEL_TLV_ACQUIRE, 651*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_START, 652*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE, 653*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_TEARDOWN, 654*14b24e2bSVaishali Kulkarni CHANNEL_TLV_START_RXQ, 655*14b24e2bSVaishali Kulkarni CHANNEL_TLV_START_TXQ, 656*14b24e2bSVaishali Kulkarni CHANNEL_TLV_STOP_RXQS, 657*14b24e2bSVaishali Kulkarni CHANNEL_TLV_STOP_TXQS, 658*14b24e2bSVaishali Kulkarni CHANNEL_TLV_UPDATE_RXQ, 659*14b24e2bSVaishali Kulkarni CHANNEL_TLV_INT_CLEANUP, 660*14b24e2bSVaishali Kulkarni CHANNEL_TLV_CLOSE, 661*14b24e2bSVaishali Kulkarni CHANNEL_TLV_RELEASE, 662*14b24e2bSVaishali Kulkarni CHANNEL_TLV_LIST_END, 663*14b24e2bSVaishali Kulkarni CHANNEL_TLV_UCAST_FILTER, 664*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_ACTIVATE, 665*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_TX_SWITCH, 666*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_VLAN_STRIP, 667*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_MCAST, 668*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_ACCEPT_PARAM, 669*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_RSS, 670*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_ACCEPT_ANY_VLAN, 671*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_SGE_TPA, 672*14b24e2bSVaishali Kulkarni CHANNEL_TLV_UPDATE_TUNN_PARAM, 673*14b24e2bSVaishali Kulkarni CHANNEL_TLV_COALESCE_UPDATE, 674*14b24e2bSVaishali Kulkarni CHANNEL_TLV_QID, 675*14b24e2bSVaishali Kulkarni CHANNEL_TLV_MAX, 676*14b24e2bSVaishali Kulkarni 677*14b24e2bSVaishali Kulkarni /* Required for iterating over vport-update tlvs. 678*14b24e2bSVaishali Kulkarni * Will break in case non-sequential vport-update tlvs. 679*14b24e2bSVaishali Kulkarni */ 680*14b24e2bSVaishali Kulkarni CHANNEL_TLV_VPORT_UPDATE_MAX = CHANNEL_TLV_VPORT_UPDATE_SGE_TPA + 1, 681*14b24e2bSVaishali Kulkarni 682*14b24e2bSVaishali Kulkarni /*!!!!! Make sure to update STRINGS structure accordingly !!!!!*/ 683*14b24e2bSVaishali Kulkarni }; 684*14b24e2bSVaishali Kulkarni extern const char *ecore_channel_tlvs_string[]; 685*14b24e2bSVaishali Kulkarni 686*14b24e2bSVaishali Kulkarni #endif /* __ECORE_VF_PF_IF_H__ */ 687