Received: by 2002:a17:90a:9307:0:0:0:0 with SMTP id p7csp3948978pjo; Tue, 3 Mar 2020 09:57:17 -0800 (PST) X-Google-Smtp-Source: ADFU+vtM8qcWsxZHwxzdBfT3GMAEo68lzxLM0CF5hTv6z1l4vfolFhlA1r7QIL6kR5wI5zWWQcgx X-Received: by 2002:a9d:6042:: with SMTP id v2mr4254920otj.108.1583258237376; Tue, 03 Mar 2020 09:57:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583258237; cv=none; d=google.com; s=arc-20160816; b=Ud+Jm6RDapP4HYOQ1WZ5Nm/JxIQyXYkgtFgczpYRjW02ptF9YA/4038hm6fa4rzD09 fFScSto1YyIn/112e24gvma4Jmn4vgU2N6XSfMjmuBWbQy2xgMp7lYeX3dx7gu7CBA7m PHxpwm0+g24xHY8A1p8ndYKRh8Ehm7M31XJaY/3MEwrdK28D//2XZbRVCUP+Rzz45j8z TaabmteTvSNUlZola105E0bIQhYRfeiGblPak/+Voor+qzO1vpHSxEyrpZArChK2zx0T ldxryMuqpl2a04Tj0K6sK+L5fDykjd6DqTe1hxo13Er8Ng2ueKMGpHSVdso0Irkw7v6J mmuQ== 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=YLx8v5Y7mwx2Vs1JaLQp+xYunEwQkNUiDI9g63Ws9So=; b=xmaigiXY9PXU8/YiAQ19s3i2KZ8gyMIAHRnYSCD8kOXNhIObrRlvWQuOewaYxevFs5 xF3MutxKNoKV1TAl+TZLrDYdAuGSAnnVEXsP0iJlPvgsxgjApsZQdcbNKecIcZML7Inl 3lKcMJGxAfP+e21emgS5gpvz7zAOdS4dlgD6ivhTlK4qMTDK47bug8cjxflhtKDbW56F Ppx3Sv7GQgVHhnde5aaCO4TAoJe5I5U5yQuD9l4COmwF92zbvwsngEUJ5sTtkfywXkH0 jbGmcCQuUhzCEdV9qBBAOLsgzMEw7DeNBCe7slyTvIc5kITLws3NZizQ9Ne8INLpvH8+ uKTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=n+T8N6am; 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 m4si2830780otr.64.2020.03.03.09.57.05; Tue, 03 Mar 2020 09:57:17 -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=n+T8N6am; 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 S1732907AbgCCR43 (ORCPT + 99 others); Tue, 3 Mar 2020 12:56:29 -0500 Received: from mail.kernel.org ([198.145.29.99]:38638 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732899AbgCCR41 (ORCPT ); Tue, 3 Mar 2020 12:56:27 -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 49D3220656; Tue, 3 Mar 2020 17:56:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583258186; bh=PoOZnRBYlXjxgnHxd8dq7BJGnMnajNxxkT64FcfLzB4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n+T8N6amTP1O2HVM4EP1cgyxKoSRmZkSTlv6g0jZAS4MJLzIpo8IQo6er7NxocLzW KqDLtUTKiEl6sSz9/dZ80o3yrZZE5H4sxCNzqOuB2hHlq6svYlcXxGljdi1UBrH2O9 rNKPzTtMQCiGAsRt71cwoBHZaXi5dVWTFWl5ZpOs= 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.4 105/152] s390/qeth: vnicc Fix EOPNOTSUPP precedence Date: Tue, 3 Mar 2020 18:43:23 +0100 Message-Id: <20200303174314.554261089@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200303174302.523080016@linuxfoundation.org> References: <20200303174302.523080016@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 @@ -1846,15 +1846,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; @@ -1900,14 +1899,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); @@ -1925,15 +1923,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; @@ -1962,14 +1959,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))