132a47e72SYuval Mintz /* QLogic qed NIC Driver 2e8f1cb50SMintz, Yuval * Copyright (c) 2015-2017 QLogic Corporation 332a47e72SYuval Mintz * 4e8f1cb50SMintz, Yuval * This software is available to you under a choice of one of two 5e8f1cb50SMintz, Yuval * licenses. You may choose to be licensed under the terms of the GNU 6e8f1cb50SMintz, Yuval * General Public License (GPL) Version 2, available from the file 7e8f1cb50SMintz, Yuval * COPYING in the main directory of this source tree, or the 8e8f1cb50SMintz, Yuval * OpenIB.org BSD license below: 9e8f1cb50SMintz, Yuval * 10e8f1cb50SMintz, Yuval * Redistribution and use in source and binary forms, with or 11e8f1cb50SMintz, Yuval * without modification, are permitted provided that the following 12e8f1cb50SMintz, Yuval * conditions are met: 13e8f1cb50SMintz, Yuval * 14e8f1cb50SMintz, Yuval * - Redistributions of source code must retain the above 15e8f1cb50SMintz, Yuval * copyright notice, this list of conditions and the following 16e8f1cb50SMintz, Yuval * disclaimer. 17e8f1cb50SMintz, Yuval * 18e8f1cb50SMintz, Yuval * - Redistributions in binary form must reproduce the above 19e8f1cb50SMintz, Yuval * copyright notice, this list of conditions and the following 20e8f1cb50SMintz, Yuval * disclaimer in the documentation and /or other materials 21e8f1cb50SMintz, Yuval * provided with the distribution. 22e8f1cb50SMintz, Yuval * 23e8f1cb50SMintz, Yuval * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24e8f1cb50SMintz, Yuval * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25e8f1cb50SMintz, Yuval * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26e8f1cb50SMintz, Yuval * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27e8f1cb50SMintz, Yuval * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28e8f1cb50SMintz, Yuval * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29e8f1cb50SMintz, Yuval * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30e8f1cb50SMintz, Yuval * SOFTWARE. 3132a47e72SYuval Mintz */ 3232a47e72SYuval Mintz 3332a47e72SYuval Mintz #ifndef _QED_VF_H 3432a47e72SYuval Mintz #define _QED_VF_H 3532a47e72SYuval Mintz 36dacd88d6SYuval Mintz #include "qed_l2.h" 3736558c3dSYuval Mintz #include "qed_mcp.h" 38dacd88d6SYuval Mintz 39dacd88d6SYuval Mintz #define T_ETH_INDIRECTION_TABLE_SIZE 128 40dacd88d6SYuval Mintz #define T_ETH_RSS_KEY_SIZE 10 41dacd88d6SYuval Mintz 421408cc1fSYuval Mintz struct vf_pf_resc_request { 431408cc1fSYuval Mintz u8 num_rxqs; 441408cc1fSYuval Mintz u8 num_txqs; 451408cc1fSYuval Mintz u8 num_sbs; 461408cc1fSYuval Mintz u8 num_mac_filters; 471408cc1fSYuval Mintz u8 num_vlan_filters; 481408cc1fSYuval Mintz u8 num_mc_filters; 4908bc8f15SMintz, Yuval u8 num_cids; 5008bc8f15SMintz, Yuval u8 padding; 511408cc1fSYuval Mintz }; 521408cc1fSYuval Mintz 531408cc1fSYuval Mintz struct hw_sb_info { 541408cc1fSYuval Mintz u16 hw_sb_id; 551408cc1fSYuval Mintz u8 sb_qid; 561408cc1fSYuval Mintz u8 padding[5]; 571408cc1fSYuval Mintz }; 581408cc1fSYuval Mintz 59dacd88d6SYuval Mintz #define TLV_BUFFER_SIZE 1024 60dacd88d6SYuval Mintz 6137bff2b9SYuval Mintz enum { 6237bff2b9SYuval Mintz PFVF_STATUS_WAITING, 6337bff2b9SYuval Mintz PFVF_STATUS_SUCCESS, 6437bff2b9SYuval Mintz PFVF_STATUS_FAILURE, 6537bff2b9SYuval Mintz PFVF_STATUS_NOT_SUPPORTED, 6637bff2b9SYuval Mintz PFVF_STATUS_NO_RESOURCE, 6737bff2b9SYuval Mintz PFVF_STATUS_FORCED, 687eff82b0SYuval Mintz PFVF_STATUS_MALICIOUS, 6937bff2b9SYuval Mintz }; 7037bff2b9SYuval Mintz 7137bff2b9SYuval Mintz /* vf pf channel tlvs */ 7237bff2b9SYuval Mintz /* general tlv header (used for both vf->pf request and pf->vf response) */ 7337bff2b9SYuval Mintz struct channel_tlv { 7437bff2b9SYuval Mintz u16 type; 7537bff2b9SYuval Mintz u16 length; 7637bff2b9SYuval Mintz }; 7737bff2b9SYuval Mintz 7837bff2b9SYuval Mintz /* header of first vf->pf tlv carries the offset used to calculate reponse 7937bff2b9SYuval Mintz * buffer address 8037bff2b9SYuval Mintz */ 8137bff2b9SYuval Mintz struct vfpf_first_tlv { 8237bff2b9SYuval Mintz struct channel_tlv tl; 8337bff2b9SYuval Mintz u32 padding; 8437bff2b9SYuval Mintz u64 reply_address; 8537bff2b9SYuval Mintz }; 8637bff2b9SYuval Mintz 8737bff2b9SYuval Mintz /* header of pf->vf tlvs, carries the status of handling the request */ 8837bff2b9SYuval Mintz struct pfvf_tlv { 8937bff2b9SYuval Mintz struct channel_tlv tl; 9037bff2b9SYuval Mintz u8 status; 9137bff2b9SYuval Mintz u8 padding[3]; 9237bff2b9SYuval Mintz }; 9337bff2b9SYuval Mintz 9437bff2b9SYuval Mintz /* response tlv used for most tlvs */ 9537bff2b9SYuval Mintz struct pfvf_def_resp_tlv { 9637bff2b9SYuval Mintz struct pfvf_tlv hdr; 9737bff2b9SYuval Mintz }; 9837bff2b9SYuval Mintz 9937bff2b9SYuval Mintz /* used to terminate and pad a tlv list */ 10037bff2b9SYuval Mintz struct channel_list_end_tlv { 10137bff2b9SYuval Mintz struct channel_tlv tl; 10237bff2b9SYuval Mintz u8 padding[4]; 10337bff2b9SYuval Mintz }; 10437bff2b9SYuval Mintz 1051408cc1fSYuval Mintz #define VFPF_ACQUIRE_OS_LINUX (0) 1061408cc1fSYuval Mintz #define VFPF_ACQUIRE_OS_WINDOWS (1) 1071408cc1fSYuval Mintz #define VFPF_ACQUIRE_OS_ESX (2) 1081408cc1fSYuval Mintz #define VFPF_ACQUIRE_OS_SOLARIS (3) 1091408cc1fSYuval Mintz #define VFPF_ACQUIRE_OS_LINUX_USERSPACE (4) 1101408cc1fSYuval Mintz 1111408cc1fSYuval Mintz struct vfpf_acquire_tlv { 1121408cc1fSYuval Mintz struct vfpf_first_tlv first_tlv; 1131408cc1fSYuval Mintz 1141408cc1fSYuval Mintz struct vf_pf_vfdev_info { 115a044df83SYuval Mintz #define VFPF_ACQUIRE_CAP_PRE_FP_HSI (1 << 0) /* VF pre-FP hsi version */ 1161408cc1fSYuval Mintz #define VFPF_ACQUIRE_CAP_100G (1 << 1) /* VF can support 100g */ 11708bc8f15SMintz, Yuval /* A requirement for supporting multi-Tx queues on a single queue-zone, 11808bc8f15SMintz, Yuval * VF would pass qids as additional information whenever passing queue 11908bc8f15SMintz, Yuval * references. 12008bc8f15SMintz, Yuval */ 12108bc8f15SMintz, Yuval #define VFPF_ACQUIRE_CAP_QUEUE_QIDS BIT(2) 1221408cc1fSYuval Mintz u64 capabilities; 1231408cc1fSYuval Mintz u8 fw_major; 1241408cc1fSYuval Mintz u8 fw_minor; 1251408cc1fSYuval Mintz u8 fw_revision; 1261408cc1fSYuval Mintz u8 fw_engineering; 1271408cc1fSYuval Mintz u32 driver_version; 1281408cc1fSYuval Mintz u16 opaque_fid; /* ME register value */ 1291408cc1fSYuval Mintz u8 os_type; /* VFPF_ACQUIRE_OS_* value */ 1301fe614d1SYuval Mintz u8 eth_fp_hsi_major; 1311fe614d1SYuval Mintz u8 eth_fp_hsi_minor; 1321fe614d1SYuval Mintz u8 padding[3]; 1331408cc1fSYuval Mintz } vfdev_info; 1341408cc1fSYuval Mintz 1351408cc1fSYuval Mintz struct vf_pf_resc_request resc_request; 1361408cc1fSYuval Mintz 1371408cc1fSYuval Mintz u64 bulletin_addr; 1381408cc1fSYuval Mintz u32 bulletin_size; 1391408cc1fSYuval Mintz u32 padding; 1401408cc1fSYuval Mintz }; 1411408cc1fSYuval Mintz 142dacd88d6SYuval Mintz /* receive side scaling tlv */ 143dacd88d6SYuval Mintz struct vfpf_vport_update_rss_tlv { 144dacd88d6SYuval Mintz struct channel_tlv tl; 145dacd88d6SYuval Mintz 146dacd88d6SYuval Mintz u8 update_rss_flags; 147dacd88d6SYuval Mintz #define VFPF_UPDATE_RSS_CONFIG_FLAG BIT(0) 148dacd88d6SYuval Mintz #define VFPF_UPDATE_RSS_CAPS_FLAG BIT(1) 149dacd88d6SYuval Mintz #define VFPF_UPDATE_RSS_IND_TABLE_FLAG BIT(2) 150dacd88d6SYuval Mintz #define VFPF_UPDATE_RSS_KEY_FLAG BIT(3) 151dacd88d6SYuval Mintz 152dacd88d6SYuval Mintz u8 rss_enable; 153dacd88d6SYuval Mintz u8 rss_caps; 154dacd88d6SYuval Mintz u8 rss_table_size_log; /* The table size is 2 ^ rss_table_size_log */ 155dacd88d6SYuval Mintz u16 rss_ind_table[T_ETH_INDIRECTION_TABLE_SIZE]; 156dacd88d6SYuval Mintz u32 rss_key[T_ETH_RSS_KEY_SIZE]; 157dacd88d6SYuval Mintz }; 158dacd88d6SYuval Mintz 1591408cc1fSYuval Mintz struct pfvf_storm_stats { 1601408cc1fSYuval Mintz u32 address; 1611408cc1fSYuval Mintz u32 len; 1621408cc1fSYuval Mintz }; 1631408cc1fSYuval Mintz 1641408cc1fSYuval Mintz struct pfvf_stats_info { 1651408cc1fSYuval Mintz struct pfvf_storm_stats mstats; 1661408cc1fSYuval Mintz struct pfvf_storm_stats pstats; 1671408cc1fSYuval Mintz struct pfvf_storm_stats tstats; 1681408cc1fSYuval Mintz struct pfvf_storm_stats ustats; 1691408cc1fSYuval Mintz }; 1701408cc1fSYuval Mintz 1711408cc1fSYuval Mintz struct pfvf_acquire_resp_tlv { 1721408cc1fSYuval Mintz struct pfvf_tlv hdr; 1731408cc1fSYuval Mintz 1741408cc1fSYuval Mintz struct pf_vf_pfdev_info { 1751408cc1fSYuval Mintz u32 chip_num; 1761408cc1fSYuval Mintz u32 mfw_ver; 1771408cc1fSYuval Mintz 1781408cc1fSYuval Mintz u16 fw_major; 1791408cc1fSYuval Mintz u16 fw_minor; 1801408cc1fSYuval Mintz u16 fw_rev; 1811408cc1fSYuval Mintz u16 fw_eng; 1821408cc1fSYuval Mintz 1831408cc1fSYuval Mintz u64 capabilities; 1841408cc1fSYuval Mintz #define PFVF_ACQUIRE_CAP_DEFAULT_UNTAGGED BIT(0) 1851408cc1fSYuval Mintz #define PFVF_ACQUIRE_CAP_100G BIT(1) /* If set, 100g PF */ 1861408cc1fSYuval Mintz /* There are old PF versions where the PF might mistakenly override the sanity 1871408cc1fSYuval Mintz * mechanism [version-based] and allow a VF that can't be supported to pass 1881408cc1fSYuval Mintz * the acquisition phase. 1891408cc1fSYuval Mintz * To overcome this, PFs now indicate that they're past that point and the new 1901408cc1fSYuval Mintz * VFs would fail probe on the older PFs that fail to do so. 1911408cc1fSYuval Mintz */ 1921408cc1fSYuval Mintz #define PFVF_ACQUIRE_CAP_POST_FW_OVERRIDE BIT(2) 1931408cc1fSYuval Mintz 19408bc8f15SMintz, Yuval /* PF expects queues to be received with additional qids */ 19508bc8f15SMintz, Yuval #define PFVF_ACQUIRE_CAP_QUEUE_QIDS BIT(3) 19608bc8f15SMintz, Yuval 1971408cc1fSYuval Mintz u16 db_size; 1981408cc1fSYuval Mintz u8 indices_per_sb; 1991408cc1fSYuval Mintz u8 os_type; 2001408cc1fSYuval Mintz 2011408cc1fSYuval Mintz /* These should match the PF's qed_dev values */ 2021408cc1fSYuval Mintz u16 chip_rev; 2031408cc1fSYuval Mintz u8 dev_type; 2041408cc1fSYuval Mintz 2051408cc1fSYuval Mintz u8 padding; 2061408cc1fSYuval Mintz 2071408cc1fSYuval Mintz struct pfvf_stats_info stats_info; 2081408cc1fSYuval Mintz 2091408cc1fSYuval Mintz u8 port_mac[ETH_ALEN]; 2101fe614d1SYuval Mintz 2111fe614d1SYuval Mintz /* It's possible PF had to configure an older fastpath HSI 2121fe614d1SYuval Mintz * [in case VF is newer than PF]. This is communicated back 2131fe614d1SYuval Mintz * to the VF. It can also be used in case of error due to 2141fe614d1SYuval Mintz * non-matching versions to shed light in VF about failure. 2151fe614d1SYuval Mintz */ 2161fe614d1SYuval Mintz u8 major_fp_hsi; 2171fe614d1SYuval Mintz u8 minor_fp_hsi; 2181408cc1fSYuval Mintz } pfdev_info; 2191408cc1fSYuval Mintz 2201408cc1fSYuval Mintz struct pf_vf_resc { 2211408cc1fSYuval Mintz #define PFVF_MAX_QUEUES_PER_VF 16 2221408cc1fSYuval Mintz #define PFVF_MAX_SBS_PER_VF 16 2231408cc1fSYuval Mintz struct hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF]; 2241408cc1fSYuval Mintz u8 hw_qid[PFVF_MAX_QUEUES_PER_VF]; 2251408cc1fSYuval Mintz u8 cid[PFVF_MAX_QUEUES_PER_VF]; 2261408cc1fSYuval Mintz 2271408cc1fSYuval Mintz u8 num_rxqs; 2281408cc1fSYuval Mintz u8 num_txqs; 2291408cc1fSYuval Mintz u8 num_sbs; 2301408cc1fSYuval Mintz u8 num_mac_filters; 2311408cc1fSYuval Mintz u8 num_vlan_filters; 2321408cc1fSYuval Mintz u8 num_mc_filters; 23308bc8f15SMintz, Yuval u8 num_cids; 23408bc8f15SMintz, Yuval u8 padding; 2351408cc1fSYuval Mintz } resc; 2361408cc1fSYuval Mintz 2371408cc1fSYuval Mintz u32 bulletin_size; 2381408cc1fSYuval Mintz u32 padding; 2391408cc1fSYuval Mintz }; 2401408cc1fSYuval Mintz 241dacd88d6SYuval Mintz struct pfvf_start_queue_resp_tlv { 242dacd88d6SYuval Mintz struct pfvf_tlv hdr; 243dacd88d6SYuval Mintz u32 offset; /* offset to consumer/producer of queue */ 244dacd88d6SYuval Mintz u8 padding[4]; 245dacd88d6SYuval Mintz }; 246dacd88d6SYuval Mintz 24708bc8f15SMintz, Yuval /* Extended queue information - additional index for reference inside qzone. 24808bc8f15SMintz, Yuval * If commmunicated between VF/PF, each TLV relating to queues should be 24908bc8f15SMintz, Yuval * extended by one such [or have a future base TLV that already contains info]. 25008bc8f15SMintz, Yuval */ 25108bc8f15SMintz, Yuval struct vfpf_qid_tlv { 25208bc8f15SMintz, Yuval struct channel_tlv tl; 25308bc8f15SMintz, Yuval u8 qid; 25408bc8f15SMintz, Yuval u8 padding[3]; 25508bc8f15SMintz, Yuval }; 25608bc8f15SMintz, Yuval 257dacd88d6SYuval Mintz /* Setup Queue */ 258dacd88d6SYuval Mintz struct vfpf_start_rxq_tlv { 259dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 260dacd88d6SYuval Mintz 261dacd88d6SYuval Mintz /* physical addresses */ 262dacd88d6SYuval Mintz u64 rxq_addr; 263dacd88d6SYuval Mintz u64 deprecated_sge_addr; 264dacd88d6SYuval Mintz u64 cqe_pbl_addr; 265dacd88d6SYuval Mintz 266dacd88d6SYuval Mintz u16 cqe_pbl_size; 267dacd88d6SYuval Mintz u16 hw_sb; 268dacd88d6SYuval Mintz u16 rx_qid; 269dacd88d6SYuval Mintz u16 hc_rate; /* desired interrupts per sec. */ 270dacd88d6SYuval Mintz 271dacd88d6SYuval Mintz u16 bd_max_bytes; 272dacd88d6SYuval Mintz u16 stat_id; 273dacd88d6SYuval Mintz u8 sb_index; 274dacd88d6SYuval Mintz u8 padding[3]; 275dacd88d6SYuval Mintz }; 276dacd88d6SYuval Mintz 277dacd88d6SYuval Mintz struct vfpf_start_txq_tlv { 278dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 279dacd88d6SYuval Mintz 280dacd88d6SYuval Mintz /* physical addresses */ 281dacd88d6SYuval Mintz u64 pbl_addr; 282dacd88d6SYuval Mintz u16 pbl_size; 283dacd88d6SYuval Mintz u16 stat_id; 284dacd88d6SYuval Mintz u16 tx_qid; 285dacd88d6SYuval Mintz u16 hw_sb; 286dacd88d6SYuval Mintz 287dacd88d6SYuval Mintz u32 flags; /* VFPF_QUEUE_FLG_X flags */ 288dacd88d6SYuval Mintz u16 hc_rate; /* desired interrupts per sec. */ 289dacd88d6SYuval Mintz u8 sb_index; 290dacd88d6SYuval Mintz u8 padding[3]; 291dacd88d6SYuval Mintz }; 292dacd88d6SYuval Mintz 293dacd88d6SYuval Mintz /* Stop RX Queue */ 294dacd88d6SYuval Mintz struct vfpf_stop_rxqs_tlv { 295dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 296dacd88d6SYuval Mintz 297dacd88d6SYuval Mintz u16 rx_qid; 2984c4fa793SMintz, Yuval 2994c4fa793SMintz, Yuval /* this field is deprecated and should *always* be set to '1' */ 300dacd88d6SYuval Mintz u8 num_rxqs; 301dacd88d6SYuval Mintz u8 cqe_completion; 302dacd88d6SYuval Mintz u8 padding[4]; 303dacd88d6SYuval Mintz }; 304dacd88d6SYuval Mintz 305dacd88d6SYuval Mintz /* Stop TX Queues */ 306dacd88d6SYuval Mintz struct vfpf_stop_txqs_tlv { 307dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 308dacd88d6SYuval Mintz 309dacd88d6SYuval Mintz u16 tx_qid; 3104c4fa793SMintz, Yuval 3114c4fa793SMintz, Yuval /* this field is deprecated and should *always* be set to '1' */ 312dacd88d6SYuval Mintz u8 num_txqs; 313dacd88d6SYuval Mintz u8 padding[5]; 314dacd88d6SYuval Mintz }; 315dacd88d6SYuval Mintz 316dacd88d6SYuval Mintz struct vfpf_update_rxq_tlv { 317dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 318dacd88d6SYuval Mintz 319dacd88d6SYuval Mintz u64 deprecated_sge_addr[PFVF_MAX_QUEUES_PER_VF]; 320dacd88d6SYuval Mintz 321dacd88d6SYuval Mintz u16 rx_qid; 322dacd88d6SYuval Mintz u8 num_rxqs; 323dacd88d6SYuval Mintz u8 flags; 324dacd88d6SYuval Mintz #define VFPF_RXQ_UPD_INIT_SGE_DEPRECATE_FLAG BIT(0) 325dacd88d6SYuval Mintz #define VFPF_RXQ_UPD_COMPLETE_CQE_FLAG BIT(1) 326dacd88d6SYuval Mintz #define VFPF_RXQ_UPD_COMPLETE_EVENT_FLAG BIT(2) 327dacd88d6SYuval Mintz 328dacd88d6SYuval Mintz u8 padding[4]; 329dacd88d6SYuval Mintz }; 330dacd88d6SYuval Mintz 331dacd88d6SYuval Mintz /* Set Queue Filters */ 332dacd88d6SYuval Mintz struct vfpf_q_mac_vlan_filter { 333dacd88d6SYuval Mintz u32 flags; 334dacd88d6SYuval Mintz #define VFPF_Q_FILTER_DEST_MAC_VALID 0x01 335dacd88d6SYuval Mintz #define VFPF_Q_FILTER_VLAN_TAG_VALID 0x02 336dacd88d6SYuval Mintz #define VFPF_Q_FILTER_SET_MAC 0x100 /* set/clear */ 337dacd88d6SYuval Mintz 338dacd88d6SYuval Mintz u8 mac[ETH_ALEN]; 339dacd88d6SYuval Mintz u16 vlan_tag; 340dacd88d6SYuval Mintz 341dacd88d6SYuval Mintz u8 padding[4]; 342dacd88d6SYuval Mintz }; 343dacd88d6SYuval Mintz 344dacd88d6SYuval Mintz /* Start a vport */ 345dacd88d6SYuval Mintz struct vfpf_vport_start_tlv { 346dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 347dacd88d6SYuval Mintz 348dacd88d6SYuval Mintz u64 sb_addr[PFVF_MAX_SBS_PER_VF]; 349dacd88d6SYuval Mintz 350dacd88d6SYuval Mintz u32 tpa_mode; 351dacd88d6SYuval Mintz u16 dep1; 352dacd88d6SYuval Mintz u16 mtu; 353dacd88d6SYuval Mintz 354dacd88d6SYuval Mintz u8 vport_id; 355dacd88d6SYuval Mintz u8 inner_vlan_removal; 356dacd88d6SYuval Mintz 357dacd88d6SYuval Mintz u8 only_untagged; 358dacd88d6SYuval Mintz u8 max_buffers_per_cqe; 359dacd88d6SYuval Mintz 360dacd88d6SYuval Mintz u8 padding[4]; 361dacd88d6SYuval Mintz }; 362dacd88d6SYuval Mintz 363dacd88d6SYuval Mintz /* Extended tlvs - need to add rss, mcast, accept mode tlvs */ 364dacd88d6SYuval Mintz struct vfpf_vport_update_activate_tlv { 365dacd88d6SYuval Mintz struct channel_tlv tl; 366dacd88d6SYuval Mintz u8 update_rx; 367dacd88d6SYuval Mintz u8 update_tx; 368dacd88d6SYuval Mintz u8 active_rx; 369dacd88d6SYuval Mintz u8 active_tx; 370dacd88d6SYuval Mintz }; 371dacd88d6SYuval Mintz 37217b235c1SYuval Mintz struct vfpf_vport_update_tx_switch_tlv { 37317b235c1SYuval Mintz struct channel_tlv tl; 37417b235c1SYuval Mintz u8 tx_switching; 37517b235c1SYuval Mintz u8 padding[3]; 37617b235c1SYuval Mintz }; 37717b235c1SYuval Mintz 37817b235c1SYuval Mintz struct vfpf_vport_update_vlan_strip_tlv { 37917b235c1SYuval Mintz struct channel_tlv tl; 38017b235c1SYuval Mintz u8 remove_vlan; 38117b235c1SYuval Mintz u8 padding[3]; 38217b235c1SYuval Mintz }; 38317b235c1SYuval Mintz 384dacd88d6SYuval Mintz struct vfpf_vport_update_mcast_bin_tlv { 385dacd88d6SYuval Mintz struct channel_tlv tl; 386dacd88d6SYuval Mintz u8 padding[4]; 387dacd88d6SYuval Mintz 388dacd88d6SYuval Mintz u64 bins[8]; 389dacd88d6SYuval Mintz }; 390dacd88d6SYuval Mintz 391dacd88d6SYuval Mintz struct vfpf_vport_update_accept_param_tlv { 392dacd88d6SYuval Mintz struct channel_tlv tl; 393dacd88d6SYuval Mintz u8 update_rx_mode; 394dacd88d6SYuval Mintz u8 update_tx_mode; 395dacd88d6SYuval Mintz u8 rx_accept_filter; 396dacd88d6SYuval Mintz u8 tx_accept_filter; 397dacd88d6SYuval Mintz }; 398dacd88d6SYuval Mintz 39917b235c1SYuval Mintz struct vfpf_vport_update_accept_any_vlan_tlv { 40017b235c1SYuval Mintz struct channel_tlv tl; 40117b235c1SYuval Mintz u8 update_accept_any_vlan_flg; 40217b235c1SYuval Mintz u8 accept_any_vlan; 40317b235c1SYuval Mintz 40417b235c1SYuval Mintz u8 padding[2]; 40517b235c1SYuval Mintz }; 40617b235c1SYuval Mintz 40717b235c1SYuval Mintz struct vfpf_vport_update_sge_tpa_tlv { 40817b235c1SYuval Mintz struct channel_tlv tl; 40917b235c1SYuval Mintz 41017b235c1SYuval Mintz u16 sge_tpa_flags; 41117b235c1SYuval Mintz #define VFPF_TPA_IPV4_EN_FLAG BIT(0) 41217b235c1SYuval Mintz #define VFPF_TPA_IPV6_EN_FLAG BIT(1) 41317b235c1SYuval Mintz #define VFPF_TPA_PKT_SPLIT_FLAG BIT(2) 41417b235c1SYuval Mintz #define VFPF_TPA_HDR_DATA_SPLIT_FLAG BIT(3) 41517b235c1SYuval Mintz #define VFPF_TPA_GRO_CONSIST_FLAG BIT(4) 41617b235c1SYuval Mintz 41717b235c1SYuval Mintz u8 update_sge_tpa_flags; 41817b235c1SYuval Mintz #define VFPF_UPDATE_SGE_DEPRECATED_FLAG BIT(0) 41917b235c1SYuval Mintz #define VFPF_UPDATE_TPA_EN_FLAG BIT(1) 42017b235c1SYuval Mintz #define VFPF_UPDATE_TPA_PARAM_FLAG BIT(2) 42117b235c1SYuval Mintz 42217b235c1SYuval Mintz u8 max_buffers_per_cqe; 42317b235c1SYuval Mintz 42417b235c1SYuval Mintz u16 deprecated_sge_buff_size; 42517b235c1SYuval Mintz u16 tpa_max_size; 42617b235c1SYuval Mintz u16 tpa_min_size_to_start; 42717b235c1SYuval Mintz u16 tpa_min_size_to_cont; 42817b235c1SYuval Mintz 42917b235c1SYuval Mintz u8 tpa_max_aggs_num; 43017b235c1SYuval Mintz u8 padding[7]; 43117b235c1SYuval Mintz }; 43217b235c1SYuval Mintz 433dacd88d6SYuval Mintz /* Primary tlv as a header for various extended tlvs for 434dacd88d6SYuval Mintz * various functionalities in vport update ramrod. 435dacd88d6SYuval Mintz */ 436dacd88d6SYuval Mintz struct vfpf_vport_update_tlv { 437dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 438dacd88d6SYuval Mintz }; 439dacd88d6SYuval Mintz 440dacd88d6SYuval Mintz struct vfpf_ucast_filter_tlv { 441dacd88d6SYuval Mintz struct vfpf_first_tlv first_tlv; 442dacd88d6SYuval Mintz 443dacd88d6SYuval Mintz u8 opcode; 444dacd88d6SYuval Mintz u8 type; 445dacd88d6SYuval Mintz 446dacd88d6SYuval Mintz u8 mac[ETH_ALEN]; 447dacd88d6SYuval Mintz 448dacd88d6SYuval Mintz u16 vlan; 449dacd88d6SYuval Mintz u16 padding[3]; 450dacd88d6SYuval Mintz }; 451dacd88d6SYuval Mintz 452eaf3c0c6SChopra, Manish /* tunnel update param tlv */ 453eaf3c0c6SChopra, Manish struct vfpf_update_tunn_param_tlv { 454eaf3c0c6SChopra, Manish struct vfpf_first_tlv first_tlv; 455eaf3c0c6SChopra, Manish 456eaf3c0c6SChopra, Manish u8 tun_mode_update_mask; 457eaf3c0c6SChopra, Manish u8 tunn_mode; 458eaf3c0c6SChopra, Manish u8 update_tun_cls; 459eaf3c0c6SChopra, Manish u8 vxlan_clss; 460eaf3c0c6SChopra, Manish u8 l2gre_clss; 461eaf3c0c6SChopra, Manish u8 ipgre_clss; 462eaf3c0c6SChopra, Manish u8 l2geneve_clss; 463eaf3c0c6SChopra, Manish u8 ipgeneve_clss; 464eaf3c0c6SChopra, Manish u8 update_geneve_port; 465eaf3c0c6SChopra, Manish u8 update_vxlan_port; 466eaf3c0c6SChopra, Manish u16 geneve_port; 467eaf3c0c6SChopra, Manish u16 vxlan_port; 468eaf3c0c6SChopra, Manish u8 padding[2]; 469eaf3c0c6SChopra, Manish }; 470eaf3c0c6SChopra, Manish 471eaf3c0c6SChopra, Manish struct pfvf_update_tunn_param_tlv { 472eaf3c0c6SChopra, Manish struct pfvf_tlv hdr; 473eaf3c0c6SChopra, Manish 474eaf3c0c6SChopra, Manish u16 tunn_feature_mask; 475eaf3c0c6SChopra, Manish u8 vxlan_mode; 476eaf3c0c6SChopra, Manish u8 l2geneve_mode; 477eaf3c0c6SChopra, Manish u8 ipgeneve_mode; 478eaf3c0c6SChopra, Manish u8 l2gre_mode; 479eaf3c0c6SChopra, Manish u8 ipgre_mode; 480eaf3c0c6SChopra, Manish u8 vxlan_clss; 481eaf3c0c6SChopra, Manish u8 l2gre_clss; 482eaf3c0c6SChopra, Manish u8 ipgre_clss; 483eaf3c0c6SChopra, Manish u8 l2geneve_clss; 484eaf3c0c6SChopra, Manish u8 ipgeneve_clss; 485eaf3c0c6SChopra, Manish u16 vxlan_udp_port; 486eaf3c0c6SChopra, Manish u16 geneve_udp_port; 487eaf3c0c6SChopra, Manish }; 488eaf3c0c6SChopra, Manish 48932a47e72SYuval Mintz struct tlv_buffer_size { 49032a47e72SYuval Mintz u8 tlv_buffer[TLV_BUFFER_SIZE]; 49132a47e72SYuval Mintz }; 49232a47e72SYuval Mintz 49332a47e72SYuval Mintz union vfpf_tlvs { 49437bff2b9SYuval Mintz struct vfpf_first_tlv first_tlv; 4951408cc1fSYuval Mintz struct vfpf_acquire_tlv acquire; 496dacd88d6SYuval Mintz struct vfpf_start_rxq_tlv start_rxq; 497dacd88d6SYuval Mintz struct vfpf_start_txq_tlv start_txq; 498dacd88d6SYuval Mintz struct vfpf_stop_rxqs_tlv stop_rxqs; 499dacd88d6SYuval Mintz struct vfpf_stop_txqs_tlv stop_txqs; 50017b235c1SYuval Mintz struct vfpf_update_rxq_tlv update_rxq; 501dacd88d6SYuval Mintz struct vfpf_vport_start_tlv start_vport; 502dacd88d6SYuval Mintz struct vfpf_vport_update_tlv vport_update; 503dacd88d6SYuval Mintz struct vfpf_ucast_filter_tlv ucast_filter; 504eaf3c0c6SChopra, Manish struct vfpf_update_tunn_param_tlv tunn_param_update; 50537bff2b9SYuval Mintz struct channel_list_end_tlv list_end; 50632a47e72SYuval Mintz struct tlv_buffer_size tlv_buf_size; 50732a47e72SYuval Mintz }; 50832a47e72SYuval Mintz 50932a47e72SYuval Mintz union pfvf_tlvs { 51037bff2b9SYuval Mintz struct pfvf_def_resp_tlv default_resp; 5111408cc1fSYuval Mintz struct pfvf_acquire_resp_tlv acquire_resp; 51232a47e72SYuval Mintz struct tlv_buffer_size tlv_buf_size; 513dacd88d6SYuval Mintz struct pfvf_start_queue_resp_tlv queue_start; 514eaf3c0c6SChopra, Manish struct pfvf_update_tunn_param_tlv tunn_param_resp; 51532a47e72SYuval Mintz }; 51632a47e72SYuval Mintz 51708feecd7SYuval Mintz enum qed_bulletin_bit { 518eff16960SYuval Mintz /* Alert the VF that a forced MAC was set by the PF */ 519eff16960SYuval Mintz MAC_ADDR_FORCED = 0, 52008feecd7SYuval Mintz /* Alert the VF that a forced VLAN was set by the PF */ 52108feecd7SYuval Mintz VLAN_ADDR_FORCED = 2, 52208feecd7SYuval Mintz 52308feecd7SYuval Mintz /* Indicate that `default_only_untagged' contains actual data */ 52408feecd7SYuval Mintz VFPF_BULLETIN_UNTAGGED_DEFAULT = 3, 52508feecd7SYuval Mintz VFPF_BULLETIN_UNTAGGED_DEFAULT_FORCED = 4, 52608feecd7SYuval Mintz 527eff16960SYuval Mintz /* Alert the VF that suggested mac was sent by the PF. 528eff16960SYuval Mintz * MAC_ADDR will be disabled in case MAC_ADDR_FORCED is set. 529eff16960SYuval Mintz */ 530eff16960SYuval Mintz VFPF_BULLETIN_MAC_ADDR = 5 53108feecd7SYuval Mintz }; 53208feecd7SYuval Mintz 53332a47e72SYuval Mintz struct qed_bulletin_content { 53432a47e72SYuval Mintz /* crc of structure to ensure is not in mid-update */ 53532a47e72SYuval Mintz u32 crc; 53632a47e72SYuval Mintz 53732a47e72SYuval Mintz u32 version; 53832a47e72SYuval Mintz 53932a47e72SYuval Mintz /* bitmap indicating which fields hold valid values */ 54032a47e72SYuval Mintz u64 valid_bitmap; 54136558c3dSYuval Mintz 54236558c3dSYuval Mintz /* used for MAC_ADDR or MAC_ADDR_FORCED */ 54336558c3dSYuval Mintz u8 mac[ETH_ALEN]; 54436558c3dSYuval Mintz 54536558c3dSYuval Mintz /* If valid, 1 => only untagged Rx if no vlan is configured */ 54636558c3dSYuval Mintz u8 default_only_untagged; 54736558c3dSYuval Mintz u8 padding; 54836558c3dSYuval Mintz 54936558c3dSYuval Mintz /* The following is a 'copy' of qed_mcp_link_state, 55036558c3dSYuval Mintz * qed_mcp_link_params and qed_mcp_link_capabilities. Since it's 55136558c3dSYuval Mintz * possible the structs will increase further along the road we cannot 55236558c3dSYuval Mintz * have it here; Instead we need to have all of its fields. 55336558c3dSYuval Mintz */ 55436558c3dSYuval Mintz u8 req_autoneg; 55536558c3dSYuval Mintz u8 req_autoneg_pause; 55636558c3dSYuval Mintz u8 req_forced_rx; 55736558c3dSYuval Mintz u8 req_forced_tx; 55836558c3dSYuval Mintz u8 padding2[4]; 55936558c3dSYuval Mintz 56036558c3dSYuval Mintz u32 req_adv_speed; 56136558c3dSYuval Mintz u32 req_forced_speed; 56236558c3dSYuval Mintz u32 req_loopback; 56336558c3dSYuval Mintz u32 padding3; 56436558c3dSYuval Mintz 56536558c3dSYuval Mintz u8 link_up; 56636558c3dSYuval Mintz u8 full_duplex; 56736558c3dSYuval Mintz u8 autoneg; 56836558c3dSYuval Mintz u8 autoneg_complete; 56936558c3dSYuval Mintz u8 parallel_detection; 57036558c3dSYuval Mintz u8 pfc_enabled; 57136558c3dSYuval Mintz u8 partner_tx_flow_ctrl_en; 57236558c3dSYuval Mintz u8 partner_rx_flow_ctrl_en; 57336558c3dSYuval Mintz u8 partner_adv_pause; 57436558c3dSYuval Mintz u8 sfp_tx_fault; 57597379f15SChopra, Manish u16 vxlan_udp_port; 57697379f15SChopra, Manish u16 geneve_udp_port; 57797379f15SChopra, Manish u8 padding4[2]; 57836558c3dSYuval Mintz 57936558c3dSYuval Mintz u32 speed; 58036558c3dSYuval Mintz u32 partner_adv_speed; 58136558c3dSYuval Mintz 58236558c3dSYuval Mintz u32 capability_speed; 58308feecd7SYuval Mintz 58408feecd7SYuval Mintz /* Forced vlan */ 58508feecd7SYuval Mintz u16 pvid; 58608feecd7SYuval Mintz u16 padding5; 58732a47e72SYuval Mintz }; 58832a47e72SYuval Mintz 58932a47e72SYuval Mintz struct qed_bulletin { 59032a47e72SYuval Mintz dma_addr_t phys; 59132a47e72SYuval Mintz struct qed_bulletin_content *p_virt; 59232a47e72SYuval Mintz u32 size; 59332a47e72SYuval Mintz }; 59432a47e72SYuval Mintz 59537bff2b9SYuval Mintz enum { 59637bff2b9SYuval Mintz CHANNEL_TLV_NONE, /* ends tlv sequence */ 5971408cc1fSYuval Mintz CHANNEL_TLV_ACQUIRE, 598dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_START, 599dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_UPDATE, 600dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_TEARDOWN, 601dacd88d6SYuval Mintz CHANNEL_TLV_START_RXQ, 602dacd88d6SYuval Mintz CHANNEL_TLV_START_TXQ, 603dacd88d6SYuval Mintz CHANNEL_TLV_STOP_RXQS, 604dacd88d6SYuval Mintz CHANNEL_TLV_STOP_TXQS, 60517b235c1SYuval Mintz CHANNEL_TLV_UPDATE_RXQ, 6060b55e27dSYuval Mintz CHANNEL_TLV_INT_CLEANUP, 6070b55e27dSYuval Mintz CHANNEL_TLV_CLOSE, 6080b55e27dSYuval Mintz CHANNEL_TLV_RELEASE, 60937bff2b9SYuval Mintz CHANNEL_TLV_LIST_END, 610dacd88d6SYuval Mintz CHANNEL_TLV_UCAST_FILTER, 611dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_ACTIVATE, 61217b235c1SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_TX_SWITCH, 61317b235c1SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_VLAN_STRIP, 614dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_MCAST, 615dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_ACCEPT_PARAM, 616dacd88d6SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_RSS, 61717b235c1SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_ACCEPT_ANY_VLAN, 61817b235c1SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_SGE_TPA, 619eaf3c0c6SChopra, Manish CHANNEL_TLV_UPDATE_TUNN_PARAM, 62008bc8f15SMintz, Yuval CHANNEL_TLV_RESERVED, 62108bc8f15SMintz, Yuval CHANNEL_TLV_QID, 622dacd88d6SYuval Mintz CHANNEL_TLV_MAX, 623dacd88d6SYuval Mintz 624dacd88d6SYuval Mintz /* Required for iterating over vport-update tlvs. 625dacd88d6SYuval Mintz * Will break in case non-sequential vport-update tlvs. 626dacd88d6SYuval Mintz */ 62717b235c1SYuval Mintz CHANNEL_TLV_VPORT_UPDATE_MAX = CHANNEL_TLV_VPORT_UPDATE_SGE_TPA + 1, 62837bff2b9SYuval Mintz }; 62937bff2b9SYuval Mintz 63008bc8f15SMintz, Yuval /* Default number of CIDs [total of both Rx and Tx] to be requested 63108bc8f15SMintz, Yuval * by default, and maximum possible number. 63208bc8f15SMintz, Yuval */ 63308bc8f15SMintz, Yuval #define QED_ETH_VF_DEFAULT_NUM_CIDS (32) 63408bc8f15SMintz, Yuval #define QED_ETH_VF_MAX_NUM_CIDS (250) 63508bc8f15SMintz, Yuval 6361408cc1fSYuval Mintz /* This data is held in the qed_hwfn structure for VFs only. */ 6371408cc1fSYuval Mintz struct qed_vf_iov { 6381408cc1fSYuval Mintz union vfpf_tlvs *vf2pf_request; 6391408cc1fSYuval Mintz dma_addr_t vf2pf_request_phys; 6401408cc1fSYuval Mintz union pfvf_tlvs *pf2vf_reply; 6411408cc1fSYuval Mintz dma_addr_t pf2vf_reply_phys; 6421408cc1fSYuval Mintz 6431408cc1fSYuval Mintz /* Should be taken whenever the mailbox buffers are accessed */ 6441408cc1fSYuval Mintz struct mutex mutex; 6451408cc1fSYuval Mintz u8 *offset; 6461408cc1fSYuval Mintz 6471408cc1fSYuval Mintz /* Bulletin Board */ 6481408cc1fSYuval Mintz struct qed_bulletin bulletin; 6491408cc1fSYuval Mintz struct qed_bulletin_content bulletin_shadow; 6501408cc1fSYuval Mintz 6511408cc1fSYuval Mintz /* we set aside a copy of the acquire response */ 6521408cc1fSYuval Mintz struct pfvf_acquire_resp_tlv acquire_resp; 653d8c2c7e3SYuval Mintz 654d8c2c7e3SYuval Mintz /* In case PF originates prior to the fp-hsi version comparison, 655d8c2c7e3SYuval Mintz * this has to be propagated as it affects the fastpath. 656d8c2c7e3SYuval Mintz */ 657d8c2c7e3SYuval Mintz bool b_pre_fp_hsi; 65850a20714SMintz, Yuval 65950a20714SMintz, Yuval /* Current day VFs are passing the SBs physical address on vport 66050a20714SMintz, Yuval * start, and as they lack an IGU mapping they need to store the 66150a20714SMintz, Yuval * addresses of previously registered SBs. 66250a20714SMintz, Yuval * Even if we were to change configuration flow, due to backward 66350a20714SMintz, Yuval * compatibility [with older PFs] we'd still need to store these. 66450a20714SMintz, Yuval */ 66550a20714SMintz, Yuval struct qed_sb_info *sbs_info[PFVF_MAX_SBS_PER_VF]; 6661408cc1fSYuval Mintz }; 6671408cc1fSYuval Mintz 6681408cc1fSYuval Mintz #ifdef CONFIG_QED_SRIOV 6691408cc1fSYuval Mintz /** 67036558c3dSYuval Mintz * @brief Read the VF bulletin and act on it if needed 67136558c3dSYuval Mintz * 67236558c3dSYuval Mintz * @param p_hwfn 67336558c3dSYuval Mintz * @param p_change - qed fills 1 iff bulletin board has changed, 0 otherwise. 67436558c3dSYuval Mintz * 67536558c3dSYuval Mintz * @return enum _qed_status 67636558c3dSYuval Mintz */ 67736558c3dSYuval Mintz int qed_vf_read_bulletin(struct qed_hwfn *p_hwfn, u8 *p_change); 67836558c3dSYuval Mintz 67936558c3dSYuval Mintz /** 68036558c3dSYuval Mintz * @brief Get link paramters for VF from qed 68136558c3dSYuval Mintz * 68236558c3dSYuval Mintz * @param p_hwfn 68336558c3dSYuval Mintz * @param params - the link params structure to be filled for the VF 68436558c3dSYuval Mintz */ 68536558c3dSYuval Mintz void qed_vf_get_link_params(struct qed_hwfn *p_hwfn, 68636558c3dSYuval Mintz struct qed_mcp_link_params *params); 68736558c3dSYuval Mintz 68836558c3dSYuval Mintz /** 68936558c3dSYuval Mintz * @brief Get link state for VF from qed 69036558c3dSYuval Mintz * 69136558c3dSYuval Mintz * @param p_hwfn 69236558c3dSYuval Mintz * @param link - the link state structure to be filled for the VF 69336558c3dSYuval Mintz */ 69436558c3dSYuval Mintz void qed_vf_get_link_state(struct qed_hwfn *p_hwfn, 69536558c3dSYuval Mintz struct qed_mcp_link_state *link); 69636558c3dSYuval Mintz 69736558c3dSYuval Mintz /** 69836558c3dSYuval Mintz * @brief Get link capabilities for VF from qed 69936558c3dSYuval Mintz * 70036558c3dSYuval Mintz * @param p_hwfn 70136558c3dSYuval Mintz * @param p_link_caps - the link capabilities structure to be filled for the VF 70236558c3dSYuval Mintz */ 70336558c3dSYuval Mintz void qed_vf_get_link_caps(struct qed_hwfn *p_hwfn, 70436558c3dSYuval Mintz struct qed_mcp_link_capabilities *p_link_caps); 70536558c3dSYuval Mintz 70636558c3dSYuval Mintz /** 7071408cc1fSYuval Mintz * @brief Get number of Rx queues allocated for VF by qed 7081408cc1fSYuval Mintz * 7091408cc1fSYuval Mintz * @param p_hwfn 7101408cc1fSYuval Mintz * @param num_rxqs - allocated RX queues 7111408cc1fSYuval Mintz */ 7121408cc1fSYuval Mintz void qed_vf_get_num_rxqs(struct qed_hwfn *p_hwfn, u8 *num_rxqs); 7131408cc1fSYuval Mintz 7141408cc1fSYuval Mintz /** 7150db711bbSMintz, Yuval * @brief Get number of Rx queues allocated for VF by qed 7160db711bbSMintz, Yuval * 7170db711bbSMintz, Yuval * @param p_hwfn 7180db711bbSMintz, Yuval * @param num_txqs - allocated RX queues 7190db711bbSMintz, Yuval */ 7200db711bbSMintz, Yuval void qed_vf_get_num_txqs(struct qed_hwfn *p_hwfn, u8 *num_txqs); 7210db711bbSMintz, Yuval 7220db711bbSMintz, Yuval /** 7231408cc1fSYuval Mintz * @brief Get port mac address for VF 7241408cc1fSYuval Mintz * 7251408cc1fSYuval Mintz * @param p_hwfn 7261408cc1fSYuval Mintz * @param port_mac - destination location for port mac 7271408cc1fSYuval Mintz */ 7281408cc1fSYuval Mintz void qed_vf_get_port_mac(struct qed_hwfn *p_hwfn, u8 *port_mac); 7291408cc1fSYuval Mintz 7301408cc1fSYuval Mintz /** 7311408cc1fSYuval Mintz * @brief Get number of VLAN filters allocated for VF by qed 7321408cc1fSYuval Mintz * 7331408cc1fSYuval Mintz * @param p_hwfn 7341408cc1fSYuval Mintz * @param num_rxqs - allocated VLAN filters 7351408cc1fSYuval Mintz */ 7361408cc1fSYuval Mintz void qed_vf_get_num_vlan_filters(struct qed_hwfn *p_hwfn, 7371408cc1fSYuval Mintz u8 *num_vlan_filters); 7381408cc1fSYuval Mintz 7391408cc1fSYuval Mintz /** 740b0fca312SMintz, Yuval * @brief Get number of MAC filters allocated for VF by qed 741b0fca312SMintz, Yuval * 742b0fca312SMintz, Yuval * @param p_hwfn 743b0fca312SMintz, Yuval * @param num_rxqs - allocated MAC filters 744b0fca312SMintz, Yuval */ 745b0fca312SMintz, Yuval void qed_vf_get_num_mac_filters(struct qed_hwfn *p_hwfn, u8 *num_mac_filters); 746b0fca312SMintz, Yuval 747b0fca312SMintz, Yuval /** 748eff16960SYuval Mintz * @brief Check if VF can set a MAC address 749eff16960SYuval Mintz * 750eff16960SYuval Mintz * @param p_hwfn 751eff16960SYuval Mintz * @param mac 752eff16960SYuval Mintz * 753eff16960SYuval Mintz * @return bool 754eff16960SYuval Mintz */ 755eff16960SYuval Mintz bool qed_vf_check_mac(struct qed_hwfn *p_hwfn, u8 *mac); 756eff16960SYuval Mintz 757eff16960SYuval Mintz /** 7581408cc1fSYuval Mintz * @brief Set firmware version information in dev_info from VFs acquire response tlv 7591408cc1fSYuval Mintz * 7601408cc1fSYuval Mintz * @param p_hwfn 7611408cc1fSYuval Mintz * @param fw_major 7621408cc1fSYuval Mintz * @param fw_minor 7631408cc1fSYuval Mintz * @param fw_rev 7641408cc1fSYuval Mintz * @param fw_eng 7651408cc1fSYuval Mintz */ 7661408cc1fSYuval Mintz void qed_vf_get_fw_version(struct qed_hwfn *p_hwfn, 7671408cc1fSYuval Mintz u16 *fw_major, u16 *fw_minor, 7681408cc1fSYuval Mintz u16 *fw_rev, u16 *fw_eng); 7691408cc1fSYuval Mintz 7701408cc1fSYuval Mintz /** 7711408cc1fSYuval Mintz * @brief hw preparation for VF 7721408cc1fSYuval Mintz * sends ACQUIRE message 7731408cc1fSYuval Mintz * 7741408cc1fSYuval Mintz * @param p_hwfn 7751408cc1fSYuval Mintz * 7761408cc1fSYuval Mintz * @return int 7771408cc1fSYuval Mintz */ 7781408cc1fSYuval Mintz int qed_vf_hw_prepare(struct qed_hwfn *p_hwfn); 7791408cc1fSYuval Mintz 7801408cc1fSYuval Mintz /** 781dacd88d6SYuval Mintz * @brief VF - start the RX Queue by sending a message to the PF 782dacd88d6SYuval Mintz * @param p_hwfn 7833da7a37aSMintz, Yuval * @param p_cid - Only relative fields are relevant 784dacd88d6SYuval Mintz * @param bd_max_bytes - maximum number of bytes per bd 785dacd88d6SYuval Mintz * @param bd_chain_phys_addr - physical address of bd chain 786dacd88d6SYuval Mintz * @param cqe_pbl_addr - physical address of pbl 787dacd88d6SYuval Mintz * @param cqe_pbl_size - pbl size 788dacd88d6SYuval Mintz * @param pp_prod - pointer to the producer to be 789dacd88d6SYuval Mintz * used in fastpath 790dacd88d6SYuval Mintz * 791dacd88d6SYuval Mintz * @return int 792dacd88d6SYuval Mintz */ 793dacd88d6SYuval Mintz int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn, 7943da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, 795dacd88d6SYuval Mintz u16 bd_max_bytes, 796dacd88d6SYuval Mintz dma_addr_t bd_chain_phys_addr, 797dacd88d6SYuval Mintz dma_addr_t cqe_pbl_addr, 798dacd88d6SYuval Mintz u16 cqe_pbl_size, void __iomem **pp_prod); 799dacd88d6SYuval Mintz 800dacd88d6SYuval Mintz /** 801dacd88d6SYuval Mintz * @brief VF - start the TX queue by sending a message to the 802dacd88d6SYuval Mintz * PF. 803dacd88d6SYuval Mintz * 804dacd88d6SYuval Mintz * @param p_hwfn 805dacd88d6SYuval Mintz * @param tx_queue_id - zero based within the VF 806dacd88d6SYuval Mintz * @param sb - status block for this queue 807dacd88d6SYuval Mintz * @param sb_index - index within the status block 808dacd88d6SYuval Mintz * @param bd_chain_phys_addr - physical address of tx chain 809dacd88d6SYuval Mintz * @param pp_doorbell - pointer to address to which to 810dacd88d6SYuval Mintz * write the doorbell too.. 811dacd88d6SYuval Mintz * 812dacd88d6SYuval Mintz * @return int 813dacd88d6SYuval Mintz */ 8143da7a37aSMintz, Yuval int 8153da7a37aSMintz, Yuval qed_vf_pf_txq_start(struct qed_hwfn *p_hwfn, 8163da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, 817dacd88d6SYuval Mintz dma_addr_t pbl_addr, 818dacd88d6SYuval Mintz u16 pbl_size, void __iomem **pp_doorbell); 819dacd88d6SYuval Mintz 820dacd88d6SYuval Mintz /** 821dacd88d6SYuval Mintz * @brief VF - stop the RX queue by sending a message to the PF 822dacd88d6SYuval Mintz * 823dacd88d6SYuval Mintz * @param p_hwfn 8243da7a37aSMintz, Yuval * @param p_cid 825dacd88d6SYuval Mintz * @param cqe_completion 826dacd88d6SYuval Mintz * 827dacd88d6SYuval Mintz * @return int 828dacd88d6SYuval Mintz */ 829dacd88d6SYuval Mintz int qed_vf_pf_rxq_stop(struct qed_hwfn *p_hwfn, 8303da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, bool cqe_completion); 831dacd88d6SYuval Mintz 832dacd88d6SYuval Mintz /** 833dacd88d6SYuval Mintz * @brief VF - stop the TX queue by sending a message to the PF 834dacd88d6SYuval Mintz * 835dacd88d6SYuval Mintz * @param p_hwfn 836dacd88d6SYuval Mintz * @param tx_qid 837dacd88d6SYuval Mintz * 838dacd88d6SYuval Mintz * @return int 839dacd88d6SYuval Mintz */ 8403da7a37aSMintz, Yuval int qed_vf_pf_txq_stop(struct qed_hwfn *p_hwfn, struct qed_queue_cid *p_cid); 841dacd88d6SYuval Mintz 842dacd88d6SYuval Mintz /** 843dacd88d6SYuval Mintz * @brief VF - send a vport update command 844dacd88d6SYuval Mintz * 845dacd88d6SYuval Mintz * @param p_hwfn 846dacd88d6SYuval Mintz * @param params 847dacd88d6SYuval Mintz * 848dacd88d6SYuval Mintz * @return int 849dacd88d6SYuval Mintz */ 850dacd88d6SYuval Mintz int qed_vf_pf_vport_update(struct qed_hwfn *p_hwfn, 851dacd88d6SYuval Mintz struct qed_sp_vport_update_params *p_params); 852dacd88d6SYuval Mintz 853dacd88d6SYuval Mintz /** 8540b55e27dSYuval Mintz * 8550b55e27dSYuval Mintz * @brief VF - send a close message to PF 8560b55e27dSYuval Mintz * 8570b55e27dSYuval Mintz * @param p_hwfn 8580b55e27dSYuval Mintz * 8590b55e27dSYuval Mintz * @return enum _qed_status 8600b55e27dSYuval Mintz */ 8610b55e27dSYuval Mintz int qed_vf_pf_reset(struct qed_hwfn *p_hwfn); 8620b55e27dSYuval Mintz 8630b55e27dSYuval Mintz /** 8640b55e27dSYuval Mintz * @brief VF - free vf`s memories 8650b55e27dSYuval Mintz * 8660b55e27dSYuval Mintz * @param p_hwfn 8670b55e27dSYuval Mintz * 8680b55e27dSYuval Mintz * @return enum _qed_status 8690b55e27dSYuval Mintz */ 8700b55e27dSYuval Mintz int qed_vf_pf_release(struct qed_hwfn *p_hwfn); 87136558c3dSYuval Mintz 8720b55e27dSYuval Mintz /** 8731408cc1fSYuval Mintz * @brief qed_vf_get_igu_sb_id - Get the IGU SB ID for a given 8741408cc1fSYuval Mintz * sb_id. For VFs igu sbs don't have to be contiguous 8751408cc1fSYuval Mintz * 8761408cc1fSYuval Mintz * @param p_hwfn 8771408cc1fSYuval Mintz * @param sb_id 8781408cc1fSYuval Mintz * 8791408cc1fSYuval Mintz * @return INLINE u16 8801408cc1fSYuval Mintz */ 8811408cc1fSYuval Mintz u16 qed_vf_get_igu_sb_id(struct qed_hwfn *p_hwfn, u16 sb_id); 8820b55e27dSYuval Mintz 8830b55e27dSYuval Mintz /** 88450a20714SMintz, Yuval * @brief Stores [or removes] a configured sb_info. 88550a20714SMintz, Yuval * 88650a20714SMintz, Yuval * @param p_hwfn 88750a20714SMintz, Yuval * @param sb_id - zero-based SB index [for fastpath] 88850a20714SMintz, Yuval * @param sb_info - may be NULL [during removal]. 88950a20714SMintz, Yuval */ 89050a20714SMintz, Yuval void qed_vf_set_sb_info(struct qed_hwfn *p_hwfn, 89150a20714SMintz, Yuval u16 sb_id, struct qed_sb_info *p_sb); 89250a20714SMintz, Yuval 89350a20714SMintz, Yuval /** 894dacd88d6SYuval Mintz * @brief qed_vf_pf_vport_start - perform vport start for VF. 895dacd88d6SYuval Mintz * 896dacd88d6SYuval Mintz * @param p_hwfn 897dacd88d6SYuval Mintz * @param vport_id 898dacd88d6SYuval Mintz * @param mtu 899dacd88d6SYuval Mintz * @param inner_vlan_removal 900dacd88d6SYuval Mintz * @param tpa_mode 901dacd88d6SYuval Mintz * @param max_buffers_per_cqe, 902dacd88d6SYuval Mintz * @param only_untagged - default behavior regarding vlan acceptance 903dacd88d6SYuval Mintz * 904dacd88d6SYuval Mintz * @return enum _qed_status 905dacd88d6SYuval Mintz */ 906dacd88d6SYuval Mintz int qed_vf_pf_vport_start(struct qed_hwfn *p_hwfn, 907dacd88d6SYuval Mintz u8 vport_id, 908dacd88d6SYuval Mintz u16 mtu, 909dacd88d6SYuval Mintz u8 inner_vlan_removal, 910dacd88d6SYuval Mintz enum qed_tpa_mode tpa_mode, 91108feecd7SYuval Mintz u8 max_buffers_per_cqe, u8 only_untagged); 912dacd88d6SYuval Mintz 913dacd88d6SYuval Mintz /** 914dacd88d6SYuval Mintz * @brief qed_vf_pf_vport_stop - stop the VF's vport 915dacd88d6SYuval Mintz * 916dacd88d6SYuval Mintz * @param p_hwfn 917dacd88d6SYuval Mintz * 918dacd88d6SYuval Mintz * @return enum _qed_status 919dacd88d6SYuval Mintz */ 920dacd88d6SYuval Mintz int qed_vf_pf_vport_stop(struct qed_hwfn *p_hwfn); 921dacd88d6SYuval Mintz 922dacd88d6SYuval Mintz int qed_vf_pf_filter_ucast(struct qed_hwfn *p_hwfn, 923dacd88d6SYuval Mintz struct qed_filter_ucast *p_param); 924dacd88d6SYuval Mintz 925dacd88d6SYuval Mintz void qed_vf_pf_filter_mcast(struct qed_hwfn *p_hwfn, 926dacd88d6SYuval Mintz struct qed_filter_mcast *p_filter_cmd); 927dacd88d6SYuval Mintz 928dacd88d6SYuval Mintz /** 9290b55e27dSYuval Mintz * @brief qed_vf_pf_int_cleanup - clean the SB of the VF 9300b55e27dSYuval Mintz * 9310b55e27dSYuval Mintz * @param p_hwfn 9320b55e27dSYuval Mintz * 9330b55e27dSYuval Mintz * @return enum _qed_status 9340b55e27dSYuval Mintz */ 9350b55e27dSYuval Mintz int qed_vf_pf_int_cleanup(struct qed_hwfn *p_hwfn); 93636558c3dSYuval Mintz 93736558c3dSYuval Mintz /** 93836558c3dSYuval Mintz * @brief - return the link params in a given bulletin board 93936558c3dSYuval Mintz * 94036558c3dSYuval Mintz * @param p_hwfn 94136558c3dSYuval Mintz * @param p_params - pointer to a struct to fill with link params 94236558c3dSYuval Mintz * @param p_bulletin 94336558c3dSYuval Mintz */ 94436558c3dSYuval Mintz void __qed_vf_get_link_params(struct qed_hwfn *p_hwfn, 94536558c3dSYuval Mintz struct qed_mcp_link_params *p_params, 94636558c3dSYuval Mintz struct qed_bulletin_content *p_bulletin); 94736558c3dSYuval Mintz 94836558c3dSYuval Mintz /** 94936558c3dSYuval Mintz * @brief - return the link state in a given bulletin board 95036558c3dSYuval Mintz * 95136558c3dSYuval Mintz * @param p_hwfn 95236558c3dSYuval Mintz * @param p_link - pointer to a struct to fill with link state 95336558c3dSYuval Mintz * @param p_bulletin 95436558c3dSYuval Mintz */ 95536558c3dSYuval Mintz void __qed_vf_get_link_state(struct qed_hwfn *p_hwfn, 95636558c3dSYuval Mintz struct qed_mcp_link_state *p_link, 95736558c3dSYuval Mintz struct qed_bulletin_content *p_bulletin); 95836558c3dSYuval Mintz 95936558c3dSYuval Mintz /** 96036558c3dSYuval Mintz * @brief - return the link capabilities in a given bulletin board 96136558c3dSYuval Mintz * 96236558c3dSYuval Mintz * @param p_hwfn 96336558c3dSYuval Mintz * @param p_link - pointer to a struct to fill with link capabilities 96436558c3dSYuval Mintz * @param p_bulletin 96536558c3dSYuval Mintz */ 96636558c3dSYuval Mintz void __qed_vf_get_link_caps(struct qed_hwfn *p_hwfn, 96736558c3dSYuval Mintz struct qed_mcp_link_capabilities *p_link_caps, 96836558c3dSYuval Mintz struct qed_bulletin_content *p_bulletin); 96936558c3dSYuval Mintz 97036558c3dSYuval Mintz void qed_iov_vf_task(struct work_struct *work); 971eaf3c0c6SChopra, Manish void qed_vf_set_vf_start_tunn_update_param(struct qed_tunnel_info *p_tun); 972eaf3c0c6SChopra, Manish int qed_vf_pf_tunnel_param_update(struct qed_hwfn *p_hwfn, 973eaf3c0c6SChopra, Manish struct qed_tunnel_info *p_tunn); 9741408cc1fSYuval Mintz #else 97536558c3dSYuval Mintz static inline void qed_vf_get_link_params(struct qed_hwfn *p_hwfn, 97636558c3dSYuval Mintz struct qed_mcp_link_params *params) 97736558c3dSYuval Mintz { 97836558c3dSYuval Mintz } 97936558c3dSYuval Mintz 98036558c3dSYuval Mintz static inline void qed_vf_get_link_state(struct qed_hwfn *p_hwfn, 98136558c3dSYuval Mintz struct qed_mcp_link_state *link) 98236558c3dSYuval Mintz { 98336558c3dSYuval Mintz } 98436558c3dSYuval Mintz 98536558c3dSYuval Mintz static inline void 98636558c3dSYuval Mintz qed_vf_get_link_caps(struct qed_hwfn *p_hwfn, 98736558c3dSYuval Mintz struct qed_mcp_link_capabilities *p_link_caps) 98836558c3dSYuval Mintz { 98936558c3dSYuval Mintz } 99036558c3dSYuval Mintz 9911408cc1fSYuval Mintz static inline void qed_vf_get_num_rxqs(struct qed_hwfn *p_hwfn, u8 *num_rxqs) 9921408cc1fSYuval Mintz { 9931408cc1fSYuval Mintz } 9941408cc1fSYuval Mintz 9950db711bbSMintz, Yuval static inline void qed_vf_get_num_txqs(struct qed_hwfn *p_hwfn, u8 *num_txqs) 9960db711bbSMintz, Yuval { 9970db711bbSMintz, Yuval } 9980db711bbSMintz, Yuval 9991408cc1fSYuval Mintz static inline void qed_vf_get_port_mac(struct qed_hwfn *p_hwfn, u8 *port_mac) 10001408cc1fSYuval Mintz { 10011408cc1fSYuval Mintz } 10021408cc1fSYuval Mintz 10031408cc1fSYuval Mintz static inline void qed_vf_get_num_vlan_filters(struct qed_hwfn *p_hwfn, 10041408cc1fSYuval Mintz u8 *num_vlan_filters) 10051408cc1fSYuval Mintz { 10061408cc1fSYuval Mintz } 10071408cc1fSYuval Mintz 1008b0fca312SMintz, Yuval static inline void qed_vf_get_num_mac_filters(struct qed_hwfn *p_hwfn, 1009b0fca312SMintz, Yuval u8 *num_mac_filters) 1010b0fca312SMintz, Yuval { 1011b0fca312SMintz, Yuval } 1012b0fca312SMintz, Yuval 1013eff16960SYuval Mintz static inline bool qed_vf_check_mac(struct qed_hwfn *p_hwfn, u8 *mac) 1014eff16960SYuval Mintz { 1015eff16960SYuval Mintz return false; 1016eff16960SYuval Mintz } 1017eff16960SYuval Mintz 10181408cc1fSYuval Mintz static inline void qed_vf_get_fw_version(struct qed_hwfn *p_hwfn, 10191408cc1fSYuval Mintz u16 *fw_major, u16 *fw_minor, 10201408cc1fSYuval Mintz u16 *fw_rev, u16 *fw_eng) 10211408cc1fSYuval Mintz { 10221408cc1fSYuval Mintz } 10231408cc1fSYuval Mintz 10241408cc1fSYuval Mintz static inline int qed_vf_hw_prepare(struct qed_hwfn *p_hwfn) 10251408cc1fSYuval Mintz { 10261408cc1fSYuval Mintz return -EINVAL; 10271408cc1fSYuval Mintz } 10281408cc1fSYuval Mintz 1029dacd88d6SYuval Mintz static inline int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn, 10303da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, 1031dacd88d6SYuval Mintz u16 bd_max_bytes, 1032dacd88d6SYuval Mintz dma_addr_t bd_chain_phys_adr, 1033dacd88d6SYuval Mintz dma_addr_t cqe_pbl_addr, 1034dacd88d6SYuval Mintz u16 cqe_pbl_size, void __iomem **pp_prod) 1035dacd88d6SYuval Mintz { 1036dacd88d6SYuval Mintz return -EINVAL; 1037dacd88d6SYuval Mintz } 1038dacd88d6SYuval Mintz 1039dacd88d6SYuval Mintz static inline int qed_vf_pf_txq_start(struct qed_hwfn *p_hwfn, 10403da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, 1041dacd88d6SYuval Mintz dma_addr_t pbl_addr, 1042dacd88d6SYuval Mintz u16 pbl_size, void __iomem **pp_doorbell) 1043dacd88d6SYuval Mintz { 1044dacd88d6SYuval Mintz return -EINVAL; 1045dacd88d6SYuval Mintz } 1046dacd88d6SYuval Mintz 1047dacd88d6SYuval Mintz static inline int qed_vf_pf_rxq_stop(struct qed_hwfn *p_hwfn, 10483da7a37aSMintz, Yuval struct qed_queue_cid *p_cid, 10493da7a37aSMintz, Yuval bool cqe_completion) 1050dacd88d6SYuval Mintz { 1051dacd88d6SYuval Mintz return -EINVAL; 1052dacd88d6SYuval Mintz } 1053dacd88d6SYuval Mintz 10543da7a37aSMintz, Yuval static inline int qed_vf_pf_txq_stop(struct qed_hwfn *p_hwfn, 10553da7a37aSMintz, Yuval struct qed_queue_cid *p_cid) 1056dacd88d6SYuval Mintz { 1057dacd88d6SYuval Mintz return -EINVAL; 1058dacd88d6SYuval Mintz } 1059dacd88d6SYuval Mintz 1060dacd88d6SYuval Mintz static inline int 1061dacd88d6SYuval Mintz qed_vf_pf_vport_update(struct qed_hwfn *p_hwfn, 1062dacd88d6SYuval Mintz struct qed_sp_vport_update_params *p_params) 1063dacd88d6SYuval Mintz { 1064dacd88d6SYuval Mintz return -EINVAL; 1065dacd88d6SYuval Mintz } 1066dacd88d6SYuval Mintz 10670b55e27dSYuval Mintz static inline int qed_vf_pf_reset(struct qed_hwfn *p_hwfn) 10680b55e27dSYuval Mintz { 10690b55e27dSYuval Mintz return -EINVAL; 10700b55e27dSYuval Mintz } 10710b55e27dSYuval Mintz 10720b55e27dSYuval Mintz static inline int qed_vf_pf_release(struct qed_hwfn *p_hwfn) 10730b55e27dSYuval Mintz { 10740b55e27dSYuval Mintz return -EINVAL; 10750b55e27dSYuval Mintz } 10760b55e27dSYuval Mintz 10771408cc1fSYuval Mintz static inline u16 qed_vf_get_igu_sb_id(struct qed_hwfn *p_hwfn, u16 sb_id) 10781408cc1fSYuval Mintz { 10791408cc1fSYuval Mintz return 0; 10801408cc1fSYuval Mintz } 10810b55e27dSYuval Mintz 1082dacd88d6SYuval Mintz static inline int qed_vf_pf_vport_start(struct qed_hwfn *p_hwfn, 1083dacd88d6SYuval Mintz u8 vport_id, 1084dacd88d6SYuval Mintz u16 mtu, 1085dacd88d6SYuval Mintz u8 inner_vlan_removal, 1086dacd88d6SYuval Mintz enum qed_tpa_mode tpa_mode, 108708feecd7SYuval Mintz u8 max_buffers_per_cqe, 108808feecd7SYuval Mintz u8 only_untagged) 1089dacd88d6SYuval Mintz { 1090dacd88d6SYuval Mintz return -EINVAL; 1091dacd88d6SYuval Mintz } 1092dacd88d6SYuval Mintz 1093dacd88d6SYuval Mintz static inline int qed_vf_pf_vport_stop(struct qed_hwfn *p_hwfn) 1094dacd88d6SYuval Mintz { 1095dacd88d6SYuval Mintz return -EINVAL; 1096dacd88d6SYuval Mintz } 1097dacd88d6SYuval Mintz 1098dacd88d6SYuval Mintz static inline int qed_vf_pf_filter_ucast(struct qed_hwfn *p_hwfn, 1099dacd88d6SYuval Mintz struct qed_filter_ucast *p_param) 1100dacd88d6SYuval Mintz { 1101dacd88d6SYuval Mintz return -EINVAL; 1102dacd88d6SYuval Mintz } 1103dacd88d6SYuval Mintz 1104dacd88d6SYuval Mintz static inline void qed_vf_pf_filter_mcast(struct qed_hwfn *p_hwfn, 1105dacd88d6SYuval Mintz struct qed_filter_mcast *p_filter_cmd) 1106dacd88d6SYuval Mintz { 1107dacd88d6SYuval Mintz } 1108dacd88d6SYuval Mintz 11090b55e27dSYuval Mintz static inline int qed_vf_pf_int_cleanup(struct qed_hwfn *p_hwfn) 11100b55e27dSYuval Mintz { 11110b55e27dSYuval Mintz return -EINVAL; 11120b55e27dSYuval Mintz } 111336558c3dSYuval Mintz 111436558c3dSYuval Mintz static inline void __qed_vf_get_link_params(struct qed_hwfn *p_hwfn, 111536558c3dSYuval Mintz struct qed_mcp_link_params 111636558c3dSYuval Mintz *p_params, 111736558c3dSYuval Mintz struct qed_bulletin_content 111836558c3dSYuval Mintz *p_bulletin) 111936558c3dSYuval Mintz { 112036558c3dSYuval Mintz } 112136558c3dSYuval Mintz 112236558c3dSYuval Mintz static inline void __qed_vf_get_link_state(struct qed_hwfn *p_hwfn, 112336558c3dSYuval Mintz struct qed_mcp_link_state *p_link, 112436558c3dSYuval Mintz struct qed_bulletin_content 112536558c3dSYuval Mintz *p_bulletin) 112636558c3dSYuval Mintz { 112736558c3dSYuval Mintz } 112836558c3dSYuval Mintz 112936558c3dSYuval Mintz static inline void 113036558c3dSYuval Mintz __qed_vf_get_link_caps(struct qed_hwfn *p_hwfn, 113136558c3dSYuval Mintz struct qed_mcp_link_capabilities *p_link_caps, 113236558c3dSYuval Mintz struct qed_bulletin_content *p_bulletin) 113336558c3dSYuval Mintz { 113436558c3dSYuval Mintz } 113536558c3dSYuval Mintz 113636558c3dSYuval Mintz static inline void qed_iov_vf_task(struct work_struct *work) 113736558c3dSYuval Mintz { 113836558c3dSYuval Mintz } 1139eaf3c0c6SChopra, Manish 1140eaf3c0c6SChopra, Manish static inline void 1141eaf3c0c6SChopra, Manish qed_vf_set_vf_start_tunn_update_param(struct qed_tunnel_info *p_tun) 1142eaf3c0c6SChopra, Manish { 1143eaf3c0c6SChopra, Manish } 1144eaf3c0c6SChopra, Manish 1145eaf3c0c6SChopra, Manish static inline int qed_vf_pf_tunnel_param_update(struct qed_hwfn *p_hwfn, 1146eaf3c0c6SChopra, Manish struct qed_tunnel_info *p_tunn) 1147eaf3c0c6SChopra, Manish { 1148eaf3c0c6SChopra, Manish return -EINVAL; 1149eaf3c0c6SChopra, Manish } 11501408cc1fSYuval Mintz #endif 11511408cc1fSYuval Mintz 115232a47e72SYuval Mintz #endif 1153