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;