Lines Matching full:netdev
35 struct net_device *netdev; member
45 .key_offset = offsetof(struct bpf_offload_netdev, netdev),
52 static int bpf_dev_offload_check(struct net_device *netdev) in bpf_dev_offload_check() argument
54 if (!netdev) in bpf_dev_offload_check()
56 if (!netdev->netdev_ops->ndo_bpf) in bpf_dev_offload_check()
62 bpf_offload_find_netdev(struct net_device *netdev) in bpf_offload_find_netdev() argument
66 return rhashtable_lookup_fast(&offdevs, &netdev, offdevs_params); in bpf_offload_find_netdev()
70 struct net_device *netdev) in __bpf_offload_dev_netdev_register() argument
79 ondev->netdev = netdev; in __bpf_offload_dev_netdev_register()
86 netdev_warn(netdev, "failed to register for BPF offload\n"); in __bpf_offload_dev_netdev_register()
115 struct net_device *netdev; in bpf_map_offload_ndo() local
121 /* Caller must make sure netdev is valid */ in bpf_map_offload_ndo()
122 netdev = offmap->netdev; in bpf_map_offload_ndo()
124 return netdev->netdev_ops->ndo_bpf(netdev, &data); in bpf_map_offload_ndo()
133 offmap->netdev = NULL; in __bpf_map_offload_destroy()
137 struct net_device *netdev) in __bpf_offload_dev_netdev_unregister() argument
145 ondev = rhashtable_lookup_fast(&offdevs, &netdev, offdevs_params); in __bpf_offload_dev_netdev_unregister()
151 /* Try to move the objects to another netdev of the device */ in __bpf_offload_dev_netdev_unregister()
161 offload->netdev = altdev->netdev; in __bpf_offload_dev_netdev_unregister()
165 offmap->netdev = altdev->netdev; in __bpf_offload_dev_netdev_unregister()
179 static int __bpf_prog_dev_bound_init(struct bpf_prog *prog, struct net_device *netdev) in __bpf_prog_dev_bound_init() argument
190 offload->netdev = netdev; in __bpf_prog_dev_bound_init()
192 ondev = bpf_offload_find_netdev(offload->netdev); in __bpf_prog_dev_bound_init()
204 err = __bpf_offload_dev_netdev_register(NULL, offload->netdev); in __bpf_prog_dev_bound_init()
207 ondev = bpf_offload_find_netdev(offload->netdev); in __bpf_prog_dev_bound_init()
221 struct net_device *netdev; in bpf_prog_dev_bound_init() local
242 netdev = dev_get_by_index(current->nsproxy->net_ns, attr->prog_ifindex); in bpf_prog_dev_bound_init()
243 if (!netdev) in bpf_prog_dev_bound_init()
246 err = bpf_dev_offload_check(netdev); in bpf_prog_dev_bound_init()
253 err = __bpf_prog_dev_bound_init(prog, netdev); in bpf_prog_dev_bound_init()
257 dev_put(netdev); in bpf_prog_dev_bound_init()
280 err = __bpf_prog_dev_bound_init(new_prog, old_prog->aux->offload->netdev); in bpf_prog_dev_bound_inherit()
375 struct net_device *netdev; in bpf_prog_dev_bound_destroy() local
382 netdev = prog->aux->offload->netdev; in bpf_prog_dev_bound_destroy()
385 ondev = bpf_offload_find_netdev(netdev); in bpf_prog_dev_bound_destroy()
387 __bpf_offload_dev_netdev_unregister(NULL, netdev); in bpf_prog_dev_bound_destroy()
437 args->info->ifindex = aux->offload->netdev->ifindex; in bpf_prog_offload_info_fill_ns()
438 net = dev_net(aux->offload->netdev); in bpf_prog_offload_info_fill_ns()
523 offmap->netdev = __dev_get_by_index(net, attr->map_ifindex); in bpf_map_offload_map_alloc()
524 err = bpf_dev_offload_check(offmap->netdev); in bpf_map_offload_map_alloc()
528 netdev_lock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
531 ondev = bpf_offload_find_netdev(offmap->netdev); in bpf_map_offload_map_alloc()
543 netdev_unlock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
550 netdev_unlock_ops(offmap->netdev); in bpf_map_offload_map_alloc()
563 if (offmap->netdev) in bpf_map_offload_map_free()
573 /* The memory dynamically allocated in netdev dev_ops is not counted */ in bpf_map_offload_map_mem_usage()
583 if (offmap->netdev) in bpf_map_offload_lookup_elem()
600 if (offmap->netdev) in bpf_map_offload_update_elem()
614 if (offmap->netdev) in bpf_map_offload_delete_elem()
627 if (offmap->netdev) in bpf_map_offload_get_next_key()
648 if (args->offmap->netdev) { in bpf_map_offload_info_fill_ns()
649 args->info->ifindex = args->offmap->netdev->ifindex; in bpf_map_offload_info_fill_ns()
650 net = dev_net(args->offmap->netdev); in bpf_map_offload_info_fill_ns()
690 struct net_device *netdev) in __bpf_offload_dev_match() argument
701 if (offload->netdev == netdev) in __bpf_offload_dev_match()
704 ondev1 = bpf_offload_find_netdev(offload->netdev); in __bpf_offload_dev_match()
705 ondev2 = bpf_offload_find_netdev(netdev); in __bpf_offload_dev_match()
710 bool bpf_offload_dev_match(struct bpf_prog *prog, struct net_device *netdev) in bpf_offload_dev_match() argument
715 ret = __bpf_offload_dev_match(prog, netdev); in bpf_offload_dev_match()
731 lhs->aux->offload->netdev && in bpf_prog_dev_bound_match()
732 lhs->aux->offload->netdev == rhs->aux->offload->netdev; in bpf_prog_dev_bound_match()
748 ret = __bpf_offload_dev_match(prog, offmap->netdev); in bpf_offload_prog_map_match()
755 struct net_device *netdev) in bpf_offload_dev_netdev_register() argument
760 err = __bpf_offload_dev_netdev_register(offdev, netdev); in bpf_offload_dev_netdev_register()
767 struct net_device *netdev) in bpf_offload_dev_netdev_unregister() argument
770 __bpf_offload_dev_netdev_unregister(offdev, netdev); in bpf_offload_dev_netdev_unregister()
814 __bpf_offload_dev_netdev_unregister(NULL, ondev->netdev); in bpf_dev_bound_netdev_unregister()
848 ops = prog->aux->offload->netdev->xdp_metadata_ops; in bpf_dev_bound_resolve_kfunc()