[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5fca7aed-c6d5-85f0-0fad-f8eea384e613@pobox.com>
Date: Mon, 31 Oct 2016 09:24:23 -0400
From: Mark Lord <mlord@...ox.com>
To: Hayes Wang <hayeswang@...ltek.com>,
David Miller <davem@...emloft.net>
Cc: nic_swsd <nic_swsd@...ltek.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH net] r8152: Fix broken RX checksums.
On 16-10-31 04:14 AM, Hayes Wang wrote:
>
> Our hw engineer says only VER_01 has the issue about rx checksum.
> I need more information for checking it.
I've been doing driver work for Linux since 1991,
and learned long ago not to trust engineering specs 100%.
Get yourself a Raspberry Pi v1, set up an NFSROOT root filesystem for it,
and boot/run from that using the ethernet dongle to connect.
It should segfault like crazy when hardware RX checksums are enabled.
Definitely something wrong there, and whatever it is goes away
when RX checksums are disabled in the driver.
I have two theories as to why this happens:
1) The hardware buffer on the dongle overflows because the slow host CPU
does not empty it quickly enough. This results in a bad checksum on the
final/truncated packet in the buffer. The chip does not detect this.
2) Perhaps the device driver is looking at the wrong bits.
Either way, this results in data corruption and until otherwise fixed,
it is safest to just not enable RX checksums.
If it happens on a slow embedded CPU, then it can also happen on a heavily
loaded Intel/AMD CPU -- just a lot less frequently.
Cheers
--
Mark Lord
Real-Time Remedies Inc.
mlord@...ox.com
Powered by blists - more mailing lists