|
|
@@ -682,6 +682,11 @@ static void macb_set_addr(struct macb *bp, struct macb_dma_desc *desc, dma_addr_
|
|
|
if (bp->hw_dma_cap & HW_DMA_CAP_64B) {
|
|
|
desc_64 = macb_64b_desc(bp, desc);
|
|
|
desc_64->addrh = upper_32_bits(addr);
|
|
|
+ /* The low bits of RX address contain the RX_USED bit, clearing
|
|
|
+ * of which allows packet RX. Make sure the high bits are also
|
|
|
+ * visible to HW at that point.
|
|
|
+ */
|
|
|
+ dma_wmb();
|
|
|
}
|
|
|
#endif
|
|
|
desc->addr = lower_32_bits(addr);
|