From patchwork Tue Apr 21 03:26:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1273914 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=20161025 header.b=Ruy3nYTZ; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 495ptZ2fp2z9sSM for ; Tue, 21 Apr 2020 13:28:22 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728138AbgDUD1z (ORCPT ); Mon, 20 Apr 2020 23:27:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59506 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726628AbgDUD1y (ORCPT ); Mon, 20 Apr 2020 23:27:54 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDA11C061A0E; Mon, 20 Apr 2020 20:27:53 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id t12so5861138edw.3; Mon, 20 Apr 2020 20:27:53 -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:in-reply-to:references; bh=OxlH8eu4ISm7adGkmALzBWn5f6m60AmIDHyxCco5Bf4=; b=Ruy3nYTZJ1OtNxnPy9gP/A5YZ/wEM59TSVYW5Fxb+OxaltPgjimazMhLrhf9PwV5dP cA9Ri+1l5BRoGuxKgxu9tEEEzjF7OscgJOM3Tcq069TRf0C/Hzzgqk4LDbuJi5VQlKlh ZU4sr1qvBR4xrMRljAKhFmxMeUfX1aF8f9s2cVzqGuTqj2hfGKRsS4asVI+L2+w2w9dM uTkptBz0upjor0sQzwpVeS6dGoxK1zphvHwAcGj5rzgVirKUFAlGNERfC7D4E2LtxZfz 6IYTjH3LIvDmL/4BvZo71uSsErB7wuIWIahWX+ECEBnrsrywMyRWWij+9ce6p7lu588N B7Yw== 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=OxlH8eu4ISm7adGkmALzBWn5f6m60AmIDHyxCco5Bf4=; b=URNBoto36S3I8Yf1JMeaHlpRCx74l0g/8M6IFqJquvHz0KhWc67RnHRBWPvG342dUx tGynIRciu1nw1cN5SenDfer1H2o+U6Li8b4hnggagCjs0dGyseZDmUn0jILQceUU5kz/ zph5zbC0FApnTODIymFyobSN2at5+7A/nvEE4OO00FySvMZ3HHTwkkDy6yEaoJeWW7yx Bd2YtjmT1U3jrVBJV/toBo8cvU/G2AhNrAUNIvvQBCulxv8xQVyvRGQhAZPxBJxFK2rT BeSrbrJ9D+MKQgsHvSBmhLoQ1woERt64CZ+lHHc6LuFC2jouvMeCa2RG+81+i7Wm9VUz W96A== X-Gm-Message-State: AGi0Puam4mWQqS/0Fck6rothFQcpQUtbNVDGMpiiQtYILnqFjQZrO9NO MF9/+dKbaLZbmxjWSXUnk92UUe8l X-Google-Smtp-Source: APiQypLXglxtgrOEazz6Neu308092C/i8HOcuFMS3J57WJAVbzn6mBHqTw/FOw+jJpEvYeophb8Tqw== X-Received: by 2002:aa7:db0b:: with SMTP id t11mr6044986eds.304.1587439672455; Mon, 20 Apr 2020 20:27:52 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j9sm216836edl.67.2020.04.20.20.27.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 20:27:51 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list), davem@davemloft.net, kuba@kernel.org Subject: [PATCH net v2 1/5] net: dsa: b53: Lookup VID in ARL searches when VLAN is enabled Date: Mon, 20 Apr 2020 20:26:51 -0700 Message-Id: <20200421032655.5537-2-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200421032655.5537-1-f.fainelli@gmail.com> References: <20200421032655.5537-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When VLAN is enabled, and an ARL search is issued, we also need to compare the full {MAC,VID} tuple before returning a successful search result. Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations") Reviewed-by: Andrew Lunn Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 68e2381694b9..fa9b9aca7b56 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1505,6 +1505,9 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, continue; if ((mac_vid & ARLTBL_MAC_MASK) != mac) continue; + if (dev->vlan_enabled && + ((mac_vid >> ARLTBL_VID_S) & ARLTBL_VID_MASK) != vid) + continue; *idx = i; } From patchwork Tue Apr 21 03:26:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1273909 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=20161025 header.b=UIr+qPQD; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 495pt80nyLz9sSX for ; Tue, 21 Apr 2020 13:28:00 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728254AbgDUD16 (ORCPT ); Mon, 20 Apr 2020 23:27:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726628AbgDUD14 (ORCPT ); Mon, 20 Apr 2020 23:27:56 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29AF8C061A0E; Mon, 20 Apr 2020 20:27:56 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id a2so9838573ejx.5; Mon, 20 Apr 2020 20:27:56 -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:in-reply-to:references; bh=BqEXAPPk1jy4+zZW3X0pD4iZxuCMYKcirx3g/O09ZGA=; b=UIr+qPQDabB1+J4STjMBX52rkOaYT1tWZnxetfPo7SMjATGAP1gHaPhLQDzYULeONn UKFK7E9m8Cz3wu87KdeHDfcijC27Fcc6Sena+bXltdbEYkccpNSjicyuQXOFyZN0mNT+ BUTg7zIX3IELDaPcqQ/DaJfpROwDygtmiNo2kzJAa4y+5wajwZ19+CIkN2Tl6GsOfP5B zpKYRRANd55Fwiz54CH1YJKdopWeecJJOyVeo7d9/Re+aDfpwPXfAQLxisJ842kvwu5K Gs66DHjcg65tF9CEtn2QqGuIQijdZqhfuZ1Kdtk/LO/kSqSLEeJMA4I6yFV4Khv8i4jl RU3Q== 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=BqEXAPPk1jy4+zZW3X0pD4iZxuCMYKcirx3g/O09ZGA=; b=Vu+rOj5gkRlHIcIV0EAd8I/krTNveuPIXPPZaqp7szXQjkhbHvzYWL7tUsN8iiFVwV WguPTPS2sQzvJTtiqe7BLBUyNXuE4AX0HYl6aPoQYUTLxqJJgAU9XHLzG2w7WRqKeufk /ubsMIwAKYkWUP7cFsJxWXbXOOSGi8sAPTkBdHdoS2FRHqwrY7kxpA+10VycDnFe0qjj D7uO6xkdTK0u3EtR3ukMaBsWTuxHWxRPuWXFEmh7ljz3rgTWySEpASCJy1DxP+MDWd7K iZba5ANdGG4PdUrWuqkzigzBu1C45YSrpG0iPYumdTPOEDD4hGUdVq06nAOGZ3fcDIf0 0a9g== X-Gm-Message-State: AGi0Pub4osNq6WS+lFkm7K4AIUvcjp30lQQZXClrVQcJAdZ/7lvQavxf 3WnAB548xOrmciyOH8GOOi+8Fjgs X-Google-Smtp-Source: APiQypJTI8Ov82C5pBaGnh5uXDlyuyjEW+nFA9etX8P9txz7/Rgr8x9ld5fRfonqnFAdl/gscmidVg== X-Received: by 2002:a17:906:18a1:: with SMTP id c1mr18500775ejf.344.1587439674615; Mon, 20 Apr 2020 20:27:54 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j9sm216836edl.67.2020.04.20.20.27.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 20:27:54 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list), davem@davemloft.net, kuba@kernel.org Subject: [PATCH net v2 2/5] net: dsa: b53: Fix valid setting for MDB entries Date: Mon, 20 Apr 2020 20:26:52 -0700 Message-Id: <20200421032655.5537-3-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200421032655.5537-1-f.fainelli@gmail.com> References: <20200421032655.5537-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When support for the MDB entries was added, the valid bit was correctly changed to be assigned depending on the remaining port bitmask, that is, if there were no more ports added to the entry's port bitmask, the entry now becomes invalid. There was another assignment a few lines below that would override this which would invalidate entries even when there were still multiple ports left in the MDB entry. Fixes: 5d65b64a3d97 ("net: dsa: b53: Add support for MDB") Reviewed-by: Andrew Lunn Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index fa9b9aca7b56..e937bf365490 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1561,7 +1561,6 @@ static int b53_arl_op(struct b53_device *dev, int op, int port, ent.is_valid = !!(ent.port); } - ent.is_valid = is_valid; ent.vid = vid; ent.is_static = true; ent.is_age = false; From patchwork Tue Apr 21 03:26:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1273913 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=20161025 header.b=Qp7VOZlv; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 495ptT4Ddbz9sSM for ; Tue, 21 Apr 2020 13:28:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728299AbgDUD2A (ORCPT ); Mon, 20 Apr 2020 23:28:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59520 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726628AbgDUD16 (ORCPT ); Mon, 20 Apr 2020 23:27:58 -0400 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71037C061A0E; Mon, 20 Apr 2020 20:27:58 -0700 (PDT) Received: by mail-ej1-x643.google.com with SMTP id n17so9823755ejh.7; Mon, 20 Apr 2020 20:27:58 -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:in-reply-to:references; bh=wFUAHksPBRAFfm0oT11F+1uEzTcenvzx6QM0fJ+VVOk=; b=Qp7VOZlvSF8XwlgdLJDUt8YtWJQYIO0KvozZgBSt3uAyJevyOVMfxjUUout6S4AP08 2u+TrWWopA4DjCHuDDlXkxNCcHbEI1r7zPqb0vH3b6FtQKqI/z9cpXQ+uF0G6r9Gpr6I H63wk4f4QJZ1FsnIix0844IZcrmt+5mW1nec1gE/8VGijvjSSWfYxvj2lLyhRiYBlgvi W294lY/ZL6H8e1N0xoSgWQ2iO4gjmLR7TulhAcLWaCP1wklKsFlxnbYpiCP/6q9zRdwD eQq0iGTxDIFLqPBrnFKDnudYOfzmM24aHrieMQ5jrpPYeh6/DSeitp+hRpLvmkcYNHGo Ob5A== 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=wFUAHksPBRAFfm0oT11F+1uEzTcenvzx6QM0fJ+VVOk=; b=LVfek76O6iMhsh7DwAKZqFmasqcD4YLScvGKNNiP5xEiQPfetJC2xKZJCHL3w5raTJ 1r58hmnQA+wCCDQc5VJTmq9vmcLOXBZU+K7oSpKZmEZPWS7LvWJTgn5qxECfDmk6UIF/ 9A7ke9MXoomNFO8hzbQKzGJRkuL25jxJQsQVDNGMzyU0zefPOgTYCfl0I+MI9qWg7rSI o1d1NnZEvzQLX7gyyc0G45ouEr1ak35cHYREeH82Tb2nQ6YFbOuz3xiwPrt7X6LLx8M8 5ZMda31pt1XnVdR2V31/3VS/Lka0NI6wxwy10xj9dRMXRsNN/ROGauo4XaQ+jtvodMhZ 1tvA== X-Gm-Message-State: AGi0PuY0oXXOSeNeAfswGYkfTEbZys6+1lti8/1BIhVGyuJDB2DhyMKf 9gudtevkKn0IafyIG7Jyv5TQ+jZF X-Google-Smtp-Source: APiQypIMOh+GBXJK4z2BsAarn9Md69Dr7IHUQfG2i74hwfe2lfrc4MywjOuGsrb8B2RjKQXs8pqOrA== X-Received: by 2002:a17:906:d14b:: with SMTP id br11mr19683143ejb.213.1587439676864; Mon, 20 Apr 2020 20:27:56 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j9sm216836edl.67.2020.04.20.20.27.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 20:27:56 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list), davem@davemloft.net, kuba@kernel.org Subject: [PATCH net v2 3/5] net: dsa: b53: Fix ARL register definitions Date: Mon, 20 Apr 2020 20:26:53 -0700 Message-Id: <20200421032655.5537-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200421032655.5537-1-f.fainelli@gmail.com> References: <20200421032655.5537-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The ARL {MAC,VID} tuple and the forward entry were off by 0x10 bytes, which means that when we read/wrote from/to ARL bin index 0, we were actually accessing the ARLA_RWCTRL register. Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations") Reviewed-by: Andrew Lunn Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_regs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index 2a9f421680aa..d914e756cdab 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -304,7 +304,7 @@ * * BCM5325 and BCM5365 share most definitions below */ -#define B53_ARLTBL_MAC_VID_ENTRY(n) (0x10 * (n)) +#define B53_ARLTBL_MAC_VID_ENTRY(n) ((0x10 * (n)) + 0x10) #define ARLTBL_MAC_MASK 0xffffffffffffULL #define ARLTBL_VID_S 48 #define ARLTBL_VID_MASK_25 0xff @@ -316,7 +316,7 @@ #define ARLTBL_VALID_25 BIT(63) /* ARL Table Data Entry N Registers (32 bit) */ -#define B53_ARLTBL_DATA_ENTRY(n) ((0x10 * (n)) + 0x08) +#define B53_ARLTBL_DATA_ENTRY(n) ((0x10 * (n)) + 0x18) #define ARLTBL_DATA_PORT_ID_MASK 0x1ff #define ARLTBL_TC(tc) ((3 & tc) << 11) #define ARLTBL_AGE BIT(14) From patchwork Tue Apr 21 03:26:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1273911 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=20161025 header.b=CJVb3sr/; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 495ptM4zhhz9sSW for ; Tue, 21 Apr 2020 13:28:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728344AbgDUD2D (ORCPT ); Mon, 20 Apr 2020 23:28:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728309AbgDUD2B (ORCPT ); Mon, 20 Apr 2020 23:28:01 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7792C061A0E; Mon, 20 Apr 2020 20:28:00 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id a8so4170774edv.2; Mon, 20 Apr 2020 20:28:00 -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:in-reply-to:references; bh=i4f3blRR8KOStv74M2Pa40QRZx7xjwDr+fwIlAgyHBU=; b=CJVb3sr/LYvyotgBZak6pKlNUJEBYdt2uLOQxdTecK623ra3YoeWYPRzL56uJXiiiQ dXm0Wxn9kkptZ8DuOCimIbrTwO1zazHQFIep5lX6/eah6+vikw4vxHk17q5dTtxrLuvg gtOA5o0NdqBw4KIbiXpB+zEH5Qjs7wf67WqyGT2lmP0kZUXyPuj38N+KouRhJz0u3HeV YeJ1jsP4XM9vOQlOlGzci+/WsX+706ioaBrcwQl8YAWLV06r0Z1gfWS+Zf6halyhomta FTo9l1W2Ct4NRry+O86gotZa3KzSkrJQuyhQ5pkDvm7ZaJlsi3Z09QtqEk2U1mi6ThTc D6IA== 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=i4f3blRR8KOStv74M2Pa40QRZx7xjwDr+fwIlAgyHBU=; b=VXJy8kPfqiROqrXy1JVIVp5eallXG7Anq1prWcrENxaml7WP6aUwPXb1DV+h6PnKih dZrx0ovSOnJN6uGXiEYviFVYUvGL2DY0HegCdah8CsuMiZPQkWIcGVEdD+35VGWhLxiZ KY8qpLpcF/ndd8AhOI+qmCQi9bTMkAPzHMCKy2NMCmENFctM38vKqcCq+IMqD4ohI3rT Z8skS6HIGDPUj9UXhWNAqMh4kkna2rZHdP1MmgN3Q64HH6cUQOvE1p1BJsUir9bnoUPA QMkm4nryGEma0/H/kKy4AZT9vKOIlBcG8VbDbQpbQ+wKxedlw/fAJK2qfbNEa+8NgPUT L9Qw== X-Gm-Message-State: AGi0PuaMXbQ5kw17AXxnXw9oyC3HVFgGZ5gwhpnn9B3egMablRTibnlr QLxS9Z3uQBNRq+je7eYUmNyZHCQQ X-Google-Smtp-Source: APiQypLfllFy+OZu7n31et0wNdvBBuP2o1B2gSwnoU9qxd+054SD7WMOykrccOVp9Z+wIK/RdGq/Eg== X-Received: by 2002:a05:6402:1a46:: with SMTP id bf6mr10314295edb.44.1587439679027; Mon, 20 Apr 2020 20:27:59 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j9sm216836edl.67.2020.04.20.20.27.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 20:27:58 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list), davem@davemloft.net, kuba@kernel.org Subject: [PATCH net v2 4/5] net: dsa: b53: Rework ARL bin logic Date: Mon, 20 Apr 2020 20:26:54 -0700 Message-Id: <20200421032655.5537-5-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200421032655.5537-1-f.fainelli@gmail.com> References: <20200421032655.5537-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When asking the ARL to read a MAC address, we will get a number of bins returned in a single read. Out of those bins, there can essentially be 3 states: - all bins are full, we have no space left, and we can either replace an existing address or return that full condition - the MAC address was found, then we need to return its bin index and modify that one, and only that one - the MAC address was not found and we have a least one bin free, we use that bin index location then The code would unfortunately fail on all counts. Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations") Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 30 ++++++++++++++++++++++++++---- drivers/net/dsa/b53/b53_regs.h | 3 +++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index e937bf365490..8cb41583bbad 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1483,6 +1483,7 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, u16 vid, struct b53_arl_entry *ent, u8 *idx, bool is_valid) { + DECLARE_BITMAP(free_bins, B53_ARLTBL_MAX_BIN_ENTRIES); unsigned int i; int ret; @@ -1490,6 +1491,8 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, if (ret) return ret; + bitmap_zero(free_bins, dev->num_arl_entries); + /* Read the bins */ for (i = 0; i < dev->num_arl_entries; i++) { u64 mac_vid; @@ -1501,16 +1504,24 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, B53_ARLTBL_DATA_ENTRY(i), &fwd_entry); b53_arl_to_entry(ent, mac_vid, fwd_entry); - if (!(fwd_entry & ARLTBL_VALID)) + if (!(fwd_entry & ARLTBL_VALID)) { + set_bit(i, free_bins); continue; + } if ((mac_vid & ARLTBL_MAC_MASK) != mac) continue; if (dev->vlan_enabled && ((mac_vid >> ARLTBL_VID_S) & ARLTBL_VID_MASK) != vid) continue; *idx = i; + return 0; } + if (bitmap_weight(free_bins, dev->num_arl_entries) == 0) + return -ENOSPC; + + *idx = find_first_bit(free_bins, dev->num_arl_entries); + return -ENOENT; } @@ -1540,10 +1551,21 @@ static int b53_arl_op(struct b53_device *dev, int op, int port, if (op) return ret; - /* We could not find a matching MAC, so reset to a new entry */ - if (ret) { + switch (ret) { + case -ENOSPC: + dev_dbg(dev->dev, "{%pM,%.4d} no space left in ARL\n", + addr, vid); + return is_valid ? ret : 0; + case -ENOENT: + /* We could not find a matching MAC, so reset to a new entry */ + dev_dbg(dev->dev, "{%pM,%.4d} not found, using idx: %d\n", + addr, vid, idx); fwd_entry = 0; - idx = 1; + break; + default: + dev_dbg(dev->dev, "{%pM,%.4d} found, using idx: %d\n", + addr, vid, idx); + break; } /* For multicast address, the port is a bitmask and the validity diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index d914e756cdab..14f617e9173d 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -323,6 +323,9 @@ #define ARLTBL_STATIC BIT(15) #define ARLTBL_VALID BIT(16) +/* Maximum number of bin entries in the ARL for all switches */ +#define B53_ARLTBL_MAX_BIN_ENTRIES 4 + /* ARL Search Control Register (8 bit) */ #define B53_ARL_SRCH_CTL 0x50 #define B53_ARL_SRCH_CTL_25 0x20 From patchwork Tue Apr 21 03:26:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1273910 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=20161025 header.b=A1+3PuHU; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 495ptF1VZ7z9sSM for ; Tue, 21 Apr 2020 13:28:05 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728309AbgDUD2E (ORCPT ); Mon, 20 Apr 2020 23:28:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728345AbgDUD2D (ORCPT ); Mon, 20 Apr 2020 23:28:03 -0400 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 109A5C061A0F; Mon, 20 Apr 2020 20:28:03 -0700 (PDT) Received: by mail-ed1-x541.google.com with SMTP id a8so4170823edv.2; Mon, 20 Apr 2020 20:28:02 -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:in-reply-to:references; bh=4ZMzRuAjHXle1eKL+z9RKqBJOHZRk98XiZ1AhmO1964=; b=A1+3PuHU5HU9VsfgZkik167p+kdv1QRz5lPfs3o1OlFsmK+EciwtnA/4paUulpKEI4 AQEOBAJVRAUgI8wa5cPNbLbk/U9xsqUo/ebtBr5xWdHnJu2yev+8+zgTBrhkMrmhd4rT iaEHiB90azE5mqnCn5CDYsktHI7i46Xp7J7GPVfT6dgPgN6Z6Zo/a6qdWjTSuViVid3V 4whXqhf7BnpfumOgVJC0/hyjCu03VlgT/HdN+miNA+JSZZ8Uoh/F2xfBk7Vo+rYVah/l 7td9IO4KTDTiVOZuw/hS2+JS85n9Sd0+PaM3Ta4cMinA4OWg8AIGp08Fsut4KgRBXCgT sNaw== 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=4ZMzRuAjHXle1eKL+z9RKqBJOHZRk98XiZ1AhmO1964=; b=um8aT48da9Xtb3A5RdKk3PcDkmmefFTpR5psKmQevS+jzyzJw2VmG0v3rqaumJiLBT Ix82RerdZy9xEB3dlyRT4elGpQwVnjFNA/65U9v5RnOtUE1n1b8A8GSn6O3kyTXkFH71 UlfcL++S3BBEtdTQNLMPZH/xwLCBvNTnt4FVx8XnNNg7iOCXT5RU3N+6/X84JsBYc+2/ qNVVpDQVvxF+9ASiOiG50VtT3JiBLLuikmHVQL5D3a2c2SX7UPqc1Mao5eu5/kJrImXy H+UQGjRGNnglxc3On/IABm3w/JrEiNrEv9KWwdBJi5wAIgHoUefn7hN1S4BXPWA908Mu EvHQ== X-Gm-Message-State: AGi0PuY+JMQv0asi1AxG50HDYTpNMYUp6EWYf8Xmr/zwxsYNq7p1fmiV J6XIFW2qgKEOimoyYZdlKuQvX9Td X-Google-Smtp-Source: APiQypJtCaFRTCEUBZ/1GSc+tuVo8GV1Gn4qe+LnB1vE0ntUFI/XfnojSfowGcEGi+scQDpin0Og9A== X-Received: by 2002:a05:6402:b17:: with SMTP id bm23mr17645499edb.137.1587439681543; Mon, 20 Apr 2020 20:28:01 -0700 (PDT) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j9sm216836edl.67.2020.04.20.20.27.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 20:28:00 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list), davem@davemloft.net, kuba@kernel.org Subject: [PATCH net v2 5/5] net: dsa: b53: b53_arl_rw_op() needs to select IVL or SVL Date: Mon, 20 Apr 2020 20:26:55 -0700 Message-Id: <20200421032655.5537-6-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200421032655.5537-1-f.fainelli@gmail.com> References: <20200421032655.5537-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Flip the IVL_SVL_SELECT bit correctly based on the VLAN enable status, the default is to perform Shared VLAN learning instead of Individual learning. Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations") Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 4 ++++ drivers/net/dsa/b53/b53_regs.h | 1 + 2 files changed, 5 insertions(+) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 8cb41583bbad..c283593bef17 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1474,6 +1474,10 @@ static int b53_arl_rw_op(struct b53_device *dev, unsigned int op) reg |= ARLTBL_RW; else reg &= ~ARLTBL_RW; + if (dev->vlan_enabled) + reg &= ~ARLTBL_IVL_SVL_SELECT; + else + reg |= ARLTBL_IVL_SVL_SELECT; b53_write8(dev, B53_ARLIO_PAGE, B53_ARLTBL_RW_CTRL, reg); return b53_arl_op_wait(dev); diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index 14f617e9173d..c90985c294a2 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -292,6 +292,7 @@ /* ARL Table Read/Write Register (8 bit) */ #define B53_ARLTBL_RW_CTRL 0x00 #define ARLTBL_RW BIT(0) +#define ARLTBL_IVL_SVL_SELECT BIT(6) #define ARLTBL_START_DONE BIT(7) /* MAC Address Index Register (48 bit) */