Commit 6824a105 authored by Brice Goglin's avatar Brice Goglin Committed by Jeff Garzik

myri10ge: fix stop/go mmio ordering

Use mmiowb() to ensure "stop" and "go" commands are sent in order on ia64.
Signed-off-by: default avatarBrice Goglin <brice@myri.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent ce39a800
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
#include "myri10ge_mcp.h" #include "myri10ge_mcp.h"
#include "myri10ge_mcp_gen_header.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_DESCRIPTION("Myricom 10G driver (10GbE)");
MODULE_AUTHOR("Maintainer: help@myri.com"); MODULE_AUTHOR("Maintainer: help@myri.com");
...@@ -1393,6 +1393,7 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index) ...@@ -1393,6 +1393,7 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index)
if (tx->req == tx->done) { if (tx->req == tx->done) {
tx->queue_active = 0; tx->queue_active = 0;
put_be32(htonl(1), tx->send_stop); put_be32(htonl(1), tx->send_stop);
mmiowb();
} }
__netif_tx_unlock(dev_queue); __netif_tx_unlock(dev_queue);
} }
...@@ -2864,6 +2865,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -2864,6 +2865,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) { if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) {
tx->queue_active = 1; tx->queue_active = 1;
put_be32(htonl(1), tx->send_go); put_be32(htonl(1), tx->send_go);
mmiowb();
} }
tx->pkt_start++; tx->pkt_start++;
if ((avail - count) < MXGEFW_MAX_SEND_DESC) { if ((avail - count) < MXGEFW_MAX_SEND_DESC) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment