diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -1429,7 +1429,7 @@ return (1); vmxnet3_barrier(sc, VMXNET3_BARRIER_RD); - if (++txc->vxcr_next == txc->vxcr_ndesc) { + if (++txc->vxcr_next >= txc->vxcr_ndesc) { txc->vxcr_next = 0; txc->vxcr_gen ^= 1; } @@ -1480,7 +1480,7 @@ avail++; if (avail > budget) break; - if (++idx == rxc->vxcr_ndesc) { + if (++idx >= rxc->vxcr_ndesc) { idx = 0; completed_gen ^= 1; } @@ -1526,7 +1526,7 @@ ("%s: zero-length packet without both sop and eop set", __func__)); rxc->vxcr_zero_length++; - if (++cqidx == rxc->vxcr_ndesc) { + if (++cqidx >= rxc->vxcr_ndesc) { cqidx = 0; rxc->vxcr_gen ^= 1; } @@ -1609,7 +1609,7 @@ } else { rxc->vcxr_zero_length_frag++; } - if (++cqidx == rxc->vxcr_ndesc) { + if (++cqidx >= rxc->vxcr_ndesc) { cqidx = 0; rxc->vxcr_gen ^= 1; } @@ -1712,7 +1712,7 @@ rxr->vxrxr_desc_skips++; rxd[idx].gen = rxr->vxrxr_gen; - if (++idx == rxr->vxrxr_ndesc) { + if (++idx >= rxr->vxrxr_ndesc) { idx = 0; rxr->vxrxr_gen ^= 1; }