Subject: Re: bond + tc regression ?

From: Patrick McHardy <[email-masked]>
Date: Wed, 06 May 2009 15:31:06 +0200

Vladimir Ivashchenko wrote:
> On Wed, May 06, 2009 at 10:48:08AM +0000, Jarek Poplawski wrote:
> 
>>>>>> ifconfig -a
>>>>> bond0     Link encap:Ethernet  HWaddr 00:1B:24:BD:E9:CC
>>>>>           inet addr:xxx.xxx.135.44  Bcast:xxx.xxx.135.47  Mask:255.255.255.248
>>>>>           inet6 addr: fe80::21b:24ff:febd:e9cc/64 Scope:Link
>>>>>           UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
>>>>>           RX packets:436076190 errors:0 dropped:391250 overruns:0 frame:0
>>>>>           TX packets:2620156321 errors:0 dropped:0 overruns:0 carrier:0
>>>>>           collisions:0 txqueuelen:0
>>>>>           RX bytes:4210046233 (3.9 GiB)  TX bytes:2520272242 (2.3 GiB)
>>>> Could you try e.g.: ifconfig bond0 txqueuelen 1000
>>>> before tc qdisc add?
>>> The drops on ifconfig are not increasing - these numbers are there from some tests made
>>> before.
>>>
>> I'm not sure what do you mean? IMHO you don't use qdiscs properly,
>> so any TX problems end with drops. (Older kernel versions could mask
>> this problem with requeuing.)
> 
> Apologies, my bad, I misread what you wrote.
> 
> txqueuelen 1000 fixes the qdisc drops. I didn't notice that bond interfaces have it set to 0 by default.

The fifos use a queue length of 1 when the tx_queue_len is zero (which
was added as a workaround for similar problems a long time ago). Perhaps
we should instead refuse these broken configurations or at least print
a warning.