Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Jun 2007 17:43:51 GMT
From:      Stas Kysel <stas_k_freebsd2@tiger.unisquad.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/113766: bad ip checksum when using re driver
Message-ID:  <200706161743.l5GHhpA6026550@www.freebsd.org>
Resent-Message-ID: <200706161750.l5GHo2CH096696@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         113766
>Category:       kern
>Synopsis:       bad ip checksum when using re driver
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 16 17:50:02 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Stas Kysel
>Release:        6.2-RELEASE
>Organization:
>Environment:
FreeBSD xxxxx.xxxxx.xxxx.xx 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 11:05:30 UTC 2007     root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP  i386
>Description:

Hi.

The problem is similar to PR 63982 (the same bug in "em" driver).
"re" driver is using and advertizing hardware checksum capability,
but NIC fails to calculate checksums, or at least to calculate them
correctly, for some packets.

Relevant piece of dmesg output:

re0: <RealTek 8168B/8111B PCIe Gigabit Ethernet> port 0xa800-0xa8ff mem 0xff5ff0
00-0xff5fffff irq 17 at device 0.0 on pci2
miibus0: <MII bus> on re0
rgephy0: <RTL8169S/8110S media interface> on miibus0
rgephy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX, 1000baseTX
-FDX, auto
re0: Ethernet address: 00:18:f3:07:9e:e6
re0: [FAST]

Workaround:
ifconfig rl0 -txcsum
>How-To-Repeat:
To reproduce:
1. Use RealTek 8168B/8111B PCIe Gigabit Ethernet card on computer #1,
any card on computer #2 (eg Realtek 8139).
2. Select TCP port on computer #1, eg port 333, and make sure that nothing is
listening on it.
3. run tcpdump on computer #2, eg:
  tcpdump -i rl0 -n -s 1600 -v port 333
4. From computer #2 try to connect to closed port on computer #1, eg using telnet:
  telnet computer1 333
5. In tcpdump output on computer #2 you will see that TCP RST packet has bad
ip checksum.


>Fix:
Workaround:
ifconfig re0 -txcsum



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200706161743.l5GHhpA6026550>