diff mbox

[RESEND,2.6.28] myri10ge: fix stop/go mmio ordering

Message ID 49096965.20905@myri.com
State Accepted, archived
Delegated to: Jeff Garzik
Headers show

Commit Message

Brice Goglin Oct. 30, 2008, 7:59 a.m. UTC
Use mmiowb() to ensure "stop" and "go" commands are sent in order on ia64.

Signed-off-by: Brice Goglin <brice@myri.com>



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

Comments

Jeff Garzik Oct. 31, 2008, 4:49 a.m. UTC | #1
Brice Goglin wrote:
> Use mmiowb() to ensure "stop" and "go" commands are sent in order on ia64.
> 
> Signed-off-by: Brice Goglin <brice@myri.com>
> 
> --- linux-git/drivers/net/myri10ge/myri10ge.c	2008-10-30 08:15:37.000000000 +0100
> +++ linux-tmp/drivers/net/myri10ge/myri10ge.c	2008-10-30 08:17:54.000000000 +0100
> @@ -75,7 +75,7 @@
>  #include "myri10ge_mcp.h"
>  #include "myri10ge_mcp_gen_header.h"
>  
> -#define MYRI10GE_VERSION_STR "1.4.3-1.371"
> +#define MYRI10GE_VERSION_STR "1.4.3-1.375"
>  
>  MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
>  MODULE_AUTHOR("Maintainer: help@myri.com");
> @@ -1393,6 +1393,7 @@
>  		if (tx->req == tx->done) {
>  			tx->queue_active = 0;
>  			put_be32(htonl(1), tx->send_stop);
> +			mmiowb();
>  		}
>  		__netif_tx_unlock(dev_queue);
>  	}
> @@ -2864,6 +2865,7 @@
>  	if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) {
>  		tx->queue_active = 1;
>  		put_be32(htonl(1), tx->send_go);
> +		mmiowb();
>  	}
>  	tx->pkt_start++;
>  	if ((avail - count) < MXGEFW_MAX_SEND_DESC) {
> 

applied


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

Patch

--- linux-git/drivers/net/myri10ge/myri10ge.c	2008-10-30 08:15:37.000000000 +0100
+++ linux-tmp/drivers/net/myri10ge/myri10ge.c	2008-10-30 08:17:54.000000000 +0100
@@ -75,7 +75,7 @@ 
 #include "myri10ge_mcp.h"
 #include "myri10ge_mcp_gen_header.h"
 
-#define MYRI10GE_VERSION_STR "1.4.3-1.371"
+#define MYRI10GE_VERSION_STR "1.4.3-1.375"
 
 MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
 MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -1393,6 +1393,7 @@ 
 		if (tx->req == tx->done) {
 			tx->queue_active = 0;
 			put_be32(htonl(1), tx->send_stop);
+			mmiowb();
 		}
 		__netif_tx_unlock(dev_queue);
 	}
@@ -2864,6 +2865,7 @@ 
 	if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) {
 		tx->queue_active = 1;
 		put_be32(htonl(1), tx->send_go);
+		mmiowb();
 	}
 	tx->pkt_start++;
 	if ((avail - count) < MXGEFW_MAX_SEND_DESC) {