diff options
| -rw-r--r-- | drivers/net/sky2.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 178249a96e1c..1407ff2da41e 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
| @@ -707,6 +707,7 @@ static inline struct sky2_tx_le *get_tx_le(struct sky2_port *sky2) | |||
| 707 | static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q, | 707 | static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q, |
| 708 | u16 idx, u16 *last, u16 size) | 708 | u16 idx, u16 *last, u16 size) |
| 709 | { | 709 | { |
| 710 | wmb(); | ||
| 710 | if (is_ec_a1(hw) && idx < *last) { | 711 | if (is_ec_a1(hw) && idx < *last) { |
| 711 | u16 hwget = sky2_read16(hw, Y2_QADDR(q, PREF_UNIT_GET_IDX)); | 712 | u16 hwget = sky2_read16(hw, Y2_QADDR(q, PREF_UNIT_GET_IDX)); |
| 712 | 713 | ||
| @@ -730,6 +731,7 @@ setnew: | |||
| 730 | sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx); | 731 | sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx); |
| 731 | } | 732 | } |
| 732 | *last = idx; | 733 | *last = idx; |
| 734 | mmiowb(); | ||
| 733 | } | 735 | } |
| 734 | 736 | ||
| 735 | 737 | ||
| @@ -1253,7 +1255,6 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev) | |||
| 1253 | netif_stop_queue(dev); | 1255 | netif_stop_queue(dev); |
| 1254 | 1256 | ||
| 1255 | out_unlock: | 1257 | out_unlock: |
| 1256 | mmiowb(); | ||
| 1257 | spin_unlock(&sky2->tx_lock); | 1258 | spin_unlock(&sky2->tx_lock); |
| 1258 | 1259 | ||
| 1259 | dev->trans_start = jiffies; | 1260 | dev->trans_start = jiffies; |
| @@ -1896,7 +1897,6 @@ static int sky2_poll(struct net_device *dev0, int *budget) | |||
| 1896 | 1897 | ||
| 1897 | exit_loop: | 1898 | exit_loop: |
| 1898 | sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); | 1899 | sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); |
| 1899 | mmiowb(); | ||
| 1900 | 1900 | ||
| 1901 | sky2_tx_check(hw, 0, tx_done[0]); | 1901 | sky2_tx_check(hw, 0, tx_done[0]); |
| 1902 | sky2_tx_check(hw, 1, tx_done[1]); | 1902 | sky2_tx_check(hw, 1, tx_done[1]); |
| @@ -1911,7 +1911,6 @@ exit_loop: | |||
| 1911 | netif_rx_complete(dev0); | 1911 | netif_rx_complete(dev0); |
| 1912 | hw->intr_mask |= Y2_IS_STAT_BMU; | 1912 | hw->intr_mask |= Y2_IS_STAT_BMU; |
| 1913 | sky2_write32(hw, B0_IMSK, hw->intr_mask); | 1913 | sky2_write32(hw, B0_IMSK, hw->intr_mask); |
| 1914 | mmiowb(); | ||
| 1915 | return 0; | 1914 | return 0; |
| 1916 | } else { | 1915 | } else { |
| 1917 | *budget -= work_done; | 1916 | *budget -= work_done; |
