On Fri, Apr 6, 2018 at 8:19 PM, Andrew Lunn <and...@lunn.ch> wrote: > Hi Siwei > >> I think everyone seems to agree not to fiddle with the ":" prefix, but >> rather have a new class of network subsystem under /sys/class thus a >> separate device namespace e.g. /sys/class/net-kernel for those >> auto-managed lower netdevs is needed. > > How do you get a device into this new class? I don't know the Linux > driver model too well, but to get a device out of one class and into > another, i think you need to device_del(dev). modify dev->class and > then device_add(dev). However, device_add() says you are not allowed > to do this.
No, implementation wise I'd avoid changing the class on the fly. What I'm looking to is a means to add a secondary class or class aliasing mechanism for netdevs that allows mapping for a kernel device namespace (/class/net-kernel) to userspace (/class/net). Imagine creating symlinks between these two namespaces as an analogy. All userspace visible netdevs today will have both a kernel name and a userspace visible name, having one (/class/net) referecing the other (/class/net-kernel) in its own namespace. The newly introduced IFF_AUTO_MANAGED device will have a kernel name only (/class/net-kernel). As a result, the existing applications using /class/net don't break, while we're adding the kernel namespace that allows IFF_AUTO_MANAGED devices which will not be exposed to userspace at all. As this requires changing the internals of driver model core it's a rather big hammer approach I'd think. If there exists a better implementation than this to allow adding a separate layer of in-kernel device namespace, I'd more than welcome to hear about. > > And i don't even see how this helps. Are you also not going to call > list_netdevice()? Are you going to add some other list for these > devices in a different class? list_netdevice() is still called. I think with the current RFC patch, I've added two lists for netdevs under the kernel namespace: dev_cmpl_list and name_cmpl_hlist. As a result of that, all userspace netdevs get registered will be added to two types of lists: the userspace list for e.g. dev_list, and also the kernelspace list e.g. dev_cmpl_list (I can rename it to something more accurate). The IFF_AUTO_MANAGED device will be only added to kernelspace list e.g. dev_cmpl_list. Hope all your questions are answered. Thanks, -Siwei > > Andrew