2011/6/11 Michael Büsch <m...@bues.ch>:
> On Sat, 11 Jun 2011 22:28:00 +0200
> Rafał Miłecki <zaj...@gmail.com> wrote:
>
>> 2011/4/21  <francesco.gring...@ing.unibs.it>:
>> > Hello Michael,
>> >
>> > I'm doing experiments sending greedy udp traffic from a b43 station to a 
>> > b43 access point. I have noticed that switching from 2.6.34-rc7 to 2.6.35 
>> > the sendmsg call becomes "almost" non blocking when sending from a 
>> > Broadcom nic while it is still as usual with other nics.
>> >
>> > If I load the channel with a 54Mb/s iperf stream (iperf -b54M ...) on < 
>> > 2.6.35 I see that the application is blocked times to times when calling 
>> > sendmsg() so that it is slowed down to the channel capabilities and 
>> > packets are not internally dropped. Clearly they can still be lost on the 
>> > air :-)
>> >
>> > With >= 2.6.35 the application is never blocked and all the packets 
>> > exceeding the channel capabilities are internally lost by the kernel: in 
>> > particular it is the asynchronous tx worker (b43_tx_work) that drops them, 
>> > since it calls b43_dma_tx even if the interface has been stopped because 
>> > the dma FIFO queue was full. Apart from packets being lost, the CPU load 
>> > increases since packets cross all the kernel code, from udp_sendmsg down 
>> > to b43_dma_tx even if they will be dropped.
>> >
>> > I don't think this is the expected behavior on Linux: I did some testing 
>> > to check what happens with other devices and I can experience only the 
>> > first behavior on Intel and Atheros WiFi nics as well as on Fast Ethernet 
>> > nics (in this case I run iperf -b100M :-) independently of the kernel 
>> > version.
>> >
>> > Strangely the b43 sources in 2.6.35 are really similar to those in 
>> > 2.6.34-rc7 and the differences do not seem to justify the different 
>> > behavior. There are also other weird observations (like qdisc never used 
>> > in < 2.6.34-rc7) but I would like to have a first opinion from your side.
>> >
>> > Many thanks,
>> > -Francesco
>> >
>> > P.S. what reported does not depend on the firmware version. I also tried a 
>> > few cards (4306, 4311 and 4318) and nothing changed.
>>
>> I have (finally) found some time to dig into it. First of all, I
>> reproduced this on wireless-testing (3.0-rc2) on my BCM4312. I
>> "achieved" 34 Gb/s of UDP traffic.
>>
>> The problem is that we do not stop any queue. I've been transferring
>> UDP stream for 10 seconds, and queued was not stopped even once.
>>
>> We stop queue when the ring is full, so I've added debugging message
>> every time "used_slots" changes for TX ring. Over that 10 seconds the
>> maximal value of "used_slots" was 14.
>>
>> Does it mean firmware lies us about transmitted packages? Any hints anyone?
>
> No that would horribly crash.

I meant lying like "yes, yes, I transmitted packet you gave me", while
firmware just ate it or sth.


> I'd rather say that we are dropping packets somewhere before they even reach 
> DMA.

Weird, every problem should be reported, especially with DMAVERBOSE.
I'll try to trace packets starting with b43_op_tx anyway.

-- 
Rafał

_______________________________________________
b43-dev mailing list
b43-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/b43-dev

Reply via email to