Re: [RFC PATCH net-next 2/2] net: dsa: support SWITCHDEV_ATTR_ID_PORT_BRIDGE_IF

From: Jiri Pirko
Date: Wed Mar 09 2016 - 14:24:28 EST


Wed, Mar 09, 2016 at 07:32:13PM CET, andrew@xxxxxxx wrote:
>Hi Vivien
>
>> -static bool dsa_slave_dev_check(struct net_device *dev)
>> -{
>> - return dev->netdev_ops == &dsa_slave_netdev_ops;
>> -}
>
>Where is the equivalent of this happening? Where do we check that the
>interface added to the bridge is part of the switch?
>
>> -int dsa_slave_netdevice_event(struct notifier_block *unused,
>> - unsigned long event, void *ptr)
>> -{
>> - struct net_device *dev;
>> - int err = 0;
>> -
>> - switch (event) {
>> - case NETDEV_CHANGEUPPER:
>> - dev = netdev_notifier_info_to_dev(ptr);
>> - if (!dsa_slave_dev_check(dev))
>> - goto out;
>> -
>> - err = dsa_slave_master_changed(dev);
>> - if (err && err != -EOPNOTSUPP)
>> - netdev_warn(dev, "failed to reflect master change\n");
>> -
>> - break;
>> - }
>> -
>> -out:
>> - return NOTIFY_DONE;
>> -}
>
>How about team/bonding? We are not ready to implement it yet with the
>Marvell devices, but at some point we probably will. Won't we need the
>events then? We need to know when a switch port has been added to a
>team?
>
>Or do you think a switchdev object will be added for this case?
>Mellanox already have the ability to add switch interfaces to a team,
>and then add the team to a bridge. So we need to ensure your solution
>works for such stacked systems.

I have to look at this more closer tomorrow, but I'm missing motivation
behind this. Using existing notifiers, drivers can easily monitor what
is going on with their uppers. Why do we need this to be changed?