e1000: add mmiowb() for IA64 to sync tail writes
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Wed, 1 Nov 2006 16:47:42 +0000 (08:47 -0800)
committerJeff Garzik <jeff@garzik.org>
Sat, 2 Dec 2006 05:11:59 +0000 (00:11 -0500)
IA64 SMP systems were seeing TX issues with multiple cpu's attempting
to write tail registers unordered. This mmiowb() fixes the issue.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
drivers/net/e1000/e1000_main.c

index 93b97c6b8a63204d7588163f1a6d13ea7b9ce72b..681b738c6dac25c1fea34dc9e21a3b6c60a6c52f 100644 (file)
@@ -2867,6 +2867,9 @@ e1000_tx_queue(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
 
        tx_ring->next_to_use = i;
        writel(i, adapter->hw.hw_addr + tx_ring->tdt);
+       /* we need this if more than one processor can write to our tail
+        * at a time, it syncronizes IO on IA64/Altix systems */
+       mmiowb();
 }
 
 /**