]> Pileus Git - ~andy/linux/blobdiff - drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h
qlcnic: Support for 16 virtual NIC functions.
[~andy/linux] / drivers / net / ethernet / qlogic / qlcnic / qlcnic_sriov.h
index 0daf660e12a1faa4a48adeacf5e371619ea18d0e..e14d58c59b01af2700c60e3a11a7551b95124a2b 100644 (file)
@@ -126,8 +126,8 @@ struct qlcnic_vport {
        u16                     handle;
        u16                     max_tx_bw;
        u16                     min_tx_bw;
+       u16                     pvid;
        u8                      vlan_mode;
-       u16                     vlan;
        u8                      qos;
        bool                    spoofchk;
        u8                      mac[6];
@@ -137,6 +137,8 @@ struct qlcnic_vf_info {
        u8                              pci_func;
        u16                             rx_ctx_id;
        u16                             tx_ctx_id;
+       u16                             *sriov_vlans;
+       int                             num_vlan;
        unsigned long                   state;
        struct completion               ch_free_cmpl;
        struct work_struct              trans_work;
@@ -149,6 +151,7 @@ struct qlcnic_vf_info {
        struct qlcnic_trans_list        rcv_pend;
        struct qlcnic_adapter           *adapter;
        struct qlcnic_vport             *vp;
+       struct mutex                    vlan_list_lock; /* Lock for VLAN list */
 };
 
 struct qlcnic_async_work_list {
@@ -197,6 +200,13 @@ int qlcnic_sriov_get_vf_vport_info(struct qlcnic_adapter *,
 int qlcnic_sriov_cfg_vf_guest_vlan(struct qlcnic_adapter *, u16, u8);
 int qlcnic_sriov_vf_shutdown(struct pci_dev *);
 int qlcnic_sriov_vf_resume(struct qlcnic_adapter *);
+void qlcnic_sriov_free_vlans(struct qlcnic_adapter *);
+void qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *);
+bool qlcnic_sriov_check_any_vlan(struct qlcnic_vf_info *);
+void qlcnic_sriov_del_vlan_id(struct qlcnic_sriov *,
+                             struct qlcnic_vf_info *, u16);
+void qlcnic_sriov_add_vlan_id(struct qlcnic_sriov *,
+                             struct qlcnic_vf_info *, u16);
 
 static inline bool qlcnic_sriov_enable_check(struct qlcnic_adapter *adapter)
 {