Index: sys/dev/e1000/em_txrx.c =================================================================== --- sys/dev/e1000/em_txrx.c +++ sys/dev/e1000/em_txrx.c @@ -458,7 +458,13 @@ ntxd = scctx->isc_ntxd[0]; do { delta = (int32_t)cur - (int32_t)prev; + /* + * XXX This appears to be a hack for first-packet. + * A correct fix would prevent prev == cur in the first place. + */ MPASS(prev == 0 || delta != 0); + if (prev == 0 && cur == 0) + delta += 1; if (delta < 0) delta += ntxd; DPRINTF(iflib_get_dev(adapter->ctx), Index: sys/dev/e1000/igb_txrx.c =================================================================== --- sys/dev/e1000/igb_txrx.c +++ sys/dev/e1000/igb_txrx.c @@ -333,7 +333,13 @@ ntxd = scctx->isc_ntxd[0]; do { delta = (int32_t)cur - (int32_t)prev; + /* + * XXX This appears to be a hack for first-packet. + * A correct fix would prevent prev == cur in the first place. + */ MPASS(prev == 0 || delta != 0); + if (prev == 0 && cur == 0) + delta += 1; if (delta < 0) delta += ntxd;