• Vlad Buslov's avatar
    net: sched: flower: handle concurrent tcf proto deletion · 272ffaad
    Vlad Buslov authored
    Without rtnl lock protection tcf proto can be deleted concurrently. Check
    tcf proto 'deleting' flag after taking tcf spinlock to verify that no
    concurrent deletion is in progress. Return EAGAIN error if concurrent
    deletion detected, which will cause caller to retry and possibly create new
    instance of tcf proto.
    
    Retry mechanism is a result of fine-grained locking approach used in this
    and previous changes in series and is necessary to allow concurrent updates
    on same chain instance. Alternative approach would be to lock the whole
    chain while updating filters on any of child tp's, adding and removing
    classifier instances from the chain. However, since most CPU-intensive
    parts of filter update code are specifically in classifier code and its
    dependencies (extensions and hw offloads), such approach would negate most
    of the gains introduced by this change and previous changes in the series
    when updating same chain instance.
    Signed-off-by: default avatarVlad Buslov <vladbu@mellanox.com>
    Reviewed-by: default avatarStefano Brivio <sbrivio@redhat.com>
    Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    272ffaad
cls_flower.c 66.7 KB