|
@@ -1918,6 +1918,8 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)
|
|
|
bool enable = true;
|
|
|
|
|
|
icr = er32(ICR);
|
|
|
+ ew32(ICR, E1000_ICR_OTHER);
|
|
|
+
|
|
|
if (icr & E1000_ICR_RXO) {
|
|
|
ew32(ICR, E1000_ICR_RXO);
|
|
|
enable = false;
|
|
@@ -2040,7 +2042,6 @@ static void e1000_configure_msix(struct e1000_adapter *adapter)
|
|
|
hw->hw_addr + E1000_EITR_82574(vector));
|
|
|
else
|
|
|
writel(1, hw->hw_addr + E1000_EITR_82574(vector));
|
|
|
- adapter->eiac_mask |= E1000_IMS_OTHER;
|
|
|
|
|
|
/* Cause Tx interrupts on every write back */
|
|
|
ivar |= BIT(31);
|
|
@@ -2265,7 +2266,7 @@ static void e1000_irq_enable(struct e1000_adapter *adapter)
|
|
|
|
|
|
if (adapter->msix_entries) {
|
|
|
ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574);
|
|
|
- ew32(IMS, adapter->eiac_mask | E1000_IMS_LSC);
|
|
|
+ ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC);
|
|
|
} else if (hw->mac.type >= e1000_pch_lpt) {
|
|
|
ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER);
|
|
|
} else {
|