diff options
Diffstat (limited to 'drivers/net/igb')
-rw-r--r-- | drivers/net/igb/igb_main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 933c64ff2465..d9679493c635 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -60,7 +60,7 @@ static const struct e1000_info *igb_info_tbl[] = { | |||
60 | [board_82575] = &e1000_82575_info, | 60 | [board_82575] = &e1000_82575_info, |
61 | }; | 61 | }; |
62 | 62 | ||
63 | static struct pci_device_id igb_pci_tbl[] = { | 63 | static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = { |
64 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER), board_82575 }, | 64 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_COPPER), board_82575 }, |
65 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_FIBER), board_82575 }, | 65 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_FIBER), board_82575 }, |
66 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SERDES), board_82575 }, | 66 | { PCI_VDEVICE(INTEL, E1000_DEV_ID_82580_SERDES), board_82575 }, |
@@ -4105,6 +4105,9 @@ static irqreturn_t igb_msix_other(int irq, void *data) | |||
4105 | u32 icr = rd32(E1000_ICR); | 4105 | u32 icr = rd32(E1000_ICR); |
4106 | /* reading ICR causes bit 31 of EICR to be cleared */ | 4106 | /* reading ICR causes bit 31 of EICR to be cleared */ |
4107 | 4107 | ||
4108 | if (icr & E1000_ICR_DRSTA) | ||
4109 | schedule_work(&adapter->reset_task); | ||
4110 | |||
4108 | if (icr & E1000_ICR_DOUTSYNC) { | 4111 | if (icr & E1000_ICR_DOUTSYNC) { |
4109 | /* HW is reporting DMA is out of sync */ | 4112 | /* HW is reporting DMA is out of sync */ |
4110 | adapter->stats.doosync++; | 4113 | adapter->stats.doosync++; |
@@ -4728,6 +4731,9 @@ static irqreturn_t igb_intr_msi(int irq, void *data) | |||
4728 | 4731 | ||
4729 | igb_write_itr(q_vector); | 4732 | igb_write_itr(q_vector); |
4730 | 4733 | ||
4734 | if (icr & E1000_ICR_DRSTA) | ||
4735 | schedule_work(&adapter->reset_task); | ||
4736 | |||
4731 | if (icr & E1000_ICR_DOUTSYNC) { | 4737 | if (icr & E1000_ICR_DOUTSYNC) { |
4732 | /* HW is reporting DMA is out of sync */ | 4738 | /* HW is reporting DMA is out of sync */ |
4733 | adapter->stats.doosync++; | 4739 | adapter->stats.doosync++; |
@@ -4767,6 +4773,9 @@ static irqreturn_t igb_intr(int irq, void *data) | |||
4767 | if (!(icr & E1000_ICR_INT_ASSERTED)) | 4773 | if (!(icr & E1000_ICR_INT_ASSERTED)) |
4768 | return IRQ_NONE; | 4774 | return IRQ_NONE; |
4769 | 4775 | ||
4776 | if (icr & E1000_ICR_DRSTA) | ||
4777 | schedule_work(&adapter->reset_task); | ||
4778 | |||
4770 | if (icr & E1000_ICR_DOUTSYNC) { | 4779 | if (icr & E1000_ICR_DOUTSYNC) { |
4771 | /* HW is reporting DMA is out of sync */ | 4780 | /* HW is reporting DMA is out of sync */ |
4772 | adapter->stats.doosync++; | 4781 | adapter->stats.doosync++; |