From: Florian Fainelli <f.fainelli@gmail.com> To: Horatiu Vultur <horatiu.vultur@microchip.com>, roopa@cumulusnetworks.com, nikolay@cumulusnetworks.com, davem@davemloft.net, UNGLinuxDriver@microchip.com, alexandre.belloni@bootlin.com, allan.nielsen@microchip.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org Subject: Re: [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature Date: Fri, 23 Aug 2019 16:25:02 -0700 [thread overview] Message-ID: <e47a318c-6446-71cd-660c-8592037d8166@gmail.com> (raw) In-Reply-To: <1566500850-6247-1-git-send-email-horatiu.vultur@microchip.com> On 8/22/19 12:07 PM, Horatiu Vultur wrote: > Current implementation of the SW bridge is setting the interfaces in > promisc mode when they are added to bridge if learning of the frames is > enabled. > In case of Ocelot which has HW capabilities to switch frames, it is not > needed to set the ports in promisc mode because the HW already capable of > doing that. Therefore add NETIF_F_HW_BRIDGE feature to indicate that the > HW has bridge capabilities. Therefore the SW bridge doesn't need to set > the ports in promisc mode to do the switching. Then do not do anything when the ndo_set_rx_mode() for the ocelot network device is called and indicates that IFF_PROMISC is set and that your network port is a bridge port member. That is what mlxsw does AFAICT. As other pointed out, the Linux bridge implements a software bridge by default, and because it needs to operate on a wide variety of network devices, all with different capabilities, the easiest way to make sure that all management (IGMP, BPDU, etc. ) as well as non-management traffic can make it to the bridge ports, is to put the network devices in promiscuous mode. If this is suboptimal for you, you can take shortcuts in your driver that do not hinder the overall functionality. > This optimization takes places only if all the interfaces that are part > of the bridge have this flag and have the same network driver. > > If the bridge interfaces is added in promisc mode then also the ports part > of the bridge are set in promisc mode. > > Horatiu Vultur (3): > net: Add HW_BRIDGE offload feature > net: mscc: Use NETIF_F_HW_BRIDGE > net: mscc: Implement promisc mode. > > drivers/net/ethernet/mscc/ocelot.c | 26 ++++++++++++++++++++++++-- > include/linux/netdev_features.h | 3 +++ > net/bridge/br_if.c | 29 ++++++++++++++++++++++++++++- > net/core/ethtool.c | 1 + > 4 files changed, 56 insertions(+), 3 deletions(-) > -- Florian
WARNING: multiple messages have this Message-ID (diff)
From: Florian Fainelli <f.fainelli@gmail.com> To: Horatiu Vultur <horatiu.vultur@microchip.com>, roopa@cumulusnetworks.com, nikolay@cumulusnetworks.com, davem@davemloft.net, UNGLinuxDriver@microchip.com, alexandre.belloni@bootlin.com, allan.nielsen@microchip.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org Subject: Re: [Bridge] [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature Date: Fri, 23 Aug 2019 16:25:02 -0700 [thread overview] Message-ID: <e47a318c-6446-71cd-660c-8592037d8166@gmail.com> (raw) In-Reply-To: <1566500850-6247-1-git-send-email-horatiu.vultur@microchip.com> On 8/22/19 12:07 PM, Horatiu Vultur wrote: > Current implementation of the SW bridge is setting the interfaces in > promisc mode when they are added to bridge if learning of the frames is > enabled. > In case of Ocelot which has HW capabilities to switch frames, it is not > needed to set the ports in promisc mode because the HW already capable of > doing that. Therefore add NETIF_F_HW_BRIDGE feature to indicate that the > HW has bridge capabilities. Therefore the SW bridge doesn't need to set > the ports in promisc mode to do the switching. Then do not do anything when the ndo_set_rx_mode() for the ocelot network device is called and indicates that IFF_PROMISC is set and that your network port is a bridge port member. That is what mlxsw does AFAICT. As other pointed out, the Linux bridge implements a software bridge by default, and because it needs to operate on a wide variety of network devices, all with different capabilities, the easiest way to make sure that all management (IGMP, BPDU, etc. ) as well as non-management traffic can make it to the bridge ports, is to put the network devices in promiscuous mode. If this is suboptimal for you, you can take shortcuts in your driver that do not hinder the overall functionality. > This optimization takes places only if all the interfaces that are part > of the bridge have this flag and have the same network driver. > > If the bridge interfaces is added in promisc mode then also the ports part > of the bridge are set in promisc mode. > > Horatiu Vultur (3): > net: Add HW_BRIDGE offload feature > net: mscc: Use NETIF_F_HW_BRIDGE > net: mscc: Implement promisc mode. > > drivers/net/ethernet/mscc/ocelot.c | 26 ++++++++++++++++++++++++-- > include/linux/netdev_features.h | 3 +++ > net/bridge/br_if.c | 29 ++++++++++++++++++++++++++++- > net/core/ethtool.c | 1 + > 4 files changed, 56 insertions(+), 3 deletions(-) > -- Florian
next prev parent reply other threads:[~2019-08-23 23:25 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-22 19:07 [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature Horatiu Vultur 2019-08-22 19:07 ` [Bridge] " Horatiu Vultur 2019-08-22 19:07 ` [PATCH 1/3] net: Add HW_BRIDGE offload feature Horatiu Vultur 2019-08-22 19:07 ` [Bridge] " Horatiu Vultur 2019-08-22 20:08 ` Andrew Lunn 2019-08-22 20:08 ` [Bridge] " Andrew Lunn 2019-08-23 12:39 ` Horatiu Vultur 2019-08-23 12:39 ` [Bridge] " Horatiu Vultur 2019-08-23 23:30 ` Florian Fainelli 2019-08-23 23:30 ` [Bridge] " Florian Fainelli 2019-08-25 10:44 ` Horatiu Vultur 2019-08-25 10:44 ` [Bridge] " Horatiu Vultur 2019-08-22 19:07 ` [PATCH 2/3] net: mscc: Use NETIF_F_HW_BRIDGE Horatiu Vultur 2019-08-22 19:07 ` [Bridge] " Horatiu Vultur 2019-08-22 19:07 ` [PATCH 3/3] net: mscc: Implement promisc mode Horatiu Vultur 2019-08-22 19:07 ` [Bridge] " Horatiu Vultur 2019-08-22 22:09 ` [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature Nikolay Aleksandrov 2019-08-22 22:09 ` [Bridge] " Nikolay Aleksandrov 2019-08-22 22:26 ` Nikolay Aleksandrov 2019-08-22 22:26 ` [Bridge] " Nikolay Aleksandrov 2019-08-23 12:26 ` Horatiu Vultur 2019-08-23 12:26 ` [Bridge] " Horatiu Vultur 2019-08-23 13:25 ` Andrew Lunn 2019-08-23 13:25 ` [Bridge] " Andrew Lunn 2019-08-23 15:57 ` Horatiu Vultur 2019-08-23 15:57 ` [Bridge] " Horatiu Vultur 2019-08-22 22:32 ` David Miller 2019-08-22 22:32 ` [Bridge] " David Miller 2019-08-23 23:25 ` Florian Fainelli [this message] 2019-08-23 23:25 ` Florian Fainelli 2019-08-24 7:42 ` Jiri Pirko 2019-08-25 16:30 ` Horatiu Vultur 2019-08-25 16:30 ` [Bridge] " Horatiu Vultur 2019-08-24 12:05 ` Stephen Hemminger 2019-08-24 12:05 ` Stephen Hemminger
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=e47a318c-6446-71cd-660c-8592037d8166@gmail.com \ --to=f.fainelli@gmail.com \ --cc=UNGLinuxDriver@microchip.com \ --cc=alexandre.belloni@bootlin.com \ --cc=allan.nielsen@microchip.com \ --cc=bridge@lists.linux-foundation.org \ --cc=davem@davemloft.net \ --cc=horatiu.vultur@microchip.com \ --cc=linux-kernel@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=nikolay@cumulusnetworks.com \ --cc=roopa@cumulusnetworks.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.