diff options
author | Julian Wiedmann <jwi@linux.ibm.com> | 2018-09-26 18:29:15 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-09-26 09:56:07 -0700 |
commit | d782d80f36f33426e99eacae8cd7f2ff7918aaf4 (patch) | |
tree | fda176cd4a42a6483d1b624ded93f96e41356560 /drivers/s390 | |
parent | d19b93f40e2350e1ce6032df248db88177996720 (diff) | |
download | linux-stable-d782d80f36f33426e99eacae8cd7f2ff7918aaf4.tar.gz linux-stable-d782d80f36f33426e99eacae8cd7f2ff7918aaf4.tar.bz2 linux-stable-d782d80f36f33426e99eacae8cd7f2ff7918aaf4.zip |
s390/qeth: clean up drop conditions for received cmds
If qeth_check_ipa_data() consumed an event, there's no point in
processing it further. So drop it early, and make the surrounding code
a tiny bit more readable.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 954dc6c688e8..9cbdc6760aba 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -826,16 +826,17 @@ static void qeth_send_control_data_cb(struct qeth_card *card, if (IS_IPA(iob->data)) { cmd = (struct qeth_ipa_cmd *) PDU_ENCAPSULATION(iob->data); cmd = qeth_check_ipa_data(card, cmd); - } - if ((cmd == NULL) && (card->state != CARD_STATE_DOWN)) - goto out; - /*in case of OSN : check if cmd is set */ - if (card->info.type == QETH_CARD_TYPE_OSN && - cmd && - cmd->hdr.command != IPA_CMD_STARTLAN && - card->osn_info.assist_cb != NULL) { - card->osn_info.assist_cb(card->dev, cmd); - goto out; + if (!cmd) + goto out; + if (IS_OSN(card) && card->osn_info.assist_cb && + cmd->hdr.command != IPA_CMD_STARTLAN) { + card->osn_info.assist_cb(card->dev, cmd); + goto out; + } + } else { + /* non-IPA commands should only flow during initialization */ + if (card->state != CARD_STATE_DOWN) + goto out; } spin_lock_irqsave(&card->lock, flags); |