be2net: use pci_vfs_assigned()/pci_num_vf() instead of be_find_vfs()
authorSathya Perla <sathya.perla@emulex.com>
Fri, 14 Jun 2013 10:24:51 +0000 (15:54 +0530)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Jun 2013 04:23:19 +0000 (21:23 -0700)
be_find_vfs() is no longer needed as the common PCI calls provide the same
functionality.

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index 98efc29..cd69ac7 100644 (file)
@@ -1262,30 +1262,6 @@ static int be_set_vf_tx_rate(struct net_device *netdev,
        return status;
 }
 
-static int be_find_vfs(struct be_adapter *adapter, int vf_state)
-{
-       struct pci_dev *dev, *pdev = adapter->pdev;
-       int vfs = 0, assigned_vfs = 0, pos;
-       u16 offset, stride;
-
-       pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
-       if (!pos)
-               return 0;
-       pci_read_config_word(pdev, pos + PCI_SRIOV_VF_OFFSET, &offset);
-       pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride);
-
-       dev = pci_get_device(pdev->vendor, PCI_ANY_ID, NULL);
-       while (dev) {
-               if (dev->is_virtfn && pci_physfn(dev) == pdev) {
-                       vfs++;
-                       if (dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED)
-                               assigned_vfs++;
-               }
-               dev = pci_get_device(pdev->vendor, PCI_ANY_ID, dev);
-       }
-       return (vf_state == ASSIGNED) ? assigned_vfs : vfs;
-}
-
 static void be_eqd_update(struct be_adapter *adapter, struct be_eq_obj *eqo)
 {
        struct be_rx_stats *stats = rx_stats(&adapter->rx_obj[eqo->idx]);
@@ -2797,7 +2773,7 @@ static void be_vf_clear(struct be_adapter *adapter)
        struct be_vf_cfg *vf_cfg;
        u32 vf;
 
-       if (be_find_vfs(adapter, ASSIGNED)) {
+       if (pci_vfs_assigned(adapter->pdev)) {
                dev_warn(&adapter->pdev->dev,
                         "VFs are assigned to VMs: not disabling VFs\n");
                goto done;
@@ -2899,7 +2875,7 @@ static int be_vf_setup(struct be_adapter *adapter)
        int status, old_vfs, vf;
        struct device *dev = &adapter->pdev->dev;
 
-       old_vfs = be_find_vfs(adapter, ENABLED);
+       old_vfs = pci_num_vf(adapter->pdev);
        if (old_vfs) {
                dev_info(dev, "%d VFs are already enabled\n", old_vfs);
                if (old_vfs != num_vfs)
@@ -4200,9 +4176,10 @@ reschedule:
        schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
 }
 
+/* If any VFs are already enabled don't FLR the PF */
 static bool be_reset_required(struct be_adapter *adapter)
 {
-       return be_find_vfs(adapter, ENABLED) > 0 ? false : true;
+       return pci_num_vf(adapter->pdev) ? false : true;
 }
 
 static char *mc_name(struct be_adapter *adapter)