Lines Matching refs:nmap

318 	struct nsim_bpf_bound_map *nmap = offmap->dev_priv;  in nsim_map_key_find()  local
321 for (i = 0; i < ARRAY_SIZE(nmap->entry); i++) in nsim_map_key_find()
322 if (nsim_map_key_match(&offmap->map, &nmap->entry[i], key)) in nsim_map_key_find()
331 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_alloc_elem() local
333 nmap->entry[idx].key = kmalloc(offmap->map.key_size, GFP_USER); in nsim_map_alloc_elem()
334 if (!nmap->entry[idx].key) in nsim_map_alloc_elem()
336 nmap->entry[idx].value = kmalloc(offmap->map.value_size, GFP_USER); in nsim_map_alloc_elem()
337 if (!nmap->entry[idx].value) { in nsim_map_alloc_elem()
338 kfree(nmap->entry[idx].key); in nsim_map_alloc_elem()
339 nmap->entry[idx].key = NULL; in nsim_map_alloc_elem()
350 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_get_next_key() local
353 mutex_lock(&nmap->mutex); in nsim_map_get_next_key()
362 for (; idx < ARRAY_SIZE(nmap->entry); idx++) { in nsim_map_get_next_key()
363 if (nmap->entry[idx].key) { in nsim_map_get_next_key()
364 memcpy(next_key, nmap->entry[idx].key, in nsim_map_get_next_key()
370 mutex_unlock(&nmap->mutex); in nsim_map_get_next_key()
372 if (idx == ARRAY_SIZE(nmap->entry)) in nsim_map_get_next_key()
380 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_lookup_elem() local
383 mutex_lock(&nmap->mutex); in nsim_map_lookup_elem()
387 memcpy(value, nmap->entry[idx].value, offmap->map.value_size); in nsim_map_lookup_elem()
389 mutex_unlock(&nmap->mutex); in nsim_map_lookup_elem()
398 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_update_elem() local
401 mutex_lock(&nmap->mutex); in nsim_map_update_elem()
414 for (idx = 0; idx < ARRAY_SIZE(nmap->entry); idx++) in nsim_map_update_elem()
415 if (!nmap->entry[idx].key) in nsim_map_update_elem()
417 if (idx == ARRAY_SIZE(nmap->entry)) { in nsim_map_update_elem()
427 memcpy(nmap->entry[idx].key, key, offmap->map.key_size); in nsim_map_update_elem()
428 memcpy(nmap->entry[idx].value, value, offmap->map.value_size); in nsim_map_update_elem()
430 mutex_unlock(&nmap->mutex); in nsim_map_update_elem()
437 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_delete_elem() local
443 mutex_lock(&nmap->mutex); in nsim_map_delete_elem()
447 kfree(nmap->entry[idx].key); in nsim_map_delete_elem()
448 kfree(nmap->entry[idx].value); in nsim_map_delete_elem()
449 memset(&nmap->entry[idx], 0, sizeof(nmap->entry[idx])); in nsim_map_delete_elem()
452 mutex_unlock(&nmap->mutex); in nsim_map_delete_elem()
467 struct nsim_bpf_bound_map *nmap; in nsim_bpf_map_alloc() local
478 nmap = kzalloc(sizeof(*nmap), GFP_USER); in nsim_bpf_map_alloc()
479 if (!nmap) in nsim_bpf_map_alloc()
482 offmap->dev_priv = nmap; in nsim_bpf_map_alloc()
483 nmap->ns = ns; in nsim_bpf_map_alloc()
484 nmap->map = offmap; in nsim_bpf_map_alloc()
485 mutex_init(&nmap->mutex); in nsim_bpf_map_alloc()
488 for (i = 0; i < ARRAY_SIZE(nmap->entry); i++) { in nsim_bpf_map_alloc()
494 key = nmap->entry[i].key; in nsim_bpf_map_alloc()
500 list_add_tail(&nmap->l, &ns->sdev->bpf_bound_maps); in nsim_bpf_map_alloc()
506 kfree(nmap->entry[i].key); in nsim_bpf_map_alloc()
507 kfree(nmap->entry[i].value); in nsim_bpf_map_alloc()
509 kfree(nmap); in nsim_bpf_map_alloc()
515 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_bpf_map_free() local
518 for (i = 0; i < ARRAY_SIZE(nmap->entry); i++) { in nsim_bpf_map_free()
519 kfree(nmap->entry[i].key); in nsim_bpf_map_free()
520 kfree(nmap->entry[i].value); in nsim_bpf_map_free()
522 list_del_init(&nmap->l); in nsim_bpf_map_free()
523 mutex_destroy(&nmap->mutex); in nsim_bpf_map_free()
524 kfree(nmap); in nsim_bpf_map_free()