diff options
author | yongari <yongari@FreeBSD.org> | 2013-03-13 02:11:45 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2013-03-13 02:11:45 +0000 |
commit | 9141c87f459f9a69d0f03ebb109f534d019267c5 (patch) | |
tree | ad651f35e6be614300aa394fdc9d93bc0f058c05 | |
parent | 73e151d1b287912609d3d565a25ee0e2e5e47f66 (diff) | |
download | FreeBSD-src-9141c87f459f9a69d0f03ebb109f534d019267c5.zip FreeBSD-src-9141c87f459f9a69d0f03ebb109f534d019267c5.tar.gz |
Disable TX IP header checksum offloading on RL_HWREV_8168CP. The
controller generates wrong checksummed frame if the IP packet has
IP options.
Submitted by: Alexander Bluhm via brad@openbsd
-rw-r--r-- | sys/dev/re/if_re.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c index 9ec914a..d9df41a 100644 --- a/sys/dev/re/if_re.c +++ b/sys/dev/re/if_re.c @@ -1587,7 +1587,8 @@ re_attach(device_t dev) * packet has IP options so disable TX IP checksum offloading. */ if (sc->rl_hwrev->rl_rev == RL_HWREV_8168C || - sc->rl_hwrev->rl_rev == RL_HWREV_8168C_SPIN2) + sc->rl_hwrev->rl_rev == RL_HWREV_8168C_SPIN2 || + sc->rl_hwrev->rl_rev == RL_HWREV_8168CP) ifp->if_hwassist = CSUM_TCP | CSUM_UDP; else ifp->if_hwassist = CSUM_IP | CSUM_TCP | CSUM_UDP; @@ -3419,7 +3420,8 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) { rev = sc->rl_hwrev->rl_rev; if (rev == RL_HWREV_8168C || - rev == RL_HWREV_8168C_SPIN2) + rev == RL_HWREV_8168C_SPIN2 || + rev == RL_HWREV_8168CP) ifp->if_hwassist |= CSUM_TCP | CSUM_UDP; else ifp->if_hwassist |= RE_CSUM_FEATURES; |