浏览代码

igb: Use irq_synchronize per vector when using MSI-X

Synchronize all IRQs when using MSI-X. Similar to ixgbe.
Issue was reported on e1000e, but the patch is also valid for igb.

CC: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Emil Tantilov 15 年之前
父节点
当前提交
81a618595a
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      drivers/net/igb/igb_main.c

+ 7 - 1
drivers/net/igb/igb_main.c

@@ -1290,7 +1290,13 @@ static void igb_irq_disable(struct igb_adapter *adapter)
 	wr32(E1000_IAM, 0);
 	wr32(E1000_IAM, 0);
 	wr32(E1000_IMC, ~0);
 	wr32(E1000_IMC, ~0);
 	wrfl();
 	wrfl();
-	synchronize_irq(adapter->pdev->irq);
+	if (adapter->msix_entries) {
+		int i;
+		for (i = 0; i < adapter->num_q_vectors; i++)
+			synchronize_irq(adapter->msix_entries[i].vector);
+	} else {
+		synchronize_irq(adapter->pdev->irq);
+	}
 }
 }
 
 
 /**
 /**