Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp3653008ybf; Tue, 3 Mar 2020 09:50:58 -0800 (PST) X-Google-Smtp-Source: ADFU+vstB+SCwda81dxgrTuGa3oNsVKTjv7C/y1IJTWuBrSiGz9iHFi2OA7ZpscDNvPbwgQ13kgg X-Received: by 2002:a9d:6204:: with SMTP id g4mr4422286otj.94.1583257858572; Tue, 03 Mar 2020 09:50:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583257858; cv=none; d=google.com; s=arc-20160816; b=zGPZt+vSezfOKpVhTH846HLzqkoKiypQhXBpidSpT6NYcVVoH9l+AW51el3a3mDF0U DjXV37y3QAm903pTI6OoD3g97XrTtfuTt7r2UG0r8k0LCD+ZXvGCLPD6RY3RM+Cch4yg +3KsOzKx2X46kxTK/iS9Udv4rRErH0ntqkU/XuCdZx7NyNMw5kuaSmBrvI1Io55lxKel FBxbzmxJnELgRWNgMY0Zay4a/twRr5kx1/Lq7BAejryGYQOmwOY/4owANT1s3z697Q2v plc9mkkJVLjyekzn/h6kmGkSaFl9QtUcc4mqVZ0aRD9+wEmSLCbjwgqBb9iz1FtMNLbi Q3xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=xRaFybqRn7p95ai5Jgg2CJL0mpcd9sFK8rye0nt9LK4=; b=kaOkJ0wRs9x1v0x6eZi4Y47bd1vwiDPQceoYJDCZnyovNNp68pRvh8h/rviXBT/PRe UwlaLvRbeQmoIK7e1LOgR9qKsVLzeGPnMrwcbaoud9dABeEt8APwhnM27wR8/4UFTOjF FYtE0bSQwmMbnkJ8stc7BffMCoxsKP7dKN9wr6qTEey4IPPHaNQOjQVYNAwVO78HMMPg +l/jPvgduxWXrXI7LyScgw102Au/IWHv7ux/qxNzrdAFWM0y/dYQNA55uzlcq3bmK+lx z06H9l60QxarUwXutNCCBmNyCCQlJTKANMjf+utRhCjpqDdPRs3Q7uxQ10TwK5Jgsbp/ FoBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="uB7/Blhc"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c9si8195271oto.149.2020.03.03.09.50.46; Tue, 03 Mar 2020 09:50:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="uB7/Blhc"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731812AbgCCRtk (ORCPT + 99 others); Tue, 3 Mar 2020 12:49:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:56950 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731796AbgCCRth (ORCPT ); Tue, 3 Mar 2020 12:49:37 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 60D0820CC7; Tue, 3 Mar 2020 17:49:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583257775; bh=i3RE9DoqeuTrvtoJD17oadaBmZeIBy8aamchigfCcwI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uB7/BlhcT/lpYPyodnN4HwEtgZRks/+o2u3c3F6k/ubPSI36vcCimJqjU3E7GCAXq fF0PweUc0Oavtx9UIHXMmF8MZ7FnzBdI5BXI13YQDWu64Z95JIs3A6XzLk6mIZa23p /M/TxKYfQthoYaGF1MeKzJS6lB8SQLJCJw27Fhsk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexandra Winter , Julian Wiedmann , "David S. Miller" Subject: [PATCH 5.5 124/176] s390/qeth: vnicc Fix EOPNOTSUPP precedence Date: Tue, 3 Mar 2020 18:43:08 +0100 Message-Id: <20200303174319.138458807@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200303174304.593872177@linuxfoundation.org> References: <20200303174304.593872177@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexandra Winter commit 6f3846f0955308b6d1b219419da42b8de2c08845 upstream. When getting or setting VNICC parameters, the error code EOPNOTSUPP should have precedence over EBUSY. EBUSY is used because vnicc feature and bridgeport feature are mutually exclusive, which is a temporary condition. Whereas EOPNOTSUPP indicates that the HW does not support all or parts of the vnicc feature. This issue causes the vnicc sysfs params to show 'blocked by bridgeport' for HW that does not support VNICC at all. Fixes: caa1f0b10d18 ("s390/qeth: add VNICC enable/disable support") Signed-off-by: Alexandra Winter Signed-off-by: Julian Wiedmann Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/s390/net/qeth_l2_main.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -1815,15 +1815,14 @@ int qeth_l2_vnicc_set_state(struct qeth_ QETH_CARD_TEXT(card, 2, "vniccsch"); - /* do not change anything if BridgePort is enabled */ - if (qeth_bridgeport_is_in_use(card)) - return -EBUSY; - /* check if characteristic and enable/disable are supported */ if (!(card->options.vnicc.sup_chars & vnicc) || !(card->options.vnicc.set_char_sup & vnicc)) return -EOPNOTSUPP; + if (qeth_bridgeport_is_in_use(card)) + return -EBUSY; + /* set enable/disable command and store wanted characteristic */ if (state) { cmd = IPA_VNICC_ENABLE; @@ -1869,14 +1868,13 @@ int qeth_l2_vnicc_get_state(struct qeth_ QETH_CARD_TEXT(card, 2, "vniccgch"); - /* do not get anything if BridgePort is enabled */ - if (qeth_bridgeport_is_in_use(card)) - return -EBUSY; - /* check if characteristic is supported */ if (!(card->options.vnicc.sup_chars & vnicc)) return -EOPNOTSUPP; + if (qeth_bridgeport_is_in_use(card)) + return -EBUSY; + /* if card is ready, query current VNICC state */ if (qeth_card_hw_is_reachable(card)) rc = qeth_l2_vnicc_query_chars(card); @@ -1894,15 +1892,14 @@ int qeth_l2_vnicc_set_timeout(struct qet QETH_CARD_TEXT(card, 2, "vniccsto"); - /* do not change anything if BridgePort is enabled */ - if (qeth_bridgeport_is_in_use(card)) - return -EBUSY; - /* check if characteristic and set_timeout are supported */ if (!(card->options.vnicc.sup_chars & QETH_VNICC_LEARNING) || !(card->options.vnicc.getset_timeout_sup & QETH_VNICC_LEARNING)) return -EOPNOTSUPP; + if (qeth_bridgeport_is_in_use(card)) + return -EBUSY; + /* do we need to do anything? */ if (card->options.vnicc.learning_timeout == timeout) return rc; @@ -1931,14 +1928,14 @@ int qeth_l2_vnicc_get_timeout(struct qet QETH_CARD_TEXT(card, 2, "vniccgto"); - /* do not get anything if BridgePort is enabled */ - if (qeth_bridgeport_is_in_use(card)) - return -EBUSY; - /* check if characteristic and get_timeout are supported */ if (!(card->options.vnicc.sup_chars & QETH_VNICC_LEARNING) || !(card->options.vnicc.getset_timeout_sup & QETH_VNICC_LEARNING)) return -EOPNOTSUPP; + + if (qeth_bridgeport_is_in_use(card)) + return -EBUSY; + /* if card is ready, get timeout. Otherwise, just return stored value */ *timeout = card->options.vnicc.learning_timeout; if (qeth_card_hw_is_reachable(card))