summaryrefslogtreecommitdiffstats
path: root/sys/dev/bce
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2006-10-24 08:24:31 +0000
committerscottl <scottl@FreeBSD.org>2006-10-24 08:24:31 +0000
commitdbd998a427edb992f0bdd7022b4811e5317c70d3 (patch)
treed6f616298e38bdd829c4cd687f91f0733290a36a /sys/dev/bce
parent1d06416b309668dcf3499b5368feedde76ba6b38 (diff)
downloadFreeBSD-src-dbd998a427edb992f0bdd7022b4811e5317c70d3.zip
FreeBSD-src-dbd998a427edb992f0bdd7022b4811e5317c70d3.tar.gz
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.
Diffstat (limited to 'sys/dev/bce')
-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 41dd02d..e6eae0e 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
OpenPOWER on IntegriCloud