From: Mark Lord <mlord@pobox.com>
To: Hayes Wang <hayeswang@realtek.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: nic_swsd <nic_swsd@realtek.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: Re: [PATCH net 1/2] r8152: fix the sw rx checksum is unavailable
Date: Thu, 24 Nov 2016 07:31:17 -0500 [thread overview]
Message-ID: <baf5246d-9d8a-4029-6823-350ed561fd33@pobox.com> (raw)
In-Reply-To: <95fa9f67-3af6-6749-0e2b-c95406486f7d@pobox.com>
On 16-11-23 02:29 PM, Mark Lord wrote:
> On 16-11-23 10:12 AM, Hayes Wang wrote:
>> Mark Lord [mlord@pobox.com]
>> [...]
>>> What does this code do:
>>
>>>> static void r8153_set_rx_early_size(struct r8152 *tp)
>>>> {
>>>> u32 mtu = tp->netdev->mtu;
>>>> u32 ocp_data = (agg_buf_sz - mtu - VLAN_ETH_HLEN - VLAN_HLEN) / 4;
>>>>
>>>> ocp_write_word(tp, MCU_TYPE_USB, USB_RX_EARLY_SIZE, ocp_data);
>>>> }
>>
>> This only works for RTL8153. However, what you use is RTL8152.
>> It is like delay completion. It is used to reduce the loading of CPU
>> by letting a transfer contain more data to reduce the number of
>> transfers.
>>
>>> How is ocp_data used by the hardware?
>>> Shouldn't the calculation also include sizeof(rx_desc) in there somewhere?
>>
>> The algorithm is from our hw engineers, and it should be
>>
>> (agg_buf_sz - packet size) / 8
>>
>> You could refer to commit a59e6d815226 ("r8152: correct the rx early size").
>
> Thanks.
>
> Right now I am working quite hard trying to narrow things down exactly.
> You are correct that the driver does appear to be careful about accesses
> beyond the filled portion of a URB buffer -- for some reason I thought
> the original driver had issues there, but looking again it does not seem to.
>
> One idea that is now looking more likely:
> Things could be suffering from speculative CPU accesses to RAM
> (the system here has non-coherent d-cache/RAM).
> This could incorrectly pre-load data from adjacent URB buffers
> into the d-cache, creating coherency issues. I am testing now
> with cacheline-sized guard zones between the buffers to see if
> that is the issue or not.
Nope. Guard zones did not fix it, so it's probably not a prefetch issue.
Oddly, adding a couple of memory barriers to specific places in the driver
does help, A LOT. Still not 100%, but it did pass 1800 reboot tests over night
with only three bad rx_desc's reported.
That's a new record here for the driver using kmalloc'd buffers,
and put reliability on par with using non-cacheable buffers.
Any way we look at it though, the chip/driver are simply unreliable,
and relying upon hardware checksums (which fail due to the driver
looking at garbage rather than the checksum bits) leads to data corruption.
Cheers
next prev parent reply other threads:[~2016-11-24 12:31 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-11 7:15 [PATCH net 0/2] r8152: rx patches Hayes Wang
2016-11-11 7:15 ` [PATCH net 1/2] r8152: fix the sw rx checksum is unavailable Hayes Wang
2016-11-17 3:36 ` Hayes Wang
2016-11-17 14:14 ` Mark Lord
2016-11-17 14:25 ` Mark Lord
[not found] ` <d683c019-4e0f-6fe6-368c-c4fc86c72fe6@pobox.com>
2016-11-18 7:57 ` Hayes Wang
2016-11-18 12:03 ` Mark Lord
2016-11-22 13:12 ` Mark Lord
2016-11-23 3:52 ` Hayes Wang
2016-11-23 13:41 ` Mark Lord
2016-11-23 15:12 ` Hayes Wang
2016-11-23 19:29 ` Mark Lord
2016-11-24 3:24 ` Hayes Wang
2016-11-24 12:31 ` Mark Lord [this message]
2016-11-24 13:26 ` Hayes Wang
2016-11-24 15:24 ` Mark Lord
2016-11-25 6:11 ` Hayes Wang
2016-11-25 12:36 ` Mark Lord
2016-11-24 16:21 ` David Miller
2016-11-24 16:43 ` Mark Lord
2016-11-24 17:00 ` Mark Lord
2016-11-24 17:13 ` David Miller
2016-11-24 17:11 ` David Miller
2016-11-24 18:34 ` Mark Lord
2016-11-24 18:49 ` Mark Lord
2016-11-24 19:00 ` Greg KH
2016-11-24 19:10 ` Mark Lord
2016-11-24 19:17 ` Greg KH
2016-11-25 9:52 ` Hayes Wang
2016-11-25 13:32 ` Mark Lord
2016-11-25 0:27 ` Francois Romieu
2016-11-25 3:49 ` Mark Lord
2016-11-25 9:53 ` Greg KH
2016-11-25 12:34 ` Mark Lord
2016-11-25 12:41 ` Mark Lord
2016-11-25 14:22 ` Greg KH
2016-11-25 14:35 ` Mark Lord
2016-11-25 12:49 ` Mark Lord
2016-11-25 14:24 ` Greg KH
2016-11-25 16:58 ` David Miller
2016-11-30 11:58 ` Hayes Wang
2016-12-09 3:23 ` Hayes Wang
2016-12-09 13:05 ` Mark Lord
2017-01-01 0:07 ` Ansis Atteka
2017-01-03 0:40 ` Ansis Atteka
2017-01-03 13:19 ` Mark Lord
2017-01-09 7:58 ` Hayes Wang
2019-01-05 14:14 ` r8152: data corruption in various scenarios Mark Lord
2019-01-05 14:22 ` Mark Lord
2019-01-06 19:14 ` Kai Heng Feng
2019-01-06 21:13 ` Mark Lord
2019-01-06 21:16 ` Mark Lord
2019-01-07 3:53 ` Hayes Wang
2019-01-07 16:01 ` Mario.Limonciello
2019-01-07 18:06 ` Mark Lord
2019-01-07 18:27 ` Mario.Limonciello
2019-01-07 19:24 ` Mark Lord
2019-01-07 4:09 ` Kai Heng Feng
2019-01-07 4:13 ` Mark Lord
2019-01-07 6:46 ` Kai Heng Feng
2019-01-07 7:01 ` Mark Lord
2016-11-24 18:42 ` [PATCH net 1/2] r8152: fix the sw rx checksum is unavailable Greg KH
2016-11-24 18:58 ` Mark Lord
2016-11-25 6:31 ` Hayes Wang
2016-11-25 6:51 ` Hayes Wang
2016-11-25 12:35 ` Mark Lord
2016-11-24 16:19 ` David Miller
2016-11-24 12:37 ` Hayes Wang
2016-11-11 7:15 ` [PATCH net 2/2] r8152: rx descriptor check Hayes Wang
2016-11-11 12:13 ` Francois Romieu
2016-11-12 13:21 ` Mark Lord
2016-11-14 6:43 ` Hayes Wang
2016-11-15 1:10 ` Francois Romieu
2016-11-17 3:05 ` Hayes Wang
2016-11-13 17:39 ` David Miller
2016-11-13 20:34 ` Mark Lord
2016-11-13 20:38 ` Mark Lord
2016-11-14 7:23 ` Hayes Wang
2016-11-14 17:27 ` David Miller
2016-11-14 7:03 ` Hayes Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=baf5246d-9d8a-4029-6823-350ed561fd33@pobox.com \
--to=mlord@pobox.com \
--cc=hayeswang@realtek.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®