Nikolay Aleksandrov
2019-Aug-22 22:09 UTC
[Bridge] [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature
On 22/08/2019 22:07, 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. > 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(-) >IMO the name is misleading. Why do the devices have to be from the same driver ? This is too specific targeting some devices. The bridge should not care what's the port device, it should be the other way around, so adding device-specific code to the bridge is not ok. Isn't there a solution where you can use NETDEV_JOIN and handle it all from your driver ? Would all HW-learned entries be hidden from user-space in this case ?
Nikolay Aleksandrov
2019-Aug-22 22:26 UTC
[Bridge] [PATCH 0/3] Add NETIF_F_HW_BRIDGE feature
On 8/23/19 1:09 AM, Nikolay Aleksandrov wrote:> On 22/08/2019 22:07, 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. >> 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(-) >> >Just to clarify:> IMO the name is misleading.- that's not mandatory or anything, just saying people might get confused when they see it> Why do the devices have to be from the same driver ? This is too specific targeting some > devices. The bridge should not care what's the port device, it should be the other wayThat was mostly a rhetorical question, it's obvious why but please add an explanation at least in the commit message and please fix the typos in the comment. Also HW is capable of doing switching, this needs some clarification that the whole process stays in HW IIUC. More details here would be great.> around, so adding device-specific code to the bridge is not ok. Isn't there a solution > where you can use NETDEV_JOIN and handle it all from your driver ? > Would all HW-learned entries be hidden from user-space in this case ? >I.e. isn't there a way to do this without introducing a new feature flag ?