Lines Matching refs:bpf
16 #include <linux/bpf.h>
180 static int nsim_xdp_offload_prog(struct netdevsim *ns, struct netdev_bpf *bpf)
182 if (!nsim_xdp_offload_active(ns) && !bpf->prog)
184 if (!nsim_xdp_offload_active(ns) && bpf->prog && ns->bpf_offloaded) {
185 NSIM_EA(bpf->extack, "TC program is already loaded");
189 return nsim_bpf_offload(ns, bpf->prog, nsim_xdp_offload_active(ns));
193 nsim_xdp_set_prog(struct netdevsim *ns, struct netdev_bpf *bpf,
198 if (bpf->command == XDP_SETUP_PROG && !ns->bpf_xdpdrv_accept) {
199 NSIM_EA(bpf->extack, "driver XDP disabled in DebugFS");
202 if (bpf->command == XDP_SETUP_PROG_HW && !ns->bpf_xdpoffload_accept) {
203 NSIM_EA(bpf->extack, "XDP offload disabled in DebugFS");
207 if (bpf->command == XDP_SETUP_PROG_HW) {
208 err = nsim_xdp_offload_prog(ns, bpf);
213 xdp_attachment_setup(xdp, bpf);
293 static int nsim_setup_prog_checks(struct netdevsim *ns, struct netdev_bpf *bpf)
295 if (bpf->prog && bpf->prog->aux->offload) {
296 NSIM_EA(bpf->extack, "attempt to load offloaded prog to drv");
300 NSIM_EA(bpf->extack, "MTU too large w/ XDP enabled");
307 nsim_setup_prog_hw_checks(struct netdevsim *ns, struct netdev_bpf *bpf)
311 if (!bpf->prog)
314 if (!bpf_prog_is_offloaded(bpf->prog->aux)) {
315 NSIM_EA(bpf->extack, "xdpoffload of non-bound program");
319 state = bpf->prog->aux->offload->dev_priv;
321 NSIM_EA(bpf->extack, "offloading program in bad state");
547 int nsim_bpf(struct net_device *dev, struct netdev_bpf *bpf)
554 switch (bpf->command) {
556 err = nsim_setup_prog_checks(ns, bpf);
560 return nsim_xdp_set_prog(ns, bpf, &ns->xdp);
562 err = nsim_setup_prog_hw_checks(ns, bpf);
566 return nsim_xdp_set_prog(ns, bpf, &ns->xdp_hw);
571 return nsim_bpf_map_alloc(ns, bpf->offmap);
573 nsim_bpf_map_free(bpf->offmap);