Lines Matching refs:offload
110 struct bpf_prog_offload *offload = prog->aux->offload; in __bpf_prog_offload_destroy() local
112 if (offload->dev_state) in __bpf_prog_offload_destroy()
113 offload->offdev->ops->destroy(prog); in __bpf_prog_offload_destroy()
115 list_del_init(&offload->offloads); in __bpf_prog_offload_destroy()
116 kfree(offload); in __bpf_prog_offload_destroy()
117 prog->aux->offload = NULL; in __bpf_prog_offload_destroy()
150 struct bpf_prog_offload *offload, *ptmp; in __bpf_offload_dev_netdev_unregister() local
169 list_for_each_entry(offload, &ondev->progs, offloads) in __bpf_offload_dev_netdev_unregister()
170 offload->netdev = altdev->netdev; in __bpf_offload_dev_netdev_unregister()
177 list_for_each_entry_safe(offload, ptmp, &ondev->progs, offloads) in __bpf_offload_dev_netdev_unregister()
178 __bpf_prog_offload_destroy(offload->prog); in __bpf_offload_dev_netdev_unregister()
191 struct bpf_prog_offload *offload; in __bpf_prog_dev_bound_init() local
194 offload = kzalloc(sizeof(*offload), GFP_USER); in __bpf_prog_dev_bound_init()
195 if (!offload) in __bpf_prog_dev_bound_init()
198 offload->prog = prog; in __bpf_prog_dev_bound_init()
199 offload->netdev = netdev; in __bpf_prog_dev_bound_init()
201 ondev = bpf_offload_find_netdev(offload->netdev); in __bpf_prog_dev_bound_init()
213 err = __bpf_offload_dev_netdev_register(NULL, offload->netdev); in __bpf_prog_dev_bound_init()
216 ondev = bpf_offload_find_netdev(offload->netdev); in __bpf_prog_dev_bound_init()
218 offload->offdev = ondev->offdev; in __bpf_prog_dev_bound_init()
219 prog->aux->offload = offload; in __bpf_prog_dev_bound_init()
220 list_add_tail(&offload->offloads, &ondev->progs); in __bpf_prog_dev_bound_init()
224 kfree(offload); in __bpf_prog_dev_bound_init()
277 if (!old_prog->aux->offload) { in bpf_prog_dev_bound_inherit()
282 err = __bpf_prog_dev_bound_init(new_prog, old_prog->aux->offload->netdev); in bpf_prog_dev_bound_inherit()
291 struct bpf_prog_offload *offload; in bpf_prog_offload_verifier_prep() local
295 offload = prog->aux->offload; in bpf_prog_offload_verifier_prep()
296 if (offload) { in bpf_prog_offload_verifier_prep()
297 ret = offload->offdev->ops->prepare(prog); in bpf_prog_offload_verifier_prep()
298 offload->dev_state = !ret; in bpf_prog_offload_verifier_prep()
308 struct bpf_prog_offload *offload; in bpf_prog_offload_verify_insn() local
312 offload = env->prog->aux->offload; in bpf_prog_offload_verify_insn()
313 if (offload) in bpf_prog_offload_verify_insn()
314 ret = offload->offdev->ops->insn_hook(env, insn_idx, in bpf_prog_offload_verify_insn()
323 struct bpf_prog_offload *offload; in bpf_prog_offload_finalize() local
327 offload = env->prog->aux->offload; in bpf_prog_offload_finalize()
328 if (offload) { in bpf_prog_offload_finalize()
329 if (offload->offdev->ops->finalize) in bpf_prog_offload_finalize()
330 ret = offload->offdev->ops->finalize(env); in bpf_prog_offload_finalize()
344 struct bpf_prog_offload *offload; in bpf_prog_offload_replace_insn() local
348 offload = env->prog->aux->offload; in bpf_prog_offload_replace_insn()
349 if (offload) { in bpf_prog_offload_replace_insn()
350 ops = offload->offdev->ops; in bpf_prog_offload_replace_insn()
351 if (!offload->opt_failed && ops->replace_insn) in bpf_prog_offload_replace_insn()
353 offload->opt_failed |= ret; in bpf_prog_offload_replace_insn()
361 struct bpf_prog_offload *offload; in bpf_prog_offload_remove_insns() local
365 offload = env->prog->aux->offload; in bpf_prog_offload_remove_insns()
366 if (offload) { in bpf_prog_offload_remove_insns()
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()
369 offload->opt_failed |= ret; in bpf_prog_offload_remove_insns()
381 if (prog->aux->offload) { in bpf_prog_dev_bound_destroy()
382 list_del_init(&prog->aux->offload->offloads); in bpf_prog_dev_bound_destroy()
384 netdev = prog->aux->offload->netdev; in bpf_prog_dev_bound_destroy()
397 struct bpf_prog_offload *offload; in bpf_prog_offload_translate() local
401 offload = prog->aux->offload; in bpf_prog_offload_translate()
402 if (offload) in bpf_prog_offload_translate()
403 ret = offload->offdev->ops->translate(prog); in bpf_prog_offload_translate()
438 if (aux->offload) { in bpf_prog_offload_info_fill_ns()
439 args->info->ifindex = aux->offload->netdev->ifindex; in bpf_prog_offload_info_fill_ns()
440 net = dev_net(aux->offload->netdev); in bpf_prog_offload_info_fill_ns()
477 if (!aux->offload) { in bpf_prog_offload_info_fill()
483 info->jited_prog_len = aux->offload->jited_len; in bpf_prog_offload_info_fill()
487 if (copy_to_user(uinsns, aux->offload->jited_image, ulen)) { in bpf_prog_offload_info_fill()
691 struct bpf_prog_offload *offload; in __bpf_offload_dev_match() local
696 offload = prog->aux->offload; in __bpf_offload_dev_match()
697 if (!offload) in __bpf_offload_dev_match()
699 if (offload->netdev == netdev) in __bpf_offload_dev_match()
702 ondev1 = bpf_offload_find_netdev(offload->netdev); in __bpf_offload_dev_match()
728 ret = lhs->aux->offload && rhs->aux->offload && in bpf_prog_dev_bound_match()
729 lhs->aux->offload->netdev && in bpf_prog_dev_bound_match()
730 lhs->aux->offload->netdev == rhs->aux->offload->netdev; in bpf_prog_dev_bound_match()
843 if (!prog->aux->offload) in bpf_dev_bound_resolve_kfunc()
846 ops = prog->aux->offload->netdev->xdp_metadata_ops; in bpf_dev_bound_resolve_kfunc()