Lines Matching refs:offmap
334 static int nsim_map_key_find(struct bpf_offloaded_map *offmap, void *key) in nsim_map_key_find() argument
336 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_key_find()
340 if (nsim_map_key_match(&offmap->map, &nmap->entry[i], key)) in nsim_map_key_find()
347 nsim_map_alloc_elem(struct bpf_offloaded_map *offmap, unsigned int idx) in nsim_map_alloc_elem() argument
349 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_alloc_elem()
351 nmap->entry[idx].key = kmalloc(offmap->map.key_size, in nsim_map_alloc_elem()
355 nmap->entry[idx].value = kmalloc(offmap->map.value_size, in nsim_map_alloc_elem()
367 nsim_map_get_next_key(struct bpf_offloaded_map *offmap, in nsim_map_get_next_key() argument
370 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_get_next_key()
376 idx = nsim_map_key_find(offmap, key); in nsim_map_get_next_key()
385 offmap->map.key_size); in nsim_map_get_next_key()
398 nsim_map_lookup_elem(struct bpf_offloaded_map *offmap, void *key, void *value) in nsim_map_lookup_elem() argument
400 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_lookup_elem()
405 idx = nsim_map_key_find(offmap, key); in nsim_map_lookup_elem()
407 memcpy(value, nmap->entry[idx].value, offmap->map.value_size); in nsim_map_lookup_elem()
415 nsim_map_update_elem(struct bpf_offloaded_map *offmap, in nsim_map_update_elem() argument
418 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_update_elem()
423 idx = nsim_map_key_find(offmap, key); in nsim_map_update_elem()
442 err = nsim_map_alloc_elem(offmap, idx); in nsim_map_update_elem()
447 memcpy(nmap->entry[idx].key, key, offmap->map.key_size); in nsim_map_update_elem()
448 memcpy(nmap->entry[idx].value, value, offmap->map.value_size); in nsim_map_update_elem()
455 static int nsim_map_delete_elem(struct bpf_offloaded_map *offmap, void *key) in nsim_map_delete_elem() argument
457 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_map_delete_elem()
460 if (offmap->map.map_type == BPF_MAP_TYPE_ARRAY) in nsim_map_delete_elem()
465 idx = nsim_map_key_find(offmap, key); in nsim_map_delete_elem()
485 nsim_bpf_map_alloc(struct netdevsim *ns, struct bpf_offloaded_map *offmap) in nsim_bpf_map_alloc() argument
490 if (WARN_ON(offmap->map.map_type != BPF_MAP_TYPE_ARRAY && in nsim_bpf_map_alloc()
491 offmap->map.map_type != BPF_MAP_TYPE_HASH)) in nsim_bpf_map_alloc()
493 if (offmap->map.max_entries > NSIM_BPF_MAX_KEYS) in nsim_bpf_map_alloc()
495 if (offmap->map.map_flags) in nsim_bpf_map_alloc()
502 offmap->dev_priv = nmap; in nsim_bpf_map_alloc()
504 nmap->map = offmap; in nsim_bpf_map_alloc()
507 if (offmap->map.map_type == BPF_MAP_TYPE_ARRAY) { in nsim_bpf_map_alloc()
511 err = nsim_map_alloc_elem(offmap, i); in nsim_bpf_map_alloc()
516 memset(nmap->entry[i].value, 0, offmap->map.value_size); in nsim_bpf_map_alloc()
520 offmap->dev_ops = &nsim_bpf_map_ops; in nsim_bpf_map_alloc()
534 static void nsim_bpf_map_free(struct bpf_offloaded_map *offmap) in nsim_bpf_map_free() argument
536 struct nsim_bpf_bound_map *nmap = offmap->dev_priv; in nsim_bpf_map_free()
572 return nsim_bpf_map_alloc(ns, bpf->offmap); in nsim_bpf()
574 nsim_bpf_map_free(bpf->offmap); in nsim_bpf()