• Petr Machata's avatar
    net: sched: Introduce helpers for qevent blocks · 3625750f
    Petr Machata authored
    Qevents are attach points for TC blocks, where filters can be put that are
    executed when "interesting events" take place in a qdisc. The data to keep
    and the functions to invoke to maintain a qevent will be largely the same
    between qevents. Therefore introduce sched-wide helpers for qevent
    management.
    
    Currently, similarly to ingress and egress blocks of clsact pseudo-qdisc,
    blocks attachment cannot be changed after the qdisc is created. To that
    end, add a helper tcf_qevent_validate_change(), which verifies whether
    block index attribute is not attached, or if it is, whether its value
    matches the current one (i.e. there is no material change).
    
    The function tcf_qevent_handle() should be invoked when qdisc hits the
    "interesting event" corresponding to a block. This function releases root
    lock for the duration of executing the attached filters, to allow packets
    generated through user actions (notably mirred) to be reinserted to the
    same qdisc tree.
    Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3625750f
cls_api.c 96.6 KB