]> git.baikalelectronics.ru Git - kernel.git/commit
ethtool: Change ETHTOOL_PHYS_ID implementation to allow dropping RTNL
authorBen Hutchings <bhutchings@solarflare.com>
Fri, 1 Apr 2011 23:35:15 +0000 (00:35 +0100)
committerBen Hutchings <bhutchings@solarflare.com>
Tue, 5 Apr 2011 14:12:01 +0000 (15:12 +0100)
commit9cb7a6b641ab3e2c797a9de3a39f0eb3ef12b74f
tree4635193aaec903f09ae69df4dc880296d74c5135
parent323257e526bde8a643ae1910464e4f69d018bdaf
ethtool: Change ETHTOOL_PHYS_ID implementation to allow dropping RTNL

The ethtool ETHTOOL_PHYS_ID command runs for an arbitrarily long
period of time, holding the RTNL lock.  This blocks routing updates,
device enumeration, and various important operations that one might
want to keep running while hunting for the flashing LED.

We need to drop the RTNL lock during this operation, but currently the
core implementation is a thin wrapper around a driver operation and
drivers may well depend upon holding the lock.

Define a new driver operation 'set_phys_id' with an argument that sets
the ID indicator on/off/inactive/active (the last optional, for any
driver or firmware that prefers to handle blinking asynchronously).
When this is defined, the ethtool core drops the lock while waiting
and only acquires it around calls to this operation.

Deprecate the 'phys_id' operation in favour of this.  It can be
removed once all in-tree drivers are converted.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
include/linux/ethtool.h
net/core/ethtool.c