This adds a memory barrier to ensure the writes to the ring memory
are committed before the DMA ring pointer is updated.
We do a similar thing on the TX side already.

Signed-off-by: Michael Buesch <[email protected]>

---

There's no bug report or known breakage (as far as I know) on this,
so no CC to stable.


Index: linux-2.6.39/drivers/net/wireless/b43/dma.c
===================================================================
--- linux-2.6.39.orig/drivers/net/wireless/b43/dma.c    2011-05-19 
06:06:34.000000000 +0200
+++ linux-2.6.39/drivers/net/wireless/b43/dma.c 2011-07-04 17:24:56.327210182 
+0200
@@ -1599,6 +1599,7 @@ void b43_dma_rx(struct b43_dmaring *ring
                dma_rx(ring, &slot);
                update_max_used_slots(ring, ++used_slots);
        }
+       wmb();
        ops->set_current_rxslot(ring, slot);
        ring->current_slot = slot;
 }


-- 
Greetings, Michael.

_______________________________________________
b43-dev mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/b43-dev

Reply via email to