kern/113766: bad ip checksum when using re driver

Stas Kysel stas_k_freebsd2 at
Sat Jun 16 17:50:03 UTC 2007

>Number:         113766
>Category:       kern
>Synopsis:       bad ip checksum when using re driver
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 16 17:50:02 GMT 2007
>Originator:     Stas Kysel
>Release:        6.2-RELEASE
FreeBSD xxxxx.xxxxx.xxxx.xx 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 11:05:30 UTC 2007     root at  i386


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]

ifconfig rl0 -txcsum
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.

ifconfig re0 -txcsum


More information about the freebsd-bugs mailing list