Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756060AbZCDXfs (ORCPT ); Wed, 4 Mar 2009 18:35:48 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754013AbZCDXfg (ORCPT ); Wed, 4 Mar 2009 18:35:36 -0500 Received: from mail-bw0-f178.google.com ([209.85.218.178]:45780 "EHLO mail-bw0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751599AbZCDXff (ORCPT ); Wed, 4 Mar 2009 18:35:35 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=niWhgVQHyuZZQKyMFqBLUBYp4eJvDa/bw9YalwrgI1M/oUfdwBhdkjzCoEXRleIMkK qZ2fMwyPAP4rfgxa/4RUFzWfRV387KfhCK/d4ljJ+9aEC+31XSxKPKIbKDYLvm55MxWu ygMSwkXEQ1RPQt+LVubNv1IGsU3xQqoTLresw= Date: Thu, 5 Mar 2009 00:34:58 +0100 From: Jarek Poplawski To: David Miller Cc: John Dykstra , Joao Correia , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, akpm@linux-foundation.org, Stephen Hemminger Subject: [PATCH] Re: some tc commands fail on 2.6.29-rc6-git5, works on 2.6.28.7 Message-ID: <20090304233458.GA8303@ami.dom.local> References: <20090301165729.8e08e1d7.akpm@linux-foundation.org> <49AC28FF.1040102@gmail.com> <1236135028.7883.44.camel@Maple> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1236135028.7883.44.camel@Maple> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3258 Lines: 94 On Tue, Mar 03, 2009 at 08:50:28PM -0600, John Dykstra wrote: > On Tue, 2009-03-03 at 23:10 +0000, Joao Correia wrote: > > I have confirmed again that the exact same commands (as on the > > original message), work flawlessly on 2.6.28.7 without a hitch, and, > > AFAIK, work as intended. I have also tried the latest 2.6.29-rc6-git7 > > and it still fails like on git6. > > I have also reproduced this on Linus' latest 2.6.29-rc6 tree, using tc > version iproute2-ss071016 and a kernel config with all traffic control > features enabled. > > The error reported by tc comes from the kernel-level check added by: > > commit c1b56878fb68e9c14070939ea4537ad4db79ffae > Author: Stephen Hemminger > Date: Tue Nov 25 21:14:06 2008 -0800 > > tc: policing requires a rate estimator > > Found that while trying average rate policing, it was possible to > request average rate policing without a rate estimator. This results > in no policing which is harmless but incorrect. > > Since policing could be setup in two steps, need to check > in the kernel. > > Signed-off-by: Stephen Hemminger > Signed-off-by: David S. Miller > > I got the same error when using the tc version iproute2-ss090115 built > this evening from the public git repository. > > -- John > Very nice diagnose, thanks! Jarek P. PS: after upgrading iproute I couldn't reproduce this seemingly OK test with older versions anymore... -------------------> pkt_sched: act_police: Fix a rate estimator test. A commit c1b56878fb68e9c14070939ea4537ad4db79ffae "tc: policing requires a rate estimator" introduced a test which invalidates previously working configs, based on examples from iproute2: doc/actions/actions-general. This is too rigorous: a rate estimator is needed only when police's "avrate" option is used. Reported-by: Joao Correia Diagnosed-by: John Dykstra Signed-off-by: Jarek Poplawski --- net/sched/act_police.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) diff --git a/net/sched/act_police.c b/net/sched/act_police.c index 5c72a11..f8f047b 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c @@ -183,13 +183,6 @@ override: if (R_tab == NULL) goto failure; - if (!est && (ret == ACT_P_CREATED || - !gen_estimator_active(&police->tcf_bstats, - &police->tcf_rate_est))) { - err = -EINVAL; - goto failure; - } - if (parm->peakrate.rate) { P_tab = qdisc_get_rtab(&parm->peakrate, tb[TCA_POLICE_PEAKRATE]); @@ -205,6 +198,12 @@ override: &police->tcf_lock, est); if (err) goto failure_unlock; + } else if (tb[TCA_POLICE_AVRATE] && + (ret == ACT_P_CREATED || + !gen_estimator_active(&police->tcf_bstats, + &police->tcf_rate_est))) { + err = -EINVAL; + goto failure_unlock; } /* No failure allowed after this point */ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/