app->ctrl_mtu = nfp_bpf_ctrl_cmsg_mtu(bpf);
        }
 
-       bpf->bpf_dev = bpf_offload_dev_create();
+       bpf->bpf_dev = bpf_offload_dev_create(&nfp_bpf_dev_ops);
        err = PTR_ERR_OR_ZERO(bpf->bpf_dev);
        if (err)
                goto err_free_neutral_maps;
 
                    int prev_insn_idx);
 int nfp_bpf_finalize(struct bpf_verifier_env *env);
 
-extern const struct bpf_prog_offload_ops nfp_bpf_analyzer_ops;
+extern const struct bpf_prog_offload_ops nfp_bpf_dev_ops;
 
 struct netdev_bpf;
 struct nfp_app;
 
                goto err_free;
 
        nfp_prog->verifier_meta = nfp_prog_first_meta(nfp_prog);
-       bpf->verifier.ops = &nfp_bpf_analyzer_ops;
+       bpf->verifier.ops = &nfp_bpf_dev_ops;
 
        return 0;
 
        return 0;
 }
 
-const struct bpf_prog_offload_ops nfp_bpf_analyzer_ops = {
+const struct bpf_prog_offload_ops nfp_bpf_dev_ops = {
        .insn_hook      = nfp_verify_insn,
        .finalize       = nfp_bpf_finalize,
 };
 
        return 0;
 }
 
-static const struct bpf_prog_offload_ops nsim_bpf_analyzer_ops = {
+static const struct bpf_prog_offload_ops nsim_bpf_dev_ops = {
        .insn_hook      = nsim_bpf_verify_insn,
        .finalize       = nsim_bpf_finalize,
 };
                if (err)
                        return err;
 
-               bpf->verifier.ops = &nsim_bpf_analyzer_ops;
+               bpf->verifier.ops = &nsim_bpf_dev_ops;
                return 0;
        case BPF_OFFLOAD_TRANSLATE:
                state = bpf->offload.prog->aux->offload->dev_priv;
                if (IS_ERR_OR_NULL(ns->sdev->ddir_bpf_bound_progs))
                        return -ENOMEM;
 
-               ns->sdev->bpf_dev = bpf_offload_dev_create();
+               ns->sdev->bpf_dev = bpf_offload_dev_create(&nsim_bpf_dev_ops);
                err = PTR_ERR_OR_ZERO(ns->sdev->bpf_dev);
                if (err)
                        return err;
 
 
 bool bpf_offload_prog_map_match(struct bpf_prog *prog, struct bpf_map *map);
 
-struct bpf_offload_dev *bpf_offload_dev_create(void);
+struct bpf_offload_dev *
+bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops);
 void bpf_offload_dev_destroy(struct bpf_offload_dev *offdev);
 int bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev,
                                    struct net_device *netdev);
 
 static DECLARE_RWSEM(bpf_devs_lock);
 
 struct bpf_offload_dev {
+       const struct bpf_prog_offload_ops *ops;
        struct list_head netdevs;
 };
 
 }
 EXPORT_SYMBOL_GPL(bpf_offload_dev_netdev_unregister);
 
-struct bpf_offload_dev *bpf_offload_dev_create(void)
+struct bpf_offload_dev *
+bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops)
 {
        struct bpf_offload_dev *offdev;
        int err;
        if (!offdev)
                return ERR_PTR(-ENOMEM);
 
+       offdev->ops = ops;
        INIT_LIST_HEAD(&offdev->netdevs);
 
        return offdev;