Lines Matching refs:offmap

121 static int bpf_map_offload_ndo(struct bpf_offloaded_map *offmap,  in bpf_map_offload_ndo()  argument
130 data.offmap = offmap; in bpf_map_offload_ndo()
132 netdev = offmap->netdev; in bpf_map_offload_ndo()
137 static void __bpf_map_offload_destroy(struct bpf_offloaded_map *offmap) in __bpf_map_offload_destroy() argument
139 WARN_ON(bpf_map_offload_ndo(offmap, BPF_OFFLOAD_MAP_FREE)); in __bpf_map_offload_destroy()
141 bpf_map_free_id(&offmap->map); in __bpf_map_offload_destroy()
142 list_del_init(&offmap->offloads); in __bpf_map_offload_destroy()
143 offmap->netdev = NULL; in __bpf_map_offload_destroy()
150 struct bpf_offloaded_map *offmap, *mtmp; in __bpf_offload_dev_netdev_unregister() local
174 list_for_each_entry(offmap, &ondev->maps, offloads) in __bpf_offload_dev_netdev_unregister()
175 offmap->netdev = altdev->netdev; in __bpf_offload_dev_netdev_unregister()
180 list_for_each_entry_safe(offmap, mtmp, &ondev->maps, offloads) in __bpf_offload_dev_netdev_unregister()
181 __bpf_map_offload_destroy(offmap); in __bpf_offload_dev_netdev_unregister()
518 struct bpf_offloaded_map *offmap; in bpf_map_offload_map_alloc() local
527 offmap = bpf_map_area_alloc(sizeof(*offmap), NUMA_NO_NODE); in bpf_map_offload_map_alloc()
528 if (!offmap) in bpf_map_offload_map_alloc()
531 bpf_map_init_from_attr(&offmap->map, attr); in bpf_map_offload_map_alloc()
533 offmap->netdev = __dev_get_by_index(net, attr->map_ifindex); in bpf_map_offload_map_alloc()
534 err = bpf_dev_offload_check(offmap->netdev); in bpf_map_offload_map_alloc()
538 netdev_lock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
541 ondev = bpf_offload_find_netdev(offmap->netdev); in bpf_map_offload_map_alloc()
547 err = bpf_map_offload_ndo(offmap, BPF_OFFLOAD_MAP_ALLOC); in bpf_map_offload_map_alloc()
551 list_add_tail(&offmap->offloads, &ondev->maps); in bpf_map_offload_map_alloc()
553 netdev_unlock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
556 return &offmap->map; in bpf_map_offload_map_alloc()
560 netdev_unlock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
563 bpf_map_area_free(offmap); in bpf_map_offload_map_alloc()
569 struct bpf_offloaded_map *offmap = map_to_offmap(map); in bpf_map_offload_map_free() local
573 if (offmap->netdev) in bpf_map_offload_map_free()
574 __bpf_map_offload_destroy(offmap); in bpf_map_offload_map_free()
578 bpf_map_area_free(offmap); in bpf_map_offload_map_free()
589 struct bpf_offloaded_map *offmap = map_to_offmap(map); in bpf_map_offload_lookup_elem() local
593 if (offmap->netdev) in bpf_map_offload_lookup_elem()
594 ret = offmap->dev_ops->map_lookup_elem(offmap, key, value); in bpf_map_offload_lookup_elem()
603 struct bpf_offloaded_map *offmap = map_to_offmap(map); in bpf_map_offload_update_elem() local
610 if (offmap->netdev) in bpf_map_offload_update_elem()
611 ret = offmap->dev_ops->map_update_elem(offmap, key, value, in bpf_map_offload_update_elem()
620 struct bpf_offloaded_map *offmap = map_to_offmap(map); in bpf_map_offload_delete_elem() local
624 if (offmap->netdev) in bpf_map_offload_delete_elem()
625 ret = offmap->dev_ops->map_delete_elem(offmap, key); in bpf_map_offload_delete_elem()
633 struct bpf_offloaded_map *offmap = map_to_offmap(map); in bpf_map_offload_get_next_key() local
637 if (offmap->netdev) in bpf_map_offload_get_next_key()
638 ret = offmap->dev_ops->map_get_next_key(offmap, key, next_key); in bpf_map_offload_get_next_key()
645 struct bpf_offloaded_map *offmap; member
658 if (args->offmap->netdev) { in bpf_map_offload_info_fill_ns()
659 args->info->ifindex = args->offmap->netdev->ifindex; in bpf_map_offload_info_fill_ns()
660 net = dev_net(args->offmap->netdev); in bpf_map_offload_info_fill_ns()
677 .offmap = map_to_offmap(map), in bpf_map_offload_info_fill()
750 struct bpf_offloaded_map *offmap; in bpf_offload_prog_map_match() local
755 offmap = map_to_offmap(map); in bpf_offload_prog_map_match()
758 ret = __bpf_offload_dev_match(prog, offmap->netdev); in bpf_offload_prog_map_match()