diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2008-09-01 07:50:14 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-09-24 18:54:40 -0400 |
commit | 0a62f1a681006719c226a682dbcfb4358c8b3d28 (patch) | |
tree | 19f3f64b5b4c720f2180730619fab56f172a6c1d /drivers/net/sfc/falcon.c | |
parent | 1d0680fd6235e0aa5baf14a8f1ff85eff9dc1fb3 (diff) |
sfc: Disable interrupts after a fatal interrupt occurs until reset
This should avoid an interrupt storm, which has been observed in the
field with one faulty board.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/sfc/falcon.c')
-rw-r--r-- | drivers/net/sfc/falcon.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c index 3a5289fe8d1d..d30c938d0fbf 100644 --- a/drivers/net/sfc/falcon.c +++ b/drivers/net/sfc/falcon.c | |||
@@ -1374,10 +1374,11 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx) | |||
1374 | EFX_OWORD_FMT "\n", EFX_OWORD_VAL(reg)); | 1374 | EFX_OWORD_FMT "\n", EFX_OWORD_VAL(reg)); |
1375 | } | 1375 | } |
1376 | 1376 | ||
1377 | /* Disable DMA bus mastering on both devices */ | 1377 | /* Disable both devices */ |
1378 | pci_disable_device(efx->pci_dev); | 1378 | pci_disable_device(efx->pci_dev); |
1379 | if (FALCON_IS_DUAL_FUNC(efx)) | 1379 | if (FALCON_IS_DUAL_FUNC(efx)) |
1380 | pci_disable_device(nic_data->pci_dev2); | 1380 | pci_disable_device(nic_data->pci_dev2); |
1381 | falcon_disable_interrupts(efx); | ||
1381 | 1382 | ||
1382 | if (++n_int_errors < FALCON_MAX_INT_ERRORS) { | 1383 | if (++n_int_errors < FALCON_MAX_INT_ERRORS) { |
1383 | EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n"); | 1384 | EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n"); |