From patchwork Fri Feb 8 18:59:38 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 219253 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 409012C007A for ; Sat, 9 Feb 2013 06:00:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946859Ab3BHTAN (ORCPT ); Fri, 8 Feb 2013 14:00:13 -0500 Received: from mail-ee0-f49.google.com ([74.125.83.49]:38653 "EHLO mail-ee0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1946783Ab3BHTAK (ORCPT ); Fri, 8 Feb 2013 14:00:10 -0500 Received: by mail-ee0-f49.google.com with SMTP id d4so2190020eek.8 for ; Fri, 08 Feb 2013 11:00:09 -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=WTfQN5j1mOahie2/KPdnaoA0c9Dnfa7VqIhDAwZEG0s=; b=pC3eq3jsCsgyilQVQeyVfXxALRde3+TNZ5xUTchA7o0rQquCBKUIHCvgTq+sLgOvPf 71y+ipMT0XOR841/Wo+s3cxyl8XU88b9Sx3s6yw3zE2imBnZoNsxJMZDgNiE/YFxUl/f 9WxFL++ta7gTfFw4k1So3J6MvoTT0WxDJRyKK0LfuMZ5xwcLIHy51XsVIwAKaWE6dME9 4+WmuF+3QQ+2c9mt59UPmom0ZzgRYYGpBMKXqHqqEWZpNI8Whqv/yXVjjnNvItutSuUE IRYfX95QXLnxo9DtGepfg/d2Z3EG0T6Tg4c3gEqr4s5IPa2WkRoLQVOy7nZYZiLBEYf+ gXYA== X-Received: by 10.14.173.65 with SMTP id u41mr18779911eel.13.1360350009642; Fri, 08 Feb 2013 11:00:09 -0800 (PST) Received: from localhost (sun-0.pirko.cz. [84.16.102.25]) by mx.google.com with ESMTPS id b2sm48765420eep.9.2013.02.08.11.00.07 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 08 Feb 2013 11:00:08 -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 v2 08/11] tbf: fix value set for q->ptokens Date: Fri, 8 Feb 2013 19:59:38 +0100 Message-Id: <1360349981-27801-9-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1360349981-27801-1-git-send-email-jiri@resnulli.us> References: <1360349981-27801-1-git-send-email-jiri@resnulli.us> X-Gm-Message-State: ALoCoQmqmtmz7vWjfhJUETVB7uTO6CCMjnxW4htKGRZpa/dQAWF+vwFNuA/GhErikB4HY7AnyP8E 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 Acked-by: Eric Dumazet --- 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;