bpf.c (d514f41e793d2cbc737ba107d7ae26f387f5eecf) bpf.c (e05b2d141fef22cfac1928cf0eb6890e5dae4216)
1/*
2 * Copyright (C) 2017 Netronome Systems, Inc.
3 *
4 * This software is licensed under the GNU General License Version 2,
5 * June 1991 as shown in the file COPYING in the top-level directory of this
6 * source tree.
7 *
8 * THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"

--- 598 unchanged lines hidden (view full) ---

607{
608 WARN_ON(!list_empty(&nsim_dev->bpf_bound_progs));
609 WARN_ON(!list_empty(&nsim_dev->bpf_bound_maps));
610 bpf_offload_dev_destroy(nsim_dev->bpf_dev);
611}
612
613int nsim_bpf_init(struct netdevsim *ns)
614{
1/*
2 * Copyright (C) 2017 Netronome Systems, Inc.
3 *
4 * This software is licensed under the GNU General License Version 2,
5 * June 1991 as shown in the file COPYING in the top-level directory of this
6 * source tree.
7 *
8 * THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"

--- 598 unchanged lines hidden (view full) ---

607{
608 WARN_ON(!list_empty(&nsim_dev->bpf_bound_progs));
609 WARN_ON(!list_empty(&nsim_dev->bpf_bound_maps));
610 bpf_offload_dev_destroy(nsim_dev->bpf_dev);
611}
612
613int nsim_bpf_init(struct netdevsim *ns)
614{
615 struct dentry *ddir = ns->nsim_dev_port->ddir;
615 int err;
616
617 err = bpf_offload_dev_netdev_register(ns->nsim_dev->bpf_dev,
618 ns->netdev);
619 if (err)
620 return err;
621
616 int err;
617
618 err = bpf_offload_dev_netdev_register(ns->nsim_dev->bpf_dev,
619 ns->netdev);
620 if (err)
621 return err;
622
622 debugfs_create_u32("bpf_offloaded_id", 0400, ns->ddir,
623 debugfs_create_u32("bpf_offloaded_id", 0400, ddir,
623 &ns->bpf_offloaded_id);
624
625 ns->bpf_tc_accept = true;
624 &ns->bpf_offloaded_id);
625
626 ns->bpf_tc_accept = true;
626 debugfs_create_bool("bpf_tc_accept", 0600, ns->ddir,
627 debugfs_create_bool("bpf_tc_accept", 0600, ddir,
627 &ns->bpf_tc_accept);
628 &ns->bpf_tc_accept);
628 debugfs_create_bool("bpf_tc_non_bound_accept", 0600, ns->ddir,
629 debugfs_create_bool("bpf_tc_non_bound_accept", 0600, ddir,
629 &ns->bpf_tc_non_bound_accept);
630 ns->bpf_xdpdrv_accept = true;
630 &ns->bpf_tc_non_bound_accept);
631 ns->bpf_xdpdrv_accept = true;
631 debugfs_create_bool("bpf_xdpdrv_accept", 0600, ns->ddir,
632 debugfs_create_bool("bpf_xdpdrv_accept", 0600, ddir,
632 &ns->bpf_xdpdrv_accept);
633 ns->bpf_xdpoffload_accept = true;
633 &ns->bpf_xdpdrv_accept);
634 ns->bpf_xdpoffload_accept = true;
634 debugfs_create_bool("bpf_xdpoffload_accept", 0600, ns->ddir,
635 debugfs_create_bool("bpf_xdpoffload_accept", 0600, ddir,
635 &ns->bpf_xdpoffload_accept);
636
637 ns->bpf_map_accept = true;
636 &ns->bpf_xdpoffload_accept);
637
638 ns->bpf_map_accept = true;
638 debugfs_create_bool("bpf_map_accept", 0600, ns->ddir,
639 debugfs_create_bool("bpf_map_accept", 0600, ddir,
639 &ns->bpf_map_accept);
640
641 return 0;
642}
643
644void nsim_bpf_uninit(struct netdevsim *ns)
645{
646 WARN_ON(ns->xdp.prog);
647 WARN_ON(ns->xdp_hw.prog);
648 WARN_ON(ns->bpf_offloaded);
649 bpf_offload_dev_netdev_unregister(ns->nsim_dev->bpf_dev, ns->netdev);
650}
640 &ns->bpf_map_accept);
641
642 return 0;
643}
644
645void nsim_bpf_uninit(struct netdevsim *ns)
646{
647 WARN_ON(ns->xdp.prog);
648 WARN_ON(ns->xdp_hw.prog);
649 WARN_ON(ns->bpf_offloaded);
650 bpf_offload_dev_netdev_unregister(ns->nsim_dev->bpf_dev, ns->netdev);
651}