From patchwork Wed Feb 6 20:45:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1037762 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KSyVtRS8"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vtmW58lNz9sN9 for ; Thu, 7 Feb 2019 07:47:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726703AbfBFUrW (ORCPT ); Wed, 6 Feb 2019 15:47:22 -0500 Received: from mail-pg1-f195.google.com ([209.85.215.195]:36460 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbfBFUrW (ORCPT ); Wed, 6 Feb 2019 15:47:22 -0500 Received: by mail-pg1-f195.google.com with SMTP id n2so3446618pgm.3 for ; Wed, 06 Feb 2019 12:47:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EvDEzHeDOc1VxxxOTbHXKTaqrCkq7Wd5Hmah/P58a/0=; b=KSyVtRS8ItWWU663Z8mCjMcyX7Jn7SzZJILz6/cLCcnf9g4elnF+EuGaj+rIreZ6Ea gMAkCHhMxx0quyj+wY/c5aJmKkCgWsIfv1Qa1aTsumrYsC48BTKQ80QKnar5NTbFOuWq UrxbVus++yNenAoA0u1rHrKow3s4V8vwSdOte1mZnL+kJoUoDrPt3ECYAmx7WxwRDXQx 6IeIVNZLVfxoQgb6lB/p1pNHC+zm2Vdys5P1cPoIOj+SLWWw+IRwtvQIo/gCM/f0WXjw iu7EB14CN7SYmvmY85dUABPoAOOdfdUefL8HV/L+NUdxJj8wBaTN71am4CIWHSvVvzRr Dk0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EvDEzHeDOc1VxxxOTbHXKTaqrCkq7Wd5Hmah/P58a/0=; b=POnABd2XOGv0N2UQyxowbFTCD56Ld+OTRigZ9d2XYMJglf1PSFAssPMf1THRw6+GW7 BDqqBIpKaNjJh8mC5E10u+iXSOb6u2jeCvOhy31hP1qY0ojOKcswXwMUK+LPKG9oHrl+ rZ6UYdW+LBTi0DdZGzN3NWh5HGhZOuygD//TEYmWhRmNA7bDz2F9ka1o9fiFiduLPfem xerGMDP2cvBFMXOPvtfdGLyDogQL3vcNm/HlyTJ6CCeeWYlI42jy6KycUscg42VHWyLR MG83HoSUc4TRQNrBbewcmbOfk+uXbuMF9Pt243YRelqrEpbl+mQ/I+kwHbeAdRwTGfHi GhRg== X-Gm-Message-State: AHQUAubtVKq09r5+4aUL7p01MYFZ1Mp3pr/V6FKSkX4f4itunC0wm2ym B9c8qcaRw9U90hflXEoCvOb8vf+h X-Google-Smtp-Source: AHgI3IZIR68iA2a1i+nxihRL4yHRce9a1dGmvdR7m6g3rxPwyEO0DhI0I5g88Oc60k6nOLj5syKmyw== X-Received: by 2002:a63:1a5f:: with SMTP id a31mr7286564pgm.335.1549486041121; Wed, 06 Feb 2019 12:47:21 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d21sm10597888pfo.162.2019.02.06.12.47.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 12:47:20 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, cphealy@gmail.com, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net-next 1/4] net: dsa: bcm_sf2: Remove stats mutex Date: Wed, 6 Feb 2019 12:45:57 -0800 Message-Id: <20190206204600.24109-2-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206204600.24109-1-f.fainelli@gmail.com> References: <20190206204600.24109-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We no longer need a dedicated statistics mutex since we leverage b53_common for statistics now. Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2.c | 1 - drivers/net/dsa/bcm_sf2.h | 3 --- 2 files changed, 4 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 361fbde76654..a97b18595be9 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -1062,7 +1062,6 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, priv); spin_lock_init(&priv->indir_lock); - mutex_init(&priv->stats_mutex); mutex_init(&priv->cfp.lock); INIT_LIST_HEAD(&priv->cfp.rules_list); diff --git a/drivers/net/dsa/bcm_sf2.h b/drivers/net/dsa/bcm_sf2.h index faaef320ec48..83e1d8001447 100644 --- a/drivers/net/dsa/bcm_sf2.h +++ b/drivers/net/dsa/bcm_sf2.h @@ -87,9 +87,6 @@ struct bcm_sf2_priv { /* Backing b53_device */ struct b53_device *dev; - /* Mutex protecting access to the MIB counters */ - struct mutex stats_mutex; - struct bcm_sf2_hw_params hw_params; struct bcm_sf2_port_status port_sts[DSA_MAX_PORTS]; From patchwork Wed Feb 6 20:45:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1037763 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NIHOClgO"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vtmb1GnFz9sN9 for ; Thu, 7 Feb 2019 07:47:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726764AbfBFUr0 (ORCPT ); Wed, 6 Feb 2019 15:47:26 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:40523 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726707AbfBFUrZ (ORCPT ); Wed, 6 Feb 2019 15:47:25 -0500 Received: by mail-pf1-f194.google.com with SMTP id i12so3650041pfo.7 for ; Wed, 06 Feb 2019 12:47:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gxFqc5lmzXv3dOuePiFOFvtSDz2476utaQQu255/pKw=; b=NIHOClgOMN10PnMK/WK+K6D2N4bdBsFJyEfMJxeFKynxCCM5hPw+E5BZ/b/kT1MuBy 232lfHDxmcpFPK/peE/B1Q4lLFnJXTBm7nPxzwtWNfDTAz2btwRHOMO79pDu8/+0tYB6 EzCdJm1zMl8gAvymBTEYUr+8l/U5/vVOnkBWFe3HGMLz+Ya7LxIP+ozsVdk/YXTm/qn/ MZ5/HLjxh8BM1r/aEbOhXC/4gc0o0J4pox6o8RTb1BSlc+2o8uYpPPbHo9G2oau5hqIc UFQ/KWYhPaKn80UJpSsC1+sMDoWIly3sePrpFAfE3XuaWu/nEe6prMdvcF7nS7Mq2nlw hhMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=gxFqc5lmzXv3dOuePiFOFvtSDz2476utaQQu255/pKw=; b=iNwqnTCS5eZqBM2wG2wOAj8coYF7xPNlM+zdWqCM9FAV/dW7UCCX90gPUYlwVojJlN +/BTWK2GEYrurQxscBO+iiZn3vUzEzn/hDCvnkocr7hwS4fJvvdwtLPe3UE5ysk6WOzN MhBL9I2zcafn7jkHILS1jC0YSqAxnQypMKjmfXiOymaqakf2inFK3OYbEI2MOhMpsyy7 zPgXlf7xh2dv4AiAioA/99BpjlmeMMsScNMO7xWsmF4eHn0DT2qMxmt6+m3Hwg8am/Ay 5PZz1hn2T+eT2BcZYG/JCvhUusAQBvc1h968NMP+tkyw6ORo7Cw93w1JxTg8HzAiOKpi 9Dhg== X-Gm-Message-State: AHQUAuYOdJH5GOdbNqCivXnuJrEmnYfAsiV0xWPHyNvfafe/BFVlxRPH ps93TBDWQRpwOtL4k37rhtv1ENRM X-Google-Smtp-Source: AHgI3Ia0Pdqy4cPKTCAe0G8qNRtvtU15i+UIQkm2JO98O+yY5MvX/alzP8cXghfdkKWV4mk+xutZDw== X-Received: by 2002:a62:59c9:: with SMTP id k70mr12336362pfj.243.1549486044305; Wed, 06 Feb 2019 12:47:24 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d21sm10597888pfo.162.2019.02.06.12.47.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 12:47:23 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, cphealy@gmail.com, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net-next 2/4] net: dsa: bcm_sf2: Prepare for adding CFP statistics Date: Wed, 6 Feb 2019 12:45:58 -0800 Message-Id: <20190206204600.24109-3-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206204600.24109-1-f.fainelli@gmail.com> References: <20190206204600.24109-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In preparation for adding CFP statistics, we will need to overlay the standard B53 statistics, so create specific bcm_sf2_sw_* functions to call into their b53_common.c counterpart. Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index a97b18595be9..ce5f4260ea1a 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -894,12 +894,30 @@ static const struct b53_io_ops bcm_sf2_io_ops = { .write64 = bcm_sf2_core_write64, }; +static void bcm_sf2_sw_get_strings(struct dsa_switch *ds, int port, + u32 stringset, uint8_t *data) +{ + b53_get_strings(ds, port, stringset, data); +} + +static void bcm_sf2_sw_get_ethtool_stats(struct dsa_switch *ds, int port, + uint64_t *data) +{ + b53_get_ethtool_stats(ds, port, data); +} + +static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds, int port, + int sset) +{ + return b53_get_sset_count(ds, port, sset); +} + static const struct dsa_switch_ops bcm_sf2_ops = { .get_tag_protocol = b53_get_tag_protocol, .setup = bcm_sf2_sw_setup, - .get_strings = b53_get_strings, - .get_ethtool_stats = b53_get_ethtool_stats, - .get_sset_count = b53_get_sset_count, + .get_strings = bcm_sf2_sw_get_strings, + .get_ethtool_stats = bcm_sf2_sw_get_ethtool_stats, + .get_sset_count = bcm_sf2_sw_get_sset_count, .get_ethtool_phy_stats = b53_get_ethtool_phy_stats, .get_phy_flags = bcm_sf2_sw_get_phy_flags, .phylink_validate = bcm_sf2_sw_validate, From patchwork Wed Feb 6 20:45:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1037764 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jkX8lc4o"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vtmd6gv4z9sN9 for ; Thu, 7 Feb 2019 07:47:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726782AbfBFUr2 (ORCPT ); Wed, 6 Feb 2019 15:47:28 -0500 Received: from mail-pg1-f195.google.com ([209.85.215.195]:38551 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726707AbfBFUr2 (ORCPT ); Wed, 6 Feb 2019 15:47:28 -0500 Received: by mail-pg1-f195.google.com with SMTP id g189so3441193pgc.5 for ; Wed, 06 Feb 2019 12:47:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nq7VXd1eoTpzOC2OzQTGv3WAvHRlnaYy5zpEbGDNzdc=; b=jkX8lc4o9K+KIcKh0+hOWeN+g5zujz1smormKz5nbL3rfVqzkMytIfUF3j4BDjgcaW CNZjy1g2pEzGJwxhiZhWcZFoqkVXo8wSfrHwXnNcWWhUqcAgZXb179iFivpX61afm9Xv eE2/hbLhGzbX/Vw82mezZiG/2edRI3mSayhPM5no3Z7cUAY2RPYFJsHkVaeib7+lAjSW ekUY3jDwrXx/0LxqNTR2b74MGUcj+CVZryjt5vmknUbPeIP5ZYYsK6PwV6A60Nl7IX0s fBNrIvetsLDbYKIHcFfwoU5MaNIp/SIr5aFRmaYwiaXnTATuJCVLFXZEiKBtMS2//Um2 QozA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nq7VXd1eoTpzOC2OzQTGv3WAvHRlnaYy5zpEbGDNzdc=; b=ifeZu0BF0cO/rAsD4RHhhpPx3slsOKwKBz4DAOhanJrhYxt82WW0QDe9DBimbz0HnR 9th8MTU7RH4GjNQgrlH/0B5PIrbjViqDLV4g+6ASnP0r93BGRm1b2Su/vYf7GuXlcNy8 18bgUO6Ztqe9jyTFCTwmkxaeoIjEEK4yrPbtelfM7cComQ4O33iIi6Lev+6QJOOSpVmg G/iDPo9M3Yz+DKcQKh+AEIFKTnhH9BXRhyHYr5HMni0O64cFDVeU3j9nApg5HtaccpCv Ga52uQPCLlsUqG+dJiLTNklYgQ5DsNxN6gvgoMl6ELt3FSCnwfp6Ek7hUSCJmZUhHTeQ +37Q== X-Gm-Message-State: AHQUAuYvQMC4j115jUuNM++WXRUl3S8uQb+6NUUna4Q1WJVymP4F+foT aX82a6YIpI5KqhnU42ZehOEyCgmT X-Google-Smtp-Source: AHgI3Ibve072WsIWovz4nYwGmjVdNx4ru+Si6BxeJVckmhT4Yey+84DwlOLsTTxmVmiaOp6LzUE2Wg== X-Received: by 2002:a62:29c3:: with SMTP id p186mr12569482pfp.117.1549486047331; Wed, 06 Feb 2019 12:47:27 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d21sm10597888pfo.162.2019.02.06.12.47.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 12:47:26 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, cphealy@gmail.com, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net-next 3/4] net: dsa: bcm_sf2: Add support for CFP statistics Date: Wed, 6 Feb 2019 12:45:59 -0800 Message-Id: <20190206204600.24109-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206204600.24109-1-f.fainelli@gmail.com> References: <20190206204600.24109-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Return CFP policer statistics (Green, Yellow or Red) as part of the standard ethtool statistics. This helps debug when CFP rules may not be hit (0 counter). Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2.c | 16 ++++++- drivers/net/dsa/bcm_sf2.h | 5 ++ drivers/net/dsa/bcm_sf2_cfp.c | 88 ++++++++++++++++++++++++++++++++++ drivers/net/dsa/bcm_sf2_regs.h | 4 ++ 4 files changed, 112 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index ce5f4260ea1a..5193da67dcdc 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -897,19 +897,33 @@ static const struct b53_io_ops bcm_sf2_io_ops = { static void bcm_sf2_sw_get_strings(struct dsa_switch *ds, int port, u32 stringset, uint8_t *data) { + int cnt = b53_get_sset_count(ds, port, stringset); + b53_get_strings(ds, port, stringset, data); + bcm_sf2_cfp_get_strings(ds, port, stringset, + data + cnt * ETH_GSTRING_LEN); } static void bcm_sf2_sw_get_ethtool_stats(struct dsa_switch *ds, int port, uint64_t *data) { + int cnt = b53_get_sset_count(ds, port, ETH_SS_STATS); + b53_get_ethtool_stats(ds, port, data); + bcm_sf2_cfp_get_ethtool_stats(ds, port, data + cnt); } static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds, int port, int sset) { - return b53_get_sset_count(ds, port, sset); + int cnt = b53_get_sset_count(ds, port, sset); + + if (cnt < 0) + return cnt; + + cnt += bcm_sf2_cfp_get_sset_count(ds, port, sset); + + return cnt; } static const struct dsa_switch_ops bcm_sf2_ops = { diff --git a/drivers/net/dsa/bcm_sf2.h b/drivers/net/dsa/bcm_sf2.h index 83e1d8001447..eb3655bea467 100644 --- a/drivers/net/dsa/bcm_sf2.h +++ b/drivers/net/dsa/bcm_sf2.h @@ -213,5 +213,10 @@ int bcm_sf2_set_rxnfc(struct dsa_switch *ds, int port, int bcm_sf2_cfp_rst(struct bcm_sf2_priv *priv); void bcm_sf2_cfp_exit(struct dsa_switch *ds); int bcm_sf2_cfp_resume(struct dsa_switch *ds); +void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port, + u32 stringset, uint8_t *data); +void bcm_sf2_cfp_get_ethtool_stats(struct dsa_switch *ds, int port, + uint64_t *data); +int bcm_sf2_cfp_get_sset_count(struct dsa_switch *ds, int port, int sset); #endif /* __BCM_SF2_H */ diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c index 6d8059dc77b7..8747d18297fa 100644 --- a/drivers/net/dsa/bcm_sf2_cfp.c +++ b/drivers/net/dsa/bcm_sf2_cfp.c @@ -1201,3 +1201,91 @@ int bcm_sf2_cfp_resume(struct dsa_switch *ds) return ret; } + +static const struct bcm_sf2_cfp_stat { + unsigned int offset; + unsigned int ram_loc; + const char *name; +} bcm_sf2_cfp_stats[] = { + { + .offset = CORE_STAT_GREEN_CNTR, + .ram_loc = GREEN_STAT_RAM, + .name = "Green" + }, + { + .offset = CORE_STAT_YELLOW_CNTR, + .ram_loc = YELLOW_STAT_RAM, + .name = "Yellow" + }, + { + .offset = CORE_STAT_RED_CNTR, + .ram_loc = RED_STAT_RAM, + .name = "Red" + }, +}; + +void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port, + u32 stringset, uint8_t *data) +{ + struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); + unsigned int s = ARRAY_SIZE(bcm_sf2_cfp_stats); + char buf[ETH_GSTRING_LEN]; + unsigned int i, j, iter; + + if (stringset != ETH_SS_STATS) + return; + + for (i = 1; i < priv->num_cfp_rules; i++) { + for (j = 0; j < s; j++) { + snprintf(buf, sizeof(buf), + "CFP%03d_%sCntr", + i, bcm_sf2_cfp_stats[j].name); + iter = (i - 1) * s + j; + strlcpy(data + iter * ETH_GSTRING_LEN, + buf, ETH_GSTRING_LEN); + } + } +} + +void bcm_sf2_cfp_get_ethtool_stats(struct dsa_switch *ds, int port, + uint64_t *data) +{ + struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); + unsigned int s = ARRAY_SIZE(bcm_sf2_cfp_stats); + const struct bcm_sf2_cfp_stat *stat; + unsigned int i, j, iter; + struct cfp_rule *rule; + int ret; + + mutex_lock(&priv->cfp.lock); + for (i = 1; i < priv->num_cfp_rules; i++) { + rule = bcm_sf2_cfp_rule_find(priv, port, i); + if (!rule) + continue; + + for (j = 0; j < s; j++) { + stat = &bcm_sf2_cfp_stats[j]; + + bcm_sf2_cfp_rule_addr_set(priv, i); + ret = bcm_sf2_cfp_op(priv, stat->ram_loc | OP_SEL_READ); + if (ret) + continue; + + iter = (i - 1) * s + j; + data[iter] = core_readl(priv, stat->offset); + } + + } + mutex_unlock(&priv->cfp.lock); +} + +int bcm_sf2_cfp_get_sset_count(struct dsa_switch *ds, int port, int sset) +{ + struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); + + if (sset != ETH_SS_STATS) + return 0; + + /* 3 counters per CFP rules */ + return (priv->num_cfp_rules - 1) * ARRAY_SIZE(bcm_sf2_cfp_stats); +} diff --git a/drivers/net/dsa/bcm_sf2_regs.h b/drivers/net/dsa/bcm_sf2_regs.h index 0a1e530d52b7..67f056206f37 100644 --- a/drivers/net/dsa/bcm_sf2_regs.h +++ b/drivers/net/dsa/bcm_sf2_regs.h @@ -400,6 +400,10 @@ enum bcm_sf2_reg_offs { #define CORE_RATE_METER6 0x281e0 #define CIR_REF_CNT_MASK 0x7ffff +#define CORE_STAT_GREEN_CNTR 0x28200 +#define CORE_STAT_YELLOW_CNTR 0x28210 +#define CORE_STAT_RED_CNTR 0x28220 + #define CORE_CFP_CTL_REG 0x28400 #define CFP_EN_MAP_MASK 0x1ff From patchwork Wed Feb 6 20:46:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1037765 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="E8Na6xxp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vtmj0G0Vz9sN9 for ; Thu, 7 Feb 2019 07:47:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726797AbfBFUrc (ORCPT ); Wed, 6 Feb 2019 15:47:32 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:43298 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbfBFUrb (ORCPT ); Wed, 6 Feb 2019 15:47:31 -0500 Received: by mail-pg1-f196.google.com with SMTP id v28so3429815pgk.10 for ; Wed, 06 Feb 2019 12:47:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=coKeeRfOau6Z6voAa8tmXKLd+q9uQQ2UtnGr7Q2tDSc=; b=E8Na6xxpF4xxOhz3lj50K4Ft76mKc3gPEjbZiyxR41EY8dvh7Rm6ZUQf0wR2RTXNnQ pMPsnp3smbk4zDQ4FiVuWRCSIrY3x/I7bDGoRpDgFaJ5q+xF0bgmMIp1R5YXpfHiCDjO PGvSBU2xIYqNUzir05gVO0plNgt6CWqPB7u6EuTUy1DWsagAViJsnk3MUqQl1st1INDl 9wfHpMMnTk+lsiVQprKRPT3dBwuXeYQ3QGnFMm0fgXUSDRtCwWlvuoNgIoHFgEUxGu8h WjGIibz7PJYbVYUFTLxOWkjZuX8rU31iMp48K/dLhpho0867dqFOIa89kzvJCyVf4JHP BCtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=coKeeRfOau6Z6voAa8tmXKLd+q9uQQ2UtnGr7Q2tDSc=; b=dJyZbUeAMEVn8tl9bLvLNgTuVum2iSFCqDO0syGBkgjixZ6qoGKh8d4rnYKbZ+djot OW6Ny8I9fhxOZwpEn8P8zdGn66SYtJ/Ya5VuvLlM/PBZdrqNc8baRKCSx5ADVfALo3b9 vqv6OQU5b9HVitbs6AGyh0gbYI031iTjIHzh2lEfdHGPi54+FX3X4zCDpk1P7CfzR8wF tQcwZFzYN5gXHKLEYUKCgUKzBtnx6md3mkNv3zbW0tmWn6xaVehwlGhuBA91c9R8Egll sZSUrrxXxG4oEsnsBFBPeOeoZnXeuXvs9jSY/8UgoOgaLfMNQRHPJry6WvDvxUMZC3BN RnEQ== X-Gm-Message-State: AHQUAubPRjQVNkzR7aXl63usI3l9VROdMTD0edDKpf9Zj6v6rld/Byl3 DqDBrNjQRS6q74JlJox66p28IBSU X-Google-Smtp-Source: AHgI3IbBKNibgIt0/p5v9k2FdvVdE3xkz2IWHKEPEUO9w+7BfGQ8/ATUCDxu20hDxsYIkAEyD7MksA== X-Received: by 2002:a62:c42:: with SMTP id u63mr12188164pfi.73.1549486050373; Wed, 06 Feb 2019 12:47:30 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d21sm10597888pfo.162.2019.02.06.12.47.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 12:47:29 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, cphealy@gmail.com, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net-next 4/4] net: dsa: bcm_sf2: Allow looping back CFP rules Date: Wed, 6 Feb 2019 12:46:00 -0800 Message-Id: <20190206204600.24109-5-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206204600.24109-1-f.fainelli@gmail.com> References: <20190206204600.24109-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When the source and destination port of a CFP rule match, we must set the loopback bit enable to allow that, otherwise the frame is discarded. Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2_cfp.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c index 8747d18297fa..0b9ca4bdf47e 100644 --- a/drivers/net/dsa/bcm_sf2_cfp.c +++ b/drivers/net/dsa/bcm_sf2_cfp.c @@ -213,6 +213,7 @@ static inline unsigned int bcm_sf2_cfp_rule_size(struct bcm_sf2_priv *priv) static int bcm_sf2_cfp_act_pol_set(struct bcm_sf2_priv *priv, unsigned int rule_index, + int src_port, unsigned int port_num, unsigned int queue_num, bool fwd_map_change) @@ -230,6 +231,10 @@ static int bcm_sf2_cfp_act_pol_set(struct bcm_sf2_priv *priv, else reg = 0; + /* Enable looping back to the original port */ + if (src_port == port_num) + reg |= LOOP_BK_EN; + core_writel(priv, reg, CORE_ACT_POL_DATA0); /* Set classification ID that needs to be put in Broadcom tag */ @@ -443,7 +448,7 @@ static int bcm_sf2_cfp_ipv4_rule_set(struct bcm_sf2_priv *priv, int port, } /* Insert into Action and policer RAMs now */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index, port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index, port, port_num, queue_num, true); if (ret) goto out_err_flow_rule; @@ -733,7 +738,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port, } /* Insert into Action and policer RAMs now */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[0], port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[0], port, port_num, queue_num, false); if (ret) goto out_err_flow_rule; @@ -795,7 +800,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port, /* Insert into Action and policer RAMs now, set chain ID to * the one we are chained to */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[1], port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[1], port, port_num, queue_num, true); if (ret) goto out_err_flow_rule;