Mark Lord [mailto:ml...@pobox.com] > Sent: Friday, November 04, 2016 9:50 PM [...] > Yeah, the device or driver is definitely getting confused with rx_desc > structures. > I added code to check for unlikely rx_desc values, and it found this for > starters: > > rx_desc: 00480801 00480401 00480001 0048fc00 0048f800 0048f400 > pkt_len=2045 > rx_data: 00 f0 48 00 00 ec 48 00 00 e8 48 00 00 e4 48 00 00 e0 48 00 00 dc 48 > 00 > 00 d8 48 00 00 d4 48 00 > rx_data: 00 d0 48 00 00 cc 48 00 00 c8 48 00 00 c4 48 00 00 c0 48 00 00 bc 48 > 00 > 00 b8 48 00 00 b4 48 00 > rx_data: 00 b0 48 00 00 ac 48 00 00 01 00 00 81 ed 00 00 00 01 00 00 00 00 00 > 00 > 00 00 00 02 4d ac 00 00 > rx_data: 10 00 ff ff ff ff 00 00 01 28 83 d6 ff 6d 00 20 25 b1 58 1b 68 ff 00 > 05 20 01 > 56 41 17 35 00 00 > ... > > The MTU/MRU on this link is the standard 1500 bytes, so a pkt_len of 2045 > isn't > valid here. > And the rx_desc values look an awful lot like the rx_data values that follow > it. > > There's definitely more broken here than just TCP RX checksums.
I don't think it is the issue of our hw. If it happens, windows or other OS may have problems, too. It is like the memory issue described in commit 990c9b347245("Merge branch 'r8152-fixes'"). It seems that the data in memory is not same with the one from the device. Besides, I test the raspberry pi with RTL8152. However, I don't find any checksum issue for TCP. I try to copy a large file and md5sum it through NFS. It works fine. Best Regards, Hayes