sfc: Detach net device when stopping queues for reconfiguration
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 28 Jan 2013 19:01:06 +0000 (19:01 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Tue, 26 Feb 2013 15:00:46 +0000 (15:00 +0000)
commit29c69a4882641285a854d6d03ca5adbba68c0034
tree02308179fff9f2ba3f5a7c2333a8aea523d85735
parentb590ace09d51cd39744e0f7662c5e4a0d1b5d952
sfc: Detach net device when stopping queues for reconfiguration

We must only ever stop TX queues when they are full or the net device
is not 'ready' so far as the net core, and specifically the watchdog,
is concerned.  Otherwise, the watchdog may fire *immediately* if no
packets have been added to the queue in the last 5 seconds.

The device is ready if all the following are true:

(a) It has a qdisc
(b) It is marked present
(c) It is running
(d) The link is reported up

(a) and (c) are normally true, and must not be changed by a driver.
(d) is under our control, but fake link changes may disturb userland.
This leaves (b).  We already mark the device absent during reset
and self-test, but we need to do the same during MTU changes and ring
reallocation.  We don't need to do this when the device is brought
down because then (c) is already false.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/efx.c