diff options
author | Divy Le Ray <divy@chelsio.com> | 2008-05-06 22:26:01 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-05-13 01:31:37 -0400 |
commit | 204e2f98c2d13f869b8541f3c57c7314f75cab11 (patch) | |
tree | a415a3e80acfe19298d0238747aed6b665971558 /drivers/net/cxgb3/cxgb3_main.c | |
parent | 48c4b6dbb7e246957e13302668acf7c77e4f8b3a (diff) |
cxgb3 - fix EEH
Reset the chip when the PCI link goes down.
Preserve the napi structure when a sge qset's resources are freed.
Replay only HW initialization when the chip comes out of reset.
Signed-off-by: Divy Le ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/cxgb3/cxgb3_main.c')
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index d67fc10a6b36..3a3127216791 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
@@ -2430,9 +2430,6 @@ static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev, | |||
2430 | test_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map)) | 2430 | test_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map)) |
2431 | offload_close(&adapter->tdev); | 2431 | offload_close(&adapter->tdev); |
2432 | 2432 | ||
2433 | /* Free sge resources */ | ||
2434 | t3_free_sge_resources(adapter); | ||
2435 | |||
2436 | adapter->flags &= ~FULL_INIT_DONE; | 2433 | adapter->flags &= ~FULL_INIT_DONE; |
2437 | 2434 | ||
2438 | pci_disable_device(pdev); | 2435 | pci_disable_device(pdev); |
@@ -2457,8 +2454,12 @@ static pci_ers_result_t t3_io_slot_reset(struct pci_dev *pdev) | |||
2457 | goto err; | 2454 | goto err; |
2458 | } | 2455 | } |
2459 | pci_set_master(pdev); | 2456 | pci_set_master(pdev); |
2457 | pci_restore_state(pdev); | ||
2458 | |||
2459 | /* Free sge resources */ | ||
2460 | t3_free_sge_resources(adapter); | ||
2460 | 2461 | ||
2461 | if (t3_prep_adapter(adapter, adapter->params.info, 1)) | 2462 | if (t3_replay_prep_adapter(adapter)) |
2462 | goto err; | 2463 | goto err; |
2463 | 2464 | ||
2464 | return PCI_ERS_RESULT_RECOVERED; | 2465 | return PCI_ERS_RESULT_RECOVERED; |
@@ -2610,6 +2611,7 @@ static int __devinit init_one(struct pci_dev *pdev, | |||
2610 | } | 2611 | } |
2611 | 2612 | ||
2612 | pci_set_master(pdev); | 2613 | pci_set_master(pdev); |
2614 | pci_save_state(pdev); | ||
2613 | 2615 | ||
2614 | mmio_start = pci_resource_start(pdev, 0); | 2616 | mmio_start = pci_resource_start(pdev, 0); |
2615 | mmio_len = pci_resource_len(pdev, 0); | 2617 | mmio_len = pci_resource_len(pdev, 0); |