• John Hurley's avatar
    net: sched: register callbacks for indirect tc block binds · 7f76fa36
    John Hurley authored
    Currently drivers can register to receive TC block bind/unbind callbacks
    by implementing the setup_tc ndo in any of their given netdevs. However,
    drivers may also be interested in binds to higher level devices (e.g.
    tunnel drivers) to potentially offload filters applied to them.
    
    Introduce indirect block devs which allows drivers to register callbacks
    for block binds on other devices. The callback is triggered when the
    device is bound to a block, allowing the driver to register for rules
    applied to that block using already available functions.
    
    Freeing an indirect block callback will trigger an unbind event (if
    necessary) to direct the driver to remove any offloaded rules and unreg
    any block rule callbacks. It is the responsibility of the implementing
    driver to clean any registered indirect block callbacks before exiting,
    if the block it still active at such a time.
    
    Allow registering an indirect block dev callback for a device that is
    already bound to a block. In this case (if it is an ingress block),
    register and also trigger the callback meaning that any already installed
    rules can be replayed to the calling driver.
    Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7f76fa36
cls_api.c 63.8 KB