Lines Matching refs:offmap
337 static int nsim_map_key_find(struct bpf_offloaded_map *offmap, void *key)
339 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
343 if (nsim_map_key_match(&offmap->map, &nmap->entry[i], key))
350 nsim_map_alloc_elem(struct bpf_offloaded_map *offmap, unsigned int idx)
352 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
354 nmap->entry[idx].key = kmalloc(offmap->map.key_size,
358 nmap->entry[idx].value = kmalloc(offmap->map.value_size,
370 nsim_map_get_next_key(struct bpf_offloaded_map *offmap,
373 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
379 idx = nsim_map_key_find(offmap, key);
388 offmap->map.key_size);
401 nsim_map_lookup_elem(struct bpf_offloaded_map *offmap, void *key, void *value)
403 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
408 idx = nsim_map_key_find(offmap, key);
410 memcpy(value, nmap->entry[idx].value, offmap->map.value_size);
418 nsim_map_update_elem(struct bpf_offloaded_map *offmap,
421 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
426 idx = nsim_map_key_find(offmap, key);
445 err = nsim_map_alloc_elem(offmap, idx);
450 memcpy(nmap->entry[idx].key, key, offmap->map.key_size);
451 memcpy(nmap->entry[idx].value, value, offmap->map.value_size);
458 static int nsim_map_delete_elem(struct bpf_offloaded_map *offmap, void *key)
460 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
463 if (offmap->map.map_type == BPF_MAP_TYPE_ARRAY)
468 idx = nsim_map_key_find(offmap, key);
488 nsim_bpf_map_alloc(struct netdevsim *ns, struct bpf_offloaded_map *offmap)
493 if (WARN_ON(offmap->map.map_type != BPF_MAP_TYPE_ARRAY &&
494 offmap->map.map_type != BPF_MAP_TYPE_HASH))
496 if (offmap->map.max_entries > NSIM_BPF_MAX_KEYS)
498 if (offmap->map.map_flags)
505 offmap->dev_priv = nmap;
507 nmap->map = offmap;
510 if (offmap->map.map_type == BPF_MAP_TYPE_ARRAY) {
514 err = nsim_map_alloc_elem(offmap, i);
519 memset(nmap->entry[i].value, 0, offmap->map.value_size);
523 offmap->dev_ops = &nsim_bpf_map_ops;
537 static void nsim_bpf_map_free(struct bpf_offloaded_map *offmap)
539 struct nsim_bpf_bound_map *nmap = offmap->dev_priv;
575 return nsim_bpf_map_alloc(ns, bpf->offmap);
577 nsim_bpf_map_free(bpf->offmap);