From 4eaefb8160f06ddea7d3ad7120ee9c4ca1e5af99 Mon Sep 17 00:00:00 2001 From: Scott Long Date: Tue, 24 Oct 2006 08:24:31 +0000 Subject: 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. --- sys/dev/bce/if_bcereg.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'sys/dev/bce') 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 -- cgit v1.3