aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2006-10-24 08:24:31 +0000
committerScott Long <scottl@FreeBSD.org>2006-10-24 08:24:31 +0000
commit4eaefb8160f06ddea7d3ad7120ee9c4ca1e5af99 (patch)
treed6f616298e38bdd829c4cd687f91f0733290a36a
parenta88ab4862463555e0467def1ccde65b386fa8e29 (diff)
downloadsrc-4eaefb8160f06ddea7d3ad7120ee9c4ca1e5af99.tar.gz
src-4eaefb8160f06ddea7d3ad7120ee9c4ca1e5af99.zip
Refine the checksum hack a little. It appears that the chip can handle UDP
and TCP checksum offloading fine, it only has a problem with IP checksums on IP fragments.. Barring a fix or workaround available from the hardware, the real solution would be to have finer grained control in the stack over what can and cannot be assisted in hardware.
Notes
Notes: svn path=/head/; revision=163642
-rw-r--r--sys/dev/bce/if_bcereg.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/bce/if_bcereg.h b/sys/dev/bce/if_bcereg.h
index 41dd02dd046a..e6eae0e4eb53 100644
--- a/sys/dev/bce/if_bcereg.h
+++ b/sys/dev/bce/if_bcereg.h
@@ -4613,11 +4613,15 @@ struct fw_info {
#define BCE_BUS_SPACE_MAXADDR 0xFFFFFFFFFF
#endif
-/* XXX UDP checksum offload seems to cause problems on transmit */
-#ifdef BCE_UDP_CSUM
+/*
+ * XXX Checksum offload involving IP fragments seems to cause problems on
+ * transmit. Disable it for now, hopefully there will be a more elegant
+ * solution later.
+ */
+#ifdef BCE_IP_CSUM
#define BCE_IF_HWASSIST (CSUM_IP | CSUM_TCP | CSUM_UDP)
#else
-#define BCE_IF_HWASSIST (CSUM_TCP)
+#define BCE_IF_HWASSIST (CSUM_TCP | CSUM_UDP)
#endif
#if __FreeBSD_version < 700000