]> git.baikalelectronics.ru Git - kernel.git/commit
myri10ge: fix stop/go ordering even more
authorBrice Goglin <brice@myri.com>
Mon, 10 Nov 2008 12:58:41 +0000 (13:58 +0100)
committerJeff Garzik <jgarzik@redhat.com>
Tue, 11 Nov 2008 08:49:53 +0000 (03:49 -0500)
commit36bd193fe5590013e90cb0959d26fa10352fe565
tree47d8a786fa02c5c371287e7325015a604e8e285b
parente40cb173c11d2fcce8588c77782e3c7d21e0d12f
myri10ge: fix stop/go ordering even more

The doorbell writes may be seen out of order by the firmware if they
are in WC memory since the tx spin(un)lock does not flush WC writes.
Hence if the "stop" is written on a different CPU than the "go", it
is possible that the stop will arrive after the go unless we add an
explicit memory barrier (and mmiowb() is not enough).

It fixes transmit hangs in multi tx queue mode.

Signed-off-by: Brice Goglin <brice@myri.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/myri10ge/myri10ge.c