Subject: Re: [PATCH 1/2]: [NET_SCHED]: Make all rate based scheduler work with TSO.

From: Bill Fink <[email-masked]>
Date: Mon, 3 Sep 2007 23:34:56 -0400

On Sat, 1 Sep 2007, Jesper Dangaard Brouer wrote:

> On Sat, 1 Sep 2007, Patrick McHardy wrote:
> 
> > Jesper Dangaard Brouer wrote:
> >> commit 6fdc0f061be94f5e297650961360fb7a9d1cc85d
> >> Author: Jesper Dangaard Brouer <[email-masked]>
> >> Date:   Thu Aug 30 17:53:42 2007 +0200
> >> 
> >> [NET_SCHED]: Make all rate based scheduler work with TSO.
> >> 
> >> Change L2T (length to time) macros, in all rate based schedulers, to
> >> call a common function qdisc_l2t() that does the rate table lookup.
> >> This function handles if the packet size lookup is larger than the
> >> rate table, which often occurs with TSO enabled.
> >
> >
> > It still won't work properly with TSO (TBF for example already drops
> > oversized packets during ->enqueue), but its a good cleanup anyway.
> 
> Then lets call it a cleanup of the L2T macros.  In the next step we will 
> fix the different schedulers, to use the ability to lookup larger sized 
> packets. (I did notice the TBF scheduler would drop oversized packets).

Hmmm.  I guess this is also why TBF doesn't seem to work with 9000 byte
jumbo frames.

[root@lang4 ~]# tc qdisc add dev eth2 root tbf rate 2gbit buffer 5000000 limit 18000
[root@lang4 ~]# tc qdisc show                                                   qdisc pfifo_fast 0: dev eth0 root bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc tbf 8002: dev eth2 rate 2000Mbit burst 5000000b lat 4.3s

With 9000 byte jumbo frames:

[root@lang4 ~]# ./nuttcp-5.5.5 -w10m 192.168.88.14
    0.0000 MB /   5.00 sec =    0.0000 Mbps 0 %TX 0 %RX

But reducing the MSS to 1460 to emulate a standard 1500 byte Ethernet MTU:

[root@lang4 ~]# ./nuttcp-5.5.5 -M1460 -w10m 192.168.88.14
 2335.7048 MB /  10.05 sec = 1950.3419 Mbps 62 %TX 22 %RX

This is on a 2.6.20.7 kernel.

						-Bill