diff options
author | Ursula Braun <ursula.braun@de.ibm.com> | 2010-03-08 15:36:56 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-10 10:32:26 -0500 |
commit | 869da90b9ae39f0d5b9b5aa3a84502684a6aa1f4 (patch) | |
tree | 50519820fcb4c2cd7ab4a0d76074a46539680229 /drivers/s390/net/qeth_l2_main.c | |
parent | a959189a978e0104e8aa7f1522f5eff42d891456 (diff) |
qeth: no recovery after layer mismatch (z/VM NICs)
Depending on their definition in z/VM, virtual devices for z/VM
VSWITCH or GuestLAN must be configured either in layer2 or in
layer3 mode. If qeth detects a layer mismatch, device activation
fails. Trying to recover from this error cannot help; thus
scheduling a recovery should be avoided.
In addition, since recovery is forbidden during online setting of
a qeth device, existence of its network device is guaranteed for all
dev_close() calls in qeth. The corresponding checks can be removed.
Signed-off-by: Ursula Braun <ursula.braun@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/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 51fde6f2e0b8..6f1e3036bafd 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -1071,11 +1071,9 @@ static int qeth_l2_recover(void *ptr) | |||
1071 | dev_info(&card->gdev->dev, | 1071 | dev_info(&card->gdev->dev, |
1072 | "Device successfully recovered!\n"); | 1072 | "Device successfully recovered!\n"); |
1073 | else { | 1073 | else { |
1074 | if (card->dev) { | 1074 | rtnl_lock(); |
1075 | rtnl_lock(); | 1075 | dev_close(card->dev); |
1076 | dev_close(card->dev); | 1076 | rtnl_unlock(); |
1077 | rtnl_unlock(); | ||
1078 | } | ||
1079 | dev_warn(&card->gdev->dev, "The qeth device driver " | 1077 | dev_warn(&card->gdev->dev, "The qeth device driver " |
1080 | "failed to recover an error on the device\n"); | 1078 | "failed to recover an error on the device\n"); |
1081 | } | 1079 | } |
@@ -1129,11 +1127,9 @@ static int qeth_l2_pm_resume(struct ccwgroup_device *gdev) | |||
1129 | if (card->state == CARD_STATE_RECOVER) { | 1127 | if (card->state == CARD_STATE_RECOVER) { |
1130 | rc = __qeth_l2_set_online(card->gdev, 1); | 1128 | rc = __qeth_l2_set_online(card->gdev, 1); |
1131 | if (rc) { | 1129 | if (rc) { |
1132 | if (card->dev) { | 1130 | rtnl_lock(); |
1133 | rtnl_lock(); | 1131 | dev_close(card->dev); |
1134 | dev_close(card->dev); | 1132 | rtnl_unlock(); |
1135 | rtnl_unlock(); | ||
1136 | } | ||
1137 | } | 1133 | } |
1138 | } else | 1134 | } else |
1139 | rc = __qeth_l2_set_online(card->gdev, 0); | 1135 | rc = __qeth_l2_set_online(card->gdev, 0); |