net: sfc: Use pci_clear_master() to disable bus mastering
authorBen Hutchings <bhutchings@solarflare.com>
Tue, 23 Dec 2008 03:09:53 +0000 (03:09 +0000)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 7 Jan 2009 19:13:24 +0000 (11:13 -0800)
pci_disable_device() disables many features, like MSI-X, which we
never reenable in efx_reset().  Further, calls to pci_enable_device()
and pci_disable_device() must be matched since the nesting count was
introduced, so switch to using pci_clear_master() instead.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/net/sfc/falcon.c

index 6884dc8c1f8259a69421a65b7a1f81df8ff57a97..5b9f2d9cc4edba62d03fb14a57effa802361e267 100644 (file)
@@ -1403,9 +1403,9 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx)
        }
 
        /* Disable both devices */
-       pci_disable_device(efx->pci_dev);
+       pci_clear_master(efx->pci_dev);
        if (FALCON_IS_DUAL_FUNC(efx))
-               pci_disable_device(nic_data->pci_dev2);
+               pci_clear_master(nic_data->pci_dev2);
        falcon_disable_interrupts(efx);
 
        if (++n_int_errors < FALCON_MAX_INT_ERRORS) {