Horatiu Vultur
2019-Aug-23 12:39 UTC
[Bridge] [PATCH 1/3] net: Add HW_BRIDGE offload feature
The 08/22/2019 22:08, Andrew Lunn wrote:> External E-Mail > > > > +/* Determin if the SW bridge can be offloaded to HW. Return true if all > > + * the interfaces of the bridge have the feature NETIF_F_HW_SWITCHDEV set > > + * and have the same netdev_ops. > > + */ > > Hi Horatiu > > Why do you need these restrictions. The HW bridge should be able to > learn that a destination MAC address can be reached via the SW > bridge. The software bridge can then forward it out the correct > interface. > > Or are you saying your hardware cannot learn from frames which come > from the CPU? > > Andrew >Hi Andrew, I do not believe that our HW can learn from frames which comes from the CPU, at least not in the way they are injected today. But in case of Ocelot (and the next chip we are working on), we have other issues in mixing with foreign interfaces which is why we have the check in ocelot_netdevice_dev_check. More important, as we responded to Nikolay, we properly introduced this restriction for the wrong reasons. In SW bridge I will remove all these restrictions and only set ports in promisc mode only if NETIF_F_HW_BRIDGE is not set. Then in the network driver I can see if a foreign interface is added to the bridge, and when that happens I can set the port in promisc mode. Then the frames will be flooded to the SW bridge which eventually will send to the foreign interface. -- /Horatiu
Florian Fainelli
2019-Aug-23 23:30 UTC
[Bridge] [PATCH 1/3] net: Add HW_BRIDGE offload feature
On 8/23/19 5:39 AM, Horatiu Vultur wrote:> The 08/22/2019 22:08, Andrew Lunn wrote: >> External E-Mail >> >> >>> +/* Determin if the SW bridge can be offloaded to HW. Return true if all >>> + * the interfaces of the bridge have the feature NETIF_F_HW_SWITCHDEV set >>> + * and have the same netdev_ops. >>> + */ >> >> Hi Horatiu >> >> Why do you need these restrictions. The HW bridge should be able to >> learn that a destination MAC address can be reached via the SW >> bridge. The software bridge can then forward it out the correct >> interface. >> >> Or are you saying your hardware cannot learn from frames which come >> from the CPU? >> >> Andrew >> > Hi Andrew, > > I do not believe that our HW can learn from frames which comes from the > CPU, at least not in the way they are injected today. But in case of Ocelot > (and the next chip we are working on), we have other issues in mixing with > foreign interfaces which is why we have the check in > ocelot_netdevice_dev_check. > > More important, as we responded to Nikolay, we properly introduced this > restriction for the wrong reasons. > > In SW bridge I will remove all these restrictions and only set ports in > promisc mode only if NETIF_F_HW_BRIDGE is not set. > Then in the network driver I can see if a foreign interface is added to > the bridge, and when that happens I can set the port in promisc mode. > Then the frames will be flooded to the SW bridge which eventually will > send to the foreign interface.Is that really necessary? Is not the skb->fwd_offload_mark as well as the phys_switch_id supposed to tell that information to the bridge already? -- Florian