[net-next,3/3] net: dsa: qca8k: limit user ports access to the first CPU port on setup
Message ID | 20230724033058.16795-3-ansuelsmth@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1724780vqg; Mon, 24 Jul 2023 04:14:47 -0700 (PDT) X-Google-Smtp-Source: APBJJlHVxDtTRnEp8MNsRyG98NZlcZ7Hwc5jE9gl/sOtZBIFF/B3zm97KB04S9Dy+UTzOM9z7sVs X-Received: by 2002:a17:902:7287:b0:1bb:8931:ee94 with SMTP id d7-20020a170902728700b001bb8931ee94mr3215688pll.67.1690197287317; Mon, 24 Jul 2023 04:14:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690197287; cv=none; d=google.com; s=arc-20160816; b=MUicCtRhi3rjPbiOhtRfNkVbNOqIvVVnydWbLkHoFfMR51GXyjPbzrAZ/J/ZBdeDo7 AQwV0U6kmcIPA8k8MgWvmsUzhG62ZdMiPXobPIzCsfjifrJ3LME81FjWAjnWb92C3hE6 OZzWhBUaA+NDIGynHIUf5abTLyOvECOLlOAzBTOwji/+byU8Xoz8BKmVasRyI6GkucRx IfRNAI0zTBKb5ci1AaP7fV5GSbHnfopcwvKS5bB5khPWsjqcvHolV84xW0GAAeY44Ydv CQBQJmHIBXq+elPj8s5hUctSyZbEEMC1ZX+W1D4pOJlX1gQkwDLXucPQWhhmzGUpngpZ eArw== 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:to:from :dkim-signature; bh=Pg3LdyxpJSkdMgcrpAAOq3iMwhvNlpKWfKdNTyn8mhQ=; fh=XOy5TA+EKiaAwmqpsaO4Zcdq7C+A5s2ingQBUunGi3k=; b=pl69l/YXUP7JC6RXs4V/5H+xUd3RoOVs0y+Vgqjf0iypyAOxSu4DcRuzu749snHIGG 1nnZ5rm2pZTCgsjbJAbMiB42iPdnXy2OJmG+gc3OnOxRWwZXXtCpUpYtnIcQTtUR1YrQ DZLGrXuDdQ2X45kIB5Kc7WqyBmZiR6v2Ek9RDwywB9tW+pfhVVR2dJ8MlD0o67BSA8mq MK3UQIQlCUPeks0iPyHOIHypiqrfiNIWZ7/t77j++TwHBVtdd6bXpGBHvKPna02/WT3N HZhZdS92dsbxu3Zjoqy5aJ+KnMFrZpapDSeWLUZGfD60PHnqrZMTMv6ydWNYxFbDnVX6 pQmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=fGCTLEyn; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n18-20020a170902e55200b001b5fc11ea09si9696742plf.94.2023.07.24.04.14.34; Mon, 24 Jul 2023 04:14:47 -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=@gmail.com header.s=20221208 header.b=fGCTLEyn; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233249AbjGXK7i (ORCPT <rfc822;kautuk.consul.80@gmail.com> + 99 others); Mon, 24 Jul 2023 06:59:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233225AbjGXK7f (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 24 Jul 2023 06:59:35 -0400 Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 704C090; Mon, 24 Jul 2023 03:59:33 -0700 (PDT) Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-2b96789d574so55378601fa.2; Mon, 24 Jul 2023 03:59:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690196372; x=1690801172; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Pg3LdyxpJSkdMgcrpAAOq3iMwhvNlpKWfKdNTyn8mhQ=; b=fGCTLEynvWOQHnVbYne2y6L2d9vnBZo/jnGWEWmz9zuFcCXTvm6o667Ojx94ghpyA8 bWcxKpvJTvskyvv38Ih75tsWtryCPG83LE1a11GYVAxD5gLrug468mwu6qGZaKSKxSqO 7d5BLjzBONIjzO5Zt+gg+Ay4kKv0ku4wpVVAA8LfCjMJGcQDWmggzQ5UJpu26BOiIPU8 R7+1FkiTzA9dhieeSAQBgqVV1+GqEU0baO62BtZliIcOV/49wXVx5pX/PVoEq+XS4m9o ZQFAkuoatPxqatCg0hVLqxx5rxionrbgXKTxMt4P0ZRV5q9vWNcGma+UGOwzSnzhTJfN nSNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690196372; x=1690801172; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pg3LdyxpJSkdMgcrpAAOq3iMwhvNlpKWfKdNTyn8mhQ=; b=BP3/X7kwMrXO+te9e/avjlMTK6X4UGBJoAc/vCJpcCD4yv+GNPKLqNH1PcbXmzgxHB Z31+SqRTKCctFK5YbO+9HAdu+dW/VdvCm1swS0cLMfhWxlzrrMygIkor7vzH0ILLPsTP PpbDHulns+ycgtzxexboGvyhhDRMKuL7zY0xqloSzwNCj8yKuYmzNFhjG5sz30KjrWda zpsbmWa0uLlQDyxN95jUjeYxwZX9oX4AiajpZ7Fgb+pzEW1MRnhYuNS57DEZLL9ECYu/ KwBUV9OlxxPELjkX9VS04j4FDtpxb6mf0hPvXn7GMuUF0TwJzdOh2Er7IOBNSSnxg2OL DXVg== X-Gm-Message-State: ABy/qLYsQHBtoMymOt6JAK+nNLs/yMYPEBzykzExiXjDWs7+4qSstj11 5cXCO0NS2pZH4mnhiY8kJRY= X-Received: by 2002:a2e:990d:0:b0:2b6:9dd5:7a5 with SMTP id v13-20020a2e990d000000b002b69dd507a5mr5323602lji.12.1690196371615; Mon, 24 Jul 2023 03:59:31 -0700 (PDT) Received: from localhost.localdomain (93-34-89-13.ip49.fastwebnet.it. [93.34.89.13]) by smtp.googlemail.com with ESMTPSA id m14-20020a7bcb8e000000b003fbc9371193sm10055353wmi.13.2023.07.24.03.59.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jul 2023 03:59:31 -0700 (PDT) From: Christian Marangi <ansuelsmth@gmail.com> To: Andrew Lunn <andrew@lunn.ch>, Florian Fainelli <f.fainelli@gmail.com>, Vladimir Oltean <olteanv@gmail.com>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Christian Marangi <ansuelsmth@gmail.com>, Atin Bainada <hi@atinb.me>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [net-next PATCH 3/3] net: dsa: qca8k: limit user ports access to the first CPU port on setup Date: Mon, 24 Jul 2023 05:30:58 +0200 Message-Id: <20230724033058.16795-3-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230724033058.16795-1-ansuelsmth@gmail.com> References: <20230724033058.16795-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_00,DATE_IN_PAST_06_12, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772300310765609677 X-GMAIL-MSGID: 1772300310765609677 |
Series |
[net-next,1/3] net: dsa: tag_qca: return early if dev is not found
|
|
Commit Message
Christian Marangi
July 24, 2023, 3:30 a.m. UTC
In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside
the port loop and setup the LOOKUP MEMBER mask for user ports only to
the first CPU port.
This is to handle flooding condition where every CPU port is set as
target and prevent packet duplication for unknown frames from user ports.
Secondary CPU port LOOKUP MEMBER mask will be setup later when
port_change_master will be implemented.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/net/dsa/qca/qca8k-8xxx.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
Comments
On Mon, Jul 24, 2023 at 05:30:58AM +0200, Christian Marangi wrote: > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > the port loop and setup the LOOKUP MEMBER mask for user ports only to > the first CPU port. > > This is to handle flooding condition where every CPU port is set as > target and prevent packet duplication for unknown frames from user ports. > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > port_change_master will be implemented. > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
On Mon, Jul 24, 2023 at 05:30:58AM +0200, Christian Marangi wrote: > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > the port loop and setup the LOOKUP MEMBER mask for user ports only to > the first CPU port. > > This is to handle flooding condition where every CPU port is set as > target and prevent packet duplication for unknown frames from user ports. > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > port_change_master will be implemented. > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> > --- This is kinda "net.git" material, in the sense that it fixes the current driver behavior with device trees from the future, right?
On 7/23/23 20:30, Christian Marangi wrote: > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > the port loop and setup the LOOKUP MEMBER mask for user ports only to > the first CPU port. > > This is to handle flooding condition where every CPU port is set as > target and prevent packet duplication for unknown frames from user ports. > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > port_change_master will be implemented. > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
On Wed, Jul 26, 2023 at 04:18:51PM +0300, Vladimir Oltean wrote: > On Mon, Jul 24, 2023 at 05:30:58AM +0200, Christian Marangi wrote: > > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > > the port loop and setup the LOOKUP MEMBER mask for user ports only to > > the first CPU port. > > > > This is to handle flooding condition where every CPU port is set as > > target and prevent packet duplication for unknown frames from user ports. > > > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > > port_change_master will be implemented. > > > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> > > --- > > This is kinda "net.git" material, in the sense that it fixes the current > driver behavior with device trees from the future, right? This is not strictly a fix. The secondary CPU (if defined) doesn't have flood enabled so the switch won't forward packet. It's more of a cleanup/preparation from my point of view. What do you think?
On Thu, Jul 27, 2023 at 09:10:56PM +0200, Christian Marangi wrote: > On Wed, Jul 26, 2023 at 04:18:51PM +0300, Vladimir Oltean wrote: > > On Mon, Jul 24, 2023 at 05:30:58AM +0200, Christian Marangi wrote: > > > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > > > the port loop and setup the LOOKUP MEMBER mask for user ports only to > > > the first CPU port. > > > > > > This is to handle flooding condition where every CPU port is set as > > > target and prevent packet duplication for unknown frames from user ports. > > > > > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > > > port_change_master will be implemented. > > > > > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> > > > --- > > > > This is kinda "net.git" material, in the sense that it fixes the current > > driver behavior with device trees from the future, right? > > This is not strictly a fix. The secondary CPU (if defined) doesn't have > flood enabled so the switch won't forward packet. It's more of a > cleanup/preparation from my point of view. What do you think? > > -- > Ansuel Ah, ok, if packets don't reach the second CPU port anyway then it's fine.
On Mon, Jul 24, 2023 at 05:30:58AM +0200, Christian Marangi wrote: > In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside > the port loop and setup the LOOKUP MEMBER mask for user ports only to > the first CPU port. > > This is to handle flooding condition where every CPU port is set as > target and prevent packet duplication for unknown frames from user ports. > > Secondary CPU port LOOKUP MEMBER mask will be setup later when > port_change_master will be implemented. > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.com> > drivers/net/dsa/qca/qca8k-8xxx.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c > index 31552853fdd4..6286a64a2fe3 100644 > --- a/drivers/net/dsa/qca/qca8k-8xxx.c > +++ b/drivers/net/dsa/qca/qca8k-8xxx.c > @@ -1850,18 +1850,16 @@ qca8k_setup(struct dsa_switch *ds) > if (ret) > return ret; > > + /* CPU port gets connected to all user ports of the switch */ > + ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port), > + QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds)); > + if (ret) > + return ret; > + > /* Setup connection between CPU port & user ports > * Configure specific switch configuration for ports > */ > for (i = 0; i < QCA8K_NUM_PORTS; i++) { > - /* CPU port gets connected to all user ports of the switch */ > - if (dsa_is_cpu_port(ds, i)) { > - ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i), > - QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds)); > - if (ret) > - return ret; > - } > - > /* Individual user ports get connected to CPU port only */ > if (dsa_is_user_port(ds, i)) { > ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i), FWIW, the remaining loop can be rewritten (in a separate patch) using dsa_switch_for_each_user_port(), which is actually an operation of lower complexity compared to "for" + "dsa_is_user_port". > -- > 2.40.1 >
diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c index 31552853fdd4..6286a64a2fe3 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1850,18 +1850,16 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; + /* CPU port gets connected to all user ports of the switch */ + ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port), + QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds)); + if (ret) + return ret; + /* Setup connection between CPU port & user ports * Configure specific switch configuration for ports */ for (i = 0; i < QCA8K_NUM_PORTS; i++) { - /* CPU port gets connected to all user ports of the switch */ - if (dsa_is_cpu_port(ds, i)) { - ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i), - QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds)); - if (ret) - return ret; - } - /* Individual user ports get connected to CPU port only */ if (dsa_is_user_port(ds, i)) { ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i),