Index: head/sys/net/netmap_user.h =================================================================== --- head/sys/net/netmap_user.h +++ head/sys/net/netmap_user.h @@ -981,7 +981,8 @@ static int nm_mmap(struct nm_desc *d, const struct nm_desc *parent) { - //XXX TODO: check if mmap is already done + if (d->done_mmap) + goto done_mmap; if (IS_NETMAP_DESC(parent) && parent->mem && parent->req.nr_arg2 == d->req.nr_arg2) { @@ -999,6 +1000,7 @@ } d->done_mmap = 1; } +done_mmap: { struct netmap_if *nifp = NETMAP_IF(d->mem, d->req.nr_offset); struct netmap_ring *r = NETMAP_RXRING(nifp, d->first_rx_ring);