• Vladimir Oltean's avatar
    net: dsa: remove the transactional logic from VLAN objects · 1958d581
    Vladimir Oltean authored
    It should be the driver's business to logically separate its VLAN
    offloading into a preparation and a commit phase, and some drivers don't
    need / can't do this.
    
    So remove the transactional shim from DSA and let drivers propagate
    errors directly from the .port_vlan_add callback.
    
    It would appear that the code has worse error handling now than it had
    before. DSA is the only in-kernel user of switchdev that offloads one
    switchdev object to more than one port: for every VLAN object offloaded
    to a user port, that VLAN is also offloaded to the CPU port. So the
    "prepare for user port -> check for errors -> prepare for CPU port ->
    check for errors -> commit for user port -> commit for CPU port"
    sequence appears to make more sense than the one we are using now:
    "offload to user port -> check for errors -> offload to CPU port ->
    check for errors", but it is really a compromise. In the new way, we can
    catch errors from the commit phase that we previously ha...
    1958d581
sja1105_main.c 97.4 KB