From patchwork Wed Aug 30 19:39:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 807870 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="iPNhi+WI"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xjGFX2Yd6z9sP5 for ; Thu, 31 Aug 2017 05:45:36 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750995AbdH3Tpd (ORCPT ); Wed, 30 Aug 2017 15:45:33 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:37141 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750756AbdH3Tpc (ORCPT ); Wed, 30 Aug 2017 15:45:32 -0400 Received: by mail-wr0-f195.google.com with SMTP id k9so1990509wre.4 for ; Wed, 30 Aug 2017 12:45:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=xdu8O/DmTCTRnW8M+O9IbroHzjyvlW1Mhc1gggL75wM=; b=iPNhi+WIFJ8FOAILcbqec2nACS+dnV7FLdvdSsxYBpxTJdxGEs64lL+Qd/BUcm5y6d 3j8JVbkZr4Az1MRby03+MZi43UVYU9Se6IPTNyZ4QDMlfPyEwEUs7ptUkX74oLQw8Kl/ S8WgYXVE+uFkuqm6BocjblJw1B00Td/w3QYTOPh8CsZDVz0LK8o5RpmivxlUs1xnJ05Z u1Na+TCyRxwawClE4Iq2v6LjS/i87fPB0jb9wg/lRYUHlNr/3GWHa8fdBr/eDvDoM5sg cLW8qy9j5v8RG03xyjQHIjmCWiakLrN8qpKNwLEXERa9iyGLHk25LK/psaXjsfADca/u Vk3A== 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; bh=xdu8O/DmTCTRnW8M+O9IbroHzjyvlW1Mhc1gggL75wM=; b=AxowIuLy5gCvy4hhX+A4CQeK6ny/PcxKYQo+DnxEW/SDM7z8qapqDkdMp7WLerZjiW aSXSwjluqC1/w1Neamd2SMAv3zlKl/NUfAm+NksjZuJ2BCsTUc+vVEK0c58lswg0wRPF 8NL2Zh+Stl813UvMrDTcDqbtaVibHoLJx0FxOlvZYbmZONGky0BVUvV4tASINXUeRgvC Ih9BcGv+sdpI1wdPXTAwH0SApRpndUBmZrnF7rG9TWSBmnvyuu6KpzQR3/12vZC5v400 zqGk+z7N4F3kVUDRKMY2HiYc9Aj0lZEjiFf/W1LOk4obkOZsBBNJH0TBU8ylSzjqgKs8 gmcw== X-Gm-Message-State: AHYfb5iSviZb+YTzKdh3VhwmzG8GA/OcgWq4Ue6jOtdW5JV50M55fegQ C/WPVOeRyPEwjL02kSg= X-Received: by 10.223.199.206 with SMTP id y14mr1594449wrg.173.1504122330737; Wed, 30 Aug 2017 12:45:30 -0700 (PDT) Received: from stb-bld-04.irv.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id o191sm4187084wmg.5.2017.08.30.12.45.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Aug 2017 12:45:29 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net] net: dsa: bcm_sf2: Fix number of CFP entries for BCM7278 Date: Wed, 30 Aug 2017 12:39:33 -0700 Message-Id: <1504121973-8438-1-git-send-email-f.fainelli@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org BCM7278 has only 128 entries while BCM7445 has the full 256 entries set, fix that. Fixes: 7318166cacad ("net: dsa: bcm_sf2: Add support for ethtool::rxnfc") Signed-off-by: Florian Fainelli Reviewed-by: Vivien Didelot --- drivers/net/dsa/bcm_sf2.c | 4 ++++ drivers/net/dsa/bcm_sf2.h | 1 + drivers/net/dsa/bcm_sf2_cfp.c | 8 ++++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 00416e9f0196..eb220c8327b5 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -1043,6 +1043,7 @@ struct bcm_sf2_of_data { u32 type; const u16 *reg_offsets; unsigned int core_reg_align; + unsigned int num_cfp_rules; }; /* Register offsets for the SWITCH_REG_* block */ @@ -1066,6 +1067,7 @@ struct bcm_sf2_of_data { .type = BCM7445_DEVICE_ID, .core_reg_align = 0, .reg_offsets = bcm_sf2_7445_reg_offsets, + .num_cfp_rules = 256, }; static const u16 bcm_sf2_7278_reg_offsets[] = { @@ -1088,6 +1090,7 @@ struct bcm_sf2_of_data { .type = BCM7278_DEVICE_ID, .core_reg_align = 1, .reg_offsets = bcm_sf2_7278_reg_offsets, + .num_cfp_rules = 128, }; static const struct of_device_id bcm_sf2_of_match[] = { @@ -1144,6 +1147,7 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev) priv->type = data->type; priv->reg_offsets = data->reg_offsets; priv->core_reg_align = data->core_reg_align; + priv->num_cfp_rules = data->num_cfp_rules; /* Auto-detection using standard registers will not work, so * provide an indication of what kind of device we are for diff --git a/drivers/net/dsa/bcm_sf2.h b/drivers/net/dsa/bcm_sf2.h index d9c96b281fc0..02c499f9c56b 100644 --- a/drivers/net/dsa/bcm_sf2.h +++ b/drivers/net/dsa/bcm_sf2.h @@ -72,6 +72,7 @@ struct bcm_sf2_priv { u32 type; const u16 *reg_offsets; unsigned int core_reg_align; + unsigned int num_cfp_rules; /* spinlock protecting access to the indirect registers */ spinlock_t indir_lock; diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c index 2fb32d67065f..8a1da7e67707 100644 --- a/drivers/net/dsa/bcm_sf2_cfp.c +++ b/drivers/net/dsa/bcm_sf2_cfp.c @@ -98,7 +98,7 @@ static inline void bcm_sf2_cfp_rule_addr_set(struct bcm_sf2_priv *priv, { u32 reg; - WARN_ON(addr >= CFP_NUM_RULES); + WARN_ON(addr >= priv->num_cfp_rules); reg = core_readl(priv, CORE_CFP_ACC); reg &= ~(XCESS_ADDR_MASK << XCESS_ADDR_SHIFT); @@ -109,7 +109,7 @@ static inline void bcm_sf2_cfp_rule_addr_set(struct bcm_sf2_priv *priv, static inline unsigned int bcm_sf2_cfp_rule_size(struct bcm_sf2_priv *priv) { /* Entry #0 is reserved */ - return CFP_NUM_RULES - 1; + return priv->num_cfp_rules - 1; } static int bcm_sf2_cfp_rule_set(struct dsa_switch *ds, int port, @@ -523,7 +523,7 @@ static int bcm_sf2_cfp_rule_get_all(struct bcm_sf2_priv *priv, if (!(reg & OP_STR_DONE)) break; - } while (index < CFP_NUM_RULES); + } while (index < priv->num_cfp_rules); /* Put the TCAM size here */ nfc->data = bcm_sf2_cfp_rule_size(priv); @@ -544,7 +544,7 @@ int bcm_sf2_get_rxnfc(struct dsa_switch *ds, int port, case ETHTOOL_GRXCLSRLCNT: /* Subtract the default, unusable rule */ nfc->rule_cnt = bitmap_weight(priv->cfp.used, - CFP_NUM_RULES) - 1; + priv->num_cfp_rules) - 1; /* We support specifying rule locations */ nfc->data |= RX_CLS_LOC_SPECIAL; break;