Skip to content
Snippets Groups Projects
  • Florian Fainelli's avatar
    f490be04
    dsa: use an unique and non conflicting bus name for the slave MII bus · f490be04
    Florian Fainelli authored
    
    The slave MII bus registered by the DSA code is using the parent MII bus
    as part of its name (ds->master_mii_bus_id), in case the parent MII bus
    name is already 16 characters long (such as d0072004.mdio-mi) we will
    get the following WARN_ON in dsa_switch_setup() when calling
    mdiobus_register():
    
    [   79.088782] ------------[ cut here ]------------
    [   79.093448] WARNING: at fs/sysfs/dir.c:536 sysfs_add_one+0x80/0xa0()
    [   79.099831] sysfs: cannot create duplicate filename
    '/class/mdio_bus/d0072004.mdio-mi'
    
    This is a genuine warning, because the DSA slave MII bus will also be
    named d0072004.mdio-mi, and since MII_BUS_ID_SIZE is 17 characters long
    (with null-terminator) the following will truncate the slave MII bus id:
    
    snprintf(ds->slave_mii_bus->id, MII_BUS_ID_SIZE, "%s-%d:%.2x",
                            ds->master_mii_bus->id, ds->pd->sw_addr);
    
    Fix this by using dsa-<switch index->:<sw_add> which is guaranteed to be
    unique.
    
    Signed-off-by: default avatarFlorian Fainelli <florian@openwrt.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f490be04
    History
    dsa: use an unique and non conflicting bus name for the slave MII bus
    Florian Fainelli authored
    
    The slave MII bus registered by the DSA code is using the parent MII bus
    as part of its name (ds->master_mii_bus_id), in case the parent MII bus
    name is already 16 characters long (such as d0072004.mdio-mi) we will
    get the following WARN_ON in dsa_switch_setup() when calling
    mdiobus_register():
    
    [   79.088782] ------------[ cut here ]------------
    [   79.093448] WARNING: at fs/sysfs/dir.c:536 sysfs_add_one+0x80/0xa0()
    [   79.099831] sysfs: cannot create duplicate filename
    '/class/mdio_bus/d0072004.mdio-mi'
    
    This is a genuine warning, because the DSA slave MII bus will also be
    named d0072004.mdio-mi, and since MII_BUS_ID_SIZE is 17 characters long
    (with null-terminator) the following will truncate the slave MII bus id:
    
    snprintf(ds->slave_mii_bus->id, MII_BUS_ID_SIZE, "%s-%d:%.2x",
                            ds->master_mii_bus->id, ds->pd->sw_addr);
    
    Fix this by using dsa-<switch index->:<sw_add> which is guaranteed to be
    unique.
    
    Signed-off-by: default avatarFlorian Fainelli <florian@openwrt.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.