From patchwork Thu Dec 7 17:55:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Fastabend X-Patchwork-Id: 845733 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DyhT8L1S"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yt36v2xZBz9s7v for ; Fri, 8 Dec 2017 04:55:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753712AbdLGRze (ORCPT ); Thu, 7 Dec 2017 12:55:34 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:38825 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753907AbdLGRzU (ORCPT ); Thu, 7 Dec 2017 12:55:20 -0500 Received: by mail-pg0-f67.google.com with SMTP id f12so4973909pgo.5 for ; Thu, 07 Dec 2017 09:55:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=QYnV7tgkLr+rWjRbvvJG4BDXDwmKP0nsMEAQQ9Vcocw=; b=DyhT8L1SpIAUDaoh0zv+gdU2EZbRvQiFf7y9MDcX1+MeL0WCAdvwu8F/JBLK3AVD/e CO51Tbjmtw6sEIh3WSf7ovEDKTXDRt0TYGV9Ooj2hbZub8XcMTfuF4geAZWEDx6EtmNY dyqDfGCDlPvF98gE4Rra3deaEOZUQZtQjr4V914IF4uuKKDt9eUmFPKFNtEwPCEb2IDI I7jzxprCSaw409Xm5ApMNNG36lazF5vMaWS1sIJtNEEm7M6beQjqbvVVZUqBYCEewEts lfHeJieW1jT4eKF+abVlJPYqEXJ6VyCFbIAODywzCDArH05qa84Xi1Q9PtcCrFMNfThO 6Z2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:date:message-id:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=QYnV7tgkLr+rWjRbvvJG4BDXDwmKP0nsMEAQQ9Vcocw=; b=R/7YrFK2vrD+Y1K9zoXP7YsVBNvuk137ttLSnt2TM4M8CdggJyaZKsO7Lqwm53Xn31 kuMj0PC3fcC6i+QCHA8fmpaGmsk6emJvHJxzccdDIfBkRFTA0c0If4HT122aIGRdMahx Zko7SdxChydOwIlwC+KzGbq3MJxeZwy+0boXLHca9zymFWj3riZJKnvB073lSYHdJnJg ZxNS8e8lbcf0HJtdjqWk4jobePVx+mL9AbK7wxoY8PefKlrJ4Ws++d1SApAu06AFxcGa Yl1+vnqbQPUY3EzzXpklpywK+7UBrTP0kIKG6iDZrSPdez4fMynA9S1YcSHbmKmyYySQ gxMQ== X-Gm-Message-State: AKGB3mKTiVvfmotqieyzxgGcK7mXntmsn8kENf6MxGqBMl4Yv+QE7xtN 6Fl/rz/TTE9mPlgRijDLzqs= X-Google-Smtp-Source: AGs4zMbOy9DGhRfx9yB+YNkm7VkiwyHVKchzwtCPZeJVT6u1H4F72TJjLijOsbzTXKmLm2alfgRYrQ== X-Received: by 10.84.251.139 with SMTP id w11mr14389452pll.426.1512669319929; Thu, 07 Dec 2017 09:55:19 -0800 (PST) Received: from [127.0.1.1] ([72.168.144.118]) by smtp.gmail.com with ESMTPSA id z2sm9118823pfh.39.2017.12.07.09.55.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Dec 2017 09:55:19 -0800 (PST) Subject: [net-next PATCH 04/14] net: sched: provide per cpu qstat helpers From: John Fastabend To: willemdebruijn.kernel@gmail.com, daniel@iogearbox.net, eric.dumazet@gmail.com, davem@davemloft.net Cc: netdev@vger.kernel.org, jiri@resnulli.us, xiyou.wangcong@gmail.com Date: Thu, 07 Dec 2017 09:55:07 -0800 Message-ID: <20171207175506.5771.51870.stgit@john-Precision-Tower-5810> In-Reply-To: <20171207173500.5771.41198.stgit@john-Precision-Tower-5810> References: <20171207173500.5771.41198.stgit@john-Precision-Tower-5810> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The per cpu qstats support was added with per cpu bstat support which is currently used by the ingress qdisc. This patch adds a set of helpers needed to make other qdiscs that use qstats per cpu as well. Signed-off-by: John Fastabend --- include/net/sch_generic.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index bb806a0..7c4b96b 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -631,12 +631,39 @@ static inline void qdisc_qstats_backlog_dec(struct Qdisc *sch, sch->qstats.backlog -= qdisc_pkt_len(skb); } +static inline void qdisc_qstats_cpu_backlog_dec(struct Qdisc *sch, + const struct sk_buff *skb) +{ + this_cpu_sub(sch->cpu_qstats->backlog, qdisc_pkt_len(skb)); +} + static inline void qdisc_qstats_backlog_inc(struct Qdisc *sch, const struct sk_buff *skb) { sch->qstats.backlog += qdisc_pkt_len(skb); } +static inline void qdisc_qstats_cpu_backlog_inc(struct Qdisc *sch, + const struct sk_buff *skb) +{ + this_cpu_add(sch->cpu_qstats->backlog, qdisc_pkt_len(skb)); +} + +static inline void qdisc_qstats_cpu_qlen_inc(struct Qdisc *sch) +{ + this_cpu_inc(sch->cpu_qstats->qlen); +} + +static inline void qdisc_qstats_cpu_qlen_dec(struct Qdisc *sch) +{ + this_cpu_dec(sch->cpu_qstats->qlen); +} + +static inline void qdisc_qstats_cpu_requeues_inc(struct Qdisc *sch) +{ + this_cpu_inc(sch->cpu_qstats->requeues); +} + static inline void __qdisc_qstats_drop(struct Qdisc *sch, int count) { sch->qstats.drops += count; @@ -844,6 +871,14 @@ static inline void rtnl_qdisc_drop(struct sk_buff *skb, struct Qdisc *sch) qdisc_qstats_drop(sch); } +static inline int qdisc_drop_cpu(struct sk_buff *skb, struct Qdisc *sch, + struct sk_buff **to_free) +{ + __qdisc_drop(skb, to_free); + qdisc_qstats_cpu_drop(sch); + + return NET_XMIT_DROP; +} static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free)