Remove code that is confusing and wrong: we don't want to disable
rx checksumming if IFCAP_CSUM_IPv4 is set. Whatever this code used
to mean in FreeBSD it doesn't do any good here. IXGBE_RXCSUM_PCSD
is set when you do RSS (and is correctly handled in the visible RSS
chunk below).
OK?
Index: if_ix.c
===================================================================
RCS file: /cvs/openbsd/src/sys/dev/pci/if_ix.c,v
retrieving revision 1.73
diff -u -p -r1.73 if_ix.c
--- if_ix.c 6 Nov 2012 17:29:39 -0000 1.73
+++ if_ix.c 7 Nov 2012 14:56:14 -0000
@@ -2826,6 +2826,7 @@ ixgbe_initialize_receive_units(struct ix
}
rxcsum = IXGBE_READ_REG(&sc->hw, IXGBE_RXCSUM);
+ rxcsum &= ~IXGBE_RXCSUM_PCSD;
/* Setup RSS */
if (sc->num_queues > 1) {
@@ -2863,9 +2864,6 @@ ixgbe_initialize_receive_units(struct ix
/* RSS and RX IPP Checksum are mutually exclusive */
rxcsum |= IXGBE_RXCSUM_PCSD;
}
-
- if (ifp->if_capabilities & IFCAP_CSUM_IPv4)
- rxcsum |= IXGBE_RXCSUM_PCSD;
if (!(rxcsum & IXGBE_RXCSUM_PCSD))
rxcsum |= IXGBE_RXCSUM_IPPCSE;