Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c020a96 authored by David Dillow's avatar David Dillow Committed by David S. Miller
Browse files

r8169: use correct barrier between cacheable and non-cacheable memory



r8169 needs certain writes to be visible to other CPUs or the NIC before
touching the hardware, but was using smp_wmb() which is only required to
order cacheable memory access. Switch to wmb() which is required to
order both cacheable and non-cacheable memory.

Noticed by Catalin Marinas and Paul Mackerras.

Signed-off-by: default avatarDavid Dillow <dave@thedillows.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d0021b25
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4270,7 +4270,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,

	tp->cur_tx += frags + 1;

	smp_wmb();
	wmb();

	RTL_W8(TxPoll, NPQ);	/* set polling bit */

@@ -4621,7 +4621,7 @@ static int rtl8169_poll(struct napi_struct *napi, int budget)
		 * until it does.
		 */
		tp->intr_mask = 0xffff;
		smp_wmb();
		wmb();
		RTL_W16(IntrMask, tp->intr_event);
	}