Message ID | 20230130173429.3577450-2-netdev@kapio-technology.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2308904wrn; Mon, 30 Jan 2023 09:40:42 -0800 (PST) X-Google-Smtp-Source: AK7set8KXLliW8bHMo0NQtAETErHEyQNCdY7XfEP1rP166swAMTEIfaGrm+X8/tQQflH3a2RJIIi X-Received: by 2002:a05:6402:528a:b0:49f:88ef:8d76 with SMTP id en10-20020a056402528a00b0049f88ef8d76mr29714623edb.29.1675100442170; Mon, 30 Jan 2023 09:40:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675100442; cv=none; d=google.com; s=arc-20160816; b=yibzkUl0EXFhRVCNhrzFlrGAz8CRFLPjsI9MQA0VBAC/K73hBlL+LQfiHqHsizVhPy rTeu+x3UGJZO2xBUItgIWGwvMooYoDuua+4XCA+tEMEvmuEihYoN3t1Z5GsZDm2Fnbxi Iq0xDi7noe+2voPVbiaP3TJCt3EBJfUy04WbVQewBRIkKzJpiMpITxNMD+WZtyNVFd6B sYU3f9/cEDyhHuHVs3gxiA6rEpl2CjCNRq93zB40w0kV1gyj32Dq/WiD75LP2pn+fIzg aqrF5uteSqRGpCHyfy8fkAIv2oLZUyWjzHISeYwjuM1e9AGktXGvbiBUNGjme7KzawWh A2kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:organization :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=nbl10jCc/EENjQvBE0LQM34MUMPbeia746ocrmOLgSQ=; b=0Q08Xj1q2ZXi2UPMCNNw/c4j4w8nxTAJba9UgEnIkJ1Y6dUGxuxWQo0lNxBHBz58uM 6E2WDFo2iIGCYdKBsqQs8phlNyXPpfI8ggPH2W8jg3KFIksLk6rdqmlnPbEo6kwQ34Bu PaE3paHURmuzQbYghbWjjvnTnpSJnO3So/V3bPgCegyFgyor0DlSVlXOxUqSctdG7BzG h0gVLUU4Ikb6TSxDCQuSh51KQ0gZ2ghJ9Hq9BqffLbb/ZTznjHhN8lupB1noRr0C/MXE wpqfDRf3zTedNygTfZ4Rm8jTFYrIQC196/9xkJJmwv6iI1iUDgIR5xl5imwVcyTIo9a8 e79A== ARC-Authentication-Results: i=1; mx.google.com; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fx15-20020a1709069e8f00b0088ac023cfd8si1507193ejc.178.2023.01.30.09.40.18; Mon, 30 Jan 2023 09:40:42 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237900AbjA3RhL (ORCPT <rfc822;n2h9z4@gmail.com> + 99 others); Mon, 30 Jan 2023 12:37:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230340AbjA3RgZ (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 30 Jan 2023 12:36:25 -0500 Received: from mailout-taastrup.gigahost.dk (mailout-taastrup.gigahost.dk [46.183.139.199]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A94ABB80; Mon, 30 Jan 2023 09:36:22 -0800 (PST) Received: from mailout.gigahost.dk (mailout.gigahost.dk [89.186.169.112]) by mailout-taastrup.gigahost.dk (Postfix) with ESMTP id EF858188381E; Mon, 30 Jan 2023 17:36:20 +0000 (UTC) Received: from smtp.gigahost.dk (smtp.gigahost.dk [89.186.169.109]) by mailout.gigahost.dk (Postfix) with ESMTP id DF9C9250007B; Mon, 30 Jan 2023 17:36:20 +0000 (UTC) Received: by smtp.gigahost.dk (Postfix, from userid 1000) id D6F879B403E5; Mon, 30 Jan 2023 17:36:20 +0000 (UTC) X-Screener-Id: 413d8c6ce5bf6eab4824d0abaab02863e8e3f662 Received: from fujitsu.vestervang (2-104-116-184-cable.dk.customer.tdc.net [2.104.116.184]) by smtp.gigahost.dk (Postfix) with ESMTPSA id 350159B403E2; Mon, 30 Jan 2023 17:36:20 +0000 (UTC) From: "Hans J. Schultz" <netdev@kapio-technology.com> To: davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, "Hans J. Schultz" <netdev@kapio-technology.com>, Florian Fainelli <f.fainelli@gmail.com>, Andrew Lunn <andrew@lunn.ch>, Vladimir Oltean <olteanv@gmail.com>, Eric Dumazet <edumazet@google.com>, Paolo Abeni <pabeni@redhat.com>, Kurt Kanzenbach <kurt@linutronix.de>, Hauke Mehrtens <hauke@hauke-m.de>, Woojung Huh <woojung.huh@microchip.com>, UNGLinuxDriver@microchip.com (maintainer:MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER), Sean Wang <sean.wang@mediatek.com>, Landen Chao <Landen.Chao@mediatek.com>, DENG Qingfang <dqfext@gmail.com>, Matthias Brugger <matthias.bgg@gmail.com>, Claudiu Manoil <claudiu.manoil@nxp.com>, Alexandre Belloni <alexandre.belloni@bootlin.com>, =?utf-8?b?Q2zDqW1lbnQg?= =?utf-8?b?TMOpZ2Vy?= <clement.leger@bootlin.com>, Jiri Pirko <jiri@resnulli.us>, Ivan Vecera <ivecera@redhat.com>, Roopa Prabhu <roopa@nvidia.com>, Nikolay Aleksandrov <razor@blackwall.org>, Russell King <linux@armlinux.org.uk>, Christian Marangi <ansuelsmth@gmail.com>, linux-kernel@vger.kernel.org (open list), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-renesas-soc@vger.kernel.org (open list:RENESAS RZ/N1 A5PSW SWITCH DRIVER), bridge@lists.linux-foundation.org (moderated list:ETHERNET BRIDGE) Subject: [PATCH net-next 1/5] net: bridge: add dynamic flag to switchdev notifier Date: Mon, 30 Jan 2023 18:34:25 +0100 Message-Id: <20230130173429.3577450-2-netdev@kapio-technology.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230130173429.3577450-1-netdev@kapio-technology.com> References: <20230130173429.3577450-1-netdev@kapio-technology.com> MIME-Version: 1.0 Organization: Westermo Network Technologies AB Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_NONE 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756470121374685832?= X-GMAIL-MSGID: =?utf-8?q?1756470121374685832?= |
Series |
ATU and FDB synchronization on locked ports
|
|
Commit Message
Hans Schultz
Jan. 30, 2023, 5:34 p.m. UTC
To be able to add dynamic FDB entries to drivers from userspace, the
dynamic flag must be added when sending RTM_NEWNEIGH events down.
Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com>
---
include/net/switchdev.h | 1 +
net/bridge/br_switchdev.c | 2 ++
2 files changed, 3 insertions(+)
Comments
On Mon, Jan 30, 2023 at 06:34:25PM +0100, Hans J. Schultz wrote: > To be able to add dynamic FDB entries to drivers from userspace, the > dynamic flag must be added when sending RTM_NEWNEIGH events down. > > Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com> > --- > include/net/switchdev.h | 1 + > net/bridge/br_switchdev.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/include/net/switchdev.h b/include/net/switchdev.h > index ca0312b78294..aaf918d4ba67 100644 > --- a/include/net/switchdev.h > +++ b/include/net/switchdev.h > @@ -249,6 +249,7 @@ struct switchdev_notifier_fdb_info { > u8 added_by_user:1, > is_local:1, > locked:1, > + is_dyn:1, > offloaded:1; > }; > > diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c > index 7eb6fd5bb917..4420fcbbfdb2 100644 > --- a/net/bridge/br_switchdev.c > +++ b/net/bridge/br_switchdev.c > @@ -136,6 +136,8 @@ static void br_switchdev_fdb_populate(struct net_bridge *br, > item->added_by_user = test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags); > item->offloaded = test_bit(BR_FDB_OFFLOADED, &fdb->flags); > item->is_local = test_bit(BR_FDB_LOCAL, &fdb->flags); > + item->is_dyn = !test_bit(BR_FDB_STATIC, &fdb->flags) && Why not 'is_static' and be consistent with the bridge flag like all the other fields? Regardless of how you name this field, it is irrelevant for 'SWITCHDEV_FDB_ADD_TO_BRIDGE' notifications that all add FDB entries with the 'BR_FDB_ADDED_BY_EXT_LEARN' flag set, which makes 'BR_FDB_STATIC' irrelevant. > + item->added_by_user; Unclear why this is needed... > item->locked = false; > item->info.dev = (!p || item->is_local) ? br->dev : p->dev; > item->info.ctx = ctx; > -- > 2.34.1 >
On 2023-02-01 19:10, Ido Schimmel wrote: > On Mon, Jan 30, 2023 at 06:34:25PM +0100, Hans J. Schultz wrote: >> To be able to add dynamic FDB entries to drivers from userspace, the >> dynamic flag must be added when sending RTM_NEWNEIGH events down. >> >> Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com> >> --- >> include/net/switchdev.h | 1 + >> net/bridge/br_switchdev.c | 2 ++ >> 2 files changed, 3 insertions(+) >> >> diff --git a/include/net/switchdev.h b/include/net/switchdev.h >> index ca0312b78294..aaf918d4ba67 100644 >> --- a/include/net/switchdev.h >> +++ b/include/net/switchdev.h >> @@ -249,6 +249,7 @@ struct switchdev_notifier_fdb_info { >> u8 added_by_user:1, >> is_local:1, >> locked:1, >> + is_dyn:1, >> offloaded:1; >> }; >> >> diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c >> index 7eb6fd5bb917..4420fcbbfdb2 100644 >> --- a/net/bridge/br_switchdev.c >> +++ b/net/bridge/br_switchdev.c >> @@ -136,6 +136,8 @@ static void br_switchdev_fdb_populate(struct >> net_bridge *br, >> item->added_by_user = test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags); >> item->offloaded = test_bit(BR_FDB_OFFLOADED, &fdb->flags); >> item->is_local = test_bit(BR_FDB_LOCAL, &fdb->flags); >> + item->is_dyn = !test_bit(BR_FDB_STATIC, &fdb->flags) && > > Why not 'is_static' and be consistent with the bridge flag like all the > other fields? > > Regardless of how you name this field, it is irrelevant for > 'SWITCHDEV_FDB_ADD_TO_BRIDGE' notifications that all add FDB entries > with the 'BR_FDB_ADDED_BY_EXT_LEARN' flag set, which makes > 'BR_FDB_STATIC' irrelevant. > >> + item->added_by_user; > > Unclear why this is needed... > The answer to those two questions lies in my earlier correspondences (with Oltean) on the RFC version.
On Thu, Feb 02, 2023 at 08:28:36AM +0100, netdev@kapio-technology.com wrote: > On 2023-02-01 19:10, Ido Schimmel wrote: > > On Mon, Jan 30, 2023 at 06:34:25PM +0100, Hans J. Schultz wrote: > > > To be able to add dynamic FDB entries to drivers from userspace, the > > > dynamic flag must be added when sending RTM_NEWNEIGH events down. > > > > > > Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com> > > > --- > > > include/net/switchdev.h | 1 + > > > net/bridge/br_switchdev.c | 2 ++ > > > 2 files changed, 3 insertions(+) > > > > > > diff --git a/include/net/switchdev.h b/include/net/switchdev.h > > > index ca0312b78294..aaf918d4ba67 100644 > > > --- a/include/net/switchdev.h > > > +++ b/include/net/switchdev.h > > > @@ -249,6 +249,7 @@ struct switchdev_notifier_fdb_info { > > > u8 added_by_user:1, > > > is_local:1, > > > locked:1, > > > + is_dyn:1, > > > offloaded:1; > > > }; > > > > > > diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c > > > index 7eb6fd5bb917..4420fcbbfdb2 100644 > > > --- a/net/bridge/br_switchdev.c > > > +++ b/net/bridge/br_switchdev.c > > > @@ -136,6 +136,8 @@ static void br_switchdev_fdb_populate(struct > > > net_bridge *br, > > > item->added_by_user = test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags); > > > item->offloaded = test_bit(BR_FDB_OFFLOADED, &fdb->flags); > > > item->is_local = test_bit(BR_FDB_LOCAL, &fdb->flags); > > > + item->is_dyn = !test_bit(BR_FDB_STATIC, &fdb->flags) && > > > > Why not 'is_static' and be consistent with the bridge flag like all the > > other fields? > > > > Regardless of how you name this field, it is irrelevant for > > 'SWITCHDEV_FDB_ADD_TO_BRIDGE' notifications that all add FDB entries > > with the 'BR_FDB_ADDED_BY_EXT_LEARN' flag set, which makes > > 'BR_FDB_STATIC' irrelevant. > > > > > + item->added_by_user; > > > > Unclear why this is needed... > > > > The answer to those two questions lies in my earlier correspondences (with > Oltean) on the RFC version. It is not up to me as a reviewer to dig up old versions of the patch and find out what was changed and why. It is up to you as the submitter of the patch to provide all this information in the patch posting. Please read: https://www.kernel.org/doc/html/latest/process/submitting-patches.html Specifically: "Review comments or questions that do not lead to a code change should almost certainly bring about a comment or changelog entry so that the next reviewer better understands what is going on." And: "Other comments relevant only to the moment or the maintainer, not suitable for the permanent changelog, should also go here. A good example of such comments might be patch changelogs which describe what has changed between the v1 and v2 version of the patch. Please put this information after the --- line which separates the changelog from the rest of the patch. The version information is not part of the changelog which gets committed to the git tree. It is additional information for the reviewers." Thanks
On 2023-02-02 17:11, Ido Schimmel wrote: > On Thu, Feb 02, 2023 at 08:28:36AM +0100, netdev@kapio-technology.com > wrote: >> On 2023-02-01 19:10, Ido Schimmel wrote: >> > On Mon, Jan 30, 2023 at 06:34:25PM +0100, Hans J. Schultz wrote: >> > > To be able to add dynamic FDB entries to drivers from userspace, the >> > > dynamic flag must be added when sending RTM_NEWNEIGH events down. >> > > >> > > Signed-off-by: Hans J. Schultz <netdev@kapio-technology.com> >> > > --- >> > > include/net/switchdev.h | 1 + >> > > net/bridge/br_switchdev.c | 2 ++ >> > > 2 files changed, 3 insertions(+) >> > > >> > > diff --git a/include/net/switchdev.h b/include/net/switchdev.h >> > > index ca0312b78294..aaf918d4ba67 100644 >> > > --- a/include/net/switchdev.h >> > > +++ b/include/net/switchdev.h >> > > @@ -249,6 +249,7 @@ struct switchdev_notifier_fdb_info { >> > > u8 added_by_user:1, >> > > is_local:1, >> > > locked:1, >> > > + is_dyn:1, >> > > offloaded:1; >> > > }; >> > > >> > > diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c >> > > index 7eb6fd5bb917..4420fcbbfdb2 100644 >> > > --- a/net/bridge/br_switchdev.c >> > > +++ b/net/bridge/br_switchdev.c >> > > @@ -136,6 +136,8 @@ static void br_switchdev_fdb_populate(struct >> > > net_bridge *br, >> > > item->added_by_user = test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags); >> > > item->offloaded = test_bit(BR_FDB_OFFLOADED, &fdb->flags); >> > > item->is_local = test_bit(BR_FDB_LOCAL, &fdb->flags); >> > > + item->is_dyn = !test_bit(BR_FDB_STATIC, &fdb->flags) && >> > >> > Why not 'is_static' and be consistent with the bridge flag like all the >> > other fields? >> > >> > Regardless of how you name this field, it is irrelevant for >> > 'SWITCHDEV_FDB_ADD_TO_BRIDGE' notifications that all add FDB entries >> > with the 'BR_FDB_ADDED_BY_EXT_LEARN' flag set, which makes >> > 'BR_FDB_STATIC' irrelevant. >> > >> > > + item->added_by_user; >> > >> > Unclear why this is needed... >> > >> >> The answer to those two questions lies in my earlier correspondences >> (with >> Oltean) on the RFC version. > > It is not up to me as a reviewer to dig up old versions of the patch > and > find out what was changed and why. It is up to you as the submitter of > the patch to provide all this information in the patch posting. Please > read: > https://www.kernel.org/doc/html/latest/process/submitting-patches.html > > Specifically: > > "Review comments or questions that do not lead to a code change should > almost certainly bring about a comment or changelog entry so that the > next reviewer better understands what is going on." > > And: > > "Other comments relevant only to the moment or the maintainer, not > suitable for the permanent changelog, should also go here. A good > example of such comments might be patch changelogs which describe what > has changed between the v1 and v2 version of the patch. > > Please put this information after the --- line which separates the > changelog from the rest of the patch. The version information is not > part of the changelog which gets committed to the git tree. It is > additional information for the reviewers." > > Thanks Sorry about that. I thought it would be easily found... On the first question please look here: https://lore.kernel.org/netdev/20230119134045.fqdt6zrna5x3iavt@skbuf/ On the second question it is what Oltean pointed out to me here... https://lore.kernel.org/netdev/20230118230135.szu6a7kvt2mjb3i5@skbuf/ Oltean says there: "This is not true, because it assumes that DSA never called port_fdb_add() up until now for bridge FDB entries with the BR_FDB_STATIC flag unset, which is incorrect (it did)." Though as I see it, if it is only from the DSA layer on, the new is_dynamic flag would not be set anyway in the case he references. And as can be seen the change is in the bridge layer, as the rest is just propagating the flag, but it ensures that to set this flag that it comes from the user adding an FDB entry.
On Thu, Feb 02, 2023 at 05:38:06PM +0100, netdev@kapio-technology.com wrote: > On the first question please look here: > https://lore.kernel.org/netdev/20230119134045.fqdt6zrna5x3iavt@skbuf/ It seems Vladimir also wants the new field to be named 'is_static' instead of 'is_dyn'. In your reason you mention 'SWITCHDEV_FDB_ADD_TO_BRIDGE', but this is not the interesting case for the field. This event is used for devices to notify the bridge on new learned entries. The bridge marks them as "extern_learn" which means that "dynamic" / "static" flags are irrelevant. The interesting case for the new field is the bridge to device direction ('SWITCHDEV_FDB_ADD_TO_DEVICE'). Drivers need to be patched to take the new field into account when deciding the policy to program the entry with. They can do it just as well if you name the new field 'is_static' instead of 'is_dyn'. > On the second question it is what Oltean pointed out to me here... > https://lore.kernel.org/netdev/20230118230135.szu6a7kvt2mjb3i5@skbuf/ > > Oltean says there: > "This is not true, because it assumes that DSA never called port_fdb_add() > up until now for bridge FDB entries with the BR_FDB_STATIC flag unset, > which is incorrect (it did)." > > Though as I see it, if it is only from the DSA layer on, the new is_dynamic > flag would not be set anyway in the case he references. And as can be seen > the change is in the bridge layer, as the rest is just propagating the flag, > but it ensures that to set this flag that it comes from the user adding an > FDB entry. OK, so can't this hunk: ``` if (fdb_info->is_dyn) fdb_flags |= DSA_FDB_FLAG_DYNAMIC; ``` Become: ``` if (fdb_info->is_dyn && !fdb_info->added_by_user) fdb_flags |= DSA_FDB_FLAG_DYNAMIC; ``` ? Then there is no need to fold 'added_by_user' into 'is_dyn' in the bridge driver. I *think* this is the change Vladimir asked you to do.
On Fri, 3 Feb 2023 at 18:14, Ido Schimmel <idosch@idosch.org> wrote:
> I *think* this is the change Vladimir asked you to do.
Yup, although instead of "is_dyn", I would still prefer "!is_static",
but again, that's a preference for bridge/switchdev maintainers to
override.
On 2023-02-03 17:14, Ido Schimmel wrote: > > OK, so can't this hunk: > > ``` > if (fdb_info->is_dyn) > fdb_flags |= DSA_FDB_FLAG_DYNAMIC; > ``` > > Become: > > ``` > if (fdb_info->is_dyn && !fdb_info->added_by_user) > fdb_flags |= DSA_FDB_FLAG_DYNAMIC; > ``` > > ? > > Then there is no need to fold 'added_by_user' into 'is_dyn' in the > bridge driver. I *think* this is the change Vladimir asked you to do. I suppose you mean?: if (fdb_info->is_dyn && fdb_info->added_by_user) fdb_flags |= DSA_FDB_FLAG_DYNAMIC;
On Fri, Feb 03, 2023 at 05:27:43PM +0100, netdev@kapio-technology.com wrote: > On 2023-02-03 17:14, Ido Schimmel wrote: > > > > OK, so can't this hunk: > > > > ``` > > if (fdb_info->is_dyn) > > fdb_flags |= DSA_FDB_FLAG_DYNAMIC; > > ``` > > > > Become: > > > > ``` > > if (fdb_info->is_dyn && !fdb_info->added_by_user) > > fdb_flags |= DSA_FDB_FLAG_DYNAMIC; > > ``` > > > > ? > > > > Then there is no need to fold 'added_by_user' into 'is_dyn' in the > > bridge driver. I *think* this is the change Vladimir asked you to do. > > I suppose you mean?: > if (fdb_info->is_dyn && fdb_info->added_by_user) > fdb_flags |= DSA_FDB_FLAG_DYNAMIC; Yes
diff --git a/include/net/switchdev.h b/include/net/switchdev.h index ca0312b78294..aaf918d4ba67 100644 --- a/include/net/switchdev.h +++ b/include/net/switchdev.h @@ -249,6 +249,7 @@ struct switchdev_notifier_fdb_info { u8 added_by_user:1, is_local:1, locked:1, + is_dyn:1, offloaded:1; }; diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c index 7eb6fd5bb917..4420fcbbfdb2 100644 --- a/net/bridge/br_switchdev.c +++ b/net/bridge/br_switchdev.c @@ -136,6 +136,8 @@ static void br_switchdev_fdb_populate(struct net_bridge *br, item->added_by_user = test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags); item->offloaded = test_bit(BR_FDB_OFFLOADED, &fdb->flags); item->is_local = test_bit(BR_FDB_LOCAL, &fdb->flags); + item->is_dyn = !test_bit(BR_FDB_STATIC, &fdb->flags) && + item->added_by_user; item->locked = false; item->info.dev = (!p || item->is_local) ? br->dev : p->dev; item->info.ctx = ctx;