From patchwork Fri Sep 16 09:36:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 670759 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3sb9FY2QGFz9sD6 for ; Fri, 16 Sep 2016 19:38:25 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b=dNZHrS2u; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758337AbcIPJiP (ORCPT ); Fri, 16 Sep 2016 05:38:15 -0400 Received: from mail-wm0-f54.google.com ([74.125.82.54]:38395 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756672AbcIPJhs (ORCPT ); Fri, 16 Sep 2016 05:37:48 -0400 Received: by mail-wm0-f54.google.com with SMTP id 1so30506701wmz.1 for ; Fri, 16 Sep 2016 02:37:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=N4JjBoi4FcWdsAmKY/ooNsG7psiBBDHqhA2lJXvhybU=; b=dNZHrS2uVwlM7RW4ezrh7yTz/efKMDAtujahMxVPsER5eFcVUi3icEDOGLvV3RBrlG ki+dKx//4jaZ1IaOc9rNR5fL4o92Y7WDIp3fZ/vi65TROb+23nD7e8JbZXNwboLpnugI FQwuJWJP9YNmCfNCzKmsR/FssG6H+ixuOtPYqbR1e9Fei+mQWZsMe/1c/l/Mgc2TkRRW PwZCTYVjN6OKc82mncwWWiN9bnm4HqfP92jI2q8+putGl2e3RjfEPVuFBHyZYwRFhmcl dissX9cTsbEi8ZA/UKNw7zbg1x0rLRlZSq/UDrMFYs7ERyp4BJuaTNP/ozG/2AxfyTFW FGVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=N4JjBoi4FcWdsAmKY/ooNsG7psiBBDHqhA2lJXvhybU=; b=iCP1v4NZ2w21M1JSOvjXCbv38xyGhg/wSXXjzSukxUO49f39vkd3Ry3Yl7pfyOk53O ia4ytQAr5JBGsu0baVPr6jGL78mpUM7I2RgVv32itxVI3sKJhbB8zxLs+7A9edu0Fa+E m+NyhKbQAuanMPYMBzqVfjbBOioGnWoyple70r++5hKJ0rLzPSXNpNlzQOE5CrXu6v4k vWZ3zGwqTjdRrs5PyY73gnxiwlq1mrxJWh+WAUoubPspRFKdOx/FX98/ggvBuN5D9v9m fugmSpLEyqGBSaIO7V0h3hVujaAzwiJLFbdatQFgFKSxDouX55nY9aRofn1AX3hFxiC6 kHvA== X-Gm-Message-State: AE9vXwPGIW3hbi0YYQX6flI4qu9cqhs+T8oQzR0xczq/QMnX/aIKn7ckLg1sIQw9m9jH8SvE X-Received: by 10.194.205.2 with SMTP id lc2mr12585791wjc.175.1474018666532; Fri, 16 Sep 2016 02:37:46 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com (host-79-78-33-110.static.as9105.net. [79.78.33.110]) by smtp.gmail.com with ESMTPSA id v189sm6485966wmv.12.2016.09.16.02.37.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 16 Sep 2016 02:37:46 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, Jakub Kicinski Subject: [PATCHv5 net-next 10/15] net: cls_bpf: allow offloaded filters to update stats Date: Fri, 16 Sep 2016 10:36:57 +0100 Message-Id: <1474018622-10653-11-git-send-email-jakub.kicinski@netronome.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1474018622-10653-1-git-send-email-jakub.kicinski@netronome.com> References: <1474018622-10653-1-git-send-email-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Call into offloaded filters to update stats. Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- include/net/pkt_cls.h | 1 + net/sched/cls_bpf.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 57af9f3032ff..5ccaa4be7d96 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -490,6 +490,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 18f9869cd4da..9b29e0673346 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c @@ -220,6 +220,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; @@ -575,6 +584,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;