summaryrefslogtreecommitdiffstats
path: root/sys/dev/bge
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2010-09-30 22:34:15 +0000
committeryongari <yongari@FreeBSD.org>2010-09-30 22:34:15 +0000
commit170a247ca87cf9b0fa48d0e07f9d51fa2c404900 (patch)
treec314ae979ea7c871ccf3d2cb66043b2581a63634 /sys/dev/bge
parent4211d66c8b165468cca9f0401a3abb5af3297408 (diff)
downloadFreeBSD-src-170a247ca87cf9b0fa48d0e07f9d51fa2c404900.zip
FreeBSD-src-170a247ca87cf9b0fa48d0e07f9d51fa2c404900.tar.gz
Fix IFCAP_TXCSUM/IFCAP_RXCSUM handling. Previously bge(4) used
IFCAP_HWCSUM to know which capability should be changed such that disabling RX checksun offloading resulted in disabling TX checksum offloading.
Diffstat (limited to 'sys/dev/bge')
-rw-r--r--sys/dev/bge/if_bge.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 0f339ad..032b02a 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -4630,15 +4630,19 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
}
}
#endif
- if (mask & IFCAP_HWCSUM) {
- ifp->if_capenable ^= IFCAP_HWCSUM;
- if (IFCAP_HWCSUM & ifp->if_capenable &&
- IFCAP_HWCSUM & ifp->if_capabilities)
+ if ((mask & IFCAP_TXCSUM) != 0 &&
+ (ifp->if_capabilities & IFCAP_TXCSUM) != 0) {
+ ifp->if_capenable ^= IFCAP_TXCSUM;
+ if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
ifp->if_hwassist |= sc->bge_csum_features;
else
ifp->if_hwassist &= ~sc->bge_csum_features;
}
+ if ((mask & IFCAP_RXCSUM) != 0 &&
+ (ifp->if_capabilities & IFCAP_RXCSUM) != 0)
+ ifp->if_capenable ^= IFCAP_RXCSUM;
+
if ((mask & IFCAP_TSO4) != 0 &&
(ifp->if_capabilities & IFCAP_TSO4) != 0) {
ifp->if_capenable ^= IFCAP_TSO4;
OpenPOWER on IntegriCloud