Message ID | 1464799814-4453-9-git-send-email-jakub.kicinski@netronome.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On 16-06-01 09:50 AM, Jakub Kicinski wrote: > Call into offloaded filters to update stats. > > Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> > Reviewed-by: Dinan Gunawardena <dgunawardena@netronome.com> > Reviewed-by: Simon Horman <simon.horman@netronome.com> > --- Acked-by: John Fastabend <john.r.fastabend@intel.com>
On 06/01/2016 06:50 PM, Jakub Kicinski wrote: > Call into offloaded filters to update stats. > > Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> > Reviewed-by: Dinan Gunawardena <dgunawardena@netronome.com> > Reviewed-by: Simon Horman <simon.horman@netronome.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net>
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index e6b3dfb3159b..7a7bae628d1a 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -442,6 +442,7 @@ enum tc_clsbpf_command { TC_CLSBPF_ADD, TC_CLSBPF_REPLACE, TC_CLSBPF_DESTROY, + TC_CLSBPF_STATS, }; struct tc_cls_bpf_offload { diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index 1083910cebaf..66215d9d6c9c 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c @@ -224,6 +224,15 @@ static void cls_bpf_stop_offload(struct tcf_proto *tp, 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) { struct cls_bpf_head *head; @@ -574,6 +583,8 @@ static int cls_bpf_dump(struct net *net, struct tcf_proto *tp, unsigned long fh, tm->tcm_handle = prog->handle; + cls_bpf_offload_update_stats(tp, prog); + nest = nla_nest_start(skb, TCA_OPTIONS); if (nest == NULL) goto nla_put_failure;