summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2013-03-13 02:11:45 +0000
committeryongari <yongari@FreeBSD.org>2013-03-13 02:11:45 +0000
commit9141c87f459f9a69d0f03ebb109f534d019267c5 (patch)
treead651f35e6be614300aa394fdc9d93bc0f058c05
parent73e151d1b287912609d3d565a25ee0e2e5e47f66 (diff)
downloadFreeBSD-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.c6
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;
OpenPOWER on IntegriCloud