diff --git a/sys/dev/e1000/em_txrx.c b/sys/dev/e1000/em_txrx.c --- a/sys/dev/e1000/em_txrx.c +++ b/sys/dev/e1000/em_txrx.c @@ -665,6 +665,7 @@ if_softc_ctx_t scctx = sc->shared; struct em_rx_queue *que = &sc->rx_queues[ri->iri_qsidx]; struct rx_ring *rxr = &que->rxr; + struct ifnet *ifp = iflib_get_ifp(sc->ctx); union e1000_rx_desc_extended *rxd; u16 len; @@ -706,7 +707,8 @@ i++; } while (!eop); - em_receive_checksum(staterr, staterr >> 24, ri); + if (if_getcapenable(ifp) & IFCAP_RXCSUM) + em_receive_checksum(staterr, staterr >> 24, ri); if (staterr & E1000_RXD_STAT_VP) { vtag = le16toh(rxd->wb.upper.vlan);