Lines Matching refs:offdev
46 struct bpf_offload_dev *offdev; /* NULL when bound-only */ member
79 static int __bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev, in __bpf_offload_dev_netdev_register() argument
90 ondev->offdev = offdev; in __bpf_offload_dev_netdev_register()
100 if (offdev) in __bpf_offload_dev_netdev_register()
101 list_add(&ondev->offdev_netdevs, &offdev->netdevs); in __bpf_offload_dev_netdev_register()
114 offload->offdev->ops->destroy(prog); in __bpf_prog_offload_destroy()
146 static void __bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev, in __bpf_offload_dev_netdev_unregister() argument
162 if (offdev) { in __bpf_offload_dev_netdev_unregister()
164 altdev = list_first_entry_or_null(&offdev->netdevs, in __bpf_offload_dev_netdev_unregister()
206 if (bpf_prog_is_offloaded(prog->aux) && (!ondev || !ondev->offdev)) { in __bpf_prog_dev_bound_init()
219 offload->offdev = ondev->offdev; in __bpf_prog_dev_bound_init()
305 ret = offload->offdev->ops->prepare(prog); in bpf_prog_offload_verifier_prep()
322 ret = offload->offdev->ops->insn_hook(env, insn_idx, in bpf_prog_offload_verify_insn()
337 if (offload->offdev->ops->finalize) in bpf_prog_offload_finalize()
338 ret = offload->offdev->ops->finalize(env); in bpf_prog_offload_finalize()
358 ops = offload->offdev->ops; in bpf_prog_offload_replace_insn()
375 if (!offload->opt_failed && offload->offdev->ops->remove_insns) in bpf_prog_offload_remove_insns()
376 ret = offload->offdev->ops->remove_insns(env, off, cnt); in bpf_prog_offload_remove_insns()
396 if (!ondev->offdev && list_empty(&ondev->progs)) in bpf_prog_dev_bound_destroy()
411 ret = offload->offdev->ops->translate(prog); in bpf_prog_offload_translate()
717 return ondev1 && ondev2 && ondev1->offdev == ondev2->offdev; in __bpf_offload_dev_match()
764 int bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev, in bpf_offload_dev_netdev_register() argument
770 err = __bpf_offload_dev_netdev_register(offdev, netdev); in bpf_offload_dev_netdev_register()
776 void bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev, in bpf_offload_dev_netdev_unregister() argument
780 __bpf_offload_dev_netdev_unregister(offdev, netdev); in bpf_offload_dev_netdev_unregister()
788 struct bpf_offload_dev *offdev; in bpf_offload_dev_create() local
790 offdev = kzalloc(sizeof(*offdev), GFP_KERNEL); in bpf_offload_dev_create()
791 if (!offdev) in bpf_offload_dev_create()
794 offdev->ops = ops; in bpf_offload_dev_create()
795 offdev->priv = priv; in bpf_offload_dev_create()
796 INIT_LIST_HEAD(&offdev->netdevs); in bpf_offload_dev_create()
798 return offdev; in bpf_offload_dev_create()
802 void bpf_offload_dev_destroy(struct bpf_offload_dev *offdev) in bpf_offload_dev_destroy() argument
804 WARN_ON(!list_empty(&offdev->netdevs)); in bpf_offload_dev_destroy()
805 kfree(offdev); in bpf_offload_dev_destroy()
809 void *bpf_offload_dev_priv(struct bpf_offload_dev *offdev) in bpf_offload_dev_priv() argument
811 return offdev->priv; in bpf_offload_dev_priv()
823 if (ondev && !ondev->offdev) in bpf_dev_bound_netdev_unregister()