Lines Matching refs:map
76 struct bpf_map map; member
126 bpf_map_init_from_attr(&dtab->map, attr); in dev_map_init_map()
132 dtab->n_buckets = roundup_pow_of_two(dtab->map.max_entries); in dev_map_init_map()
138 cost += (u64) dtab->map.max_entries * sizeof(struct bpf_dtab_netdev *); in dev_map_init_map()
142 err = bpf_map_charge_init(&dtab->map.memory, cost); in dev_map_init_map()
160 dtab->netdev_map = bpf_map_area_alloc(dtab->map.max_entries * in dev_map_init_map()
162 dtab->map.numa_node); in dev_map_init_map()
172 bpf_map_charge_finish(&dtab->map.memory); in dev_map_init_map()
198 return &dtab->map; in dev_map_alloc()
201 static void dev_map_free(struct bpf_map *map) in dev_map_free() argument
203 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_free()
218 bpf_clear_redirect_map(map); in dev_map_free()
236 if (dtab->map.map_type == BPF_MAP_TYPE_DEVMAP_HASH) { in dev_map_free()
254 for (i = 0; i < dtab->map.max_entries; i++) { in dev_map_free()
273 static int dev_map_get_next_key(struct bpf_map *map, void *key, void *next_key) in dev_map_get_next_key() argument
275 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_get_next_key()
279 if (index >= dtab->map.max_entries) { in dev_map_get_next_key()
284 if (index == dtab->map.max_entries - 1) in dev_map_get_next_key()
290 struct bpf_dtab_netdev *__dev_map_hash_lookup_elem(struct bpf_map *map, u32 key) in __dev_map_hash_lookup_elem() argument
292 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_hash_lookup_elem()
303 static int dev_map_hash_get_next_key(struct bpf_map *map, void *key, in dev_map_hash_get_next_key() argument
306 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_hash_get_next_key()
317 dev = __dev_map_hash_lookup_elem(map, idx); in dev_map_hash_get_next_key()
375 trace_xdp_devmap_xmit(&obj->dtab->map, obj->idx, in bq_xmit_all()
404 void __dev_map_flush(struct bpf_map *map) in __dev_map_flush() argument
406 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_flush()
420 struct bpf_dtab_netdev *__dev_map_lookup_elem(struct bpf_map *map, u32 key) in __dev_map_lookup_elem() argument
422 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_lookup_elem()
425 if (key >= map->max_entries) in __dev_map_lookup_elem()
495 static void *dev_map_lookup_elem(struct bpf_map *map, void *key) in dev_map_lookup_elem() argument
497 struct bpf_dtab_netdev *obj = __dev_map_lookup_elem(map, *(u32 *)key); in dev_map_lookup_elem()
503 static void *dev_map_hash_lookup_elem(struct bpf_map *map, void *key) in dev_map_hash_lookup_elem() argument
505 struct bpf_dtab_netdev *obj = __dev_map_hash_lookup_elem(map, in dev_map_hash_lookup_elem()
538 static int dev_map_delete_elem(struct bpf_map *map, void *key) in dev_map_delete_elem() argument
540 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_delete_elem()
544 if (k >= map->max_entries) in dev_map_delete_elem()
561 static int dev_map_hash_delete_elem(struct bpf_map *map, void *key) in dev_map_hash_delete_elem() argument
563 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_hash_delete_elem()
571 old_dev = __dev_map_hash_lookup_elem(map, k); in dev_map_hash_delete_elem()
593 dev = kmalloc_node(sizeof(*dev), gfp, dtab->map.numa_node); in __dev_map_alloc_node()
622 static int __dev_map_update_elem(struct net *net, struct bpf_map *map, in __dev_map_update_elem() argument
625 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_update_elem()
632 if (unlikely(i >= dtab->map.max_entries)) in __dev_map_update_elem()
656 static int dev_map_update_elem(struct bpf_map *map, void *key, void *value, in dev_map_update_elem() argument
660 map, key, value, map_flags); in dev_map_update_elem()
663 static int __dev_map_hash_update_elem(struct net *net, struct bpf_map *map, in __dev_map_hash_update_elem() argument
666 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_hash_update_elem()
678 old_dev = __dev_map_hash_lookup_elem(map, idx); in __dev_map_hash_update_elem()
691 if (dtab->items >= dtab->map.max_entries) { in __dev_map_hash_update_elem()
713 static int dev_map_hash_update_elem(struct bpf_map *map, void *key, void *value, in dev_map_hash_update_elem() argument
717 map, key, value, map_flags); in dev_map_hash_update_elem()
782 if (dtab->map.map_type == BPF_MAP_TYPE_DEVMAP_HASH) { in dev_map_notification()
787 for (i = 0; i < dtab->map.max_entries; i++) { in dev_map_notification()