diff options
author | Klaus-Dieter Wacker <kdwacker@de.ibm.com> | 2012-03-06 21:06:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-08 01:52:25 -0500 |
commit | e427babeefe10023d348e2a3db272612d6e79dc3 (patch) | |
tree | c84dba999a2b80503c2416469e2b69c41ae1eb64 /drivers/s390/net | |
parent | e0a8114c034cf8012565c5d56dd90967023cc724 (diff) |
lcs: Return zero from ccwgroup devs set_offline function
A return code of non-zero of the devs ccwgroup set_offline function
leaves the dev in online state. Having done a partly offlining
may leave the dev in unusable state. To make sure the dev is set to
offline, zero is returned. A setup trace entry is written in case
the offlining steps encountered some trouble.
Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r-- | drivers/s390/net/lcs.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 863fc2197155..687efe4d589a 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -2240,7 +2240,7 @@ __lcs_shutdown_device(struct ccwgroup_device *ccwgdev, int recovery_mode) | |||
2240 | { | 2240 | { |
2241 | struct lcs_card *card; | 2241 | struct lcs_card *card; |
2242 | enum lcs_dev_states recover_state; | 2242 | enum lcs_dev_states recover_state; |
2243 | int ret; | 2243 | int ret = 0, ret2 = 0, ret3 = 0; |
2244 | 2244 | ||
2245 | LCS_DBF_TEXT(3, setup, "shtdndev"); | 2245 | LCS_DBF_TEXT(3, setup, "shtdndev"); |
2246 | card = dev_get_drvdata(&ccwgdev->dev); | 2246 | card = dev_get_drvdata(&ccwgdev->dev); |
@@ -2255,13 +2255,15 @@ __lcs_shutdown_device(struct ccwgroup_device *ccwgdev, int recovery_mode) | |||
2255 | recover_state = card->state; | 2255 | recover_state = card->state; |
2256 | 2256 | ||
2257 | ret = lcs_stop_device(card->dev); | 2257 | ret = lcs_stop_device(card->dev); |
2258 | ret = ccw_device_set_offline(card->read.ccwdev); | 2258 | ret2 = ccw_device_set_offline(card->read.ccwdev); |
2259 | ret = ccw_device_set_offline(card->write.ccwdev); | 2259 | ret3 = ccw_device_set_offline(card->write.ccwdev); |
2260 | if (!ret) | ||
2261 | ret = (ret2) ? ret2 : ret3; | ||
2262 | if (ret) | ||
2263 | LCS_DBF_TEXT_(3, setup, "1err:%d", ret); | ||
2260 | if (recover_state == DEV_STATE_UP) { | 2264 | if (recover_state == DEV_STATE_UP) { |
2261 | card->state = DEV_STATE_RECOVER; | 2265 | card->state = DEV_STATE_RECOVER; |
2262 | } | 2266 | } |
2263 | if (ret) | ||
2264 | return ret; | ||
2265 | return 0; | 2267 | return 0; |
2266 | } | 2268 | } |
2267 | 2269 | ||