diff --git a/sys/net/netmap/netmap_mem2.c b/sys/net/netmap/netmap_mem2.c --- a/sys/net/netmap/netmap_mem2.c +++ b/sys/net/netmap/netmap_mem2.c @@ -675,7 +675,8 @@ } /* buffers 0 and 1 are reserved */ nmd->pools[NETMAP_BUF_POOL].objfree -= 2; - nmd->pools[NETMAP_BUF_POOL].bitmap[0] = ~3; + /* only mark object 0/1 as in-use; remaining bits follow objtotal */ + nmd->pools[NETMAP_BUF_POOL].bitmap[0] = (nmd->pools[NETMAP_BUF_POOL].objtotal >= 32) ? ~3 : ~((~0U) << nmd->pools[NETMAP_BUF_POOL].objtotal) | 3; nmd->flags |= NETMAP_MEM_FINALIZED; D("Have %d KB for interfaces, %d KB for rings and %d MB for buffers",