Received: by 2002:ac0:cd04:0:0:0:0:0 with SMTP id w4csp230792imn; Fri, 1 Jul 2022 13:52:28 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tdkDvj2vcjWIC0feanYB7colRI30nycjjmXOgHLgh1CsCBbYEj0OwAGpmZyw6wbL7NCUMY X-Received: by 2002:a17:906:844d:b0:72a:932b:b467 with SMTP id e13-20020a170906844d00b0072a932bb467mr3437029ejy.250.1656708748429; Fri, 01 Jul 2022 13:52:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656708748; cv=none; d=google.com; s=arc-20160816; b=ze++FsrMDtVGJSjGoftqV5QeoDdAdR9DgV6vAtCZbcLDLByFnzUUCNm0AXefxYYvKr pARK/NSFJdjU2949W5tCxO59jxZnU/oXWgNRqzRWIb3nnoR9jh66TERndnxBDW7l99Nl P8q2wZDn0Si+A0A3uit++bh1fCmgHwG2WvfyMzC+ur9M9wNaZYsVk3ByK5hfKCgUfHpn kd0kQy3qqI51qdZ0XEHebKBm4kWy9rTxaeEoHceLliUzsrgDDGAFJb7NAPPbiWmEMqO3 flYwULpsa7tBnipx4bksaO3wAOJnIjovjyblO0jyDUsCamOTpNqfPTSoLcB9VYlkqzNi pWiA== 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=m+ed+1SdluXQ9cJHJccSR7tkHdHAN8ERqTy+tImhWj0=; b=MijPth1r+AtQROuJXZ1aMHZpm7O2DF7Qm37g54CHOump7WY5pQ8IMXbxUbS5UKA6Pp hkwx2ekCtK8pKhuO4Emg0YAoamqwcTErO2PqUNZqjVvhtqhwcOkllbU/C8h309EbUnGI sFK5a9NuDjnQEgNVLJnRm6mctqMrgYYQw8+A4BsbIy/53jKodbY3WGPTpX3bu0Li0xUv k4m91nGJ+sxglTu0IE9HU9KBu3Wn85Eq8q/8PS7kfBr6hOdE0xEGWbKald7kJw4NxXVy iJe4SNKDQoVH8YncBixSMp6afpdN7KF1NNBwjd5ouOiwQmnI0Du9dBR1NX0u1hDW/dzr Etzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=bOZD8Vgs; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dr9-20020a170907720900b006fe815664dasi841889ejc.315.2022.07.01.13.52.04; Fri, 01 Jul 2022 13:52:28 -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=fail header.i=@microchip.com header.s=mchp header.b=bOZD8Vgs; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232184AbiGAUuO (ORCPT + 99 others); Fri, 1 Jul 2022 16:50:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231829AbiGAUtw (ORCPT ); Fri, 1 Jul 2022 16:49:52 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD08961D62; Fri, 1 Jul 2022 13:49:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1656708591; x=1688244591; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uLBjgbQwOwcGQ9N228n/YX+PJ1rvPTIAY79UfblshNM=; b=bOZD8VgsK4lK4SObR9nkMeLbEb0CvpcQKu+AIi3oh9WRQSesoHQ9x7Sm EOrghty1Nh9l/xKZHotxhHPFxLXM85iwFqsSwj97dSJD3ABaZlBm0RV2L Hv3ybdoRpj8MrW4pfzV+B0u/KV0IHGI5eVX4ajKfCX4KM41WmLr1VBT8E mAdOrBZe5N0RxUB9xSX5j0ul5wUzuxaUXyvoRpZVSbNlnDV/ggg/JrmJx k62fP0ZXXVKfl2ZSDYasy0TRaVCBRPxdPumLJI30A2ElIiDUYHV2JwjNf 99xZOUoAyMTvaWcSmNRuUBsMJlyJYC9ZlhGdGlfrF3KQgxErVf+Gx/EX1 w==; X-IronPort-AV: E=Sophos;i="5.92,238,1650956400"; d="scan'208";a="102710230" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Jul 2022 13:49:51 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Fri, 1 Jul 2022 13:49:49 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2375.17 via Frontend Transport; Fri, 1 Jul 2022 13:49:47 -0700 From: Horatiu Vultur To: , CC: , , , , , , Horatiu Vultur Subject: [PATCH net-next v3 6/7] net: lan966x: Extend FDB to support also lag Date: Fri, 1 Jul 2022 22:52:26 +0200 Message-ID: <20220701205227.1337160-7-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220701205227.1337160-1-horatiu.vultur@microchip.com> References: <20220701205227.1337160-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,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 Offload FDB entries when the original device is a lag interface. Because all the ports under the lag have the same chip id, which is the chip id of first port, then add the entries only for the first port. Signed-off-by: Horatiu Vultur --- .../ethernet/microchip/lan966x/lan966x_fdb.c | 30 +++++++++++++++++++ .../microchip/lan966x/lan966x_switchdev.c | 4 ++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_fdb.c b/drivers/net/ethernet/microchip/lan966x/lan966x_fdb.c index 5142e7c0de31..2ea263e893ee 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_fdb.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_fdb.c @@ -199,6 +199,34 @@ static void lan966x_fdb_bridge_event_work(struct lan966x_fdb_event_work *fdb_wor } } +static void lan966x_fdb_lag_event_work(struct lan966x_fdb_event_work *fdb_work) +{ + struct switchdev_notifier_fdb_info *fdb_info; + struct lan966x_port *port; + struct lan966x *lan966x; + + if (!lan966x_lag_first_port(fdb_work->orig_dev, fdb_work->dev)) + return; + + lan966x = fdb_work->lan966x; + port = netdev_priv(fdb_work->dev); + fdb_info = &fdb_work->fdb_info; + + switch (fdb_work->event) { + case SWITCHDEV_FDB_ADD_TO_DEVICE: + if (!fdb_info->added_by_user) + break; + lan966x_mac_add_entry(lan966x, port, fdb_info->addr, + fdb_info->vid); + break; + case SWITCHDEV_FDB_DEL_TO_DEVICE: + if (!fdb_info->added_by_user) + break; + lan966x_mac_del_entry(lan966x, fdb_info->addr, fdb_info->vid); + break; + } +} + static void lan966x_fdb_event_work(struct work_struct *work) { struct lan966x_fdb_event_work *fdb_work = @@ -208,6 +236,8 @@ static void lan966x_fdb_event_work(struct work_struct *work) lan966x_fdb_port_event_work(fdb_work); else if (netif_is_bridge_master(fdb_work->orig_dev)) lan966x_fdb_bridge_event_work(fdb_work); + else if (netif_is_lag_master(fdb_work->orig_dev)) + lan966x_fdb_lag_event_work(fdb_work); kfree(fdb_work->fdb_info.addr); kfree(fdb_work); diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c b/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c index 0cd53dca87ce..ced0194f6246 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c @@ -345,8 +345,10 @@ int lan966x_port_prechangeupper(struct net_device *dev, if (netif_is_lag_master(info->upper_dev) && info->linking) err = lan966x_lag_port_prechangeupper(dev, info); - if (netif_is_lag_master(info->upper_dev) && !info->linking) + if (netif_is_lag_master(info->upper_dev) && !info->linking) { switchdev_bridge_port_unoffload(brport_dev, port, NULL, NULL); + lan966x_fdb_flush_workqueue(port->lan966x); + } return err; } -- 2.33.0