On 11/07/2017 01:01 PM, Andrew Lunn wrote: >>> It is not quite as simple as that. Image: >>> >>> brctl addbr br0 >>> brctl addif br0 eth2 >>> brctl addif br0 lan0 > > Hi Vivien > > I will reply to your other points later. But another scenario to think > about. > > Take the above configuration. > > A join is received on eth2. The bridge makes switchdev calls. Your > idea would be it passes add MDB(eth2). > > Now an application performs a join on br0. The bridge does nothing > with switchdev. It already gets the frames it needs. > > eth2 leaves the group. The switch does nothing. It still needs the frames. > > The application leaves the group on br0. The bridge makes switchdev > calls to tell the hardware to stop sending it frames. With your > scheme, it would pass del MDB(br0). > > So we start it with eth2, stop it with br0. I think this makes it > clear, the interface name is not important. All we need is a bit, > which says is this a normal MDB request, or a host MDB request. I > encode this bit by having a different requests.
Andrew, I am afraid you lost me here, I don't even understand the problem you are trying to describe :) What would be the rationale for differentiation "normal MDB requests" from "host MDB requests", how and why should we treat them differently? In a switch case, they all translate to programming a MDB entry for a given switch port, right? -- Florian