From 71f81e34406e54779872dd99eaf64fb12535e74a Mon Sep 17 00:00:00 2001 From: Bruce Allan Date: Fri, 17 Aug 2012 06:18:07 +0000 Subject: [PATCH] --- yaml --- r: 327742 b: refs/heads/master c: bc76329d4a788b1c5f2de7208b2fae4e9204223c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/intel/e1000e/netdev.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 8078f10e3428..da015d3c8bd0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: efc38d2af55d80b4420dab71f6634ad7aa34a38c +refs/heads/master: bc76329d4a788b1c5f2de7208b2fae4e9204223c diff --git a/trunk/drivers/net/ethernet/intel/e1000e/netdev.c b/trunk/drivers/net/ethernet/intel/e1000e/netdev.c index 46c3b1f9ff89..fb6c813f5f86 100644 --- a/trunk/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/trunk/drivers/net/ethernet/intel/e1000e/netdev.c @@ -3746,6 +3746,10 @@ static irqreturn_t e1000_intr_msi_test(int irq, void *data) e_dbg("icr is %08X\n", icr); if (icr & E1000_ICR_RXSEQ) { adapter->flags &= ~FLAG_MSI_TEST_FAILED; + /* + * Force memory writes to complete before acknowledging the + * interrupt is handled. + */ wmb(); } @@ -3787,6 +3791,10 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) goto msi_test_failed; } + /* + * Force memory writes to complete before enabling and firing an + * interrupt. + */ wmb(); e1000_irq_enable(adapter); @@ -3798,7 +3806,7 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) e1000_irq_disable(adapter); - rmb(); + rmb(); /* read flags after interrupt has been fired */ if (adapter->flags & FLAG_MSI_TEST_FAILED) { adapter->int_mode = E1000E_INT_MODE_LEGACY;