From patchwork Sat Feb 9 16:45:09 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 219407 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 84FEA2C0087 for ; Sun, 10 Feb 2013 03:45:46 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932457Ab3BIQpn (ORCPT ); Sat, 9 Feb 2013 11:45:43 -0500 Received: from mail-ee0-f51.google.com ([74.125.83.51]:43055 "EHLO mail-ee0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932453Ab3BIQpk (ORCPT ); Sat, 9 Feb 2013 11:45:40 -0500 Received: by mail-ee0-f51.google.com with SMTP id d17so2522800eek.10 for ; Sat, 09 Feb 2013 08:45:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:x-gm-message-state; bh=fzlG2az+TyfdTGyXpKaRNXmtxDL6MqGknoBQqxI5XX0=; b=TXhxxkEE920JOnZW6Wq/StYvzGfyNQ1hQhrzuV90KsEtN/m7yJr3D0RWkeXFDMKKly s8e3yCxz1kiqAor4jWACJPTd92mobn0BhtKNlMbe74oPVpbcQQA6rdT4GdZtaQ+r67gv 7HP4oSxrTpAya5eaR++Wbp5doN9v65TnJOVPX74l9sJm9EkyHCevhbI8AKW7wHJ86wUs 9EBszSlOko78N6hvcvkXq7U0wObHTgYM9eBSv3NehRg6Yb/eezl8O2GUXqv2AEohfbOL Hq22bvAx1ltJCTWhB1wI7EFvwc/QRTLzy992643pYp8nHGlJt1egq72PLbhoty/gsldY K4qQ== X-Received: by 10.14.183.67 with SMTP id p43mr29111006eem.10.1360428339226; Sat, 09 Feb 2013 08:45:39 -0800 (PST) Received: from localhost (sun-0.pirko.cz. [84.16.102.25]) by mx.google.com with ESMTPS id a1sm27866394eep.2.2013.02.09.08.45.37 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sat, 09 Feb 2013 08:45:38 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, jhs@mojatatu.com, kuznet@ms2.inr.ac.ru, j.vimal@gmail.com Subject: [patch net-next v3 08/11] tbf: fix value set for q->ptokens Date: Sat, 9 Feb 2013 17:45:09 +0100 Message-Id: <1360428312-1277-9-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1360428312-1277-1-git-send-email-jiri@resnulli.us> References: <1360428312-1277-1-git-send-email-jiri@resnulli.us> X-Gm-Message-State: ALoCoQmijwAuOvQiHT78eJRtyJ8dP+GLeDTTcGro41shqQxcWFAbcbOCUOPs7nCqN4KIB+yJfQrS Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org q->ptokens is in ns and we are assigning q->mtu directly to it. That is wrong. psched_l2t_ns() should be used to compute correct value. Signed-off-by: Jiri Pirko --- net/sched/sch_tbf.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c index dc562a8..6e8b670 100644 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@ -165,8 +165,8 @@ static struct sk_buff *tbf_dequeue(struct Qdisc *sch) if (q->peak_present) { ptoks = toks + q->ptokens; - if (ptoks > (long)q->mtu) - ptoks = q->mtu; + if (ptoks > (s64) psched_l2t_ns(&q->peak, q->mtu)) + ptoks = (s64) psched_l2t_ns(&q->peak, q->mtu); ptoks -= (s64) psched_l2t_ns(&q->peak, len); } toks += q->tokens; @@ -215,7 +215,8 @@ static void tbf_reset(struct Qdisc *sch) sch->q.qlen = 0; q->t_c = ktime_to_ns(ktime_get()); q->tokens = q->buffer; - q->ptokens = q->mtu; + if (q->peak_present) + q->ptokens = (s64) psched_l2t_ns(&q->peak, q->mtu); qdisc_watchdog_cancel(&q->watchdog); } @@ -296,11 +297,11 @@ static int tbf_change(struct Qdisc *sch, struct nlattr *opt) q->max_size = max_size; q->buffer = PSCHED_TICKS2NS(qopt->buffer); q->tokens = q->buffer; - q->ptokens = q->mtu; psched_ratecfg_precompute(&q->rate, rtab->rate.rate); if (ptab) { psched_ratecfg_precompute(&q->peak, ptab->rate.rate); + q->ptokens = (s64) psched_l2t_ns(&q->peak, q->mtu); q->peak_present = true; } else { q->peak_present = false;