qlcnic: SR-IOV VF probe
[firefly-linux-kernel-4.4.55.git] / drivers / net / ethernet / qlogic / qlcnic / qlcnic_sriov.h
1 /*
2  * QLogic qlcnic NIC Driver
3  * Copyright (c) 2009-2013 QLogic Corporation
4  *
5  * See LICENSE.qlcnic for copyright and licensing details.
6  */
7
8 #ifndef _QLCNIC_83XX_SRIOV_H_
9 #define _QLCNIC_83XX_SRIOV_H_
10
11 #include "qlcnic.h"
12 #include <linux/types.h>
13 #include <linux/pci.h>
14
15 extern const u32 qlcnic_83xx_reg_tbl[];
16 extern const u32 qlcnic_83xx_ext_reg_tbl[];
17
18 struct qlcnic_resources {
19         u16 num_tx_mac_filters;
20         u16 num_rx_ucast_mac_filters;
21         u16 num_rx_mcast_mac_filters;
22
23         u16 num_txvlan_keys;
24
25         u16 num_rx_queues;
26         u16 num_tx_queues;
27
28         u16 num_rx_buf_rings;
29         u16 num_rx_status_rings;
30
31         u16 num_destip;
32         u32 num_lro_flows_supported;
33         u16 max_local_ipv6_addrs;
34         u16 max_remote_ipv6_addrs;
35 };
36
37 struct qlcnic_sriov {
38         u16                             vp_handle;
39         u8                              num_vfs;
40         struct qlcnic_resources         ff_max;
41 };
42
43 int qlcnic_sriov_init(struct qlcnic_adapter *, int);
44 void qlcnic_sriov_cleanup(struct qlcnic_adapter *);
45 void __qlcnic_sriov_cleanup(struct qlcnic_adapter *);
46 void qlcnic_sriov_vf_register_map(struct qlcnic_hardware_context *);
47 int qlcnic_sriov_vf_init(struct qlcnic_adapter *, int);
48 void qlcnic_sriov_vf_set_ops(struct qlcnic_adapter *);
49
50 static inline bool qlcnic_sriov_enable_check(struct qlcnic_adapter *adapter)
51 {
52         return test_bit(__QLCNIC_SRIOV_ENABLE, &adapter->state) ? true : false;
53 }
54
55 #ifdef CONFIG_QLCNIC_SRIOV
56 void qlcnic_sriov_pf_disable(struct qlcnic_adapter *);
57 void qlcnic_sriov_pf_cleanup(struct qlcnic_adapter *);
58 int qlcnic_pci_sriov_configure(struct pci_dev *, int);
59 #else
60 static inline void qlcnic_sriov_pf_disable(struct qlcnic_adapter *adapter) {}
61 static inline void qlcnic_sriov_pf_cleanup(struct qlcnic_adapter *adapter) {}
62 #endif
63
64 #endif