mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-13 09:54:04 +00:00
net: sched: flower: set unlocked flag for flower proto ops
Set TCF_PROTO_OPS_DOIT_UNLOCKED for flower classifier to indicate that its ops callbacks don't require caller to hold rtnl lock. Don't take rtnl lock in fl_destroy_filter_work() that is executed on workqueue instead of being called by cls API and is not affected by setting TCF_PROTO_OPS_DOIT_UNLOCKED. Rtnl mutex is still manually taken by flower classifier before calling hardware offloads API that has not been updated for unlocked execution. Signed-off-by: Vlad Buslov <vladbu@mellanox.com> Reviewed-by: Stefano Brivio <sbrivio@redhat.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c24e43d83b
commit
9214919006
1 changed files with 1 additions and 2 deletions
|
@ -368,9 +368,7 @@ static void fl_destroy_filter_work(struct work_struct *work)
|
||||||
struct cls_fl_filter *f = container_of(to_rcu_work(work),
|
struct cls_fl_filter *f = container_of(to_rcu_work(work),
|
||||||
struct cls_fl_filter, rwork);
|
struct cls_fl_filter, rwork);
|
||||||
|
|
||||||
rtnl_lock();
|
|
||||||
__fl_destroy_filter(f);
|
__fl_destroy_filter(f);
|
||||||
rtnl_unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f,
|
static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f,
|
||||||
|
@ -2372,6 +2370,7 @@ static struct tcf_proto_ops cls_fl_ops __read_mostly = {
|
||||||
.tmplt_destroy = fl_tmplt_destroy,
|
.tmplt_destroy = fl_tmplt_destroy,
|
||||||
.tmplt_dump = fl_tmplt_dump,
|
.tmplt_dump = fl_tmplt_dump,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
.flags = TCF_PROTO_OPS_DOIT_UNLOCKED,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init cls_fl_init(void)
|
static int __init cls_fl_init(void)
|
||||||
|
|
Loading…
Add table
Reference in a new issue