• Vladimir Oltean's avatar
    net: dsa: autoload tag driver module on tagging protocol change · 0184c07a
    Vladimir Oltean authored
    Issue a request_module() call when an attempt to change the tagging
    protocol is made, either by sysfs or by device tree. In the case of
    ocelot (the only driver for which the default and the alternative
    tagging protocol are compiled as different modules), the user is now no
    longer required to insert tag_ocelot_8021q.ko manually.
    
    In the particular case of ocelot, this solves a problem where
    tag_ocelot_8021q.ko is built as module, and this is present in the
    device tree:
    
    &mscc_felix_port4 {
    	dsa-tag-protocol = "ocelot-8021q";
    };
    
    &mscc_felix_port5 {
    	dsa-tag-protocol = "ocelot-8021q";
    };
    
    Because no one attempts to load the module into the kernel at boot time,
    the switch driver will fail to probe (actually forever defer) until
    someone manually inserts tag_ocelot_8021q.ko. This is now no longer
    necessary and happens automatically.
    
    Rename dsa_find_tagger_by_name() to denote the change in functionality:
    there is now feature parity with dsa_tag_driver_get_by_id(), i.o.w. we
    also load the module if it's missing.
    
    Link: https://lore.kernel.org/lkml/20221027113248.420216-1-michael@walle.cc/Suggested-by: default avatarMichael Walle <michael@walle.cc>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Tested-by: Michael Walle <michael@walle.cc> # on kontron-sl28 w/ ocelot_8021q
    Tested-by: default avatarMichael Walle <michael@walle.cc>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    0184c07a
dsa2.c 40.3 KB