• Vladimir Oltean's avatar
    net: switchdev: add a context void pointer to struct switchdev_notifier_info · 69bfac96
    Vladimir Oltean authored
    In the case where the driver asks for a replay of a certain type of
    event (port object or attribute) for a bridge port that is a LAG, it may
    do so because this port has just joined the LAG.
    
    But there might already be other switchdev ports in that LAG, and it is
    preferable that those preexisting switchdev ports do not act upon the
    replayed event.
    
    The solution is to add a context to switchdev events, which is NULL most
    of the time (when the bridge layer initiates the call) but which can be
    set to a value controlled by the switchdev driver when a replay is
    requested. The driver can then check the context to figure out if all
    ports within the LAG should act upon the switchdev event, or just the
    ones that match the context.
    
    We have to modify all switchdev_handle_* helper functions as well as the
    prototypes in the drivers that use these helpers too, because these
    helpers hide the underlying struct switchdev_notifier_info from us and
    there is no way to retrieve the context otherwise.
    
    The context structure will be populated and used in later patches.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    69bfac96
prestera_switchdev.c 29.7 KB