Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp529664ybl; Tue, 28 Jan 2020 07:23:14 -0800 (PST) X-Google-Smtp-Source: APXvYqxpv4fTBcWbCO9UWrPQsLrlU4KdzQVb5IgiNtOQJx/Vr30kWZZKzB3AEfowrkvOmUrax2tm X-Received: by 2002:a9d:8f1:: with SMTP id 104mr15871889otf.107.1580224994055; Tue, 28 Jan 2020 07:23:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580224994; cv=none; d=google.com; s=arc-20160816; b=TCdIm7gH8+5K718UmAmZfPdlOA1Qo5oBQ2HNNrma7aB9/JRewjzSvWDePKFPQcP1nB adIzz/F5gWt4tk8zu6jiyvZV7YjAX8DHmUQHNSuVDeaDecnJznBhFCgFcQYA+R9KTLMi xN5qUsEy311syz377YHcqHMYPxDRerji0IzcsJa+NTVpcaBaP1l9Nnw45dVXuSJCBRfK qN6s7VIMPcW3uOls9NIMOCyRKlYfEjnW4yGQU5RQTU9zl5Ggd/v9nGVT2hsz2WWm69b+ 95XPbQD24NSNXrMrqe31jujz6OzC0kY+70WoGisTzDmSjAtOSMSuSR8/anD5qo8KAt2U Fi0Q== 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=gg50oZm4Wc5gm8++ic3x0kk+P6krmhdubruUu0SVi1o=; b=LT5dtv+Xpo2JyeQ7NBvmxlbWkwoUjXCzkCNCOcI0XMeks6llmy/a2MJzYoCLfYj4mL FMrg5O5mFNhdP8HybM944hCZWpi2RThZEzB5urQx6Lhe6zBxspEs/Rn9VZ4mmsWjMy4F WlYitzTUbCfxYVKL4Qn41pscOMF9CX7SXvhDpxOlQ06SAVEWmBCz+3tkdhf9xI+jqQsm W661uF3+FqA8UY2SZ4Z89TQSOuCeymkz46qnZ2+BzLYVwzjuvvC6YJ4pfpHcE7cqJd54 ZJpiEOYK78q3ERNeYMk0mMBYwCxTQlEABM0Zqlo5J5AqfdOxT8PpMV21ZdFZSdAHWLIu Xd/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2MsLX1yG; 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 s5si2884038otd.141.2020.01.28.07.22.57; Tue, 28 Jan 2020 07:23:14 -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=2MsLX1yG; 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 S1732685AbgA1O2G (ORCPT + 99 others); Tue, 28 Jan 2020 09:28:06 -0500 Received: from mail.kernel.org ([198.145.29.99]:55890 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387446AbgA1O2B (ORCPT ); Tue, 28 Jan 2020 09:28:01 -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 B998D21739; Tue, 28 Jan 2020 14:27:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580221680; bh=N9JCsctYS6DLxLH6OeDZqSnCsjKp1WVIucQTWoyQmh4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2MsLX1yG7ViXqZOpbB1Fb7qw9Q4jZus5kZWjbba4znc7g1Op77n/Ij5XAzfuabuZn uaiL0DcbhI+9QCxlgBj+DxDPXow9ERPOjaqsWjwwPMXJZ2T8Qpd+fe0GWvuK50AdRn /tsXyAVn5qlMHIOb+8pBtPxDZpuGKGcSBjoQiIXM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stan Johnson , Finn Thain , "David S. Miller" Subject: [PATCH 4.19 47/92] net/sonic: Fix interface error stats collection Date: Tue, 28 Jan 2020 15:08:15 +0100 Message-Id: <20200128135815.129096353@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200128135809.344954797@linuxfoundation.org> References: <20200128135809.344954797@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: Finn Thain commit 427db97df1ee721c20bdc9a66db8a9e1da719855 upstream. The tx_aborted_errors statistic should count packets flagged with EXD, EXC, FU, or BCM bits because those bits denote an aborted transmission. That corresponds to the bitmask 0x0446, not 0x0642. Use macros for these constants to avoid mistakes. Better to leave out FIFO Underruns (FU) as there's a separate counter for that purpose. Don't lump all these errors in with the general tx_errors counter as that's used for tx timeout events. On the rx side, don't count RDE and RBAE interrupts as dropped packets. These interrupts don't indicate a lost packet, just a lack of resources. When a lack of resources results in a lost packet, this gets reported in the rx_missed_errors counter (along with RFO events). Don't double-count rx_frame_errors and rx_crc_errors. Don't use the general rx_errors counter for events that already have special counters. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Tested-by: Stan Johnson Signed-off-by: Finn Thain Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/natsemi/sonic.c | 21 +++++++-------------- drivers/net/ethernet/natsemi/sonic.h | 1 + 2 files changed, 8 insertions(+), 14 deletions(-) --- a/drivers/net/ethernet/natsemi/sonic.c +++ b/drivers/net/ethernet/natsemi/sonic.c @@ -329,18 +329,19 @@ static irqreturn_t sonic_interrupt(int i if ((td_status = sonic_tda_get(dev, entry, SONIC_TD_STATUS)) == 0) break; - if (td_status & 0x0001) { + if (td_status & SONIC_TCR_PTX) { lp->stats.tx_packets++; lp->stats.tx_bytes += sonic_tda_get(dev, entry, SONIC_TD_PKTSIZE); } else { - lp->stats.tx_errors++; - if (td_status & 0x0642) + if (td_status & (SONIC_TCR_EXD | + SONIC_TCR_EXC | SONIC_TCR_BCM)) lp->stats.tx_aborted_errors++; - if (td_status & 0x0180) + if (td_status & + (SONIC_TCR_NCRS | SONIC_TCR_CRLS)) lp->stats.tx_carrier_errors++; - if (td_status & 0x0020) + if (td_status & SONIC_TCR_OWC) lp->stats.tx_window_errors++; - if (td_status & 0x0004) + if (td_status & SONIC_TCR_FU) lp->stats.tx_fifo_errors++; } @@ -370,17 +371,14 @@ static irqreturn_t sonic_interrupt(int i if (status & SONIC_INT_RFO) { netif_dbg(lp, rx_err, dev, "%s: rx fifo overrun\n", __func__); - lp->stats.rx_fifo_errors++; } if (status & SONIC_INT_RDE) { netif_dbg(lp, rx_err, dev, "%s: rx descriptors exhausted\n", __func__); - lp->stats.rx_dropped++; } if (status & SONIC_INT_RBAE) { netif_dbg(lp, rx_err, dev, "%s: rx buffer area exceeded\n", __func__); - lp->stats.rx_dropped++; } /* counter overruns; all counters are 16bit wide */ @@ -472,11 +470,6 @@ static void sonic_rx(struct net_device * sonic_rra_put(dev, entry, SONIC_RR_BUFADR_H, bufadr_h); } else { /* This should only happen, if we enable accepting broken packets. */ - lp->stats.rx_errors++; - if (status & SONIC_RCR_FAER) - lp->stats.rx_frame_errors++; - if (status & SONIC_RCR_CRCR) - lp->stats.rx_crc_errors++; } if (status & SONIC_RCR_LPKT) { /* --- a/drivers/net/ethernet/natsemi/sonic.h +++ b/drivers/net/ethernet/natsemi/sonic.h @@ -175,6 +175,7 @@ #define SONIC_TCR_NCRS 0x0100 #define SONIC_TCR_CRLS 0x0080 #define SONIC_TCR_EXC 0x0040 +#define SONIC_TCR_OWC 0x0020 #define SONIC_TCR_PMB 0x0008 #define SONIC_TCR_FU 0x0004 #define SONIC_TCR_BCM 0x0002