diff options
author | Pyun YongHyeon <yongari@FreeBSD.org> | 2011-01-13 22:49:10 +0000 |
---|---|---|
committer | Pyun YongHyeon <yongari@FreeBSD.org> | 2011-01-13 22:49:10 +0000 |
commit | d3b181ae8174660838a2fd395ce94b062971ccb3 (patch) | |
tree | e6129bba789bf4eafcfc896fbae4da340dfef7be /sys/dev/re | |
parent | 3b33d630748047737067268023d36d91600b5668 (diff) | |
download | src-d3b181ae8174660838a2fd395ce94b062971ccb3.tar.gz src-d3b181ae8174660838a2fd395ce94b062971ccb3.zip |
Allow TX/RX checksum offloading to be configured independently.
Notes
Notes:
svn path=/head/; revision=217381
Diffstat (limited to 'sys/dev/re')
-rw-r--r-- | sys/dev/re/if_re.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c index c0816fc2298c..30d9df587b21 100644 --- a/sys/dev/re/if_re.c +++ b/sys/dev/re/if_re.c @@ -2923,14 +2923,20 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) } } #endif /* DEVICE_POLLING */ - if (mask & IFCAP_HWCSUM) { - ifp->if_capenable ^= IFCAP_HWCSUM; - if (ifp->if_capenable & IFCAP_TXCSUM) + 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 |= RE_CSUM_FEATURES; else ifp->if_hwassist &= ~RE_CSUM_FEATURES; reinit = 1; } + if ((mask & IFCAP_RXCSUM) != 0 && + (ifp->if_capabilities & IFCAP_RXCSUM) != 0) { + ifp->if_capenable ^= IFCAP_RXCSUM; + reinit = 1; + } if ((mask & IFCAP_TSO4) != 0 && (ifp->if_capabilities & IFCAP_TSO) != 0) { ifp->if_capenable ^= IFCAP_TSO4; |