aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igb')
-rw-r--r--drivers/net/igb/igb_main.c11
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
63static struct pci_device_id igb_pci_tbl[] = { 63static 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++;