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;

Reply via email to