From patchwork Tue Mar 10 22:55:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Gynther X-Patchwork-Id: 448743 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 164DF140082 for ; Wed, 11 Mar 2015 09:55:10 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=google.com header.i=@google.com header.b=EjvXdBUY; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751704AbbCJWzF (ORCPT ); Tue, 10 Mar 2015 18:55:05 -0400 Received: from mail-pa0-f74.google.com ([209.85.220.74]:33414 "EHLO mail-pa0-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750919AbbCJWzC (ORCPT ); Tue, 10 Mar 2015 18:55:02 -0400 Received: by pablj1 with SMTP id lj1so1601030pab.0 for ; Tue, 10 Mar 2015 15:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:message-id:date; bh=4IYYL4DdtzEMSfxgv5V/QKuON54wFuKy3oL94m2XzG8=; b=EjvXdBUYw3M2tejFr/KovMDzgSm28nh6RAfM6TQzH6kxQMsyG+S+Nb2bm3Sp9tkXMq 4R7aNZ/dKq0mExA4mjVtKYXUPLA4BNS3yxzFrG+ki4jFxoUltIcnsAVJcFuloVGiXiBb mOudjwTFzBzDziacByvAwS1rpGsxByYRGjqdAcTbWjxyJ1c3jtWrrRuTHxXCNtX7ZO82 yVdUrl9mM23J2T58udVZVfvQIbmQH1XwRQkDPanrVgbi/YNn6yEaYs6H5SjrtdVhes+U QQCSjo1fsNmJk0fsNxRqIVaLY8Ju8jBajQCl3031yTL1pF8pq24en+XCI8/TjGrdZyWK qRHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:message-id:date; bh=4IYYL4DdtzEMSfxgv5V/QKuON54wFuKy3oL94m2XzG8=; b=PDYtQZhklJBL3dLrozueQl0DPz3kv9fy0h7LR33usel8sdqmjL0SFcUc0A8/2M5gXD +F3o2zof+ilFBmJjd0zEPf2tOT9Omm7EzredYZdOM7PGZD6A87eFxV7ApRM+osCyXbI3 HnulLLA5AU+Csu05JfK9q2iaQQx89o3EXC+DH1fPjmF0LrLI3gG8b0JqQgnabEzTajwx h0rSgGa3xBhpM0n5Zp128b+wjCE3P62jbNKCXKkGJkK+VarzRh8E+tkvhkYuGCDpcdlZ gXTPVsHyCsmifEEvkwFtPLIn1MihGJfdss1cSLSnXbI2Oj3aYAyf9l5Iq74nGgYcMkE4 7MhQ== X-Gm-Message-State: ALoCoQnSyPSYMx0WMLsMENsUN1Is+6OVs1fojoFu34grQ72cdRUx9crTLZSbQigTmu61UVBeXTgC X-Received: by 10.70.94.102 with SMTP id db6mr20884276pdb.0.1426028101704; Tue, 10 Mar 2015 15:55:01 -0700 (PDT) Received: from corpmail-nozzle1-2.hot.corp.google.com ([100.108.1.103]) by gmr-mx.google.com with ESMTPS id 40si90283yho.6.2015.03.10.15.55.01 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Mar 2015 15:55:01 -0700 (PDT) Received: from puck.mtv.corp.google.com ([172.27.88.166]) by corpmail-nozzle1-2.hot.corp.google.com with ESMTP id UPOrxMQR.1; Tue, 10 Mar 2015 15:55:01 -0700 Received: by puck.mtv.corp.google.com (Postfix, from userid 68020) id 8FA34220365; Tue, 10 Mar 2015 15:55:00 -0700 (PDT) From: Petri Gynther To: netdev@vger.kernel.org Cc: davem@davemloft.net, f.fainelli@gmail.com, jaedon.shin@gmail.com Subject: [PATCH net-next v2] net: bcmgenet: collect Rx discarded packet count Message-Id: <20150310225500.8FA34220365@puck.mtv.corp.google.com> Date: Tue, 10 Mar 2015 15:55:00 -0700 (PDT) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Bits 31:16 of RDMA_PROD_INDEX contain Rx discarded packet count, which are the Rx packets that had to be dropped by MAC hardware since there was no room on the Rx queue. Add code to collect this information into the netdev stats. Signed-off-by: Petri Gynther --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 18 ++++++++++++++++++ drivers/net/ethernet/broadcom/genet/bcmgenet.h | 1 + 2 files changed, 19 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 275be56..d3be1aeb 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -1384,9 +1384,27 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv, int len, err; unsigned int rxpktprocessed = 0, rxpkttoprocess; unsigned int p_index; + unsigned int discards; unsigned int chksum_ok = 0; p_index = bcmgenet_rdma_ring_readl(priv, index, RDMA_PROD_INDEX); + + discards = (p_index >> DMA_P_INDEX_DISCARD_CNT_SHIFT) & + DMA_P_INDEX_DISCARD_CNT_MASK; + if (discards > ring->old_discards) { + discards = discards - ring->old_discards; + dev->stats.rx_missed_errors += discards; + dev->stats.rx_errors += discards; + ring->old_discards += discards; + + /* Clear HW register when we reach 75% of maximum 0xFFFF */ + if (ring->old_discards >= 0xC000) { + ring->old_discards = 0; + bcmgenet_rdma_ring_writel(priv, index, 0, + RDMA_PROD_INDEX); + } + } + p_index &= DMA_P_INDEX_MASK; if (likely(p_index >= ring->c_index)) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h index 17443db..2a81138 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -548,6 +548,7 @@ struct bcmgenet_rx_ring { unsigned int read_ptr; /* Rx ring read pointer */ unsigned int cb_ptr; /* Rx ring initial CB ptr */ unsigned int end_ptr; /* Rx ring end CB ptr */ + unsigned int old_discards; }; /* device context */