]> git.baikalelectronics.ru Git - kernel.git/commit
skge: fix occasional BUG during MTU change
authorMichal Schmidt <mschmidt@redhat.com>
Tue, 14 Apr 2009 22:16:55 +0000 (15:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Apr 2009 22:16:55 +0000 (15:16 -0700)
commit7cc0db0c55486f4fe3fb89739780e3d6b390b810
treece1222713dcb3ea7486f0a164a34005ea43bd4aa
parent7e4b2f92c7049a2fcb9650047b68e83267d4b48d
skge: fix occasional BUG during MTU change

The BUG_ON(skge->tx_ring.to_use != skge->tx_ring.to_clean) in skge_up()
was sometimes observed when setting MTU.

skge_down() disables the TX queue, but then reenables it by mistake via
skge_tx_clean().
Fix it by moving the waking of the queue from skge_tx_clean() to the
other caller. And to make sure start_xmit is not in progress on another
CPU, skge_down() should call netif_tx_disable().

The bug was reported to me by Jiri Jilek whose Debian system sometimes
failed to boot. He tested the patch and the bug did not happen anymore.

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/skge.c