Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1774835ybl; Sat, 11 Jan 2020 02:33:51 -0800 (PST) X-Google-Smtp-Source: APXvYqyxI4Nem0w2cGPkwTRciveeJw1qijsP9rOr7+r8W2XpxbDmQusTeESb4mh6W91mzeDnuNj5 X-Received: by 2002:a9d:53c4:: with SMTP id i4mr6697289oth.48.1578738831375; Sat, 11 Jan 2020 02:33:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578738831; cv=none; d=google.com; s=arc-20160816; b=cxSLUlWUrq8uEZatJBfWx1a4o8jHVppAZOcziT0mNExjUZt3/FwDd/WwsuBQPpEjgM k57mJQJyy756HXjCBI2L00jhUrlV9s+n2xofDRKv3Z0wFZcHpNJT5gmMO7ysYyFTQWh2 oBQ8qkmP3gF+XP95fXVkiV66/DvH/IxJk48J1esgtUTKyMg6dkbVACWLZOvzWDBZzJCN cnEAu34sJ1Saj9sgdyDNoXbv82RuPl9NxIrNwfALyvCVH2MVg9rHCCOdUAxCkv7A2ool vmbZ3joL9k8zf4eL1N4lGT6+lSE0NyB34T5gxabR1GCNR5WFQJOUS2CuO25EN/mSRdKG HeVA== 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=uK2Hab3NuraoqPk80gBZFOW07bj0BB3JQTKmF+1BQcQ=; b=mbAkVH70fTkTOH9Zl8AyXGuV1NCl4wMZApcqlLreteelm3KXPSDIJOp15ZMgFryREV EramoRHKKWaFHmYLcE93AYNc/zYcfafPHW3vqeJG3qg/yHj1gnk/egpDonK0zFv+dpVd 5bf5kgz3n/68yFQqV4kHDYVEHzNLJYJ9NtDLDi/in7XYzbvc4rL2z6siOd9pyrRD52Qc brBrqmfnuptf63K1jBLuyAwpvEH1hFM4jgpVJHO9l3n2yHqY8o2uLSNlY0ndNIZQGvi3 +wKboH+A5s6IHh366s7qrm0aPtcD7CSTJycjeOI04x9SBAzp/+xKF4/SL2O07fEMV4U1 A8cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="MkP//0ju"; 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 l19si2669863oii.54.2020.01.11.02.33.40; Sat, 11 Jan 2020 02:33:51 -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="MkP//0ju"; 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 S1731211AbgAKKcg (ORCPT + 99 others); Sat, 11 Jan 2020 05:32:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:45810 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728910AbgAKKce (ORCPT ); Sat, 11 Jan 2020 05:32:34 -0500 Received: from localhost (unknown [62.119.166.9]) (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 B363D20842; Sat, 11 Jan 2020 10:32:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578738753; bh=Ws2kN9BbkRqrnW6AyjB0NMQbX1idR9hGWOO/xpgpX9k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MkP//0ju4qJ1GGLPvhItmhcVRidlbUtaCZAnlJhmeq3iaGpFZXpUL+VVHj8bmfmpP B1eoadj8DvOU6M8XKe14gua+1Urb3jATmnoW5LAfALdkh2JkyR9v/rtxUjLbYjuMxO wSE54eXtW+Cmez0xp1SzzX5D3BSZwh+zGrIKxVv8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Julian Wiedmann , "David S. Miller" , Sasha Levin Subject: [PATCH 5.4 131/165] s390/qeth: handle error due to unsupported transport mode Date: Sat, 11 Jan 2020 10:50:50 +0100 Message-Id: <20200111094936.044321045@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200111094921.347491861@linuxfoundation.org> References: <20200111094921.347491861@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: Julian Wiedmann [ Upstream commit 2e3d7fa5d29b7ab649fdf8f9533ae0c0888a7fac ] Along with z/VM NICs, there's additional device types that only support a specific transport mode (eg. external-bridged IQD). Identify the corresponding error code, and raise a fitting error message so that the user knows to adjust their device configuration. On top of that also fix the subsequent error path, so that the rejected cmd doesn't need to wait for a timeout but gets cancelled straight away. Fixes: 4a71df50047f ("qeth: new qeth device driver") Signed-off-by: Julian Wiedmann Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/s390/net/qeth_core_main.c | 14 +++++++------- drivers/s390/net/qeth_core_mpc.h | 5 +++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 83794d7494d4..9df47421d69c 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -653,17 +653,17 @@ static int qeth_check_idx_response(struct qeth_card *card, unsigned char *buffer) { QETH_DBF_HEX(CTRL, 2, buffer, QETH_DBF_CTRL_LEN); - if ((buffer[2] & 0xc0) == 0xc0) { + if ((buffer[2] & QETH_IDX_TERMINATE_MASK) == QETH_IDX_TERMINATE) { QETH_DBF_MESSAGE(2, "received an IDX TERMINATE with cause code %#04x\n", buffer[4]); QETH_CARD_TEXT(card, 2, "ckidxres"); QETH_CARD_TEXT(card, 2, " idxterm"); - QETH_CARD_TEXT_(card, 2, " rc%d", -EIO); - if (buffer[4] == 0xf6) { + QETH_CARD_TEXT_(card, 2, "rc%x", buffer[4]); + if (buffer[4] == QETH_IDX_TERM_BAD_TRANSPORT || + buffer[4] == QETH_IDX_TERM_BAD_TRANSPORT_VM) { dev_err(&card->gdev->dev, - "The qeth device is not configured " - "for the OSI layer required by z/VM\n"); - return -EPERM; + "The device does not support the configured transport mode\n"); + return -EPROTONOSUPPORT; } return -EIO; } @@ -740,10 +740,10 @@ static void qeth_issue_next_read_cb(struct qeth_card *card, case 0: break; case -EIO: - qeth_clear_ipacmd_list(card); qeth_schedule_recovery(card); /* fall through */ default: + qeth_clear_ipacmd_list(card); goto out; } diff --git a/drivers/s390/net/qeth_core_mpc.h b/drivers/s390/net/qeth_core_mpc.h index 6420b58cf42b..b7c17b5c823b 100644 --- a/drivers/s390/net/qeth_core_mpc.h +++ b/drivers/s390/net/qeth_core_mpc.h @@ -912,6 +912,11 @@ extern unsigned char IDX_ACTIVATE_WRITE[]; #define QETH_IDX_ACT_ERR_AUTH 0x1E #define QETH_IDX_ACT_ERR_AUTH_USER 0x20 +#define QETH_IDX_TERMINATE 0xc0 +#define QETH_IDX_TERMINATE_MASK 0xc0 +#define QETH_IDX_TERM_BAD_TRANSPORT 0x41 +#define QETH_IDX_TERM_BAD_TRANSPORT_VM 0xf6 + #define PDU_ENCAPSULATION(buffer) \ (buffer + *(buffer + (*(buffer + 0x0b)) + \ *(buffer + *(buffer + 0x0b) + 0x11) + 0x07)) -- 2.20.1