17fa8d547SShradha Shah /**************************************************************************** 27fa8d547SShradha Shah * Driver for Solarflare network controllers and boards 37fa8d547SShradha Shah * Copyright 2015 Solarflare Communications Inc. 47fa8d547SShradha Shah * 57fa8d547SShradha Shah * This program is free software; you can redistribute it and/or modify it 67fa8d547SShradha Shah * under the terms of the GNU General Public License version 2 as published 77fa8d547SShradha Shah * by the Free Software Foundation, incorporated herein by reference. 87fa8d547SShradha Shah */ 97fa8d547SShradha Shah 107fa8d547SShradha Shah #ifndef EF10_SRIOV_H 117fa8d547SShradha Shah #define EF10_SRIOV_H 127fa8d547SShradha Shah 137fa8d547SShradha Shah #include "net_driver.h" 147fa8d547SShradha Shah 153c5eb876SShradha Shah /** 163c5eb876SShradha Shah * struct ef10_vf - PF's store of VF data 173c5eb876SShradha Shah * @vport_id: vport ID for the VF 183c5eb876SShradha Shah * @vport_assigned: record whether the vport is currently assigned to the VF 193c5eb876SShradha Shah * @mac: MAC address for the VF, zero when address is removed from the vport 203c5eb876SShradha Shah */ 213c5eb876SShradha Shah struct ef10_vf { 223c5eb876SShradha Shah unsigned int vport_id; 233c5eb876SShradha Shah unsigned int vport_assigned; 243c5eb876SShradha Shah u8 mac[ETH_ALEN]; 253c5eb876SShradha Shah }; 263c5eb876SShradha Shah 277fa8d547SShradha Shah static inline bool efx_ef10_sriov_wanted(struct efx_nic *efx) 287fa8d547SShradha Shah { 297fa8d547SShradha Shah return false; 307fa8d547SShradha Shah } 317fa8d547SShradha Shah 32834e23ddSShradha Shah int efx_ef10_sriov_configure(struct efx_nic *efx, int num_vfs); 3302246a7fSShradha Shah int efx_ef10_sriov_init(struct efx_nic *efx); 347fa8d547SShradha Shah static inline void efx_ef10_sriov_mac_address_changed(struct efx_nic *efx) {} 357fa8d547SShradha Shah static inline void efx_ef10_sriov_reset(struct efx_nic *efx) {} 3602246a7fSShradha Shah void efx_ef10_sriov_fini(struct efx_nic *efx); 377fa8d547SShradha Shah static inline void efx_ef10_sriov_flr(struct efx_nic *efx, unsigned vf_i) {} 387fa8d547SShradha Shah 397fa8d547SShradha Shah static inline int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf, 407fa8d547SShradha Shah u8 *mac) 417fa8d547SShradha Shah { 427fa8d547SShradha Shah return -EOPNOTSUPP; 437fa8d547SShradha Shah } 447fa8d547SShradha Shah 457fa8d547SShradha Shah static inline int efx_ef10_sriov_set_vf_vlan(struct efx_nic *efx, int vf, 467fa8d547SShradha Shah u16 vlan, u8 qos) 477fa8d547SShradha Shah { 487fa8d547SShradha Shah return -EOPNOTSUPP; 497fa8d547SShradha Shah } 507fa8d547SShradha Shah 517fa8d547SShradha Shah static inline int efx_ef10_sriov_set_vf_spoofchk(struct efx_nic *efx, int vf, 527fa8d547SShradha Shah bool spoofchk) 537fa8d547SShradha Shah { 547fa8d547SShradha Shah return -EOPNOTSUPP; 557fa8d547SShradha Shah } 567fa8d547SShradha Shah 577fa8d547SShradha Shah static inline int efx_ef10_sriov_get_vf_config(struct efx_nic *efx, int vf, 587fa8d547SShradha Shah struct ifla_vf_info *ivf) 597fa8d547SShradha Shah { 607fa8d547SShradha Shah return -EOPNOTSUPP; 617fa8d547SShradha Shah } 627fa8d547SShradha Shah 636d8aaaf6SDaniel Pieczko int efx_ef10_vswitching_probe(struct efx_nic *efx); 646d8aaaf6SDaniel Pieczko int efx_ef10_vswitching_restore(struct efx_nic *efx); 656d8aaaf6SDaniel Pieczko void efx_ef10_vswitching_remove(struct efx_nic *efx); 666d8aaaf6SDaniel Pieczko 677fa8d547SShradha Shah #endif /* EF10_SRIOV_H */ 68