diff options
author | yongari <yongari@FreeBSD.org> | 2010-09-30 22:34:15 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2010-09-30 22:34:15 +0000 |
commit | 170a247ca87cf9b0fa48d0e07f9d51fa2c404900 (patch) | |
tree | c314ae979ea7c871ccf3d2cb66043b2581a63634 /sys/dev/bge | |
parent | 4211d66c8b165468cca9f0401a3abb5af3297408 (diff) | |
download | FreeBSD-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.c | 12 |
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; |