Use mmio barriers at end of transmit and irq processing.
I don't have machines that really require these barriers, but this
matches the documented usage.

Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>


--- skge.orig/drivers/net/skge.c        2006-02-20 10:47:24.000000000 -0800
+++ skge/drivers/net/skge.c     2006-02-20 10:47:32.000000000 -0800
@@ -2380,9 +2380,10 @@
                netif_stop_queue(dev);
        }
 
-       dev->trans_start = jiffies;
+       mmiowb();
        spin_unlock_irqrestore(&skge->tx_lock, flags);
 
+       dev->trans_start = jiffies;
        return NETDEV_TX_OK;
 }
 
@@ -2677,6 +2678,7 @@
        wmb();
        skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR),
                    CSR_START | CSR_IRQ_CL_F);
+       mmiowb();
 
        *budget -= work_done;
        dev->quota -= work_done;
@@ -2687,7 +2689,6 @@
        netif_rx_complete(dev);
        hw->intr_mask |= portirqmask[skge->port];
        skge_write32(hw, B0_IMSK, hw->intr_mask);
-       skge_read32(hw, B0_IMSK);
 
        return 0;
 }

--

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to