Lines Matching refs:nmd

194 netmap_mem_get_lut(struct netmap_mem_d *nmd, struct netmap_lut *lut)  in netmap_mem_get_lut()  argument
198 NMA_LOCK(nmd); in netmap_mem_get_lut()
199 rv = nmd->ops->nmd_get_lut(nmd, lut); in netmap_mem_get_lut()
200 NMA_UNLOCK(nmd); in netmap_mem_get_lut()
206 netmap_mem_get_info(struct netmap_mem_d *nmd, uint64_t *size, in netmap_mem_get_info() argument
211 NMA_LOCK(nmd); in netmap_mem_get_info()
212 rv = nmd->ops->nmd_get_info(nmd, size, memflags, memid); in netmap_mem_get_info()
213 NMA_UNLOCK(nmd); in netmap_mem_get_info()
219 netmap_mem_ofstophys(struct netmap_mem_d *nmd, vm_ooffset_t off) in netmap_mem_ofstophys() argument
227 NMA_SPINLOCK(nmd); in netmap_mem_ofstophys()
229 NMA_LOCK(nmd); in netmap_mem_ofstophys()
231 pa = nmd->ops->nmd_ofstophys(nmd, off); in netmap_mem_ofstophys()
232 NMA_UNLOCK(nmd); in netmap_mem_ofstophys()
238 netmap_mem_config(struct netmap_mem_d *nmd) in netmap_mem_config() argument
240 if (nmd->active) { in netmap_mem_config()
247 return nmd->ops->nmd_config(nmd); in netmap_mem_config()
251 netmap_mem_if_offset(struct netmap_mem_d *nmd, const void *off) in netmap_mem_if_offset() argument
255 NMA_LOCK(nmd); in netmap_mem_if_offset()
256 rv = nmd->ops->nmd_if_offset(nmd, off); in netmap_mem_if_offset()
257 NMA_UNLOCK(nmd); in netmap_mem_if_offset()
263 netmap_mem_delete(struct netmap_mem_d *nmd) in netmap_mem_delete() argument
265 nmd->ops->nmd_delete(nmd); in netmap_mem_delete()
272 struct netmap_mem_d *nmd = na->nm_mem; in netmap_mem_if_new() local
274 NMA_LOCK(nmd); in netmap_mem_if_new()
275 nifp = nmd->ops->nmd_if_new(nmd, na, priv); in netmap_mem_if_new()
276 NMA_UNLOCK(nmd); in netmap_mem_if_new()
284 struct netmap_mem_d *nmd = na->nm_mem; in netmap_mem_if_delete() local
286 NMA_LOCK(nmd); in netmap_mem_if_delete()
287 nmd->ops->nmd_if_delete(nmd, na, nif); in netmap_mem_if_delete()
288 NMA_UNLOCK(nmd); in netmap_mem_if_delete()
295 struct netmap_mem_d *nmd = na->nm_mem; in netmap_mem_rings_create() local
297 NMA_LOCK(nmd); in netmap_mem_rings_create()
298 rv = nmd->ops->nmd_rings_create(nmd, na); in netmap_mem_rings_create()
299 NMA_UNLOCK(nmd); in netmap_mem_rings_create()
307 struct netmap_mem_d *nmd = na->nm_mem; in netmap_mem_rings_delete() local
309 NMA_LOCK(nmd); in netmap_mem_rings_delete()
310 nmd->ops->nmd_rings_delete(nmd, na); in netmap_mem_rings_delete()
311 NMA_UNLOCK(nmd); in netmap_mem_rings_delete()
320 netmap_mem_get_id(struct netmap_mem_d *nmd) in netmap_mem_get_id() argument
322 return nmd->nm_id; in netmap_mem_get_id()
326 #define NM_DBG_REFC(nmd, func, line) \ argument
327 nm_prinf("%s:%d mem[%d:%d] -> %d", func, line, (nmd)->nm_id, (nmd)->nm_grp, (nmd)->refcount);
329 #define NM_DBG_REFC(nmd, func, line) argument
337 __netmap_mem_get(struct netmap_mem_d *nmd, const char *func, int line) in __netmap_mem_get() argument
340 nmd->refcount++; in __netmap_mem_get()
341 NM_DBG_REFC(nmd, func, line); in __netmap_mem_get()
343 return nmd; in __netmap_mem_get()
347 __netmap_mem_put(struct netmap_mem_d *nmd, const char *func, int line) in __netmap_mem_put() argument
351 last = (--nmd->refcount == 0); in __netmap_mem_put()
353 nm_mem_release_id(nmd); in __netmap_mem_put()
354 NM_DBG_REFC(nmd, func, line); in __netmap_mem_put()
357 netmap_mem_delete(nmd); in __netmap_mem_put()
361 netmap_mem_finalize(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem_finalize() argument
364 if (nm_mem_check_group(nmd, na->pdev) < 0) { in netmap_mem_finalize()
368 NMA_LOCK(nmd); in netmap_mem_finalize()
370 if (netmap_mem_config(nmd)) in netmap_mem_finalize()
373 nmd->active++; in netmap_mem_finalize()
375 nmd->lasterr = nmd->ops->nmd_finalize(nmd, na); in netmap_mem_finalize()
377 if (!nmd->lasterr && !(nmd->flags & NETMAP_MEM_NOMAP)) { in netmap_mem_finalize()
378 nmd->lasterr = netmap_mem_map(&nmd->pools[NETMAP_BUF_POOL], na); in netmap_mem_finalize()
382 lasterr = nmd->lasterr; in netmap_mem_finalize()
383 NMA_UNLOCK(nmd); in netmap_mem_finalize()
386 netmap_mem_deref(nmd, na); in netmap_mem_finalize()
445 netmap_mem_init_bitmaps(struct netmap_mem_d *nmd) in netmap_mem_init_bitmaps() argument
450 struct netmap_obj_pool *p = &nmd->pools[i]; in netmap_mem_init_bitmaps()
460 if (nmd->pools[NETMAP_BUF_POOL].objfree < 2) { in netmap_mem_init_bitmaps()
461 nm_prerr("%s: not enough buffers", nmd->pools[NETMAP_BUF_POOL].name); in netmap_mem_init_bitmaps()
465 nmd->pools[NETMAP_BUF_POOL].objfree -= 2; in netmap_mem_init_bitmaps()
466 if (nmd->pools[NETMAP_BUF_POOL].bitmap) { in netmap_mem_init_bitmaps()
471 nmd->pools[NETMAP_BUF_POOL].bitmap[0] = ~3U; in netmap_mem_init_bitmaps()
477 netmap_mem_deref(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem_deref() argument
480 NMA_LOCK(nmd); in netmap_mem_deref()
481 if (na->active_fds <= 0 && !(nmd->flags & NETMAP_MEM_NOMAP)) in netmap_mem_deref()
482 netmap_mem_unmap(&nmd->pools[NETMAP_BUF_POOL], na); in netmap_mem_deref()
483 if (nmd->active == 1) { in netmap_mem_deref()
490 netmap_mem_init_bitmaps(nmd); in netmap_mem_deref()
492 nmd->ops->nmd_deref(nmd, na); in netmap_mem_deref()
494 nmd->active--; in netmap_mem_deref()
496 nmd->lasterr = 0; in netmap_mem_deref()
499 NMA_UNLOCK(nmd); in netmap_mem_deref()
506 netmap_mem2_get_lut(struct netmap_mem_d *nmd, struct netmap_lut *lut) in netmap_mem2_get_lut() argument
508 lut->lut = nmd->pools[NETMAP_BUF_POOL].lut; in netmap_mem2_get_lut()
512 lut->objtotal = nmd->pools[NETMAP_BUF_POOL].objtotal; in netmap_mem2_get_lut()
513 lut->objsize = nmd->pools[NETMAP_BUF_POOL]._objsize; in netmap_mem2_get_lut()
667 nm_mem_assign_id_locked(struct netmap_mem_d *nmd, int grp_id, int domain) in nm_mem_assign_id_locked() argument
680 nmd->nm_id = id; in nm_mem_assign_id_locked()
681 nmd->nm_grp = grp_id; in nm_mem_assign_id_locked()
682 nmd->nm_numa_domain = domain; in nm_mem_assign_id_locked()
683 nmd->prev = scan->prev; in nm_mem_assign_id_locked()
684 nmd->next = scan; in nm_mem_assign_id_locked()
685 scan->prev->next = nmd; in nm_mem_assign_id_locked()
686 scan->prev = nmd; in nm_mem_assign_id_locked()
687 netmap_last_mem_d = nmd; in nm_mem_assign_id_locked()
688 nmd->refcount = 1; in nm_mem_assign_id_locked()
689 NM_DBG_REFC(nmd, __FUNCTION__, __LINE__); in nm_mem_assign_id_locked()
700 nm_mem_assign_id(struct netmap_mem_d *nmd, int grp_id) in nm_mem_assign_id() argument
705 ret = nm_mem_assign_id_locked(nmd, grp_id, -1); in nm_mem_assign_id()
713 nm_mem_release_id(struct netmap_mem_d *nmd) in nm_mem_release_id() argument
715 nmd->prev->next = nmd->next; in nm_mem_release_id()
716 nmd->next->prev = nmd->prev; in nm_mem_release_id()
718 if (netmap_last_mem_d == nmd) in nm_mem_release_id()
719 netmap_last_mem_d = nmd->prev; in nm_mem_release_id()
721 nmd->prev = nmd->next = NULL; in nm_mem_release_id()
727 struct netmap_mem_d *nmd; in netmap_mem_find() local
730 nmd = netmap_last_mem_d; in netmap_mem_find()
732 if (!(nmd->flags & NETMAP_MEM_HIDDEN) && nmd->nm_id == id) { in netmap_mem_find()
733 nmd->refcount++; in netmap_mem_find()
734 NM_DBG_REFC(nmd, __FUNCTION__, __LINE__); in netmap_mem_find()
736 return nmd; in netmap_mem_find()
738 nmd = nmd->next; in netmap_mem_find()
739 } while (nmd != netmap_last_mem_d); in netmap_mem_find()
745 nm_mem_check_group(struct netmap_mem_d *nmd, void *dev) in nm_mem_check_group() argument
758 NMA_LOCK(nmd); in nm_mem_check_group()
760 if (nmd->nm_grp != id) { in nm_mem_check_group()
763 nmd->nm_grp, id); in nm_mem_check_group()
764 nmd->lasterr = err = ENOMEM; in nm_mem_check_group()
767 NMA_UNLOCK(nmd); in nm_mem_check_group()
818 netmap_mem2_ofstophys(struct netmap_mem_d* nmd, vm_ooffset_t offset) in netmap_mem2_ofstophys() argument
825 p = nmd->pools; in netmap_mem2_ofstophys()
882 win32_build_user_vm_map(struct netmap_mem_d* nmd) in win32_build_user_vm_map() argument
889 if (netmap_mem_get_info(nmd, &memsize, &memflags, NULL)) { in win32_build_user_vm_map()
900 NMA_LOCK(nmd); in win32_build_user_vm_map()
902 struct netmap_obj_pool *p = &nmd->pools[i]; in win32_build_user_vm_map()
911 NMA_UNLOCK(nmd); in win32_build_user_vm_map()
927 NMA_UNLOCK(nmd); in win32_build_user_vm_map()
941 netmap_mem2_get_pool_info(struct netmap_mem_d* nmd, u_int pool, u_int *clustsize, u_int *numcluster… in netmap_mem2_get_pool_info() argument
943 if (!nmd || !clustsize || !numclusters || pool >= NETMAP_POOLS_NR) in netmap_mem2_get_pool_info()
946 if (!(nmd->flags & NETMAP_MEM_FINALIZED)) { in netmap_mem2_get_pool_info()
950 *clustsize = nmd->pools[pool]._clustsize; in netmap_mem2_get_pool_info()
951 *numclusters = nmd->pools[pool].numclusters; in netmap_mem2_get_pool_info()
956 netmap_mem2_get_info(struct netmap_mem_d* nmd, uint64_t* size, in netmap_mem2_get_info() argument
960 error = netmap_mem_config(nmd); in netmap_mem2_get_info()
964 if (nmd->flags & NETMAP_MEM_FINALIZED) { in netmap_mem2_get_info()
965 *size = nmd->nm_totalsize; in netmap_mem2_get_info()
970 struct netmap_obj_pool *p = nmd->pools + i; in netmap_mem2_get_info()
976 *memflags = nmd->flags; in netmap_mem2_get_info()
978 *id = nmd->nm_id; in netmap_mem2_get_info()
1021 netmap_mem2_if_offset(struct netmap_mem_d *nmd, const void *addr) in netmap_mem2_if_offset() argument
1023 return netmap_if_offset(nmd, addr); in netmap_mem2_if_offset()
1127 netmap_mem_bufsize(struct netmap_mem_d *nmd) in netmap_mem_bufsize() argument
1129 return nmd->pools[NETMAP_BUF_POOL]._objsize; in netmap_mem_bufsize()
1153 struct netmap_mem_d *nmd = na->nm_mem; in netmap_extra_alloc() local
1156 NMA_LOCK(nmd); in netmap_extra_alloc()
1161 uint32_t *p = netmap_buf_malloc(nmd, &pos, head); in netmap_extra_alloc()
1171 NMA_UNLOCK(nmd); in netmap_extra_alloc()
1180 struct netmap_mem_d *nmd = na->nm_mem; in netmap_extra_free() local
1181 struct netmap_obj_pool *p = &nmd->pools[NETMAP_BUF_POOL]; in netmap_extra_free()
1202 netmap_new_bufs(struct netmap_mem_d *nmd, struct netmap_slot *slot, u_int n) in netmap_new_bufs() argument
1204 struct netmap_obj_pool *p = &nmd->pools[NETMAP_BUF_POOL]; in netmap_new_bufs()
1210 void *vaddr = netmap_buf_malloc(nmd, &pos, &index); in netmap_new_bufs()
1234 netmap_mem_set_ring(struct netmap_mem_d *nmd, struct netmap_slot *slot, u_int n, uint32_t index) in netmap_mem_set_ring() argument
1236 struct netmap_obj_pool *p = &nmd->pools[NETMAP_BUF_POOL]; in netmap_mem_set_ring()
1248 netmap_free_buf(struct netmap_mem_d *nmd, uint32_t i) in netmap_free_buf() argument
1250 struct netmap_obj_pool *p = &nmd->pools[NETMAP_BUF_POOL]; in netmap_free_buf()
1261 netmap_free_bufs(struct netmap_mem_d *nmd, struct netmap_slot *slot, u_int n) in netmap_free_bufs() argument
1267 netmap_free_buf(nmd, slot[i].buf_idx); in netmap_free_bufs()
1416 netmap_finalize_obj_allocator(struct netmap_mem_d *nmd, struct netmap_obj_pool *p) in netmap_finalize_obj_allocator() argument
1457 if (nmd->nm_numa_domain == -1) { in netmap_finalize_obj_allocator()
1463 ds = DOMAINSET_PREF(nmd->nm_numa_domain); in netmap_finalize_obj_allocator()
1535 netmap_mem_reset_all(struct netmap_mem_d *nmd) in netmap_mem_reset_all() argument
1540 nm_prinf("resetting %p", nmd); in netmap_mem_reset_all()
1542 netmap_reset_obj_allocator(&nmd->pools[i]); in netmap_mem_reset_all()
1544 nmd->flags &= ~NETMAP_MEM_FINALIZED; in netmap_mem_reset_all()
1651 netmap_mem_finalize_all(struct netmap_mem_d *nmd) in netmap_mem_finalize_all() argument
1654 if (nmd->flags & NETMAP_MEM_FINALIZED) in netmap_mem_finalize_all()
1656 nmd->lasterr = 0; in netmap_mem_finalize_all()
1657 nmd->nm_totalsize = 0; in netmap_mem_finalize_all()
1659 nmd->lasterr = netmap_finalize_obj_allocator(nmd, &nmd->pools[i]); in netmap_mem_finalize_all()
1660 if (nmd->lasterr) in netmap_mem_finalize_all()
1662 nmd->nm_totalsize += nmd->pools[i].memtotal; in netmap_mem_finalize_all()
1664 nmd->nm_totalsize = (nmd->nm_totalsize + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1); in netmap_mem_finalize_all()
1665 nmd->lasterr = netmap_mem_init_bitmaps(nmd); in netmap_mem_finalize_all()
1666 if (nmd->lasterr) in netmap_mem_finalize_all()
1669 nmd->flags |= NETMAP_MEM_FINALIZED; in netmap_mem_finalize_all()
1673 nmd->pools[NETMAP_IF_POOL].memtotal >> 10, in netmap_mem_finalize_all()
1674 nmd->pools[NETMAP_RING_POOL].memtotal >> 10, in netmap_mem_finalize_all()
1675 nmd->pools[NETMAP_BUF_POOL].memtotal >> 20); in netmap_mem_finalize_all()
1678 nm_prinf("Free buffers: %d", nmd->pools[NETMAP_BUF_POOL].objfree); in netmap_mem_finalize_all()
1683 netmap_mem_reset_all(nmd); in netmap_mem_finalize_all()
1684 return nmd->lasterr; in netmap_mem_finalize_all()
1834 struct netmap_mem_d *nmd; in netmap_mem_get_allocator() local
1843 nmd = netmap_last_mem_d; in netmap_mem_get_allocator()
1845 if (!(nmd->flags & NETMAP_MEM_HIDDEN) && in netmap_mem_get_allocator()
1846 nmd->nm_grp == grp_id && nmd->nm_numa_domain == domain) { in netmap_mem_get_allocator()
1847 nmd->refcount++; in netmap_mem_get_allocator()
1848 NM_DBG_REFC(nmd, __FUNCTION__, __LINE__); in netmap_mem_get_allocator()
1850 return nmd; in netmap_mem_get_allocator()
1852 nmd = nmd->next; in netmap_mem_get_allocator()
1853 } while (nmd != netmap_last_mem_d); in netmap_mem_get_allocator()
1855 nmd = nm_os_malloc(sizeof(*nmd)); in netmap_mem_get_allocator()
1856 if (nmd == NULL) in netmap_mem_get_allocator()
1859 *nmd = nm_mem_blueprint; in netmap_mem_get_allocator()
1861 err = nm_mem_assign_id_locked(nmd, grp_id, domain); in netmap_mem_get_allocator()
1865 snprintf(nmd->name, sizeof(nmd->name), "%d", nmd->nm_id); in netmap_mem_get_allocator()
1868 snprintf(nmd->pools[i].name, NETMAP_POOL_MAX_NAMSZ, "%s-%s", in netmap_mem_get_allocator()
1869 nm_mem_blueprint.pools[i].name, nmd->name); in netmap_mem_get_allocator()
1872 NMA_LOCK_INIT(nmd); in netmap_mem_get_allocator()
1875 return nmd; in netmap_mem_get_allocator()
1878 nm_os_free(nmd); in netmap_mem_get_allocator()
1886 netmap_mem2_config(struct netmap_mem_d *nmd) in netmap_mem2_config() argument
1890 if (!netmap_mem_params_changed(nmd->params)) in netmap_mem2_config()
1895 if (nmd->flags & NETMAP_MEM_FINALIZED) { in netmap_mem2_config()
1898 netmap_reset_obj_allocator(&nmd->pools[i]); in netmap_mem2_config()
1900 nmd->flags &= ~NETMAP_MEM_FINALIZED; in netmap_mem2_config()
1904 nmd->lasterr = netmap_config_obj_allocator(&nmd->pools[i], in netmap_mem2_config()
1905 nmd->params[i].num, nmd->params[i].size); in netmap_mem2_config()
1906 if (nmd->lasterr) in netmap_mem2_config()
1912 return nmd->lasterr; in netmap_mem2_config()
1916 netmap_mem2_finalize(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem2_finalize() argument
1918 if (nmd->flags & NETMAP_MEM_FINALIZED) in netmap_mem2_finalize()
1921 if (netmap_mem_finalize_all(nmd)) in netmap_mem2_finalize()
1924 nmd->lasterr = 0; in netmap_mem2_finalize()
1927 return nmd->lasterr; in netmap_mem2_finalize()
1931 netmap_mem2_delete(struct netmap_mem_d *nmd) in netmap_mem2_delete() argument
1936 netmap_destroy_obj_allocator(&nmd->pools[i]); in netmap_mem2_delete()
1939 NMA_LOCK_DESTROY(nmd); in netmap_mem2_delete()
1940 if (nmd != &nm_mem) in netmap_mem2_delete()
1941 nm_os_free(nmd); in netmap_mem2_delete()
1994 netmap_mem2_rings_create(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem2_rings_create() argument
2022 ring = netmap_ring_malloc(nmd, len); in netmap_mem2_rings_create()
2032 (nmd->pools[NETMAP_IF_POOL].memtotal + in netmap_mem2_rings_create()
2033 nmd->pools[NETMAP_RING_POOL].memtotal) - in netmap_mem2_rings_create()
2034 netmap_ring_offset(nmd, ring); in netmap_mem2_rings_create()
2041 netmap_mem_bufsize(nmd); in netmap_mem2_rings_create()
2049 if (netmap_new_bufs(nmd, ring->slot, ndesc)) { in netmap_mem2_rings_create()
2060 netmap_mem_set_ring(nmd, ring->slot, ndesc, 0); in netmap_mem2_rings_create()
2081 netmap_mem2_rings_delete(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem2_rings_delete() argument
2101 netmap_free_bufs(nmd, ring->slot, kring->nkr_num_slots); in netmap_mem2_rings_delete()
2105 netmap_ring_free(nmd, ring); in netmap_mem2_rings_delete()
2120 netmap_mem2_if_new(struct netmap_mem_d *nmd, in netmap_mem2_if_new() argument
2140 nifp = netmap_if_malloc(nmd, len); in netmap_mem2_if_new()
2159 base = netmap_if_offset(nmd, nifp); in netmap_mem2_if_new()
2167 ofs = netmap_ring_offset(nmd, in netmap_mem2_if_new()
2179 ofs = netmap_ring_offset(nmd, in netmap_mem2_if_new()
2189 netmap_mem2_if_delete(struct netmap_mem_d *nmd, in netmap_mem2_if_delete() argument
2197 netmap_if_free(nmd, nifp); in netmap_mem2_if_delete()
2201 netmap_mem2_deref(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem2_deref() argument
2205 nm_prinf("active = %d", nmd->active); in netmap_mem2_deref()
2226 struct netmap_mem_d *nmd) in netmap_mem_pools_info_get() argument
2230 ret = netmap_mem_get_info(nmd, &req->nr_memsize, NULL, in netmap_mem_pools_info_get()
2236 NMA_LOCK(nmd); in netmap_mem_pools_info_get()
2238 req->nr_if_pool_objtotal = nmd->pools[NETMAP_IF_POOL].objtotal; in netmap_mem_pools_info_get()
2239 req->nr_if_pool_objsize = nmd->pools[NETMAP_IF_POOL]._objsize; in netmap_mem_pools_info_get()
2241 req->nr_ring_pool_offset = nmd->pools[NETMAP_IF_POOL].memtotal; in netmap_mem_pools_info_get()
2242 req->nr_ring_pool_objtotal = nmd->pools[NETMAP_RING_POOL].objtotal; in netmap_mem_pools_info_get()
2243 req->nr_ring_pool_objsize = nmd->pools[NETMAP_RING_POOL]._objsize; in netmap_mem_pools_info_get()
2245 req->nr_buf_pool_offset = nmd->pools[NETMAP_IF_POOL].memtotal + in netmap_mem_pools_info_get()
2246 nmd->pools[NETMAP_RING_POOL].memtotal; in netmap_mem_pools_info_get()
2247 req->nr_buf_pool_objtotal = nmd->pools[NETMAP_BUF_POOL].objtotal; in netmap_mem_pools_info_get()
2248 req->nr_buf_pool_objsize = nmd->pools[NETMAP_BUF_POOL]._objsize; in netmap_mem_pools_info_get()
2249 NMA_UNLOCK(nmd); in netmap_mem_pools_info_get()
2328 netmap_mem_ext_config(struct netmap_mem_d *nmd) in netmap_mem_ext_config() argument
2524 netmap_mem_pt_guest_ifp_add(struct netmap_mem_d *nmd, if_t ifp, in netmap_mem_pt_guest_ifp_add() argument
2527 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_ifp_add()
2534 NMA_LOCK(nmd); in netmap_mem_pt_guest_ifp_add()
2544 NMA_UNLOCK(nmd); in netmap_mem_pt_guest_ifp_add()
2554 netmap_mem_pt_guest_ifp_lookup(struct netmap_mem_d *nmd, if_t ifp) in netmap_mem_pt_guest_ifp_lookup() argument
2556 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_ifp_lookup()
2570 netmap_mem_pt_guest_ifp_del(struct netmap_mem_d *nmd, if_t ifp) in netmap_mem_pt_guest_ifp_del() argument
2572 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_ifp_del()
2577 NMA_LOCK(nmd); in netmap_mem_pt_guest_ifp_del()
2595 NMA_UNLOCK(nmd); in netmap_mem_pt_guest_ifp_del()
2601 netmap_mem_pt_guest_get_lut(struct netmap_mem_d *nmd, struct netmap_lut *lut) in netmap_mem_pt_guest_get_lut() argument
2603 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_get_lut()
2605 if (!(nmd->flags & NETMAP_MEM_FINALIZED)) { in netmap_mem_pt_guest_get_lut()
2614 netmap_mem_pt_guest_get_info(struct netmap_mem_d *nmd, uint64_t *size, in netmap_mem_pt_guest_get_info() argument
2619 error = nmd->ops->nmd_config(nmd); in netmap_mem_pt_guest_get_info()
2624 *size = nmd->nm_totalsize; in netmap_mem_pt_guest_get_info()
2626 *memflags = nmd->flags; in netmap_mem_pt_guest_get_info()
2628 *id = nmd->nm_id; in netmap_mem_pt_guest_get_info()
2636 netmap_mem_pt_guest_ofstophys(struct netmap_mem_d *nmd, vm_ooffset_t off) in netmap_mem_pt_guest_ofstophys() argument
2638 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_ofstophys()
2647 netmap_mem_pt_guest_config(struct netmap_mem_d *nmd) in netmap_mem_pt_guest_config() argument
2656 netmap_mem_pt_guest_finalize(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem_pt_guest_finalize() argument
2658 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_finalize()
2668 if (nmd->flags & NETMAP_MEM_FINALIZED) in netmap_mem_pt_guest_finalize()
2713 nmd->nm_totalsize = mem_size; in netmap_mem_pt_guest_finalize()
2720 nmd->pools[NETMAP_BUF_POOL]._objsize = bufsize; in netmap_mem_pt_guest_finalize()
2721 nmd->pools[NETMAP_BUF_POOL]._objtotal = nbuffers; in netmap_mem_pt_guest_finalize()
2723 nmd->flags |= NETMAP_MEM_FINALIZED; in netmap_mem_pt_guest_finalize()
2729 netmap_mem_pt_guest_deref(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem_pt_guest_deref() argument
2731 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_deref()
2733 if (nmd->active == 1 && in netmap_mem_pt_guest_deref()
2734 (nmd->flags & NETMAP_MEM_FINALIZED)) { in netmap_mem_pt_guest_deref()
2735 nmd->flags &= ~NETMAP_MEM_FINALIZED; in netmap_mem_pt_guest_deref()
2746 netmap_mem_pt_guest_if_offset(struct netmap_mem_d *nmd, const void *vaddr) in netmap_mem_pt_guest_if_offset() argument
2748 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_if_offset()
2754 netmap_mem_pt_guest_delete(struct netmap_mem_d *nmd) in netmap_mem_pt_guest_delete() argument
2756 if (nmd == NULL) in netmap_mem_pt_guest_delete()
2759 nm_prinf("deleting %p", nmd); in netmap_mem_pt_guest_delete()
2760 if (nmd->active > 0) in netmap_mem_pt_guest_delete()
2761 nm_prerr("bug: deleting mem allocator with active=%d!", nmd->active); in netmap_mem_pt_guest_delete()
2763 nm_prinf("done deleting %p", nmd); in netmap_mem_pt_guest_delete()
2764 NMA_LOCK_DESTROY(nmd); in netmap_mem_pt_guest_delete()
2765 nm_os_free(nmd); in netmap_mem_pt_guest_delete()
2769 netmap_mem_pt_guest_if_new(struct netmap_mem_d *nmd, in netmap_mem_pt_guest_if_new() argument
2772 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_if_new()
2776 ptif = netmap_mem_pt_guest_ifp_lookup(nmd, na->ifp); in netmap_mem_pt_guest_if_new()
2789 netmap_mem_pt_guest_if_delete(struct netmap_mem_d * nmd, in netmap_mem_pt_guest_if_delete() argument
2794 ptif = netmap_mem_pt_guest_ifp_lookup(nmd, na->ifp); in netmap_mem_pt_guest_if_delete()
2801 netmap_mem_pt_guest_rings_create(struct netmap_mem_d *nmd, in netmap_mem_pt_guest_rings_create() argument
2804 struct netmap_mem_ptg *ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_rings_create()
2809 ptif = netmap_mem_pt_guest_ifp_lookup(nmd, na->ifp); in netmap_mem_pt_guest_rings_create()
2840 netmap_mem_pt_guest_rings_delete(struct netmap_mem_d *nmd, struct netmap_adapter *na) in netmap_mem_pt_guest_rings_delete() argument
2854 (void)nmd; in netmap_mem_pt_guest_rings_delete()
2938 struct netmap_mem_d *nmd; in netmap_mem_pt_guest_get() local
2941 nmd = netmap_mem_pt_guest_find_memid(mem_id); in netmap_mem_pt_guest_get()
2942 if (nmd == NULL) { in netmap_mem_pt_guest_get()
2943 nmd = netmap_mem_pt_guest_create(mem_id); in netmap_mem_pt_guest_get()
2947 return nmd; in netmap_mem_pt_guest_get()
2963 struct netmap_mem_d *nmd; in netmap_mem_pt_guest_attach() local
2966 nmd = netmap_mem_pt_guest_get(mem_id); in netmap_mem_pt_guest_attach()
2969 if (nmd) { in netmap_mem_pt_guest_attach()
2970 ptnmd = (struct netmap_mem_ptg *)nmd; in netmap_mem_pt_guest_attach()
2974 return nmd; in netmap_mem_pt_guest_attach()
2983 struct netmap_mem_d *nmd; in netmap_mem_pt_guest_new() local
2989 nmd = netmap_mem_pt_guest_get((nm_memid_t)memid); in netmap_mem_pt_guest_new()
2991 if (nmd) { in netmap_mem_pt_guest_new()
2992 netmap_mem_pt_guest_ifp_add(nmd, ifp, nifp_offset); in netmap_mem_pt_guest_new()
2995 return nmd; in netmap_mem_pt_guest_new()