[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <522609C9.7030901@freescale.com>
Date: Tue, 3 Sep 2013 19:09:45 +0300
From: Claudiu Manoil <claudiu.manoil@...escale.com>
To: Eric Dumazet <eric.dumazet@...il.com>
CC: Per Dalén <per.dalen@...eartv.com>,
<netdev@...r.kernel.org>
Subject: Re: BQL support in gianfar causes network hiccup
On 9/3/2013 6:42 PM, Eric Dumazet wrote:
> On Tue, 2013-09-03 at 09:55 +0200, Per Dalén wrote:
>
>> Yes, it's weird. The only reason I removed the BQL commit
>> (d8a0f1b0af67679bba886784de10d8c21acc4e0e) was because the error Tino
>> Keitel had was the similar as mine.
>
>
> I suspect a genuine race in this driver. BQL only makes this race happen
> more often.
>
> gfar_poll_sq() has the following :
>
> /* run Tx cleanup to completion */
> if (tx_queue->tx_skbuff[tx_queue->skb_dirtytx])
> gfar_clean_tx_ring(tx_queue);
>
> While gfar_poll() has a different method :
>
> if (tx_queue->tx_skbuff[tx_queue->skb_dirtytx]) {
> gfar_clean_tx_ring(tx_queue);
> has_tx_work = 1;
> }
>
> Note the has_tx_work use in gfar_poll() only.
>
> Note that memory barriers seems to be missing.
>
> 1) In your cases, is it gfar_poll_sq() or gfar_poll() that is used ?
>
It's gfar_poll_sq(). P2020 single Tx/Rx queues.
I'm also seeing carrier errors and packet collisions in this case
(100/Half link).
> 2) Is the bug happening if only one CPU is used ?
>
I didn't try this. Maybe Per did?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists