Lines Matching refs:map
75 struct bpf_map map; member
140 bpf_map_init_from_attr(&dtab->map, attr); in dev_map_init_map()
144 dtab->n_buckets = roundup_pow_of_two(dtab->map.max_entries); in dev_map_init_map()
146 dtab->map.numa_node); in dev_map_init_map()
152 dtab->netdev_map = bpf_map_area_alloc((u64) dtab->map.max_entries * in dev_map_init_map()
154 dtab->map.numa_node); in dev_map_init_map()
181 return &dtab->map; in dev_map_alloc()
184 static void dev_map_free(struct bpf_map *map) in dev_map_free() argument
186 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_free()
216 if (dtab->map.map_type == BPF_MAP_TYPE_DEVMAP_HASH) { in dev_map_free()
235 for (i = 0; i < dtab->map.max_entries; i++) { in dev_map_free()
254 static int dev_map_get_next_key(struct bpf_map *map, void *key, void *next_key) in dev_map_get_next_key() argument
256 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_get_next_key()
260 if (index >= dtab->map.max_entries) { in dev_map_get_next_key()
265 if (index == dtab->map.max_entries - 1) in dev_map_get_next_key()
275 static void *__dev_map_hash_lookup_elem(struct bpf_map *map, u32 key) in __dev_map_hash_lookup_elem() argument
277 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_hash_lookup_elem()
289 static int dev_map_hash_get_next_key(struct bpf_map *map, void *key, in dev_map_hash_get_next_key() argument
292 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_hash_get_next_key()
303 dev = __dev_map_hash_lookup_elem(map, idx); in dev_map_hash_get_next_key()
439 static void *__dev_map_lookup_elem(struct bpf_map *map, u32 key) in __dev_map_lookup_elem() argument
441 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_lookup_elem()
444 if (key >= map->max_entries) in __dev_map_lookup_elem()
607 struct bpf_map *map, bool exclude_ingress) in dev_map_enqueue_multi() argument
609 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_enqueue_multi()
622 if (map->map_type == BPF_MAP_TYPE_DEVMAP) { in dev_map_enqueue_multi()
623 for (i = 0; i < map->max_entries; i++) { in dev_map_enqueue_multi()
724 struct bpf_map *map, bool exclude_ingress) in dev_map_redirect_multi() argument
726 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_redirect_multi()
740 if (map->map_type == BPF_MAP_TYPE_DEVMAP) { in dev_map_redirect_multi()
741 for (i = 0; i < map->max_entries; i++) { in dev_map_redirect_multi()
795 static void *dev_map_lookup_elem(struct bpf_map *map, void *key) in dev_map_lookup_elem() argument
797 struct bpf_dtab_netdev *obj = __dev_map_lookup_elem(map, *(u32 *)key); in dev_map_lookup_elem()
802 static void *dev_map_hash_lookup_elem(struct bpf_map *map, void *key) in dev_map_hash_lookup_elem() argument
804 struct bpf_dtab_netdev *obj = __dev_map_hash_lookup_elem(map, in dev_map_hash_lookup_elem()
820 static long dev_map_delete_elem(struct bpf_map *map, void *key) in dev_map_delete_elem() argument
822 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_delete_elem()
826 if (k >= map->max_entries) in dev_map_delete_elem()
837 static long dev_map_hash_delete_elem(struct bpf_map *map, void *key) in dev_map_hash_delete_elem() argument
839 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_hash_delete_elem()
847 old_dev = __dev_map_hash_lookup_elem(map, k); in dev_map_hash_delete_elem()
867 dev = bpf_map_kmalloc_node(&dtab->map, sizeof(*dev), in __dev_map_alloc_node()
869 dtab->map.numa_node); in __dev_map_alloc_node()
883 !bpf_prog_map_compatible(&dtab->map, prog)) in __dev_map_alloc_node()
907 static long __dev_map_update_elem(struct net *net, struct bpf_map *map, in __dev_map_update_elem() argument
910 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_update_elem()
917 if (unlikely(i >= dtab->map.max_entries)) in __dev_map_update_elem()
923 memcpy(&val, value, map->value_size); in __dev_map_update_elem()
949 static long dev_map_update_elem(struct bpf_map *map, void *key, void *value, in dev_map_update_elem() argument
953 map, key, value, map_flags); in dev_map_update_elem()
956 static long __dev_map_hash_update_elem(struct net *net, struct bpf_map *map, in __dev_map_hash_update_elem() argument
959 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in __dev_map_hash_update_elem()
967 memcpy(&val, value, map->value_size); in __dev_map_hash_update_elem()
974 old_dev = __dev_map_hash_lookup_elem(map, idx); in __dev_map_hash_update_elem()
987 if (dtab->items >= dtab->map.max_entries) { in __dev_map_hash_update_elem()
1009 static long dev_map_hash_update_elem(struct bpf_map *map, void *key, void *value, in dev_map_hash_update_elem() argument
1013 map, key, value, map_flags); in dev_map_hash_update_elem()
1016 static long dev_map_redirect(struct bpf_map *map, u64 ifindex, u64 flags) in dev_map_redirect() argument
1018 return __bpf_xdp_redirect_map(map, ifindex, flags, in dev_map_redirect()
1023 static long dev_hash_map_redirect(struct bpf_map *map, u64 ifindex, u64 flags) in dev_hash_map_redirect() argument
1025 return __bpf_xdp_redirect_map(map, ifindex, flags, in dev_hash_map_redirect()
1030 static u64 dev_map_mem_usage(const struct bpf_map *map) in dev_map_mem_usage() argument
1032 struct bpf_dtab *dtab = container_of(map, struct bpf_dtab, map); in dev_map_mem_usage()
1035 if (map->map_type == BPF_MAP_TYPE_DEVMAP_HASH) in dev_map_mem_usage()
1038 usage += (u64)map->max_entries * sizeof(struct bpf_dtab_netdev *); in dev_map_mem_usage()
1129 if (dtab->map.map_type == BPF_MAP_TYPE_DEVMAP_HASH) { in dev_map_notification()
1134 for (i = 0; i < dtab->map.max_entries; i++) { in dev_map_notification()