summaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_l3_main.c
diff options
context:
space:
mode:
authorJulian Wiedmann2018-06-29 19:45:54 +0200
committerDavid S. Miller2018-06-30 14:19:48 +0200
commitd025da9eb1e48d3e5f2a2ff13ac5ac536ba4be43 (patch)
treecf29e525b6b7740ca89aabed8abbdbe2f052f3a0 /drivers/s390/net/qeth_l3_main.c
parents390/qeth: don't clobber buffer on async TX completion (diff)
downloadkernel-qcow2-linux-d025da9eb1e48d3e5f2a2ff13ac5ac536ba4be43.tar.gz
kernel-qcow2-linux-d025da9eb1e48d3e5f2a2ff13ac5ac536ba4be43.tar.xz
kernel-qcow2-linux-d025da9eb1e48d3e5f2a2ff13ac5ac536ba4be43.zip
s390/qeth: consistently re-enable device features
commit e830baa9c3f0 ("qeth: restore device features after recovery") and commit ce3443564145 ("s390/qeth: rely on kernel for feature recovery") made sure that the HW functions for device features get re-programmed after recovery. But we missed that the same handling is also required when a card is first set offline (destroying all HW context), and then online again. Fix this by moving the re-enable action out of the recovery-only path. Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_l3_main.c')
-rw-r--r--drivers/s390/net/qeth_l3_main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index e7fa479adf47..5905dc63e256 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -2662,6 +2662,8 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
netif_carrier_on(card->dev);
else
netif_carrier_off(card->dev);
+
+ qeth_enable_hw_features(card->dev);
if (recover_flag == CARD_STATE_RECOVER) {
rtnl_lock();
if (recovery_mode)
@@ -2669,7 +2671,6 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
else
dev_open(card->dev);
qeth_l3_set_rx_mode(card->dev);
- qeth_recover_features(card->dev);
rtnl_unlock();
}
qeth_trace_features(card);