Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp2470170imd; Fri, 2 Nov 2018 11:59:11 -0700 (PDT) X-Google-Smtp-Source: AJdET5c1a7eykm8YPTwZNV5wqHD0rA6gSwbHp53fFWQHPpyRjsVbu4RDwChorqMo/XWwvA8rToQH X-Received: by 2002:a63:4f20:: with SMTP id d32mr11907058pgb.47.1541185151655; Fri, 02 Nov 2018 11:59:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541185151; cv=none; d=google.com; s=arc-20160816; b=McyeJYdhg1Myk7MsozqKrY0kooT4gjj1xNvIdUDzgxVJxih0mvYe2h19CKJgdvbZNQ puiPDyxNj0Nq+fx+WmLZEGH96fwmYGK6k+TuxXMTxLUKu3KIhKOIdMqUVM8hSM8qWjAR 4ZVoaLr0rTPMzKr4s6TqHPdto3culgj2VPIL27GrzxHKG/HxRkl4D9n/3CuzELd0W6e+ PPHMVOctOEV81QW4tW7g+nv8P4+o5Lcq4fyqs6BDNvJGOxi9H6clul/MP4IdSFUcSpzZ mAp0t5fgOZAcdVxEOemMXnqJrLJWcifiLHsDI2g8bDI1jt7bxUvCYq3mTtsoKm2VBjKR csPw== 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=bggu8TwSlB/VuPgzyubkcKWAGcwgO8CVSlgWK3qAR/8=; b=L6VaN0Jgkyn/WA+VjHS/Jm/KKIQvAk8hiUtCX4qg84VaNW9nYonxAEKZZyiJrd7zGr R2frUX6aDE0IyW8xKAeUIbmv6+n7z7vVnxyLoF5wsd/rjYq6JwQdDzRPAaUKCQe+OPYs nACJ3xrohIINBggGnvEa9wCdfpfkmBnahUFaD8OtMo7It7ajtlvJNxhAsRRIKbXoqn4G Y0Rv0PoKho3N1upIEwrE8IOlAzeGHhNMqEKpqhUZMtPGXENExP4tGfQiYER4utAmjKOj eCGC5+/T4esepNjF+a6kX1FCzoYtG0iFSnnaLmY/S+IwTz/464TKvqJs5crjH850Pq3x dqeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yxXEtvBn; 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 w17-v6si26748908pgk.497.2018.11.02.11.58.56; Fri, 02 Nov 2018 11:59:11 -0700 (PDT) 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=yxXEtvBn; 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 S1731268AbeKCEDF (ORCPT + 99 others); Sat, 3 Nov 2018 00:03:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:58836 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726150AbeKCEDF (ORCPT ); Sat, 3 Nov 2018 00:03:05 -0400 Received: from localhost (5356596B.cm-6-7b.dynamic.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 C91192082D; Fri, 2 Nov 2018 18:54:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541184888; bh=5XCCTA/0Q1eX2Y8p7KKN8cf4E3MUgFX3KuuxXMw84nk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yxXEtvBndvmKiLylgS4GHsCu2IAn5IvhDyWDSVB0xdnQ8qf3Yy8gGg9Dk+NZQ94Cu boPQ5QLrW9amgzkM2dXxB90NNMbyd1dAVJDaStdRCljSqg2mEq9NO/GauEJFCBUi+J OyovrvctZWNa91h/Eju4B5SGuaQfV63VJjXAK3k0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fugang Duan , "David S. Miller" Subject: [PATCH 4.14 120/143] net: fec: dont dump RX FIFO register when not available Date: Fri, 2 Nov 2018 19:35:05 +0100 Message-Id: <20181102182907.469494306@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181102182857.064326086@linuxfoundation.org> References: <20181102182857.064326086@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Fugang Duan [ Upstream commit ec20a63aa8b8ec3223fb25cdb2a49f9f9dfda88c ] Commit db65f35f50e0 ("net: fec: add support of ethtool get_regs") introduce ethool "--register-dump" interface to dump all FEC registers. But not all silicon implementations of the Freescale FEC hardware module have the FRBR (FIFO Receive Bound Register) and FRSR (FIFO Receive Start Register) register, so we should not be trying to dump them on those that don't. To fix it we create a quirk flag, FEC_QUIRK_HAS_RFREG, and check it before dump those RX FIFO registers. Signed-off-by: Fugang Duan Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/freescale/fec.h | 4 ++++ drivers/net/ethernet/freescale/fec_main.c | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -451,6 +451,10 @@ struct bufdesc_ex { * initialisation. */ #define FEC_QUIRK_MIB_CLEAR (1 << 15) +/* Only i.MX25/i.MX27/i.MX28 controller supports FRBR,FRSR registers, + * those FIFO receive registers are resolved in other platforms. + */ +#define FEC_QUIRK_HAS_FRREG (1 << 16) struct bufdesc_prop { int qid; --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -89,14 +89,16 @@ static struct platform_device_id fec_dev .driver_data = 0, }, { .name = "imx25-fec", - .driver_data = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR, + .driver_data = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR | + FEC_QUIRK_HAS_FRREG, }, { .name = "imx27-fec", - .driver_data = FEC_QUIRK_MIB_CLEAR, + .driver_data = FEC_QUIRK_MIB_CLEAR | FEC_QUIRK_HAS_FRREG, }, { .name = "imx28-fec", .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME | - FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC, + FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC | + FEC_QUIRK_HAS_FRREG, }, { .name = "imx6q-fec", .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | @@ -2166,7 +2168,13 @@ static void fec_enet_get_regs(struct net memset(buf, 0, regs->len); for (i = 0; i < ARRAY_SIZE(fec_enet_register_offset); i++) { - off = fec_enet_register_offset[i] / 4; + off = fec_enet_register_offset[i]; + + if ((off == FEC_R_BOUND || off == FEC_R_FSTART) && + !(fep->quirks & FEC_QUIRK_HAS_FRREG)) + continue; + + off >>= 2; buf[off] = readl(&theregs[off]); } }