Lines Matching refs:nsim_dev
45 struct nsim_dev *nsim_dev = file->private_data; in nsim_dev_take_snapshot_write() local
56 id = devlink_region_shapshot_id_get(priv_to_devlink(nsim_dev)); in nsim_dev_take_snapshot_write()
57 err = devlink_region_snapshot_create(nsim_dev->dummy_region, in nsim_dev_take_snapshot_write()
74 static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev) in nsim_dev_debugfs_init() argument
78 sprintf(dev_ddir_name, DRV_NAME "%u", nsim_dev->nsim_bus_dev->dev.id); in nsim_dev_debugfs_init()
79 nsim_dev->ddir = debugfs_create_dir(dev_ddir_name, nsim_dev_ddir); in nsim_dev_debugfs_init()
80 if (IS_ERR_OR_NULL(nsim_dev->ddir)) in nsim_dev_debugfs_init()
81 return PTR_ERR_OR_ZERO(nsim_dev->ddir) ?: -EINVAL; in nsim_dev_debugfs_init()
82 nsim_dev->ports_ddir = debugfs_create_dir("ports", nsim_dev->ddir); in nsim_dev_debugfs_init()
83 if (IS_ERR_OR_NULL(nsim_dev->ports_ddir)) in nsim_dev_debugfs_init()
84 return PTR_ERR_OR_ZERO(nsim_dev->ports_ddir) ?: -EINVAL; in nsim_dev_debugfs_init()
85 debugfs_create_bool("fw_update_status", 0600, nsim_dev->ddir, in nsim_dev_debugfs_init()
86 &nsim_dev->fw_update_status); in nsim_dev_debugfs_init()
87 debugfs_create_u32("max_macs", 0600, nsim_dev->ddir, in nsim_dev_debugfs_init()
88 &nsim_dev->max_macs); in nsim_dev_debugfs_init()
89 debugfs_create_bool("test1", 0600, nsim_dev->ddir, in nsim_dev_debugfs_init()
90 &nsim_dev->test1); in nsim_dev_debugfs_init()
91 debugfs_create_file("take_snapshot", 0200, nsim_dev->ddir, nsim_dev, in nsim_dev_debugfs_init()
96 static void nsim_dev_debugfs_exit(struct nsim_dev *nsim_dev) in nsim_dev_debugfs_exit() argument
98 debugfs_remove_recursive(nsim_dev->ports_ddir); in nsim_dev_debugfs_exit()
99 debugfs_remove_recursive(nsim_dev->ddir); in nsim_dev_debugfs_exit()
102 static int nsim_dev_port_debugfs_init(struct nsim_dev *nsim_dev, in nsim_dev_port_debugfs_init() argument
110 nsim_dev->ports_ddir); in nsim_dev_port_debugfs_init()
115 nsim_dev->nsim_bus_dev->dev.id); in nsim_dev_port_debugfs_init()
261 static void nsim_devlink_set_params_init_values(struct nsim_dev *nsim_dev, in nsim_devlink_set_params_init_values() argument
266 value.vu32 = nsim_dev->max_macs; in nsim_devlink_set_params_init_values()
270 value.vbool = nsim_dev->test1; in nsim_devlink_set_params_init_values()
278 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_devlink_param_load_driverinit_values() local
286 nsim_dev->max_macs = saved_value.vu32; in nsim_devlink_param_load_driverinit_values()
291 nsim_dev->test1 = saved_value.vbool; in nsim_devlink_param_load_driverinit_values()
296 static int nsim_dev_dummy_region_init(struct nsim_dev *nsim_dev, in nsim_dev_dummy_region_init() argument
299 nsim_dev->dummy_region = in nsim_dev_dummy_region_init()
303 return PTR_ERR_OR_ZERO(nsim_dev->dummy_region); in nsim_dev_dummy_region_init()
306 static void nsim_dev_dummy_region_exit(struct nsim_dev *nsim_dev) in nsim_dev_dummy_region_exit() argument
308 devlink_region_destroy(nsim_dev->dummy_region); in nsim_dev_dummy_region_exit()
319 struct nsim_dev *nsim_dev; member
408 struct nsim_dev *nsim_dev = nsim_dev_port->ns->nsim_dev; in nsim_dev_trap_report() local
409 struct devlink *devlink = priv_to_devlink(nsim_dev); in nsim_dev_trap_report()
413 nsim_trap_data = nsim_dev->trap_data; in nsim_dev_trap_report()
449 struct nsim_dev *nsim_dev; in nsim_dev_trap_report_work() local
453 nsim_dev = nsim_trap_data->nsim_dev; in nsim_dev_trap_report_work()
458 mutex_lock(&nsim_dev->port_list_lock); in nsim_dev_trap_report_work()
459 list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list) { in nsim_dev_trap_report_work()
465 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_trap_report_work()
467 schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw, in nsim_dev_trap_report_work()
473 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_dev_traps_init() local
494 nsim_trap_data->nsim_dev = nsim_dev; in nsim_dev_traps_init()
495 nsim_dev->trap_data = nsim_trap_data; in nsim_dev_traps_init()
502 INIT_DELAYED_WORK(&nsim_dev->trap_data->trap_report_dw, in nsim_dev_traps_init()
504 schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw, in nsim_dev_traps_init()
518 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_dev_traps_exit() local
520 cancel_delayed_work_sync(&nsim_dev->trap_data->trap_report_dw); in nsim_dev_traps_exit()
523 kfree(nsim_dev->trap_data->trap_items_arr); in nsim_dev_traps_exit()
524 kfree(nsim_dev->trap_data); in nsim_dev_traps_exit()
567 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_dev_flash_update() local
570 if (nsim_dev->fw_update_status) { in nsim_dev_flash_update()
578 if (nsim_dev->fw_update_status) in nsim_dev_flash_update()
586 if (nsim_dev->fw_update_status) { in nsim_dev_flash_update()
600 nsim_dev_trap_item_lookup(struct nsim_dev *nsim_dev, u16 trap_id) in nsim_dev_trap_item_lookup() argument
602 struct nsim_trap_data *nsim_trap_data = nsim_dev->trap_data; in nsim_dev_trap_item_lookup()
617 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_dev_devlink_trap_init() local
620 nsim_trap_item = nsim_dev_trap_item_lookup(nsim_dev, trap->id); in nsim_dev_devlink_trap_init()
635 struct nsim_dev *nsim_dev = devlink_priv(devlink); in nsim_dev_devlink_trap_action_set() local
638 nsim_trap_item = nsim_dev_trap_item_lookup(nsim_dev, trap->id); in nsim_dev_devlink_trap_action_set()
642 spin_lock(&nsim_dev->trap_data->trap_lock); in nsim_dev_devlink_trap_action_set()
644 spin_unlock(&nsim_dev->trap_data->trap_lock); in nsim_dev_devlink_trap_action_set()
660 static struct nsim_dev *
663 struct nsim_dev *nsim_dev; in nsim_dev_create() local
667 devlink = devlink_alloc(&nsim_dev_devlink_ops, sizeof(*nsim_dev)); in nsim_dev_create()
670 nsim_dev = devlink_priv(devlink); in nsim_dev_create()
671 nsim_dev->nsim_bus_dev = nsim_bus_dev; in nsim_dev_create()
672 nsim_dev->switch_id.id_len = sizeof(nsim_dev->switch_id.id); in nsim_dev_create()
673 get_random_bytes(nsim_dev->switch_id.id, nsim_dev->switch_id.id_len); in nsim_dev_create()
674 INIT_LIST_HEAD(&nsim_dev->port_list); in nsim_dev_create()
675 mutex_init(&nsim_dev->port_list_lock); in nsim_dev_create()
676 nsim_dev->fw_update_status = true; in nsim_dev_create()
677 nsim_dev->max_macs = NSIM_DEV_MAX_MACS_DEFAULT; in nsim_dev_create()
678 nsim_dev->test1 = NSIM_DEV_TEST1_DEFAULT; in nsim_dev_create()
692 nsim_devlink_set_params_init_values(nsim_dev, devlink); in nsim_dev_create()
694 err = nsim_dev_dummy_region_init(nsim_dev, devlink); in nsim_dev_create()
702 err = nsim_dev_debugfs_init(nsim_dev); in nsim_dev_create()
706 err = nsim_bpf_dev_init(nsim_dev); in nsim_dev_create()
712 return nsim_dev; in nsim_dev_create()
715 nsim_dev_debugfs_exit(nsim_dev); in nsim_dev_create()
719 nsim_dev_dummy_region_exit(nsim_dev); in nsim_dev_create()
732 static void nsim_dev_destroy(struct nsim_dev *nsim_dev) in nsim_dev_destroy() argument
734 struct devlink *devlink = priv_to_devlink(nsim_dev); in nsim_dev_destroy()
737 nsim_bpf_dev_exit(nsim_dev); in nsim_dev_destroy()
738 nsim_dev_debugfs_exit(nsim_dev); in nsim_dev_destroy()
740 nsim_dev_dummy_region_exit(nsim_dev); in nsim_dev_destroy()
745 mutex_destroy(&nsim_dev->port_list_lock); in nsim_dev_destroy()
749 static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, in __nsim_dev_port_add() argument
764 nsim_dev->switch_id.id, in __nsim_dev_port_add()
765 nsim_dev->switch_id.id_len); in __nsim_dev_port_add()
766 err = devlink_port_register(priv_to_devlink(nsim_dev), devlink_port, in __nsim_dev_port_add()
771 err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port); in __nsim_dev_port_add()
775 nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port); in __nsim_dev_port_add()
782 list_add(&nsim_dev_port->list, &nsim_dev->port_list); in __nsim_dev_port_add()
807 static void nsim_dev_port_del_all(struct nsim_dev *nsim_dev) in nsim_dev_port_del_all() argument
811 mutex_lock(&nsim_dev->port_list_lock); in nsim_dev_port_del_all()
813 &nsim_dev->port_list, list) in nsim_dev_port_del_all()
815 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_port_del_all()
820 struct nsim_dev *nsim_dev; in nsim_dev_probe() local
824 nsim_dev = nsim_dev_create(nsim_bus_dev, nsim_bus_dev->port_count); in nsim_dev_probe()
825 if (IS_ERR(nsim_dev)) in nsim_dev_probe()
826 return PTR_ERR(nsim_dev); in nsim_dev_probe()
827 dev_set_drvdata(&nsim_bus_dev->dev, nsim_dev); in nsim_dev_probe()
829 mutex_lock(&nsim_dev->port_list_lock); in nsim_dev_probe()
831 err = __nsim_dev_port_add(nsim_dev, i); in nsim_dev_probe()
835 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_probe()
839 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_probe()
840 nsim_dev_port_del_all(nsim_dev); in nsim_dev_probe()
841 nsim_dev_destroy(nsim_dev); in nsim_dev_probe()
847 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev); in nsim_dev_remove() local
849 nsim_dev_port_del_all(nsim_dev); in nsim_dev_remove()
850 nsim_dev_destroy(nsim_dev); in nsim_dev_remove()
854 __nsim_dev_port_lookup(struct nsim_dev *nsim_dev, unsigned int port_index) in __nsim_dev_port_lookup() argument
858 list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list) in __nsim_dev_port_lookup()
867 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev); in nsim_dev_port_add() local
870 mutex_lock(&nsim_dev->port_list_lock); in nsim_dev_port_add()
871 if (__nsim_dev_port_lookup(nsim_dev, port_index)) in nsim_dev_port_add()
874 err = __nsim_dev_port_add(nsim_dev, port_index); in nsim_dev_port_add()
875 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_port_add()
882 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev); in nsim_dev_port_del() local
886 mutex_lock(&nsim_dev->port_list_lock); in nsim_dev_port_del()
887 nsim_dev_port = __nsim_dev_port_lookup(nsim_dev, port_index); in nsim_dev_port_del()
892 mutex_unlock(&nsim_dev->port_list_lock); in nsim_dev_port_del()