net/sched: add block pointer to tc_cls_common_offload structure
Some actions like the police action are stateful and could share state between devices. This is incompatible with offloading to multiple devices and drivers might want to test for shared blocks when offloading. Store a pointer to the tcf_block structure in the tc_cls_common_offload structure to allow drivers to determine when offloads apply to a shared block. Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

父節點
12f02b6b15
當前提交
88c44a5200
@@ -389,7 +389,8 @@ static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f,
|
||||
if (!rtnl_held)
|
||||
rtnl_lock();
|
||||
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, block,
|
||||
extack);
|
||||
cls_flower.command = TC_CLSFLOWER_DESTROY;
|
||||
cls_flower.cookie = (unsigned long) f;
|
||||
|
||||
@@ -422,7 +423,8 @@ static int fl_hw_replace_filter(struct tcf_proto *tp,
|
||||
goto errout;
|
||||
}
|
||||
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, extack);
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, block,
|
||||
extack);
|
||||
cls_flower.command = TC_CLSFLOWER_REPLACE;
|
||||
cls_flower.cookie = (unsigned long) f;
|
||||
cls_flower.rule->match.dissector = &f->mask->dissector;
|
||||
@@ -478,7 +480,8 @@ static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f,
|
||||
if (!rtnl_held)
|
||||
rtnl_lock();
|
||||
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, NULL);
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags, block,
|
||||
NULL);
|
||||
cls_flower.command = TC_CLSFLOWER_STATS;
|
||||
cls_flower.cookie = (unsigned long) f;
|
||||
cls_flower.classid = f->res.classid;
|
||||
@@ -1757,7 +1760,7 @@ static int fl_reoffload(struct tcf_proto *tp, bool add, tc_setup_cb_t *cb,
|
||||
}
|
||||
|
||||
tc_cls_common_offload_init(&cls_flower.common, tp, f->flags,
|
||||
extack);
|
||||
block, extack);
|
||||
cls_flower.command = add ?
|
||||
TC_CLSFLOWER_REPLACE : TC_CLSFLOWER_DESTROY;
|
||||
cls_flower.cookie = (unsigned long)f;
|
||||
|
Reference in New Issue
Block a user