summaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/enum.h
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2011-06-24 20:46:31 +0100
committerBen Hutchings <bhutchings@solarflare.com>2011-06-25 00:43:48 +0100
commita7d529ae2158b5300e4aa16c21f1828bc864449b (patch)
tree8a4442da3d52682945579ce76a9c075cf41a110b /drivers/net/sfc/enum.h
parent4017dbdc14af1903dc9fcba4d08b89c02325069d (diff)
downloadlinux-a7d529ae2158b5300e4aa16c21f1828bc864449b.tar.gz
linux-a7d529ae2158b5300e4aa16c21f1828bc864449b.tar.bz2
linux-a7d529ae2158b5300e4aa16c21f1828bc864449b.zip
sfc: Allow resets to be upgraded; use atomic ops for safety
Currently an attempt to schedule any reset is ignored if a reset is already pending. This ignores the relative scopes - if the requested reset is greater in scope then the scheduled reset should be upgraded accordingly. There are also some race conditions which could lead to a reset request being lost. Deal with them by using atomic operations on a bitmask. This also makes tests on reset_pending easier to get right. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/sfc/enum.h')
-rw-r--r--drivers/net/sfc/enum.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/sfc/enum.h b/drivers/net/sfc/enum.h
index 384cfe3b1be1..d725a8fbe1a6 100644
--- a/drivers/net/sfc/enum.h
+++ b/drivers/net/sfc/enum.h
@@ -134,6 +134,8 @@ enum efx_loopback_mode {
* other valuesspecify reasons, which efx_schedule_reset() will choose
* a method for.
*
+ * Reset methods are numbered in order of increasing scope.
+ *
* @RESET_TYPE_INVISIBLE: don't reset the PHYs or interrupts
* @RESET_TYPE_ALL: reset everything but PCI core blocks
* @RESET_TYPE_WORLD: reset everything, save & restore PCI config
@@ -147,7 +149,6 @@ enum efx_loopback_mode {
* @RESET_TYPE_MC_FAILURE: MC reboot/assertion
*/
enum reset_type {
- RESET_TYPE_NONE = -1,
RESET_TYPE_INVISIBLE = 0,
RESET_TYPE_ALL = 1,
RESET_TYPE_WORLD = 2,