NetBSD Problem Report #49739

From fukumoto@imasy.or.jp  Mon Mar  9 15:39:40 2015
Return-Path: <fukumoto@imasy.or.jp>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 650F0A6551
	for <gnats-bugs@gnats.NetBSD.org>; Mon,  9 Mar 2015 15:39:40 +0000 (UTC)
Message-Id: <20150309153932.ECCF421950@kestrel.wings.imasy.or.jp>
Date: Tue, 10 Mar 2015 00:39:32 +0900 (JST)
From: fukumoto@imasy.or.jp
Reply-To: fukumoto@imasy.or.jp
To: gnats-bugs@NetBSD.org
Subject: re(4) Realtek 8111C IP4CSUM does not work
X-Send-Pr-Version: 3.95

>Number:         49739
>Category:       kern
>Synopsis:       re(4) Realtek 8111C IP4CSUM does not work
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 09 15:40:00 +0000 2015
>Originator:     fukumoto@imasy.or.jp
>Release:        NetBSD 7.0_BETA
>Organization:

>Environment:


System: NetBSD kestrel 7.0_BETA NetBSD 7.0_BETA (GENERIC.201503082150Z) amd64
Architecture: x86_64
Machine: amd64
>Description:

	Checksum of transmitted packet is not calculated properly and
	filled with 0x0000 if IP4CSUM option is used.  Hardware is
	GIGABYTE GA-MA785GM-US2H motherboard with Realtek 8111C chip.

	In the following typescript, ping successes initially since
	ip4csum is off, and then fails when ip4csum is turned on, then
	successes again after ip4csum is turned off.  I confirmed at
	the target host that the same packet with zero checksum field
	is observed by tcpdump.


$ dmesg | grep re0             
re0 at pci2 dev 0 function 0: RealTek 8168/8111 PCIe Gigabit Ethernet (rev. 0x02)
re0: interrupting at ioapic0 pin 18
re0: Ethernet address xx:xx:xx:xx:xx:xx
re0: using 256 tx descriptors
rgephy0 at re0 phy 7: RTL8169S/8110S/8211 1000BASE-T media interface, rev. 2
$ sudo tcpdump -v -x -l icmp &
[1] 15752
$ tcpdump: listening on re0, link-type EN10MB (Ethernet), capture size 65535 bytes
$ 
$ sudo ifconfig re0 -ip4csum
$ ping -c 1 hummingbird
PING hummingbird (192.168.0.8): 64 data bytes
64 bytes from 192.168.0.8: icmp_seq=0 ttl=255 time=0.795274 ms

----hummingbird PING Statistics----
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.795274/0.795274/0.795274/0.000000 ms
$ 21:49:50.508345 IP (tos 0x0, ttl 255, id 8777, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.0.3 > 192.168.0.8: ICMP echo request, id 27933, seq 0, length 64
        0x0000:  4500 0054 2249 0000 ff01 1804 c0a8 0003
        0x0010:  c0a8 0008 0800 99d5 6d1d 0000 28a2 0000
        0x0020:  0000 0000 b464 0406 0000 0000 1000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  0000 0000
21:49:50.508990 IP (tos 0x0, ttl 255, id 7586, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.0.8 > 192.168.0.3: ICMP echo reply, id 27933, seq 0, length 64
        0x0000:  4500 0054 1da2 0000 ff01 1cab c0a8 0008
        0x0010:  c0a8 0003 0000 a1d5 6d1d 0000 28a2 0000
        0x0020:  0000 0000 b464 0406 0000 0000 1000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  0000 0000

$ sudo ifconfig re0 ip4csum
$ ping -c 1 hummingbird
PING hummingbird (192.168.0.8): 64 data bytes
21:50:15.877814 IP (tos 0x0, ttl 255, id 8782, offset 0, flags [none], proto ICMP (1), length 84, bad cksum 0 (->17ff)!)
    192.168.0.3 > 192.168.0.8: ICMP echo request, id 56669, seq 0, length 64
        0x0000:  4500 0054 224e 0000 ff01 0000 c0a8 0003
        0x0010:  c0a8 0008 0800 aecf dd5d 0000 41a2 0000
        0x0020:  0000 0000 1014 0a1c 0000 0000 1000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  0000 0000

^C
----hummingbird PING Statistics----
1 packets transmitted, 0 packets received, 100.0% packet loss
$ sudo ifconfig re0 -ip4csum
$ ping -c 1 hummingbird
PING hummingbird (192.168.0.8): 64 data bytes
64 bytes from 192.168.0.8: icmp_seq=0 ttl=255 time=1.020751 ms

----hummingbird PING Statistics----
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.020751/1.020751/1.020751/0.000000 ms
$ 21:50:37.734016 IP (tos 0x0, ttl 255, id 8787, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.0.3 > 192.168.0.8: ICMP echo request, id 5787, seq 0, length 64
        0x0000:  4500 0054 2253 0000 ff01 17fa c0a8 0003
        0x0010:  c0a8 0008 0800 84d2 169b 0000 57a2 0000
        0x0020:  0000 0000 7ddc 7713 0000 0000 1000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  0000 0000
21:50:37.734884 IP (tos 0x0, ttl 255, id 7588, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.0.8 > 192.168.0.3: ICMP echo reply, id 5787, seq 0, length 64
        0x0000:  4500 0054 1da4 0000 ff01 1ca9 c0a8 0008
        0x0010:  c0a8 0003 0000 8cd2 169b 0000 57a2 0000
        0x0020:  0000 0000 7ddc 7713 0000 0000 1000 0000
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
        0x0050:  0000 0000

$ 

>How-To-Repeat:

>Fix:


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.