From patchwork Fri Feb 12 01:05:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 382107 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0ADCC43331 for ; Fri, 12 Feb 2021 01:07:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6064364E3C for ; Fri, 12 Feb 2021 01:07:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230147AbhBLBG5 (ORCPT ); Thu, 11 Feb 2021 20:06:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230000AbhBLBGf (ORCPT ); Thu, 11 Feb 2021 20:06:35 -0500 Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0ACAFC06178C; Thu, 11 Feb 2021 17:05:55 -0800 (PST) Received: by mail-ej1-x636.google.com with SMTP id jj19so13064513ejc.4; Thu, 11 Feb 2021 17:05:54 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=x63lLl9f+6cQ+FEOwh37vVD+gThLxL62LXc3QDA9ZeM=; b=KfCAY4lP33QDHT0k9N7q51JKgczm/uW6gJiBXvMUbxSn8ZP9vfh6DjeQFnIBTD4+8o LWIRUo8r9AdwNJF71j6r6ai21d1yC8WKXI2youqPwQ8UoLw9LeY2pDKQ4l974K/Xvmwn CBNaqO29UAxIOn7x1amAmU9BjKwQjJIBlp+ViCImGg53WCrkxFUrrxnVryHn7WMTpBlF 6xZvyoUYLmGZJ/tC0xCdfH/wI20z/OrObo3qGI3dMVwTs5Wz3eWW2XEVCYmRjGWZs04N BD2vh2WiQUl5yjcAy/khsRgdykHfrZnvwByluiZIce8nlap7ZTBOERGQXVqN8G5uX27J ES1w== 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:mime-version:content-transfer-encoding; bh=x63lLl9f+6cQ+FEOwh37vVD+gThLxL62LXc3QDA9ZeM=; b=RvSKoO3FFMDSW0WrhEJv4Od7m1hPPJvZ1IyvUXscfxs7GNVlJtxhMQrI94LHyqz/E2 sGCA75WWPTuKIrJwr55eeeW3xgpidyAhSHNLq7PRulyP2tWe0IHmuDD+Wld6mOMoCkg1 KSiH3fQt1ULGCKAnlgphDz7s/S/F8GubFmmk1GeNvRiId5D4sMylD1//0DrsGzNRvNED xRIXv685w+RP2xYjLzvT8RfqS0vh5IFKdBeMbNKRrz9wt1XW/zF+AJpeMbQCMaX854n4 B6rAVfrbWFc+7UMrPd3PdilZibQKgoe6ewrmmNTaEtapXIhlUw0kKKSrpVqQOmbJ/nZs y09g== X-Gm-Message-State: AOAM532u1cH1+C9qw8DhwRPAp/SQ6KOfDiuHFTgbk1qGEo0UYh6LJM/i wNfE2gW8wV0n2fjy39PkaH8= X-Google-Smtp-Source: ABdhPJzsadcYtGxZnvv0wQ+VzhBn04SUAgZ7bLfop/RjYd1jljO0zuYE3HYa2pzcQmfkC12qW9EJdg== X-Received: by 2002:a17:906:a090:: with SMTP id q16mr479308ejy.236.1613091953672; Thu, 11 Feb 2021 17:05:53 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id z13sm5019580edc.73.2021.02.11.17.05.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 17:05:53 -0800 (PST) From: Vladimir Oltean To: Jakub Kicinski , "David S. Miller" Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org, Roopa Prabhu , Nikolay Aleksandrov , Jiri Pirko , Ido Schimmel , Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Vadym Kochan , Taras Chornyi , Grygorii Strashko , Ioana Ciornei , Ivan Vecera , linux-omap@vger.kernel.org Subject: [PATCH v4 net-next 7/9] net: mscc: ocelot: use separate flooding PGID for broadcast Date: Fri, 12 Feb 2021 03:05:29 +0200 Message-Id: <20210212010531.2722925-8-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210212010531.2722925-1-olteanv@gmail.com> References: <20210212010531.2722925-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org From: Vladimir Oltean In preparation of offloading the bridge port flags which have independent settings for unknown multicast and for broadcast, we should also start reserving one destination Port Group ID for the flooding of broadcast packets, to allow configuring it individually. Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- Changes in v4: None. Changes in v3: None. Changes in v2: None. drivers/net/ethernet/mscc/ocelot.c | 13 ++++++++----- include/soc/mscc/ocelot.h | 15 ++++++++------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c index 1654a6e22a7d..1a31598e2ae6 100644 --- a/drivers/net/ethernet/mscc/ocelot.c +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -1716,7 +1716,7 @@ int ocelot_init(struct ocelot *ocelot) /* Setup flooding PGIDs */ for (i = 0; i < ocelot->num_flooding_pgids; i++) ocelot_write_rix(ocelot, ANA_FLOODING_FLD_MULTICAST(PGID_MC) | - ANA_FLOODING_FLD_BROADCAST(PGID_MC) | + ANA_FLOODING_FLD_BROADCAST(PGID_BC) | ANA_FLOODING_FLD_UNICAST(PGID_UC), ANA_FLOODING, i); ocelot_write(ocelot, ANA_FLOODING_IPMC_FLD_MC6_DATA(PGID_MCIPV6) | @@ -1737,15 +1737,18 @@ int ocelot_init(struct ocelot *ocelot) ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_SRC + port); } - /* Allow broadcast MAC frames. */ for_each_nonreserved_multicast_dest_pgid(ocelot, i) { u32 val = ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports - 1, 0)); ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i); } - ocelot_write_rix(ocelot, - ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), - ANA_PGID_PGID, PGID_MC); + /* Allow broadcast and unknown L2 multicast to the CPU. */ + ocelot_rmw_rix(ocelot, ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)), + ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)), + ANA_PGID_PGID, PGID_MC); + ocelot_rmw_rix(ocelot, ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)), + ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)), + ANA_PGID_PGID, PGID_BC); ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4); ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6); diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h index bfce3df61bfd..9acbef1416f1 100644 --- a/include/soc/mscc/ocelot.h +++ b/include/soc/mscc/ocelot.h @@ -54,16 +54,17 @@ * PGID_CPU: used for whitelisting certain MAC addresses, such as the addresses * of the switch port net devices, towards the CPU port module. * PGID_UC: the flooding destinations for unknown unicast traffic. - * PGID_MC: the flooding destinations for broadcast and non-IP multicast - * traffic. + * PGID_MC: the flooding destinations for non-IP multicast traffic. * PGID_MCIPV4: the flooding destinations for IPv4 multicast traffic. * PGID_MCIPV6: the flooding destinations for IPv6 multicast traffic. + * PGID_BC: the flooding destinations for broadcast traffic. */ -#define PGID_CPU 59 -#define PGID_UC 60 -#define PGID_MC 61 -#define PGID_MCIPV4 62 -#define PGID_MCIPV6 63 +#define PGID_CPU 58 +#define PGID_UC 59 +#define PGID_MC 60 +#define PGID_MCIPV4 61 +#define PGID_MCIPV6 62 +#define PGID_BC 63 #define for_each_unicast_dest_pgid(ocelot, pgid) \ for ((pgid) = 0; \