From patchwork Sat Jul 29 11:55:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 128114 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp1000949vqg; Sat, 29 Jul 2023 05:26:27 -0700 (PDT) X-Google-Smtp-Source: APBJJlFzPODkKFM1YMO21LOPbHXVQzhrFwzg6FTWKzE0h8d/xd3+UwOlAw6D4jUymDg+ytdHa6Zl X-Received: by 2002:a17:902:da89:b0:1b8:3601:9bf7 with SMTP id j9-20020a170902da8900b001b836019bf7mr5412568plx.24.1690633587002; Sat, 29 Jul 2023 05:26:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690633586; cv=none; d=google.com; s=arc-20160816; b=S05mXLJjHMwgT83gTcmyZy6hiSAo0RUCaWnehHTSefKxcClQRii8pPPGx606DEgKrj cZH3wT2qpHs7n3OKJaRvS0FDsxrhVCvdthfd0eXpdMOv6yuQ6kx/AwVzP1jRYKEQYblZ eU0CqAnvDmYlXsBdlaARONRg+nFZ6SfJ3bM4Rwmx5MovsT+iTDiOHgnkMb2KUfbucQnV 2GcXTcQwkteJjesyqFD2yKYOqh/fwLo+k+Ij/x9Wp4M/PIcR2gDDnM/rBExK+BhEaw27 o6zDD0OfLuE7OVBi9Xmd5cjtOY+PikiteE0/4rNyXE7K8j8bJoDEOW97X/PUNz+BdgJt Bcbg== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=3q+L7EE1TkpxxmtRm93suLpVPlWGwO+iRnmPNbcpp6s=; fh=Oew/6E1ENQAh5GvI/ZomWrmwHkVqdSnWJdtcQgJEhKI=; b=H32BDRHCVL/9tuNDikZpstHj0RG8pimkxsbx/z3BvEjsMPT3N5uwuq6u5TZ9tvmpiC lufBOfkicsnvjPWvCAupa/H0vsXkiTHMhnpU5S0jz/hZpa3fgHEVQit4iU4NOAYXkN81 d5zlFDM2bBq/NoJ2WOXIrhJyHFxmslEW4eTusaymAhalMQra2BYCPDk093q3ifEnSgxO pudhSyi740rbGuxA5zLcePwh+dAHuCiIOlCUAyHBus5JYb+ccHAW4k/3PTGVyWVL83qS 0RWs3a9pNFXkmy274414yJsNhQo/3x50DnIEHJJ0BX31AWmGGG3nt1IHpmbb8y79/J8f FZvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=mBzFMgkv; 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 d1-20020a170902cec100b001bb1d822685si4699201plg.358.2023.07.29.05.26.13; Sat, 29 Jul 2023 05:26:26 -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=mBzFMgkv; 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 S230448AbjG2LzW (ORCPT + 99 others); Sat, 29 Jul 2023 07:55:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230452AbjG2LzS (ORCPT ); Sat, 29 Jul 2023 07:55:18 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C14EC3A99; Sat, 29 Jul 2023 04:55:16 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3174aac120aso2908158f8f.2; Sat, 29 Jul 2023 04:55:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690631715; x=1691236515; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=3q+L7EE1TkpxxmtRm93suLpVPlWGwO+iRnmPNbcpp6s=; b=mBzFMgkv1OVQE4vElaM8tRO+UIjOimxmAb5DV5QeM94ZFzpWQFOdFk2M2fD41NhPc4 tflz9ASQxYW29cxIZ6grhdZ9ItdUiW8LSJyrZ0LrBSGUXIlBehKvmyuoJfZYBieA3p/E r65MSx8lgQerIVQT/U6kTi1LTzc69NGnJV9gyAGOPEeCmjZtMLWTlQ/yNuYvQTYrE9Nv HplMhnrYmsng8g3v0koRlPXdcB4dRu+Ai1Jl/Qkp40vn8oQuMzl19Lnw+VoIfgudva3m 6w0QCX0y4eV1e9wDe4zXbuT9GWznY4MaT0So4WLHFKfnC/5yX/itBOz8+F+69VVoS7c0 JQTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690631715; x=1691236515; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3q+L7EE1TkpxxmtRm93suLpVPlWGwO+iRnmPNbcpp6s=; b=cVO41m/ZdiNPhSQX1ZUtrXuasSc7fUbb2OlMPqPrhk7uof24111Wtplkw86voWV4st xsg1LM3qSDLSDV9P3GPyHFC7tnWb+7AQ+ZTU1SKAJIeNuUEcjRrTYqHmMkVieYMHxlqp 1p0KtK8jj4wKC64QlkxrnhfKuO2nrmsB5jD59i6nXL0feHviL0Vofr9MTvIEx9jUDUb/ TbsjR50MMnMVBP8u71/0y9b+twWrZ4B+dfoceS1bTQcxvhrHt8bsQMRskzKOJnS0o8MS 44lufaYsFgdEMIuRQyUuUBIXgT5lXpvcHXkVY7rbAt5/g1BHhANwgSYDrcP7ZHdhvWDB uw2Q== X-Gm-Message-State: ABy/qLaodeEgqp+Vr6gB074Ds8/3yvohwiLWWwSWaz0+8VRGHVHEyhYI hYXTdMhwtug/gw8b8qx4If4= X-Received: by 2002:a5d:690e:0:b0:317:5cc7:794b with SMTP id t14-20020a5d690e000000b003175cc7794bmr3638169wru.13.1690631714702; Sat, 29 Jul 2023 04:55:14 -0700 (PDT) Received: from localhost.localdomain (host-87-11-86-47.retail.telecomitalia.it. [87.11.86.47]) by smtp.googlemail.com with ESMTPSA id x1-20020a5d54c1000000b003176f2d9ce5sm7295289wrv.71.2023.07.29.04.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 04:55:14 -0700 (PDT) From: Christian Marangi To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Marangi , Yang Yingliang , "Russell King (Oracle)" , Atin Bainada , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Simon Horman , Florian Fainelli Subject: [net-next PATCH v2 1/5] net: dsa: tag_qca: return early if dev is not found Date: Sat, 29 Jul 2023 13:55:05 +0200 Message-Id: <20230729115509.32601-1-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: INBOX X-GMAIL-THRID: 1772757803988621309 X-GMAIL-MSGID: 1772757803988621309 Currently checksum is recalculated and dsa tag stripped even if we later don't find the dev. To improve code, exit early if we don't find the dev and skip additional operation on the skb since it will be freed anyway. Signed-off-by: Christian Marangi Reviewed-by: Simon Horman Reviewed-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/tag_qca.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/dsa/tag_qca.c b/net/dsa/tag_qca.c index e757c8de06f1..e5ff7c34e577 100644 --- a/net/dsa/tag_qca.c +++ b/net/dsa/tag_qca.c @@ -75,10 +75,6 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev) return NULL; } - /* Remove QCA tag and recalculate checksum */ - skb_pull_rcsum(skb, QCA_HDR_LEN); - dsa_strip_etype_header(skb, QCA_HDR_LEN); - /* Get source port information */ port = FIELD_GET(QCA_HDR_RECV_SOURCE_PORT, hdr); @@ -86,6 +82,10 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev) if (!skb->dev) return NULL; + /* Remove QCA tag and recalculate checksum */ + skb_pull_rcsum(skb, QCA_HDR_LEN); + dsa_strip_etype_header(skb, QCA_HDR_LEN); + return skb; } From patchwork Sat Jul 29 11:55:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 128113 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp999433vqg; Sat, 29 Jul 2023 05:23:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlGX0drS/lCUZnK2lHXIseS5aTLxGA63cfa4owP5PUXh2haD3J2sgB3wwYsiiFX1SCjSQVZC X-Received: by 2002:a17:90a:df15:b0:268:52a6:103d with SMTP id gp21-20020a17090adf1500b0026852a6103dmr4725254pjb.9.1690633386590; Sat, 29 Jul 2023 05:23:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690633386; cv=none; d=google.com; s=arc-20160816; b=EN1zBWsnvY/ejfnHjFnLeaT9WqI895DCI6ddcOteNFXfQ9o8sHD4HIwHZjjJUCKYsS JZcFOKHB4IEVSquCalO+p8+mrnwunJ7sckrclTQSgsz/JJ2ez0b4g4EgXUK66ZbteZtP rDD1eWjl0x9djkbcu5nEFgvZ0JYTx95DIEIQBoJS86UbVTB9GBAyfkSCh9SPgA1wrfjn C3tb/txhHDZaLSh9aSTmRksOeVDNZvJ/Zaxg1yDLzGi66nubRDSgyXd5xaD27Hl9AwWX 0R+8BBL/Pw0fjX4NLG8GUehy0fU6jc5hLWln8cYg8iPseYwEA9+bWgD2VOWyn8wENQIh DnOQ== 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=LHLFz16W399qVNmvmODIwvF+gqIhV8D9L51W9B+pCHU=; fh=SJqbCx76JF9FzFCS+0vxoSQ3qwlYTNpQfaYJ6ITdV6U=; b=naIisCg/1j1Z6ptvC8lYLhhqs5H0b8n98o/oRXcaJmXrDRUhcPTqxEhhgj3WicyptI cqAUftQSXwRy2h5NAgxsobpG+hC1smiVKn8BJTY8sxeoFnQuMvz/AHB5TjK9bm15zQ57 R+ocC0fMdmNFA8e8rXkfP8OKIYQTkxQRShrHDGyC6rBosxebKs4h4VKfU+PKYagDZLn6 EbhuqHPymeh10J/h0b1cB9DrfSbh+pYgv1CzqM50Txo1SNQcVg8L6Dp5iV8llz3dLDzd 9vRLcJ650pqHeGvTs1teS4EJNXSemZo1utk8yQ7LXNHFmXlXEFfwFaW6SQSxWH3YbI7t wP1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Br621R6E; 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 w1-20020a17090a8a0100b00262f8c7ed18si6096689pjn.94.2023.07.29.05.22.53; Sat, 29 Jul 2023 05:23:06 -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=Br621R6E; 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 S230527AbjG2LzZ (ORCPT + 99 others); Sat, 29 Jul 2023 07:55:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230388AbjG2LzU (ORCPT ); Sat, 29 Jul 2023 07:55:20 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 379653A9B; Sat, 29 Jul 2023 04:55:18 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3159d5e409dso2961435f8f.0; Sat, 29 Jul 2023 04:55:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690631716; x=1691236516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LHLFz16W399qVNmvmODIwvF+gqIhV8D9L51W9B+pCHU=; b=Br621R6EwRtzQT6Ufb7IowghliEuTMXwl2BnEk4nL11w0ApVeNiyGG2cM4kgrjZsNs vjka/PV1FQvEnCAy2BJcOrzuvbdAnak4gc2W5jrDfKmgiICweV4OZtBzRZ/MBgoL2umC j1i4+6X8rJVT8B1111JbxeRTrd+VccFWfVPRo0uljLQJUTxY3MQnhdnZXTsd3hmi7edb TolXVQIkfh1p9ptusG4BnjViVIFmD039mfzcMpvK5x4k10tLmYccvbmYg4xYqKTcVWGF f+HS4Nlp2JhJs9mNU8I+1AE+18SE8l7om6UXvuhmSuHJBmyJkiVyLoVz/SSSiMzzfZK6 r9kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690631716; x=1691236516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LHLFz16W399qVNmvmODIwvF+gqIhV8D9L51W9B+pCHU=; b=Gzt4XT3JKRfKhnki9YWwZWzcPN/Bo4CbXDzR92J5qz0dZ9hi0ffI40NDAJ8ri0G+mT Hrz/R42lTbPEHJYG6WIIqZ6IdzQOEWVG8ACQMipNnCHhPDZXMbApWSnZwNmGu0xrOpt7 EOxyieSKscnVDalKluywW45SE/zLdXC4NAHiTxwA4rMoRNAzIMPU4ZhcQPWenjG9b3It WMB4kDly/YRogaNsxfSfP3U2CPVp0Xj0uwlXVFGj4Ua0zg4ZJ98GEkWLqXt4YwXZcwep x5FkAl+u+0RvYParZriVMfTP8/JFHcBzAXi8wdfGP79ypkIqy/BPqa6SjxmlpGyGBO4z Jngg== X-Gm-Message-State: ABy/qLaPis/g54eD8qlyP+EE4FuptepyYNx0kryh03dImVKOWSalE0f7 QOL51Ovyc4oMugon1bnnd70= X-Received: by 2002:a5d:6388:0:b0:314:314e:fdda with SMTP id p8-20020a5d6388000000b00314314efddamr7469969wru.23.1690631716316; Sat, 29 Jul 2023 04:55:16 -0700 (PDT) Received: from localhost.localdomain (host-87-11-86-47.retail.telecomitalia.it. [87.11.86.47]) by smtp.googlemail.com with ESMTPSA id x1-20020a5d54c1000000b003176f2d9ce5sm7295289wrv.71.2023.07.29.04.55.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 04:55:16 -0700 (PDT) From: Christian Marangi To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Marangi , Yang Yingliang , "Russell King (Oracle)" , Atin Bainada , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Florian Fainelli Subject: [net-next PATCH v2 2/5] net: dsa: qca8k: make learning configurable and keep off if standalone Date: Sat, 29 Jul 2023 13:55:06 +0200 Message-Id: <20230729115509.32601-2-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230729115509.32601-1-ansuelsmth@gmail.com> References: <20230729115509.32601-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,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=ham 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: INBOX X-GMAIL-THRID: 1772757594243074224 X-GMAIL-MSGID: 1772757594243074224 Address learning should initially be turned off by the driver for port operation in standalone mode, then the DSA core handles changes to it via ds->ops->port_bridge_flags(). Currently this is not the case for qca8k where learning is enabled unconditionally in qca8k_setup for every user port. Handle ports configured in standalone mode by making the learning configurable and not enabling it by default. Implement .port_pre_bridge_flags and .port_bridge_flags dsa ops to enable learning for bridge that request it and tweak .port_stp_state_set to correctly disable learning when port is configured in standalone mode. Signed-off-by: Christian Marangi Reviewed-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- drivers/net/dsa/qca/qca8k-8xxx.c | 7 +++-- drivers/net/dsa/qca/qca8k-common.c | 48 ++++++++++++++++++++++++++++++ drivers/net/dsa/qca/qca8k.h | 6 ++++ 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c index ae088a4df794..31552853fdd4 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1870,9 +1870,8 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; - /* Enable ARP Auto-learning by default */ - ret = regmap_set_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(i), - QCA8K_PORT_LOOKUP_LEARN); + ret = regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(i), + QCA8K_PORT_LOOKUP_LEARN); if (ret) return ret; @@ -1978,6 +1977,8 @@ static const struct dsa_switch_ops qca8k_switch_ops = { .port_change_mtu = qca8k_port_change_mtu, .port_max_mtu = qca8k_port_max_mtu, .port_stp_state_set = qca8k_port_stp_state_set, + .port_pre_bridge_flags = qca8k_port_pre_bridge_flags, + .port_bridge_flags = qca8k_port_bridge_flags, .port_bridge_join = qca8k_port_bridge_join, .port_bridge_leave = qca8k_port_bridge_leave, .port_fast_age = qca8k_port_fast_age, diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k-common.c index 13b8452ce5b2..fce04ce12cf9 100644 --- a/drivers/net/dsa/qca/qca8k-common.c +++ b/drivers/net/dsa/qca/qca8k-common.c @@ -565,9 +565,26 @@ int qca8k_get_mac_eee(struct dsa_switch *ds, int port, return 0; } +static int qca8k_port_configure_learning(struct dsa_switch *ds, int port, + bool learning) +{ + struct qca8k_priv *priv = ds->priv; + + if (learning) + return regmap_set_bits(priv->regmap, + QCA8K_PORT_LOOKUP_CTRL(port), + QCA8K_PORT_LOOKUP_LEARN); + else + return regmap_clear_bits(priv->regmap, + QCA8K_PORT_LOOKUP_CTRL(port), + QCA8K_PORT_LOOKUP_LEARN); +} + void qca8k_port_stp_state_set(struct dsa_switch *ds, int port, u8 state) { + struct dsa_port *dp = dsa_to_port(ds, port); struct qca8k_priv *priv = ds->priv; + bool learning = false; u32 stp_state; switch (state) { @@ -582,8 +599,11 @@ void qca8k_port_stp_state_set(struct dsa_switch *ds, int port, u8 state) break; case BR_STATE_LEARNING: stp_state = QCA8K_PORT_LOOKUP_STATE_LEARNING; + learning = dp->learning; break; case BR_STATE_FORWARDING: + learning = dp->learning; + fallthrough; default: stp_state = QCA8K_PORT_LOOKUP_STATE_FORWARD; break; @@ -591,6 +611,34 @@ void qca8k_port_stp_state_set(struct dsa_switch *ds, int port, u8 state) qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(port), QCA8K_PORT_LOOKUP_STATE_MASK, stp_state); + + qca8k_port_configure_learning(ds, port, learning); +} + +int qca8k_port_pre_bridge_flags(struct dsa_switch *ds, int port, + struct switchdev_brport_flags flags, + struct netlink_ext_ack *extack) +{ + if (flags.mask & ~BR_LEARNING) + return -EINVAL; + + return 0; +} + +int qca8k_port_bridge_flags(struct dsa_switch *ds, int port, + struct switchdev_brport_flags flags, + struct netlink_ext_ack *extack) +{ + int ret; + + if (flags.mask & BR_LEARNING) { + ret = qca8k_port_configure_learning(ds, port, + flags.val & BR_LEARNING); + if (ret) + return ret; + } + + return 0; } int qca8k_port_bridge_join(struct dsa_switch *ds, int port, diff --git a/drivers/net/dsa/qca/qca8k.h b/drivers/net/dsa/qca/qca8k.h index c5cc8a172d65..8f88b7db384d 100644 --- a/drivers/net/dsa/qca/qca8k.h +++ b/drivers/net/dsa/qca/qca8k.h @@ -522,6 +522,12 @@ int qca8k_get_mac_eee(struct dsa_switch *ds, int port, struct ethtool_eee *e); /* Common bridge function */ void qca8k_port_stp_state_set(struct dsa_switch *ds, int port, u8 state); +int qca8k_port_pre_bridge_flags(struct dsa_switch *ds, int port, + struct switchdev_brport_flags flags, + struct netlink_ext_ack *extack); +int qca8k_port_bridge_flags(struct dsa_switch *ds, int port, + struct switchdev_brport_flags flags, + struct netlink_ext_ack *extack); int qca8k_port_bridge_join(struct dsa_switch *ds, int port, struct dsa_bridge bridge, bool *tx_fwd_offload, From patchwork Sat Jul 29 11:55:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 128126 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp1037584vqg; Sat, 29 Jul 2023 06:44:51 -0700 (PDT) X-Google-Smtp-Source: APBJJlFGPg4vJLfuQ5g/FOT2K5bcDODKx56Ut58eUkxYjZhjJO6gEgfSAvQh3rFMbr/BoNuRO90b X-Received: by 2002:a05:6a20:3d8e:b0:134:a8a1:3bf with SMTP id s14-20020a056a203d8e00b00134a8a103bfmr5168063pzi.30.1690638291026; Sat, 29 Jul 2023 06:44:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690638291; cv=none; d=google.com; s=arc-20160816; b=EyQvEheturB+dKQb0BQdi+aBRmhrgdXzVotTcBDiAH4NeigfDTCYdRWd7xx5rbneNU Uyep4632KlrfS++QHWmAwO7gjEzkGX0KpmHEneZdJrOpA8rnqiXh8xEyLjyP/qYJr71e VLuN8kPcoYjYyUrDzmsyBmaJfWW5uublBrDN6JjB97XUXf6DW0wSQyRTz+u/pLWenlN4 W6z6U0ZfdGm/uy+w+0NfGcec4YEQkW6VUR9sRvTJFyauYto6yUdatt4LRRc7TErsPDbb duYZwWMmlmTZiQgtkFouhc34HKKQdRnMhbAQo+9ezjZud/0FuV8R9m8jvWxlY3BB/tDy gyfA== 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=8Vvhoh9QJAZ5vY3S5v394L9Qg5vdXetVA6QXz3jblEY=; fh=Oew/6E1ENQAh5GvI/ZomWrmwHkVqdSnWJdtcQgJEhKI=; b=KZPjUMDBbMLnYzoh5LPThpDOtiU7Xpt0mTYNT+p0/w7ff7FzjiJe2rjhI5fugK1Lt9 s8xE5ZYOS716u9hAivB+B72AG64UV4BGfWTC/bS6fKs+SrBiEPCFgNwKRnDG73VoudPy I0RrmoopFbSU0spIwEsF7VThIGlERH4nWXPWw5yWDxRuEU5HbhvgytRV1oBcpEs9SozC vGkST6up12bMKMSKafh1tNaqI3dLTHDYXahHHjqgM7EpwKqBuE34ax6lqUeQlUm4wLRj vUMRb5Q1o1KJBHAlIQ0zVYDAAHtquStwUw+L2x9okjNw7oAiI/bK8PQF3tXoqgOS5CBm Wj0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=YTsZ3Wet; 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 s4-20020a056a0008c400b00682a0e45b59si4728714pfu.85.2023.07.29.06.44.38; Sat, 29 Jul 2023 06:44: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=@gmail.com header.s=20221208 header.b=YTsZ3Wet; 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 S231577AbjG2Lz1 (ORCPT + 99 others); Sat, 29 Jul 2023 07:55:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231124AbjG2LzW (ORCPT ); Sat, 29 Jul 2023 07:55:22 -0400 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D5093A9A; Sat, 29 Jul 2023 04:55:20 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-317744867a6so2892841f8f.1; Sat, 29 Jul 2023 04:55:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690631718; x=1691236518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8Vvhoh9QJAZ5vY3S5v394L9Qg5vdXetVA6QXz3jblEY=; b=YTsZ3WetzFF2lSQzN8eTim4wzeGEeKvnpMKvOQd687rYOl+i+uP+cHh/qzqg3avwgL YLItAtWDH+xxcQtE2VY0dXMMBJqTdK89eSAiv7TnDRd0Rl4/f5HE3tqM5j4IyU7z+POL ocBEOdjf70DkJ7zMWdgATd80Us57UfmjfwgLoI1Gsx7NhzgMj75ykk79Sc8iFbloc9RU 8MdcJ6kG0RYS7SXu8WVPdsA3hfFYL/tjfgXwQgyOOIXo31EjUZnLfgYhs5hGVQO6NmjX rCPgMEHXfgJNd3HUY8z1t3U3rzOhMUC6uAK170Q5kNGw+VBpnAjag6mgkVC5i55JIzg3 zv7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690631718; x=1691236518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8Vvhoh9QJAZ5vY3S5v394L9Qg5vdXetVA6QXz3jblEY=; b=aWvnb0DEHRW48d2hiEZoQXBXZPb3h73Txsf024boQjlVLaeybb4Jr/ie9hDaQ/7OcS ZO8kfbMXcAgS6VKdmt6cXvOEOVXZSXe7d88PBZ2Dw7HdEQNeIvlooVPNfs6iOv1LFXhA yBeZnITfkv4WHJxJ4Y//AsESXOgNRWteMjgYgvmsWo6K0hNByq1XJzu3E6hJ2CxUHnzu 2Sj8HcuW/XaVKLSvsgB3NFrnRE9I4CUGRlF56G656qJmz+AreWsaao/ATjDPzhw1CLO8 TkCEjq1iqHpk/LkBUCHXYoKKyPA0I5+zC38jV5+ESbn1+rGThUe3PJOfAyLTmFbvxTdm j0ig== X-Gm-Message-State: ABy/qLZfN7sx1gp644t5FskdxX0L0a5WDMXXoKXLQg17lQPJio7Rs80f 5mPjS6bw8FOMTQJ8Tr2L8xo= X-Received: by 2002:a05:6000:1a47:b0:317:6ebe:d7c5 with SMTP id t7-20020a0560001a4700b003176ebed7c5mr3442130wry.51.1690631717945; Sat, 29 Jul 2023 04:55:17 -0700 (PDT) Received: from localhost.localdomain (host-87-11-86-47.retail.telecomitalia.it. [87.11.86.47]) by smtp.googlemail.com with ESMTPSA id x1-20020a5d54c1000000b003176f2d9ce5sm7295289wrv.71.2023.07.29.04.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 04:55:17 -0700 (PDT) From: Christian Marangi To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Marangi , Yang Yingliang , "Russell King (Oracle)" , Atin Bainada , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Simon Horman , Florian Fainelli Subject: [net-next PATCH v2 3/5] net: dsa: qca8k: limit user ports access to the first CPU port on setup Date: Sat, 29 Jul 2023 13:55:07 +0200 Message-Id: <20230729115509.32601-3-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230729115509.32601-1-ansuelsmth@gmail.com> References: <20230729115509.32601-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: INBOX X-GMAIL-THRID: 1772762736775079469 X-GMAIL-MSGID: 1772762736775079469 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 Reviewed-by: Simon Horman Reviewed-by: Florian Fainelli Reviewed-by: Vladimir Oltean --- 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), From patchwork Sat Jul 29 11:55:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 128115 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp1010013vqg; Sat, 29 Jul 2023 05:48:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlER1sfd1jguhFmpy/+zoRKmnr0OSs5rabBOuiXcexlQspDce8wZMeDYebNAXDejCtBlz5+u X-Received: by 2002:a17:90a:ab92:b0:268:4c01:eb56 with SMTP id n18-20020a17090aab9200b002684c01eb56mr3959518pjq.2.1690634894975; Sat, 29 Jul 2023 05:48:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690634894; cv=none; d=google.com; s=arc-20160816; b=s5TAKc2sH/+3oResiUDaNFa6UlBNjMTKm7Y0MeE78RZqsTg1DioMowrGSqNcMf4o8p GhL/1/rMblJhUf8E6HxWvM1o7ONNQ2ojeXQbi5V3R/xuxn4I9xyh6JUc8nbijKMv2BbN yjgKL4jKlvbRqX57ghGrN5UYHhOK5/PES8qKMtz96OXfXfidWkX6LYA/GTLKNvGORCot GFvquDqXPimigIDL+dnpLpIAIqRBzFxbx3UKqxcVeHl+Y8r5t8mkESfvetq0RBq6jIeA ZxnCgm+ZdpAJTfQyDO166gyqBMx44+cS26jrfcqaKp9iwdo9AdM8ACevTRR60bSBbf7k 6z0A== 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=DfBFXLrOBDfsMdVxv/cKnvMiArytdOBrw7zZET7q5qM=; fh=KbTp3YOC+dPfuBo4OA3inivcBBC3yvrCP4k7b+OoJMQ=; b=YtQCsr2htt/fUnDHItRwmGTXIaGh6ilDWOENEpnpb1NVKYOS/bhPOIZThkbUBkl0uC izqCBwWZ2djcarR8IoYb5LZKgvhIjI8yCK5gVE9CKUioGsFJ1l0BKEBYJlFVj/l8P2Tm 7SzoQ6C3SYeX8fIYxJ/tTym5dR1B9rUje5Go1GdQbSMMx3by9vER/MRb4kA9Xyxhql+A Hp6WflT8T+O2J6FMMVNBfbXOPXLOqsnGUlee+Gxxwd/54GC51HfpAMUSFq8P7b6mvJ6M ECJ/2BiyqeLlLU6Fc2aAAnc7mrioHAQSMO23K0nFwJP3Y0MocOo86zZh+yCHyUjRjW8R U3aA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=IrbJYMmu; 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 d33-20020a631d61000000b0054f993d7f29si4397628pgm.563.2023.07.29.05.47.59; Sat, 29 Jul 2023 05:48:14 -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=IrbJYMmu; 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 S231726AbjG2Lza (ORCPT + 99 others); Sat, 29 Jul 2023 07:55:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230458AbjG2LzX (ORCPT ); Sat, 29 Jul 2023 07:55:23 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F3B13C00; Sat, 29 Jul 2023 04:55:21 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-31771bb4869so3098639f8f.0; Sat, 29 Jul 2023 04:55:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690631719; x=1691236519; 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=DfBFXLrOBDfsMdVxv/cKnvMiArytdOBrw7zZET7q5qM=; b=IrbJYMmu02I6mT+quaOTXQEimBZCPtAQIJ1LcwiJAdsCdftuE3RjQsL/s3RUq22oz+ JU/7dBwSfB+upNbRnQipOzGDrTDmfJJSLiOXbXxJU1an54IYtsVF5TF3KPz8AfiBWnuB C0BXttuLXqcCOmZ+AngNEKm6TQPP//OkY760EAWQVngvO06iQMMD0gUtTdiEpgpPERB9 jOyxURNnYEqzORUBhvWkQEx4ZDPfvgdPAC198TVcySh8M90bVqL6PUP3CVjRZ3obozh/ 0Xh6RqxpD4mdTLLunQipOgqvynyFCfp9jMXID5MGdLyRvc0n837XMBd0luosGS0DRcs7 H8hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690631719; x=1691236519; 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=DfBFXLrOBDfsMdVxv/cKnvMiArytdOBrw7zZET7q5qM=; b=LK/QOr9WxfqhWsep79kL9BCB8I0GBQywWMdIkBQb+00SRaFIz4b9SznbusHqjq/81h b0X243TrItEiy/LgCDY1O0s0DSYBnYTsQSEVK4W7n0NlvXA7Ls3B9or4RoVu3dlr/URG w63WsQLcdvbtVZV7x1FI/U9mgHBJtiZ0Yg0CzU7Q2XcHbMk6BWVq8Y/AJl5Bl9+nVyKu 8P76t5Axrs0S/YNx1zhNsNZH5erxsveczKovcdFJK96vxhNs9G1ReCikTXLCvpLcZkFL VhzNfotGKlM6kxqAMIcIUfda8MI/MeSMxXyOMuWBwWOEJt7yjEXy5SjMghYNxN6eHWJ+ mDPQ== X-Gm-Message-State: ABy/qLamWkhQ/ek9iC57I5MgZMgULZigiYDq/X37+dcA5V2HkxWtvMpt xFfAsc42dkT50LpWk5ydKtM= X-Received: by 2002:a5d:40ce:0:b0:314:1313:c3d6 with SMTP id b14-20020a5d40ce000000b003141313c3d6mr1807231wrq.33.1690631719386; Sat, 29 Jul 2023 04:55:19 -0700 (PDT) Received: from localhost.localdomain (host-87-11-86-47.retail.telecomitalia.it. [87.11.86.47]) by smtp.googlemail.com with ESMTPSA id x1-20020a5d54c1000000b003176f2d9ce5sm7295289wrv.71.2023.07.29.04.55.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 04:55:19 -0700 (PDT) From: Christian Marangi To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Marangi , Yang Yingliang , "Russell King (Oracle)" , Atin Bainada , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [net-next PATCH v2 4/5] net: dsa: qca8k: move qca8xxx hol fixup to separate function Date: Sat, 29 Jul 2023 13:55:08 +0200 Message-Id: <20230729115509.32601-4-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230729115509.32601-1-ansuelsmth@gmail.com> References: <20230729115509.32601-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,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=ham 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: INBOX X-GMAIL-THRID: 1772759175881920941 X-GMAIL-MSGID: 1772759175881920941 Move qca8xxx hol fixup to separate function to tidy things up and to permit using a more efficent loop in future patch. Signed-off-by: Christian Marangi --- drivers/net/dsa/qca/qca8k-8xxx.c | 78 +++++++++++++++++--------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c index 6286a64a2fe3..81c6fab0a01b 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1756,6 +1756,46 @@ static int qca8k_connect_tag_protocol(struct dsa_switch *ds, return 0; } +static void qca8k_setup_hol_fixup(struct qca8k_priv *priv, int port) +{ + u32 mask; + + switch (port) { + /* The 2 CPU port and port 5 requires some different + * priority than any other ports. + */ + case 0: + case 5: + case 6: + mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | + QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI4(0x6) | + QCA8K_PORT_HOL_CTRL0_EG_PRI5(0x8) | + QCA8K_PORT_HOL_CTRL0_EG_PORT(0x1e); + break; + default: + mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | + QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x6) | + QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x8) | + QCA8K_PORT_HOL_CTRL0_EG_PORT(0x19); + } + regmap_write(priv->regmap, QCA8K_REG_PORT_HOL_CTRL0(port), mask); + + mask = QCA8K_PORT_HOL_CTRL1_ING(0x6) | + QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | + QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | + QCA8K_PORT_HOL_CTRL1_WRED_EN; + regmap_update_bits(priv->regmap, QCA8K_REG_PORT_HOL_CTRL1(port), + QCA8K_PORT_HOL_CTRL1_ING_BUF_MASK | + QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | + QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | + QCA8K_PORT_HOL_CTRL1_WRED_EN, + mask); +} + static int qca8k_setup(struct dsa_switch *ds) { @@ -1895,42 +1935,8 @@ qca8k_setup(struct dsa_switch *ds) * missing settings to improve switch stability under load condition. * This problem is limited to qca8337 and other qca8k switch are not affected. */ - if (priv->switch_id == QCA8K_ID_QCA8337) { - switch (i) { - /* The 2 CPU port and port 5 requires some different - * priority than any other ports. - */ - case 0: - case 5: - case 6: - mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | - QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI4(0x6) | - QCA8K_PORT_HOL_CTRL0_EG_PRI5(0x8) | - QCA8K_PORT_HOL_CTRL0_EG_PORT(0x1e); - break; - default: - mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | - QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x6) | - QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x8) | - QCA8K_PORT_HOL_CTRL0_EG_PORT(0x19); - } - qca8k_write(priv, QCA8K_REG_PORT_HOL_CTRL0(i), mask); - - mask = QCA8K_PORT_HOL_CTRL1_ING(0x6) | - QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | - QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | - QCA8K_PORT_HOL_CTRL1_WRED_EN; - qca8k_rmw(priv, QCA8K_REG_PORT_HOL_CTRL1(i), - QCA8K_PORT_HOL_CTRL1_ING_BUF_MASK | - QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | - QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | - QCA8K_PORT_HOL_CTRL1_WRED_EN, - mask); - } + if (priv->switch_id == QCA8K_ID_QCA8337) + qca8k_setup_hol_fixup(priv, i); } /* Special GLOBAL_FC_THRESH value are needed for ar8327 switch */ From patchwork Sat Jul 29 11:55:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 128121 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp1036860vqg; Sat, 29 Jul 2023 06:42:59 -0700 (PDT) X-Google-Smtp-Source: APBJJlEQvKdVc0rglvmyVas/8Czgne+MKTyom+jAOOMd+2r7AmJEkMO2mRIQo+x2lpl+ymRhWoJf X-Received: by 2002:a17:90b:1a87:b0:262:c41e:1fcb with SMTP id ng7-20020a17090b1a8700b00262c41e1fcbmr5666485pjb.14.1690638179597; Sat, 29 Jul 2023 06:42:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690638179; cv=none; d=google.com; s=arc-20160816; b=M0/ylsAnsw0FIpQDa9Wfx1gJ7J9Ar5uleunfay2TpJ53VTggVzITlX/riw+z4vF7Hq WpOcOA8sXoNPgogOgVgCXNfQr4fhUKMS8ISFGEq2CH8+zMCvXyIAITadGFFMLQODMtol +I19CQN2Ds/r9xJIM/juNZc0eA8xpDC+ivYu3aPoXwRSp/xNT76SoV9RopY7ZoyauZHy 3aCylM/P0Fpix+xd+QRyNDRFIvV7JyEOWhBALSAPuKFk7SFA8yTdLEvVjFNJqks374mM pOa0hoxegkrTQ73Yyypnflefu+OuocGz/YKVyrKIzF8Mh3JUpoZGpTDsSzLKhPb9hVI3 ENeA== 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=ctqBlXAMiyfYnaRkeShVlw6aAtoUNpe2VhMc2FK4fLQ=; fh=KbTp3YOC+dPfuBo4OA3inivcBBC3yvrCP4k7b+OoJMQ=; b=WRaSgHkIKE6lbc33WSO9QZ+q5hTV3gz/CKYoafygy7ILR6d/cFiHN7UBR9DBiU97OJ zurNU4E+d48v5B4a1/Wqlwyt4AxG25YvZNmzYDZ3PgpDS4ZeyvXvvOO7IQbtKoBJsLwQ WMH0TQa+VBYj2lWlB5wt6DrfyKAfJRS+Ej6+X/6cqgSQUr2JdbzqM5DyIByBahHUf3Zw TxmrIc1t1i/EywGHyYpN5qlAgFpDDw7r0TBNwLXiG1N5eKG5P/VoK7FO48Qerh63FwqH 63GMS/WgBCH9swlk1kbrMMZpJ5WLqrX8SzmcprJfUafdhtbL4GvqcA3VOAsqiQzioZxi mAGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ruhCYpM0; 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 pc13-20020a17090b3b8d00b00263a5cf8e64si4905010pjb.67.2023.07.29.06.42.45; Sat, 29 Jul 2023 06:42:59 -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=ruhCYpM0; 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 S231308AbjG2Lzi (ORCPT + 99 others); Sat, 29 Jul 2023 07:55:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230372AbjG2Lzb (ORCPT ); Sat, 29 Jul 2023 07:55:31 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 928303C12; Sat, 29 Jul 2023 04:55:23 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3110ab7110aso3071365f8f.3; Sat, 29 Jul 2023 04:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690631721; x=1691236521; 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=ctqBlXAMiyfYnaRkeShVlw6aAtoUNpe2VhMc2FK4fLQ=; b=ruhCYpM0VA1adzFUHQmltvoyU40eNELLez5iSNCCpniZ1z6uyTUWWgrQZspRlAyRrk 4VYAW+WP4wZ+hacbtMXfrmyqoH302qatnH84OeRB0kMLiyMo9OsVhoBfV2QaiVPR7Hub K2/FK6vJwQ6J5392snlv69yWGWVNEMfqlUfn/zCeCYnPm1mcmbs/FHx7iHK5Tnc8kYTJ a8SL/BsaDPz1XjKwwOYNRnzW7kMWhg9r7KbSXXZduOEDDTN/vV5RV0cdbRd2Bh5hfJCO wFp1uRU0KZFg/piFydPmmW6ahqAaY8G2wyU6SotcznKnPtuFq4ar4iaHIgm9Qp9rmPBc oG4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690631721; x=1691236521; 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=ctqBlXAMiyfYnaRkeShVlw6aAtoUNpe2VhMc2FK4fLQ=; b=dlpLIn37p3kHvXWT3L9U9GlvYQWNta2osWp5G01rRQclJlc0D3wHe+8mAcdWcTaTcJ 23tz3PuJd11m+0DPpxiQL4G7PZj1zg3tMgj6ulGAHZuJfhnBRQRTfbRCtxQxKR2FlHRY aKDdXdSnToYiSQe5/GcPh+AVOCkgFdEQYurb3ZjD+SFaNMcPXHmn3erpj2UJKmUBx9zd 66NNHEh+cXaAdRsZJUUotfjxv3vzuCpG/qmuzh5C9ASJUQ5ZyuFu3mq04qt3h2xiH515 /vi8kcgLVFRCJvLZ0Bw4ZmlDh8SH5k6aSHL74+lHtZ2fyRYbvq6qdeV7vttTGCLRz1bj UFow== X-Gm-Message-State: ABy/qLY8pFF58ruJywZjBla7c2rFmZbHoqsYzH2La/mzYDxMhSxbcIun xre8mz1gWerUqYsloat0noT6rHOXkqolDA== X-Received: by 2002:a5d:5305:0:b0:313:f0d7:a43 with SMTP id e5-20020a5d5305000000b00313f0d70a43mr4025556wrv.23.1690631720861; Sat, 29 Jul 2023 04:55:20 -0700 (PDT) Received: from localhost.localdomain (host-87-11-86-47.retail.telecomitalia.it. [87.11.86.47]) by smtp.googlemail.com with ESMTPSA id x1-20020a5d54c1000000b003176f2d9ce5sm7295289wrv.71.2023.07.29.04.55.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 04:55:20 -0700 (PDT) From: Christian Marangi To: Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Marangi , Yang Yingliang , "Russell King (Oracle)" , Atin Bainada , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [net-next PATCH v2 5/5] net: dsa: qca8k: use dsa_for_each macro instead of for loop Date: Sat, 29 Jul 2023 13:55:09 +0200 Message-Id: <20230729115509.32601-5-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230729115509.32601-1-ansuelsmth@gmail.com> References: <20230729115509.32601-1-ansuelsmth@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: INBOX X-GMAIL-THRID: 1772762619683505046 X-GMAIL-MSGID: 1772762619683505046 Convert for loop to dsa_for_each macro to save some redundant write on unconnected/unused port and tidy things up. Signed-off-by: Christian Marangi --- drivers/net/dsa/qca/qca8k-8xxx.c | 109 ++++++++++++++++--------------- 1 file changed, 57 insertions(+), 52 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c index 81c6fab0a01b..1434f145aa9c 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1800,7 +1800,8 @@ static int qca8k_setup(struct dsa_switch *ds) { struct qca8k_priv *priv = ds->priv; - int cpu_port, ret, i; + int cpu_port, ret, port; + struct dsa_port *dp; u32 mask; cpu_port = qca8k_find_cpu_port(ds); @@ -1855,27 +1856,31 @@ qca8k_setup(struct dsa_switch *ds) dev_warn(priv->dev, "mib init failed"); /* Initial setup of all ports */ - for (i = 0; i < QCA8K_NUM_PORTS; i++) { + dsa_switch_for_each_port(dp, ds) { + port = dp->index; + /* Disable forwarding by default on all ports */ - ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i), + ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(port), QCA8K_PORT_LOOKUP_MEMBER, 0); if (ret) return ret; - /* Enable QCA header mode on all cpu ports */ - if (dsa_is_cpu_port(ds, i)) { - ret = qca8k_write(priv, QCA8K_REG_PORT_HDR_CTRL(i), - FIELD_PREP(QCA8K_PORT_HDR_CTRL_TX_MASK, QCA8K_PORT_HDR_CTRL_ALL) | - FIELD_PREP(QCA8K_PORT_HDR_CTRL_RX_MASK, QCA8K_PORT_HDR_CTRL_ALL)); - if (ret) { - dev_err(priv->dev, "failed enabling QCA header mode"); - return ret; - } - } - /* Disable MAC by default on all user ports */ if (dsa_is_user_port(ds, i)) - qca8k_port_set_status(priv, i, 0); + qca8k_port_set_status(priv, port, 0); + } + + /* Enable QCA header mode on all cpu ports */ + dsa_switch_for_each_cpu_port(dp, ds) { + port = dp->index; + + ret = qca8k_write(priv, QCA8K_REG_PORT_HDR_CTRL(port), + FIELD_PREP(QCA8K_PORT_HDR_CTRL_TX_MASK, QCA8K_PORT_HDR_CTRL_ALL) | + FIELD_PREP(QCA8K_PORT_HDR_CTRL_RX_MASK, QCA8K_PORT_HDR_CTRL_ALL)); + if (ret) { + dev_err(priv->dev, "failed enabling QCA header mode on port %d", port); + return ret; + } } /* Forward all unknown frames to CPU port for Linux processing @@ -1897,48 +1902,48 @@ qca8k_setup(struct dsa_switch *ds) return ret; /* Setup connection between CPU port & user ports - * Configure specific switch configuration for ports + * Individual user ports get connected to CPU port only */ - for (i = 0; i < QCA8K_NUM_PORTS; i++) { - /* 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), - QCA8K_PORT_LOOKUP_MEMBER, - BIT(cpu_port)); - if (ret) - return ret; - - ret = regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(i), - QCA8K_PORT_LOOKUP_LEARN); - if (ret) - return ret; - - /* For port based vlans to work we need to set the - * default egress vid - */ - ret = qca8k_rmw(priv, QCA8K_EGRESS_VLAN(i), - QCA8K_EGREES_VLAN_PORT_MASK(i), - QCA8K_EGREES_VLAN_PORT(i, QCA8K_PORT_VID_DEF)); - if (ret) - return ret; - - ret = qca8k_write(priv, QCA8K_REG_PORT_VLAN_CTRL0(i), - QCA8K_PORT_VLAN_CVID(QCA8K_PORT_VID_DEF) | - QCA8K_PORT_VLAN_SVID(QCA8K_PORT_VID_DEF)); - if (ret) - return ret; - } + dsa_switch_for_each_user_port(dp, ds) { + port = dp->index; - /* The port 5 of the qca8337 have some problem in flood condition. The - * original legacy driver had some specific buffer and priority settings - * for the different port suggested by the QCA switch team. Add this - * missing settings to improve switch stability under load condition. - * This problem is limited to qca8337 and other qca8k switch are not affected. + ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(port), + QCA8K_PORT_LOOKUP_MEMBER, + BIT(cpu_port)); + if (ret) + return ret; + + ret = regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(port), + QCA8K_PORT_LOOKUP_LEARN); + if (ret) + return ret; + + /* For port based vlans to work we need to set the + * default egress vid */ - if (priv->switch_id == QCA8K_ID_QCA8337) - qca8k_setup_hol_fixup(priv, i); + ret = qca8k_rmw(priv, QCA8K_EGRESS_VLAN(port), + QCA8K_EGREES_VLAN_PORT_MASK(port), + QCA8K_EGREES_VLAN_PORT(port, QCA8K_PORT_VID_DEF)); + if (ret) + return ret; + + ret = qca8k_write(priv, QCA8K_REG_PORT_VLAN_CTRL0(port), + QCA8K_PORT_VLAN_CVID(QCA8K_PORT_VID_DEF) | + QCA8K_PORT_VLAN_SVID(QCA8K_PORT_VID_DEF)); + if (ret) + return ret; } + /* The port 5 of the qca8337 have some problem in flood condition. The + * original legacy driver had some specific buffer and priority settings + * for the different port suggested by the QCA switch team. Add this + * missing settings to improve switch stability under load condition. + * This problem is limited to qca8337 and other qca8k switch are not affected. + */ + if (priv->switch_id == QCA8K_ID_QCA8337) + dsa_switch_for_each_available_port(dp, ds) + qca8k_setup_hol_fixup(priv, dp->index); + /* Special GLOBAL_FC_THRESH value are needed for ar8327 switch */ if (priv->switch_id == QCA8K_ID_QCA8327) { mask = QCA8K_GLOBAL_FC_GOL_XON_THRES(288) |