• Vladimir Oltean's avatar
    net: dsa: be compatible with masters which unregister on shutdown · 0650bf52
    Vladimir Oltean authored
    Lino reports that on his system with bcmgenet as DSA master and KSZ9897
    as a switch, rebooting or shutting down never works properly.
    
    What does the bcmgenet driver have special to trigger this, that other
    DSA masters do not? It has an implementation of ->shutdown which simply
    calls its ->remove implementation. Otherwise said, it unregisters its
    network interface on shutdown.
    
    This message can be seen in a loop, and it hangs the reboot process there:
    
    unregister_netdevice: waiting for eth0 to become free. Usage count = 3
    
    So why 3?
    
    A usage count of 1 is normal for a registered network interface, and any
    virtual interface which links itself as an upper of that will increment
    it via dev_hold. In the case of DSA, this is the call path:
    
    dsa_slave_create
    -> netdev_upper_dev_link
       -> __netdev_upper_dev_link
          -> __netdev_adjacent_dev_insert
             -> dev_hold
    
    So a DSA switch with 3 interfaces will result in a usage count elevated
    by tw...
    0650bf52
vitesse-vsc73xx.h 751 Bytes