On Tue, 14 Aug 2012 23:33:44 +0100 Ben Hutchings <bhutchings@xxxxxxxxxxxxxx> wrote: > On Tue, 2012-08-14 at 17:05 +0200, Jiri Pirko wrote: > > This lists are supposed to serve for storing pointers to all upper devices. > > Eventually it will replace dev->master pointer which is used for > > bonding, bridge, team but it cannot be used for vlan, macvlan where > > there might be multiple upper present. In case the upper link is > > replacement for dev->master, it is marked with "master" flag. > > Something I found interesting is that the dev->master pointer and now > netdev_master_upper_dev_get{,_rcu}() are hardly used by the stackled > drivers that set the master. They also have to set an rx_handler on the > lower device (which is itself mutually exclusive) which gets its own > context pointer (rx_handler_data). > > Instead, the master pointer is mostly used by device drivers to find out > about a bridge or bonding device above *their* devices. And that seems > to work only for those specific device drivers, not e.g. openvswitch or > team. I wonder if we could find a better way to encapsulate the things > they want do do, in a later step (not holding up this change!). The concept is master is very useful to user level config things like Vyatta for seeing parent/child relationship. Since is in ABI now, it must stay.