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} |