From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Pirko Subject: Re: [patch net-next v5 10/11] tbf: take into account gso skbs Date: Tue, 12 Feb 2013 18:31:27 +0100 Message-ID: <20130212173127.GC18057@minipsycho.orion> References: <1360663929-1023-1-git-send-email-jiri@resnulli.us> <1360663929-1023-11-git-send-email-jiri@resnulli.us> <1360687182.6884.5.camel@edumazet-glaptop> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com, jhs@mojatatu.com, kuznet@ms2.inr.ac.ru, j.vimal@gmail.com To: Eric Dumazet Return-path: Received: from mail-ee0-f46.google.com ([74.125.83.46]:40139 "EHLO mail-ee0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933428Ab3BLRbf (ORCPT ); Tue, 12 Feb 2013 12:31:35 -0500 Received: by mail-ee0-f46.google.com with SMTP id e49so178476eek.19 for ; Tue, 12 Feb 2013 09:31:32 -0800 (PST) Content-Disposition: inline In-Reply-To: <1360687182.6884.5.camel@edumazet-glaptop> Sender: netdev-owner@vger.kernel.org List-ID: Tue, Feb 12, 2013 at 05:39:42PM CET, eric.dumazet@gmail.com wrote: >On Tue, 2013-02-12 at 11:12 +0100, Jiri Pirko wrote: >> Ignore max_size check for gso skbs. This check made bigger packets >> incorrectly dropped. Remove this limitation for gso skbs. >> >> Also for peaks, ignore mtu for gso skbs. >> >> Signed-off-by: Jiri Pirko >> --- >> net/sched/sch_tbf.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c >> index c8388f3..8973e93 100644 >> --- a/net/sched/sch_tbf.c >> +++ b/net/sched/sch_tbf.c >> @@ -121,7 +121,7 @@ static int tbf_enqueue(struct sk_buff *skb, struct Qdisc *sch) >> struct tbf_sched_data *q = qdisc_priv(sch); >> int ret; >> >> - if (qdisc_pkt_len(skb) > q->max_size) >> + if (qdisc_pkt_len(skb) > q->max_size && !skb_is_gso(skb)) >> return qdisc_reshape_fail(skb, sch); >> >> ret = qdisc_enqueue(skb, q->qdisc); >> @@ -165,7 +165,7 @@ static struct sk_buff *tbf_dequeue(struct Qdisc *sch) >> >> if (q->peak_present) { >> ptoks = toks + q->ptokens; >> - if (ptoks > q->mtu) >> + if (ptoks > q->mtu && !skb_is_gso(skb)) >> ptoks = q->mtu; >> ptoks -= (s64) psched_l2t_ns(&q->peak, len); >> } > > >I guess this part is wrong. > >If we dont cap ptoks to q->mtu we allow bigger bursts. > >Ideally we could re-segment the skb if psched_l2t_ns(&q->peak, len) is >bigger than q->mtu Okay - that sounds reasonable. Can you give me some hint how would you imagine to do this? Thanks. Jiri > > > > > >