• Home
  • Raw
  • Download

Lines Matching full:offload

29 /* Protects offdevs, members of bpf_offload_netdev and offload members
81 struct bpf_prog_offload *offload; in bpf_prog_offload_init() local
91 offload = kzalloc(sizeof(*offload), GFP_USER); in bpf_prog_offload_init()
92 if (!offload) in bpf_prog_offload_init()
95 offload->prog = prog; in bpf_prog_offload_init()
97 offload->netdev = dev_get_by_index(current->nsproxy->net_ns, in bpf_prog_offload_init()
99 err = bpf_dev_offload_check(offload->netdev); in bpf_prog_offload_init()
104 ondev = bpf_offload_find_netdev(offload->netdev); in bpf_prog_offload_init()
109 prog->aux->offload = offload; in bpf_prog_offload_init()
110 list_add_tail(&offload->offloads, &ondev->progs); in bpf_prog_offload_init()
111 dev_put(offload->netdev); in bpf_prog_offload_init()
118 if (offload->netdev) in bpf_prog_offload_init()
119 dev_put(offload->netdev); in bpf_prog_offload_init()
120 kfree(offload); in bpf_prog_offload_init()
127 struct bpf_prog_offload *offload = prog->aux->offload; in __bpf_offload_ndo() local
132 if (!offload) in __bpf_offload_ndo()
134 netdev = offload->netdev; in __bpf_offload_ndo()
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()
163 struct bpf_prog_offload *offload; in bpf_prog_offload_verify_insn() local
167 offload = env->prog->aux->offload; in bpf_prog_offload_verify_insn()
168 if (offload) in bpf_prog_offload_verify_insn()
169 ret = offload->dev_ops->insn_hook(env, insn_idx, prev_insn_idx); in bpf_prog_offload_verify_insn()
177 struct bpf_prog_offload *offload = prog->aux->offload; in __bpf_prog_offload_destroy() local
180 data.offload.prog = prog; in __bpf_prog_offload_destroy()
182 if (offload->dev_state) in __bpf_prog_offload_destroy()
188 list_del_init(&offload->offloads); in __bpf_prog_offload_destroy()
189 kfree(offload); in __bpf_prog_offload_destroy()
190 prog->aux->offload = NULL; in __bpf_prog_offload_destroy()
197 if (prog->aux->offload) in bpf_prog_offload_destroy()
208 data.offload.prog = prog; in bpf_prog_offload_translate()
246 if (aux->offload) { in bpf_prog_offload_info_fill_ns()
247 args->info->ifindex = aux->offload->netdev->ifindex; in bpf_prog_offload_info_fill_ns()
248 net = dev_net(aux->offload->netdev); in bpf_prog_offload_info_fill_ns()
285 if (!aux->offload) { in bpf_prog_offload_info_fill()
291 info->jited_prog_len = aux->offload->jited_len; in bpf_prog_offload_info_fill()
295 if (copy_to_user(uinsns, aux->offload->jited_image, ulen)) { in bpf_prog_offload_info_fill()
518 struct bpf_prog_offload *offload; in __bpf_offload_dev_match() local
523 offload = prog->aux->offload; in __bpf_offload_dev_match()
524 if (!offload) in __bpf_offload_dev_match()
526 if (offload->netdev == netdev) in __bpf_offload_dev_match()
529 ondev1 = bpf_offload_find_netdev(offload->netdev); in __bpf_offload_dev_match()
581 netdev_warn(netdev, "failed to register for BPF offload\n"); in bpf_offload_dev_netdev_register()
601 struct bpf_prog_offload *offload, *ptmp; in bpf_offload_dev_netdev_unregister() local
618 list_for_each_entry(offload, &ondev->progs, offloads) in bpf_offload_dev_netdev_unregister()
619 offload->netdev = altdev->netdev; in bpf_offload_dev_netdev_unregister()
626 list_for_each_entry_safe(offload, ptmp, &ondev->progs, offloads) in bpf_offload_dev_netdev_unregister()
627 __bpf_prog_offload_destroy(offload->prog); in bpf_offload_dev_netdev_unregister()