Subject: Re: [PATCH v6 0/2] Ethernet drivers for WIZnet chips

From: Mike Sinkovsky <[email-masked]>
Date: Tue, 03 Apr 2012 18:15:15 +0600

03.04.2012 17:39, Eric Dumazet написал:
> On Tue, 2012-04-03 at 16:58 +0600, Mike Sinkovsky wrote:
>> Based on original driver from chip manufacturer, but nearly full rewite.
>> Tested and used in production with Blackfin BF531 embedded processor.
>>
>> Signed-off-by: Mike Sinkovsky<[email-masked]>
>> ---
>> v6:
>>   - remove (S0_TX_FSR<  skb->len) check in TX handler, it doesn't work
>>     anyway. Chip can transmit only one frame with MTU 1500 at a time,
>>     and tx buffer size is bigger.
>
> So what happens if XXX frames are given to start_xmit() in a flood ?
>
> You removed any flow control, how can this work ?
>
> Device has an infinite queue ?

As I understand from datasheet, device doesn't have tx queue at all.
It have tx buffer, processor must save transmitted frame to it, and then 
save SEND command to command register. When transmission completed, 
SENDOK bit in interrupt register will be set to '1', and interrupt 
handler will be called.

So, according to datasheet, driver must stop queue in start_xmit() 
routine, and wake in interrupt handler of SENDOK bit.
I tried this, and it basically works, but SOMETIMES, very rare, I see 
tx_timeout().

And without any flow control - driver works perfectly.
Weird, don't know why.

-- 
Mike