From patchwork Thu Mar 30 08:34:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= X-Patchwork-Id: 76959 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp970963vqo; Thu, 30 Mar 2023 01:41:19 -0700 (PDT) X-Google-Smtp-Source: AKy350aHAVpn3FXmaSL9rQoo0AdGMCTToW7A/C1zKoeQ4sjoZmfQF1raCbhI8QfC3d6k73GQcAtX X-Received: by 2002:a17:902:e54c:b0:1a0:65ae:df18 with SMTP id n12-20020a170902e54c00b001a065aedf18mr24234606plf.55.1680165679600; Thu, 30 Mar 2023 01:41:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680165679; cv=none; d=google.com; s=arc-20160816; b=qWCcVn4KNi094DzpxDn/fF3V322p+0KIZD9vPjWEIDsMMbHCadxSicjWBKrSrO9lrd N8sSBztt3WYiYHZNQwjybSnu2GZHTdIkgyXbEXYX9P2HAsOFiQ+Fv8u1q/3T80MuH8og r/WlRk30GZbs4IDAok1mwKFsmvG9Nvysmj139TWMyz22fm951RDKJAoTUJ4wAULGTsK+ Iv59NxmlQ4MXGqRYXW0DBjxsYu2gyAvXWeqGW5hVW6JXYrJ7u2ltmsR/qeyva2uPcIrx /+PrTjmxruefvzu2H6oQvdROZAT4Sbxj5rurUXtmtL5eKU/LAxKpRGUwJZJeTXfT+tPa EuyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=GFEsas8UkqdPDVCrhrnKj+uilFYdoYnYWmClhqduO1w=; b=DuQjR7TNrT3vVypr3GlA9FZ+Az1Cw0JpS2Vv6gXNzlorX9PjuBJ5Dln/fsgkys8gvW bjtlHybslYsHSfsdOq4ZDYol9wAXS4Ge2g8hSA+YgvOpwvyk/iPQIXGfK34HarZNaxLT qz+5ol/VdmAJ8TwFSKcH4S2s3Up0+0sgQJonZwJ5awbw4ZZDaLUMrl1osN9B5w/V3er0 npyqPvckOu3Ozfl6k8ROyPRXL3bwpcZjT8TdvKdqX4RBKhnCEAhbCZzXGD7lYZ/Ti0SI IrN7w36j2zERsXt+tRv79YL7yqljIDPepfg44T5hqp8lWqukuM2rRuMQgfYWC76nBhGY yK6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b="cZLzF/BP"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jk5-20020a170903330500b0019cb419df45si1589412plb.401.2023.03.30.01.41.04; Thu, 30 Mar 2023 01:41:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b="cZLzF/BP"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229934AbjC3IeT (ORCPT + 99 others); Thu, 30 Mar 2023 04:34:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229706AbjC3Idt (ORCPT ); Thu, 30 Mar 2023 04:33:49 -0400 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::226]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32DC55FF7; Thu, 30 Mar 2023 01:33:45 -0700 (PDT) Received: (Authenticated sender: clement.leger@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 1B490C0003; Thu, 30 Mar 2023 08:33:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1680165223; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GFEsas8UkqdPDVCrhrnKj+uilFYdoYnYWmClhqduO1w=; b=cZLzF/BPJD9zYYUWaC83zrXwuX77tAxKxkmbgv7lHMP1S6GhvvCE8JYTDS9NBP3mXrRZw0 0AlzT4vCo/dXfjwwF8UZMFM2JCqakh8+E3b3fQ/Hfz9byE4JX2Y6dOu5dN46E1tlIzcHkh rxzlTH8IpUTFVo8J+3X11JGbd5ubN0YlwzAiT/KSKhD1tJoXaGrrzoAfe/bzLpcPQg44WO bt73gR+cldqXzOBOrLrEr0CKpX5RoMniyZePNekjrvEdsSxU4TzTOV9Tz1zTwh1KCTUa3i mzz8SjR8oD22T6eZi+wECcSiYrxJfcSrcVKthLIjohnzfYy+6EJeSJaz6LPZIg== From: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , linux-renesas-soc@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , Herve Codina , =?utf-8?q?Miqu=C3=A8l_Raynal?= , Milan Stevanovic , Jimmy Lalande , Pascal Eberhard , =?utf-8?q?Alexis_Lothor=C3=A9?= Subject: [PATCH net-next 1/2] net: dsa: rzn1-a5psw: enable DPBU for CPU port and fix STP states Date: Thu, 30 Mar 2023 10:34:07 +0200 Message-Id: <20230330083408.63136-2-clement.leger@bootlin.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230330083408.63136-1-clement.leger@bootlin.com> References: <20230330083408.63136-1-clement.leger@bootlin.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761781407142424314?= X-GMAIL-MSGID: =?utf-8?q?1761781407142424314?= Current there were actually two problems which made the STP support non working. First, the BPDU were disabled on the CPU port which means BDPUs were actually dropped internally to the switch. TO fix that, simply enable BPDUs at management port level. Then, the a5psw_port_stp_set_state() should have actually received BPDU while in LEARNING mode which was not the case. Additionally, the BLOCKEN bit does not actually forbid sending forwarded frames from that port. To fix this, add a5psw_port_tx_enable() function which allows to disable TX. However, while its name suggest that TX is totally disabled, it is not and can still allows to send BPDUs even if disabled. This can be done by using forced forwarding with the switch tagging mecanism but keeping "filtering" disabled (which is already the case). Which these fixes, STP support is now functional. Signed-off-by: Clément Léger --- drivers/net/dsa/rzn1_a5psw.c | 53 +++++++++++++++++++++++++++++------- drivers/net/dsa/rzn1_a5psw.h | 4 ++- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/drivers/net/dsa/rzn1_a5psw.c b/drivers/net/dsa/rzn1_a5psw.c index 919027cf2012..bbc1424ed416 100644 --- a/drivers/net/dsa/rzn1_a5psw.c +++ b/drivers/net/dsa/rzn1_a5psw.c @@ -120,6 +120,22 @@ static void a5psw_port_mgmtfwd_set(struct a5psw *a5psw, int port, bool enable) a5psw_port_pattern_set(a5psw, port, A5PSW_PATTERN_MGMTFWD, enable); } +static void a5psw_port_tx_enable(struct a5psw *a5psw, int port, bool enable) +{ + u32 mask = A5PSW_PORT_ENA_TX(port); + u32 reg = enable ? mask : 0; + + /* Even though the port TX is disabled through TXENA bit in the + * PORT_ENA register it can still send BPDUs. This depends on the tag + * configuration added when sending packets from the CPU port to the + * switch port. Indeed, when using forced forwarding without filtering, + * even disabled port will be able to send packets that are tagged. This + * allows to implement STP support when ports are in a state were + * forwarding traffic should be stopped but BPDUs should still be sent. + */ + a5psw_reg_rmw(a5psw, A5PSW_CMD_CFG(port), mask, reg); +} + static void a5psw_port_enable_set(struct a5psw *a5psw, int port, bool enable) { u32 port_ena = 0; @@ -292,6 +308,18 @@ static int a5psw_set_ageing_time(struct dsa_switch *ds, unsigned int msecs) return 0; } +static void a5psw_port_learning_set(struct a5psw *a5psw, int port, + bool learning, bool blocked) +{ + u32 mask = A5PSW_INPUT_LEARN_DIS(port) | A5PSW_INPUT_LEARN_BLOCK(port); + u32 reg = 0; + + reg |= !learning ? A5PSW_INPUT_LEARN_DIS(port) : 0; + reg |= blocked ? A5PSW_INPUT_LEARN_BLOCK(port) : 0; + + a5psw_reg_rmw(a5psw, A5PSW_INPUT_LEARN, mask, reg); +} + static void a5psw_flooding_set_resolution(struct a5psw *a5psw, int port, bool set) { @@ -344,28 +372,33 @@ static void a5psw_port_bridge_leave(struct dsa_switch *ds, int port, static void a5psw_port_stp_state_set(struct dsa_switch *ds, int port, u8 state) { - u32 mask = A5PSW_INPUT_LEARN_DIS(port) | A5PSW_INPUT_LEARN_BLOCK(port); struct a5psw *a5psw = ds->priv; - u32 reg = 0; + bool learn, block; switch (state) { case BR_STATE_DISABLED: case BR_STATE_BLOCKING: - reg |= A5PSW_INPUT_LEARN_DIS(port); - reg |= A5PSW_INPUT_LEARN_BLOCK(port); - break; case BR_STATE_LISTENING: - reg |= A5PSW_INPUT_LEARN_DIS(port); + block = true; + learn = false; + a5psw_port_tx_enable(a5psw, port, false); break; case BR_STATE_LEARNING: - reg |= A5PSW_INPUT_LEARN_BLOCK(port); + block = true; + learn = true; + a5psw_port_tx_enable(a5psw, port, false); break; case BR_STATE_FORWARDING: - default: + block = false; + learn = true; + a5psw_port_tx_enable(a5psw, port, true); break; + default: + dev_err(ds->dev, "invalid STP state: %d\n", state); + return; } - a5psw_reg_rmw(a5psw, A5PSW_INPUT_LEARN, mask, reg); + a5psw_port_learning_set(a5psw, port, learn, block); } static void a5psw_port_fast_age(struct dsa_switch *ds, int port) @@ -673,7 +706,7 @@ static int a5psw_setup(struct dsa_switch *ds) } /* Configure management port */ - reg = A5PSW_CPU_PORT | A5PSW_MGMT_CFG_DISCARD; + reg = A5PSW_CPU_PORT | A5PSW_MGMT_CFG_ENABLE; a5psw_reg_writel(a5psw, A5PSW_MGMT_CFG, reg); /* Set pattern 0 to forward all frame to mgmt port */ diff --git a/drivers/net/dsa/rzn1_a5psw.h b/drivers/net/dsa/rzn1_a5psw.h index c67abd49c013..04d9486dbd21 100644 --- a/drivers/net/dsa/rzn1_a5psw.h +++ b/drivers/net/dsa/rzn1_a5psw.h @@ -19,6 +19,8 @@ #define A5PSW_PORT_OFFSET(port) (0x400 * (port)) #define A5PSW_PORT_ENA 0x8 +#define A5PSW_PORT_ENA_TX_SHIFT 0 +#define A5PSW_PORT_ENA_TX(port) BIT(port) #define A5PSW_PORT_ENA_RX_SHIFT 16 #define A5PSW_PORT_ENA_TX_RX(port) (BIT((port) + A5PSW_PORT_ENA_RX_SHIFT) | \ BIT(port)) @@ -36,7 +38,7 @@ #define A5PSW_INPUT_LEARN_BLOCK(p) BIT(p) #define A5PSW_MGMT_CFG 0x20 -#define A5PSW_MGMT_CFG_DISCARD BIT(7) +#define A5PSW_MGMT_CFG_ENABLE BIT(6) #define A5PSW_MODE_CFG 0x24 #define A5PSW_MODE_STATS_RESET BIT(31) From patchwork Thu Mar 30 08:34:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= X-Patchwork-Id: 76957 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp969978vqo; Thu, 30 Mar 2023 01:38:51 -0700 (PDT) X-Google-Smtp-Source: AKy350a37nD+t2vuM39oBbHcz0IZ3zninCFyrMoa8LlgHLGDxsyQ+3C5EgB8GgP4TxlW5LxlOVQk X-Received: by 2002:a17:90b:38d2:b0:234:dc4:2006 with SMTP id nn18-20020a17090b38d200b002340dc42006mr26157142pjb.4.1680165531589; Thu, 30 Mar 2023 01:38:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680165531; cv=none; d=google.com; s=arc-20160816; b=xRHCTncbFpGS3PlvplXEli0Oz3ttAzjWea3Kb46/5vGtBgKK60DMz8f2mj8QsL5YsQ JG5jh+FcqMWD8UAjMzLFHLjeZrdwWqwpqgsZwnf76f3skJn5aEHF+L1qtaeGH95IuCAC 4ycBjGXFtcU0xgn6gS5emGTHOkc/UuTgFc81PnUIMowd09yRqIv+D0QPHJ05wkLeodxw /EvFWyfhaOeDOcJ65Wwo4I0UTS8meQzQvuT5AfJ7eUegaIPFGHu1CeWixYDL5fxkBjjE mGKmEf2ckReDHS+3g5WBRhrG89vGnr1tkI3TZSxrhAkcCw/Y0FXwLG0VUVlpgtqWdmUb fXQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=WwAhyV1Sj5KBBfVDCAdRTQpNDnZo2GvHv0Rky3dXMiQ=; b=u2wMV6WdNcdIzIWmvvATTmJmHeMRlDh7VYfRi5Jm2bh8yD9/LNxa9+cjDNdPK6xZde J7a+dWMydO03gBPjx5TAjRqkm5yMxHaTAYuJhuvWLcuhctBtfWIXJ8cq5rliWToKgqBx fljpnwR4Er16tNGMv5Ta4urnkscOwvIu44Hyj93G1PAObxNYDhm3mt8JfD6zl3sLJ+Cm oG8sNHcsD6ltZp0RJM6bWTOuPw2TMRTK3OtvjsO74CAoW/mdno8/ITbFWdiFfB+V1pCx EtM3eWiqGJKL+M25Iy5KTDd65pfd6esn6rViuBEhuS/TqYQYCH5ZJn3OzUmdcddmLloY S2Xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=FvKfGfSZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jx8-20020a170903138800b001a1c551bcf9si27110656plb.106.2023.03.30.01.38.38; Thu, 30 Mar 2023 01:38:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=FvKfGfSZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229831AbjC3IeO (ORCPT + 99 others); Thu, 30 Mar 2023 04:34:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229710AbjC3Idt (ORCPT ); Thu, 30 Mar 2023 04:33:49 -0400 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1120B3; Thu, 30 Mar 2023 01:33:46 -0700 (PDT) Received: (Authenticated sender: clement.leger@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 42666C0009; Thu, 30 Mar 2023 08:33:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1680165225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WwAhyV1Sj5KBBfVDCAdRTQpNDnZo2GvHv0Rky3dXMiQ=; b=FvKfGfSZ6CE043eolJcSg7z6fIgqiQ5Fle3qnqfqGZ8Jy2NG2lvc0m9kRNOiabUtHmpz+I qVQO7iL5hQgf5eLue/mh36wbIRDyD5+fSG9qDLr6FOKTkd4jgcjVor+XbxH1M14b2sBo+Z E/nbVZ/vi64gxVcGvKXKRKBhyGeQEZNlmHZCvGvPVmwYlPVaCzPC7iFsvNIyOpPtu8LdWU T+HCrZiRdahsgfyHNtPy5oPLTNRfh3Eww2CsZFbai2IiqyYxVb3oZicR6Aa1+s6tvd9MXp UrwsWF/IP5nAcw14KGSqaa0MIOrxhdXdF9JALgijw/w2dTh8J5psh/VqiYpxWw== From: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , linux-renesas-soc@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , Herve Codina , =?utf-8?q?Miqu=C3=A8l_Raynal?= , Milan Stevanovic , Jimmy Lalande , Pascal Eberhard , =?utf-8?q?Alexis_Lothor=C3=A9?= Subject: [PATCH net-next 2/2] net: dsa: rzn1-a5psw: disable learning for standalone ports Date: Thu, 30 Mar 2023 10:34:08 +0200 Message-Id: <20230330083408.63136-3-clement.leger@bootlin.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230330083408.63136-1-clement.leger@bootlin.com> References: <20230330083408.63136-1-clement.leger@bootlin.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761781252340692272?= X-GMAIL-MSGID: =?utf-8?q?1761781252340692272?= When port are in standalone mode, they should have learning disabled to avoid adding new entries in the MAC lookup table which might be used by other bridge ports to forward packets. While adding that, also make sure learning is enabled for CPU port. Signed-off-by: Clément Léger --- drivers/net/dsa/rzn1_a5psw.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/net/dsa/rzn1_a5psw.c b/drivers/net/dsa/rzn1_a5psw.c index bbc1424ed416..3e5062ab0928 100644 --- a/drivers/net/dsa/rzn1_a5psw.c +++ b/drivers/net/dsa/rzn1_a5psw.c @@ -336,6 +336,14 @@ static void a5psw_flooding_set_resolution(struct a5psw *a5psw, int port, a5psw_reg_writel(a5psw, offsets[i], a5psw->bridged_ports); } +static void a5psw_port_set_standalone(struct a5psw *a5psw, int port, + bool standalone) +{ + a5psw_port_learning_set(a5psw, port, !standalone, false); + a5psw_flooding_set_resolution(a5psw, port, !standalone); + a5psw_port_mgmtfwd_set(a5psw, port, standalone); +} + static int a5psw_port_bridge_join(struct dsa_switch *ds, int port, struct dsa_bridge bridge, bool *tx_fwd_offload, @@ -351,8 +359,7 @@ static int a5psw_port_bridge_join(struct dsa_switch *ds, int port, } a5psw->br_dev = bridge.dev; - a5psw_flooding_set_resolution(a5psw, port, true); - a5psw_port_mgmtfwd_set(a5psw, port, false); + a5psw_port_set_standalone(a5psw, port, false); return 0; } @@ -362,8 +369,7 @@ static void a5psw_port_bridge_leave(struct dsa_switch *ds, int port, { struct a5psw *a5psw = ds->priv; - a5psw_flooding_set_resolution(a5psw, port, false); - a5psw_port_mgmtfwd_set(a5psw, port, true); + a5psw_port_set_standalone(a5psw, port, true); /* No more ports bridged */ if (a5psw->bridged_ports == BIT(A5PSW_CPU_PORT)) @@ -755,13 +761,15 @@ static int a5psw_setup(struct dsa_switch *ds) if (dsa_port_is_unused(dp)) continue; - /* Enable egress flooding for CPU port */ - if (dsa_port_is_cpu(dp)) + /* Enable egress flooding and learning for CPU port */ + if (dsa_port_is_cpu(dp)) { a5psw_flooding_set_resolution(a5psw, port, true); + a5psw_port_learning_set(a5psw, port, true, false); + } - /* Enable management forward only for user ports */ + /* Enable standalone mode for user ports */ if (dsa_port_is_user(dp)) - a5psw_port_mgmtfwd_set(a5psw, port, true); + a5psw_port_set_standalone(a5psw, port, true); } return 0;