Lines Matching refs:offdev

45 	struct bpf_offload_dev *offdev; /* NULL when bound-only */  member
78 static int __bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev, in __bpf_offload_dev_netdev_register() argument
89 ondev->offdev = offdev; in __bpf_offload_dev_netdev_register()
99 if (offdev) in __bpf_offload_dev_netdev_register()
100 list_add(&ondev->offdev_netdevs, &offdev->netdevs); in __bpf_offload_dev_netdev_register()
113 offload->offdev->ops->destroy(prog); in __bpf_prog_offload_destroy()
145 static void __bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev, in __bpf_offload_dev_netdev_unregister() argument
161 if (offdev) { in __bpf_offload_dev_netdev_unregister()
163 altdev = list_first_entry_or_null(&offdev->netdevs, in __bpf_offload_dev_netdev_unregister()
205 if (bpf_prog_is_offloaded(prog->aux) && (!ondev || !ondev->offdev)) { in __bpf_prog_dev_bound_init()
218 offload->offdev = ondev->offdev; in __bpf_prog_dev_bound_init()
297 ret = offload->offdev->ops->prepare(prog); in bpf_prog_offload_verifier_prep()
314 ret = offload->offdev->ops->insn_hook(env, insn_idx, in bpf_prog_offload_verify_insn()
329 if (offload->offdev->ops->finalize) in bpf_prog_offload_finalize()
330 ret = offload->offdev->ops->finalize(env); in bpf_prog_offload_finalize()
350 ops = offload->offdev->ops; in bpf_prog_offload_replace_insn()
367 if (!offload->opt_failed && offload->offdev->ops->remove_insns) in bpf_prog_offload_remove_insns()
368 ret = offload->offdev->ops->remove_insns(env, off, cnt); in bpf_prog_offload_remove_insns()
388 if (!ondev->offdev && list_empty(&ondev->progs)) in bpf_prog_dev_bound_destroy()
403 ret = offload->offdev->ops->translate(prog); in bpf_prog_offload_translate()
705 return ondev1 && ondev2 && ondev1->offdev == ondev2->offdev; in __bpf_offload_dev_match()
752 int bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev, in bpf_offload_dev_netdev_register() argument
758 err = __bpf_offload_dev_netdev_register(offdev, netdev); in bpf_offload_dev_netdev_register()
764 void bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev, in bpf_offload_dev_netdev_unregister() argument
768 __bpf_offload_dev_netdev_unregister(offdev, netdev); in bpf_offload_dev_netdev_unregister()
776 struct bpf_offload_dev *offdev; in bpf_offload_dev_create() local
778 offdev = kzalloc(sizeof(*offdev), GFP_KERNEL); in bpf_offload_dev_create()
779 if (!offdev) in bpf_offload_dev_create()
782 offdev->ops = ops; in bpf_offload_dev_create()
783 offdev->priv = priv; in bpf_offload_dev_create()
784 INIT_LIST_HEAD(&offdev->netdevs); in bpf_offload_dev_create()
786 return offdev; in bpf_offload_dev_create()
790 void bpf_offload_dev_destroy(struct bpf_offload_dev *offdev) in bpf_offload_dev_destroy() argument
792 WARN_ON(!list_empty(&offdev->netdevs)); in bpf_offload_dev_destroy()
793 kfree(offdev); in bpf_offload_dev_destroy()
797 void *bpf_offload_dev_priv(struct bpf_offload_dev *offdev) in bpf_offload_dev_priv() argument
799 return offdev->priv; in bpf_offload_dev_priv()
811 if (ondev && !ondev->offdev) in bpf_dev_bound_netdev_unregister()