net: cls_bpf: allow offloaded filters to update stats

Call into offloaded filters to update stats.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jakub Kicinski 2016-09-21 11:44:02 +01:00 committed by David S. Miller
parent 7533fdc0f7
commit 68d640630d
2 changed files with 12 additions and 0 deletions

View File

@ -490,6 +490,7 @@ enum tc_clsbpf_command {
TC_CLSBPF_ADD, TC_CLSBPF_ADD,
TC_CLSBPF_REPLACE, TC_CLSBPF_REPLACE,
TC_CLSBPF_DESTROY, TC_CLSBPF_DESTROY,
TC_CLSBPF_STATS,
}; };
struct tc_cls_bpf_offload { struct tc_cls_bpf_offload {

View File

@ -221,6 +221,15 @@ static void cls_bpf_stop_offload(struct tcf_proto *tp,
prog->offloaded = false; prog->offloaded = false;
} }
static void cls_bpf_offload_update_stats(struct tcf_proto *tp,
struct cls_bpf_prog *prog)
{
if (!prog->offloaded)
return;
cls_bpf_offload_cmd(tp, prog, TC_CLSBPF_STATS);
}
static int cls_bpf_init(struct tcf_proto *tp) static int cls_bpf_init(struct tcf_proto *tp)
{ {
struct cls_bpf_head *head; struct cls_bpf_head *head;
@ -577,6 +586,8 @@ static int cls_bpf_dump(struct net *net, struct tcf_proto *tp, unsigned long fh,
tm->tcm_handle = prog->handle; tm->tcm_handle = prog->handle;
cls_bpf_offload_update_stats(tp, prog);
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;