From patchwork Thu Sep 15 19:12:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 670550 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 3sZp5S5NXVz9sD5 for ; Fri, 16 Sep 2016 05:15:08 +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=EvayTTVb; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754921AbcIOTPF (ORCPT ); Thu, 15 Sep 2016 15:15:05 -0400 Received: from mail-wm0-f47.google.com ([74.125.82.47]:35009 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754178AbcIOTOW (ORCPT ); Thu, 15 Sep 2016 15:14:22 -0400 Received: by mail-wm0-f47.google.com with SMTP id l132so1035970wmf.0 for ; Thu, 15 Sep 2016 12:14:21 -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=1HSqFDsWb5sLQ0M4Xo0YJiwv1Em2a8+swTzAEqzI4BQ=; b=EvayTTVbeMcc1JUCEoGfsyAyVQRUrZL+3hlAJE//VfelFho2Gl5o6LdEJbC7pRrrrP fxsVzn//Jl+mu2AS1ZVQFlDRTSFGQzKVwVOXwXhkqTN1S3p+VhgQxr0xcGQ2Id+XLYUw 2dJx5HNU3KElQhi8RIyo9hHZnpPemz7rAyblW0Yb6+Nra43f+XSKSKlI5FP7wtz+LDep 36M4QJwFyoG3u270590aw6CLZMz+7tHN3gV226dTkjlhgHv9u83k4VW9+BcDF2SbQ0Dy w41TzEWwE3819afOxjBnrRqCi3a3dkvIS9WBGJ+9qXB8M7ZB4hAeha+VDOk3Rbm6x9hM qkbQ== 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=1HSqFDsWb5sLQ0M4Xo0YJiwv1Em2a8+swTzAEqzI4BQ=; b=UyfZPYQ7IVq1xWysZZ4MpCS+6ok8KHFGLPkn+pLokzlF2KWfTVx3/vmTAamB0vIyGP iFbrf12aHdF82ySuLpB12WMcL4utUyia45uG5/gpIYjOnm5qltTpNFszGZWjKzdETV+Z Bu4aotyyVvccaTMG2x+A6opPZT+6k6KCzS8n4iGynRH0eP6p2tbpdZ3ttukjpm7SgMcx /RMK72ZyS15M6TgJQ+NYsC5qM66FEUFEbWFypiYneUVlFKpIxN1bUFqHmLfG8XLWHtMp E9a+zbSMnaWUpf0zrkvbCDN0knsi+PyomkY6McvjpXiM0CZ4T5P+iS3a27fkOT0Jd8V7 TXqQ== X-Gm-Message-State: AE9vXwN+fUjrm/sTSAXw2Jf7+IXc8pbomrbugmVRXxN3/kLW23fzaVcX7eDnVt5bOExbabaj X-Received: by 10.194.157.164 with SMTP id wn4mr9303965wjb.142.1473966860878; Thu, 15 Sep 2016 12:14:20 -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 pm1sm4752406wjb.40.2016.09.15.12.14.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 15 Sep 2016 12:14:20 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, jiri@resnulli.us, john.fastabend@gmail.com, kubakici@wp.pl, Jakub Kicinski Subject: [PATCHv4 net-next 13/15] net: act_mirred: allow statistic updates from offloaded actions Date: Thu, 15 Sep 2016 20:12:33 +0100 Message-Id: <1473966755-30106-14-git-send-email-jakub.kicinski@netronome.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1473966755-30106-1-git-send-email-jakub.kicinski@netronome.com> References: <1473966755-30106-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 Implement .stats_update() callback. The implementation is generic and can be reused by other simple actions if needed. Signed-off-by: Jakub Kicinski --- net/sched/act_mirred.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 6038c85d92f5..f9862d89cb93 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -204,6 +204,13 @@ static int tcf_mirred(struct sk_buff *skb, const struct tc_action *a, return retval; } +static void tcf_stats_update(struct tc_action *a, u64 bytes, u32 packets, + u64 lastuse) +{ + tcf_lastuse_update(&a->tcfa_tm); + _bstats_cpu_update(this_cpu_ptr(a->cpu_bstats), bytes, packets); +} + static int tcf_mirred_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref) { unsigned char *b = skb_tail_pointer(skb); @@ -280,6 +287,7 @@ static struct tc_action_ops act_mirred_ops = { .type = TCA_ACT_MIRRED, .owner = THIS_MODULE, .act = tcf_mirred, + .stats_update = tcf_stats_update, .dump = tcf_mirred_dump, .cleanup = tcf_mirred_release, .init = tcf_mirred_init,