Index: sys/dev/cxgbe/t4_netmap.c =================================================================== --- sys/dev/cxgbe/t4_netmap.c +++ sys/dev/cxgbe/t4_netmap.c @@ -911,7 +911,8 @@ PNMB(na, slot, &ba); MPASS(ba != 0); nm_rxq->fl_desc[fl_pidx] = htobe64(ba | hwidx); - slot->flags &= ~NS_BUF_CHANGED; + if (__predict_false(slot->flags & NS_BUF_CHANGED)) + slot->flags &= ~NS_BUF_CHANGED; MPASS(fl_pidx <= nm_rxq->fl_sidx); } n -= 8; Index: sys/dev/netmap/netmap_kern.h =================================================================== --- sys/dev/netmap/netmap_kern.h +++ sys/dev/netmap/netmap_kern.h @@ -1876,14 +1876,16 @@ uint32_t i = slot->buf_idx; struct lut_entry *lut = na->na_lut.lut; struct plut_entry *plut = na->na_lut.plut; - void *ret = (i >= na->na_lut.objtotal) ? lut[0].vaddr : lut[i].vaddr; + if (unlikely((i >= na->na_lut.objtotal))) { + i = 0; + } #ifdef _WIN32 - *pp = (i >= na->na_lut.objtotal) ? (uint64_t)plut[0].paddr.QuadPart : (uint64_t)plut[i].paddr.QuadPart; + *pp = (uint64_t)plut[i].paddr.QuadPart; #else - *pp = (i >= na->na_lut.objtotal) ? plut[0].paddr : plut[i].paddr; + *pp = plut[i].paddr; #endif - return ret; + return lut[i].vaddr; }