Lines Matching refs:prog
78 int bpf_prog_offload_init(struct bpf_prog *prog, union bpf_attr *attr) in bpf_prog_offload_init() argument
95 offload->prog = prog; in bpf_prog_offload_init()
109 prog->aux->offload = offload; in bpf_prog_offload_init()
124 static int __bpf_offload_ndo(struct bpf_prog *prog, enum bpf_netdev_command cmd, in __bpf_offload_ndo() argument
127 struct bpf_prog_offload *offload = prog->aux->offload; in __bpf_offload_ndo()
146 data.verifier.prog = env->prog; in bpf_prog_offload_verifier_prep()
149 err = __bpf_offload_ndo(env->prog, BPF_OFFLOAD_VERIFIER_PREP, &data); in bpf_prog_offload_verifier_prep()
153 env->prog->aux->offload->dev_ops = data.verifier.ops; in bpf_prog_offload_verifier_prep()
154 env->prog->aux->offload->dev_state = true; in bpf_prog_offload_verifier_prep()
167 offload = env->prog->aux->offload; in bpf_prog_offload_verify_insn()
175 static void __bpf_prog_offload_destroy(struct bpf_prog *prog) in __bpf_prog_offload_destroy() argument
177 struct bpf_prog_offload *offload = prog->aux->offload; in __bpf_prog_offload_destroy()
180 data.offload.prog = prog; in __bpf_prog_offload_destroy()
183 WARN_ON(__bpf_offload_ndo(prog, BPF_OFFLOAD_DESTROY, &data)); in __bpf_prog_offload_destroy()
186 bpf_prog_free_id(prog, true); in __bpf_prog_offload_destroy()
190 prog->aux->offload = NULL; in __bpf_prog_offload_destroy()
193 void bpf_prog_offload_destroy(struct bpf_prog *prog) in bpf_prog_offload_destroy() argument
197 if (prog->aux->offload) in bpf_prog_offload_destroy()
198 __bpf_prog_offload_destroy(prog); in bpf_prog_offload_destroy()
203 static int bpf_prog_offload_translate(struct bpf_prog *prog) in bpf_prog_offload_translate() argument
208 data.offload.prog = prog; in bpf_prog_offload_translate()
211 ret = __bpf_offload_ndo(prog, BPF_OFFLOAD_TRANSLATE, &data); in bpf_prog_offload_translate()
224 int bpf_prog_offload_compile(struct bpf_prog *prog) in bpf_prog_offload_compile() argument
226 prog->bpf_func = bpf_prog_warn_on_exec; in bpf_prog_offload_compile()
228 return bpf_prog_offload_translate(prog); in bpf_prog_offload_compile()
232 struct bpf_prog *prog; member
239 struct bpf_prog_aux *aux = args->prog->aux; in bpf_prog_offload_info_fill_ns()
263 struct bpf_prog *prog) in bpf_prog_offload_info_fill() argument
266 .prog = prog, in bpf_prog_offload_info_fill()
269 struct bpf_prog_aux *aux = prog->aux; in bpf_prog_offload_info_fill()
514 static bool __bpf_offload_dev_match(struct bpf_prog *prog, in __bpf_offload_dev_match() argument
520 if (!bpf_prog_is_dev_bound(prog->aux)) in __bpf_offload_dev_match()
523 offload = prog->aux->offload; in __bpf_offload_dev_match()
535 bool bpf_offload_dev_match(struct bpf_prog *prog, struct net_device *netdev) in bpf_offload_dev_match() argument
540 ret = __bpf_offload_dev_match(prog, netdev); in bpf_offload_dev_match()
547 bool bpf_offload_prog_map_match(struct bpf_prog *prog, struct bpf_map *map) in bpf_offload_prog_map_match() argument
557 ret = __bpf_offload_dev_match(prog, offmap->netdev); in bpf_offload_prog_map_match()
627 __bpf_prog_offload_destroy(offload->prog); in bpf_offload_dev_netdev_unregister()