On 06/07/2016 12:11 PM, Vivien Didelot wrote: > Hi Andrew, > > Andrew Lunn <and...@lunn.ch> writes: > >>>> With the legacy interface it is tricky. When would you call such a >>>> remove/tairdown function when using the old binding? >>> >>> That'd go in dsa_switch_destroy I guess, but it just covers the case >>> where the whole DSA code is unloaded... >> >> I don't think that helps you. It should not be possible to unload the >> DSA core while there is an active driver. The drivers needs to unload >> first.... > > Well, dsa_switch_destroy() is where ds->slave_mii_bus gets unregistered > (if registered by the framework), so it seems fair to do something like: > > if (ds->drv->shutdown) > ds->drv->shutdown(ds); > > But I'm still not sure if it is worth it to add a new legacy specific > function to DSA drivers, unless there is a use case for such optional > teardown callback for the new bindings too.
The new binding requires the use of dsa_unregister_switch() so this is where all the teardown and resource freeing should occur. I do not really think it is worth trying to fix the old binding and support code now, unless we want to migrate it somehow to using the code from net/dsa/dsa2.c. -- Florian