Barrier against compiler optimization.
drivers/net/r8169.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletion(-)
diff -puN drivers/net/r8169.c~r8169-barrier drivers/net/r8169.c
--- linux-2.6.5/drivers/net/r8169.c~r8169-barrier 2004-04-05 23:06:04.000000000 +0200
+++ linux-2.6.5-fr/drivers/net/r8169.c 2004-04-05 23:06:04.000000000 +0200
@@ -1367,6 +1367,7 @@ rtl8169_tx_interrupt(struct net_device *
while (tx_left > 0) {
int entry = dirty_tx % NUM_TX_DESC;
+ rmb();
if (!(le32_to_cpu(tp->TxDescArray[entry].status) & OWNbit)) {
struct sk_buff *skb = tp->Tx_skbuff[entry];
@@ -1428,7 +1429,10 @@ rtl8169_rx_interrupt(struct net_device *
while (rx_left > 0) {
int entry = cur_rx % NUM_RX_DESC;
- u32 status = le32_to_cpu(tp->RxDescArray[entry].status);
+ u32 status;
+
+ rmb();
+ status = le32_to_cpu(tp->RxDescArray[entry].status);
if (status & OWNbit)
break;
_