Lines Matching defs:nsim_dev

65 	struct nsim_dev *nsim_dev = file->private_data;
71 devlink = priv_to_devlink(nsim_dev);
83 err = devlink_region_snapshot_create(nsim_dev->dummy_region,
106 struct nsim_dev *nsim_dev = file->private_data;
112 spin_lock(&nsim_dev->fa_cookie_lock);
113 fa_cookie = nsim_dev->fa_cookie;
125 spin_unlock(&nsim_dev->fa_cookie_lock);
133 spin_unlock(&nsim_dev->fa_cookie_lock);
141 struct nsim_dev *nsim_dev = file->private_data;
170 spin_lock(&nsim_dev->fa_cookie_lock);
171 kfree(nsim_dev->fa_cookie);
172 nsim_dev->fa_cookie = fa_cookie;
173 spin_unlock(&nsim_dev->fa_cookie_lock);
192 static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
196 sprintf(dev_ddir_name, DRV_NAME "%u", nsim_dev->nsim_bus_dev->dev.id);
197 nsim_dev->ddir = debugfs_create_dir(dev_ddir_name, nsim_dev_ddir);
198 if (IS_ERR(nsim_dev->ddir))
199 return PTR_ERR(nsim_dev->ddir);
200 nsim_dev->ports_ddir = debugfs_create_dir("ports", nsim_dev->ddir);
201 if (IS_ERR(nsim_dev->ports_ddir))
202 return PTR_ERR(nsim_dev->ports_ddir);
203 debugfs_create_bool("fw_update_status", 0600, nsim_dev->ddir,
204 &nsim_dev->fw_update_status);
205 debugfs_create_u32("fw_update_overwrite_mask", 0600, nsim_dev->ddir,
206 &nsim_dev->fw_update_overwrite_mask);
207 debugfs_create_u32("max_macs", 0600, nsim_dev->ddir,
208 &nsim_dev->max_macs);
209 debugfs_create_bool("test1", 0600, nsim_dev->ddir,
210 &nsim_dev->test1);
211 nsim_dev->take_snapshot = debugfs_create_file("take_snapshot",
213 nsim_dev->ddir,
214 nsim_dev,
216 debugfs_create_bool("dont_allow_reload", 0600, nsim_dev->ddir,
217 &nsim_dev->dont_allow_reload);
218 debugfs_create_bool("fail_reload", 0600, nsim_dev->ddir,
219 &nsim_dev->fail_reload);
220 debugfs_create_file("trap_flow_action_cookie", 0600, nsim_dev->ddir,
221 nsim_dev, &nsim_dev_trap_fa_cookie_fops);
223 nsim_dev->ddir,
224 &nsim_dev->fail_trap_group_set);
226 nsim_dev->ddir,
227 &nsim_dev->fail_trap_policer_set);
229 nsim_dev->ddir,
230 &nsim_dev->fail_trap_policer_counter_get);
231 nsim_udp_tunnels_debugfs_create(nsim_dev);
235 static void nsim_dev_debugfs_exit(struct nsim_dev *nsim_dev)
237 debugfs_remove_recursive(nsim_dev->ports_ddir);
238 debugfs_remove_recursive(nsim_dev->ddir);
241 static int nsim_dev_port_debugfs_init(struct nsim_dev *nsim_dev,
249 nsim_dev->ports_ddir);
254 nsim_dev->nsim_bus_dev->dev.id);
345 static void nsim_devlink_set_params_init_values(struct nsim_dev *nsim_dev,
350 value.vu32 = nsim_dev->max_macs;
354 value.vbool = nsim_dev->test1;
362 struct nsim_dev *nsim_dev = devlink_priv(devlink);
370 nsim_dev->max_macs = saved_value.vu32;
375 nsim_dev->test1 = saved_value.vbool;
386 static int nsim_dev_dummy_region_init(struct nsim_dev *nsim_dev,
389 nsim_dev->dummy_region =
393 return PTR_ERR_OR_ZERO(nsim_dev->dummy_region);
396 static void nsim_dev_dummy_region_exit(struct nsim_dev *nsim_dev)
398 devlink_region_destroy(nsim_dev->dummy_region);
410 struct nsim_dev *nsim_dev;
540 struct nsim_dev *nsim_dev = nsim_dev_port->ns->nsim_dev;
541 struct devlink *devlink = priv_to_devlink(nsim_dev);
545 nsim_trap_data = nsim_dev->trap_data;
572 spin_lock_bh(&nsim_dev->fa_cookie_lock);
573 fa_cookie = has_fa_cookie ? nsim_dev->fa_cookie : NULL;
576 spin_unlock_bh(&nsim_dev->fa_cookie_lock);
588 struct nsim_dev *nsim_dev;
592 nsim_dev = nsim_trap_data->nsim_dev;
597 mutex_lock(&nsim_dev->port_list_lock);
598 list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list) {
604 mutex_unlock(&nsim_dev->port_list_lock);
606 schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw,
613 struct nsim_dev *nsim_dev = devlink_priv(devlink);
642 nsim_trap_data->nsim_dev = nsim_dev;
643 nsim_dev->trap_data = nsim_trap_data;
660 INIT_DELAYED_WORK(&nsim_dev->trap_data->trap_report_dw,
662 schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw,
684 struct nsim_dev *nsim_dev = devlink_priv(devlink);
686 cancel_delayed_work_sync(&nsim_dev->trap_data->trap_report_dw);
693 kfree(nsim_dev->trap_data->trap_policers_cnt_arr);
694 kfree(nsim_dev->trap_data->trap_items_arr);
695 kfree(nsim_dev->trap_data);
698 static int nsim_dev_reload_create(struct nsim_dev *nsim_dev,
700 static void nsim_dev_reload_destroy(struct nsim_dev *nsim_dev);
706 struct nsim_dev *nsim_dev = devlink_priv(devlink);
708 if (nsim_dev->dont_allow_reload) {
716 nsim_dev_reload_destroy(nsim_dev);
724 struct nsim_dev *nsim_dev = devlink_priv(devlink);
726 if (nsim_dev->fail_reload) {
735 return nsim_dev_reload_create(nsim_dev, extack);
753 struct nsim_dev *nsim_dev = devlink_priv(devlink);
756 if ((params->overwrite_mask & ~nsim_dev->fw_update_overwrite_mask) != 0)
759 if (nsim_dev->fw_update_status) {
767 if (nsim_dev->fw_update_status)
775 if (nsim_dev->fw_update_status) {
791 nsim_dev_trap_item_lookup(struct nsim_dev *nsim_dev, u16 trap_id)
793 struct nsim_trap_data *nsim_trap_data = nsim_dev->trap_data;
808 struct nsim_dev *nsim_dev = devlink_priv(devlink);
811 nsim_trap_item = nsim_dev_trap_item_lookup(nsim_dev, trap->id);
827 struct nsim_dev *nsim_dev = devlink_priv(devlink);
830 nsim_trap_item = nsim_dev_trap_item_lookup(nsim_dev, trap->id);
834 spin_lock(&nsim_dev->trap_data->trap_lock);
836 spin_unlock(&nsim_dev->trap_data->trap_lock);
847 struct nsim_dev *nsim_dev = devlink_priv(devlink);
849 if (nsim_dev->fail_trap_group_set)
861 struct nsim_dev *nsim_dev = devlink_priv(devlink);
863 if (nsim_dev->fail_trap_policer_set) {
876 struct nsim_dev *nsim_dev = devlink_priv(devlink);
879 if (nsim_dev->fail_trap_policer_counter_get)
882 cnt = &nsim_dev->trap_data->trap_policers_cnt_arr[policer->id - 1];
906 static int __nsim_dev_port_add(struct nsim_dev *nsim_dev,
922 memcpy(attrs.switch_id.id, nsim_dev->switch_id.id, nsim_dev->switch_id.id_len);
923 attrs.switch_id.id_len = nsim_dev->switch_id.id_len;
925 err = devlink_port_register(priv_to_devlink(nsim_dev), devlink_port,
930 err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port);
934 nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port);
941 list_add(&nsim_dev_port->list, &nsim_dev->port_list);
966 static void nsim_dev_port_del_all(struct nsim_dev *nsim_dev)
970 mutex_lock(&nsim_dev->port_list_lock);
972 &nsim_dev->port_list, list)
974 mutex_unlock(&nsim_dev->port_list_lock);
977 static int nsim_dev_port_add_all(struct nsim_dev *nsim_dev,
983 err = __nsim_dev_port_add(nsim_dev, i);
990 nsim_dev_port_del_all(nsim_dev);
994 static int nsim_dev_reload_create(struct nsim_dev *nsim_dev,
997 struct nsim_bus_dev *nsim_bus_dev = nsim_dev->nsim_bus_dev;
1001 devlink = priv_to_devlink(nsim_dev);
1002 nsim_dev = devlink_priv(devlink);
1003 INIT_LIST_HEAD(&nsim_dev->port_list);
1004 mutex_init(&nsim_dev->port_list_lock);
1005 nsim_dev->fw_update_status = true;
1006 nsim_dev->fw_update_overwrite_mask = 0;
1010 err = nsim_dev_dummy_region_init(nsim_dev, devlink);
1018 nsim_dev->fib_data = nsim_fib_create(devlink, extack);
1019 if (IS_ERR(nsim_dev->fib_data)) {
1020 err = PTR_ERR(nsim_dev->fib_data);
1024 err = nsim_dev_health_init(nsim_dev, devlink);
1028 err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count);
1032 nsim_dev->take_snapshot = debugfs_create_file("take_snapshot",
1034 nsim_dev->ddir,
1035 nsim_dev,
1040 nsim_dev_health_exit(nsim_dev);
1042 nsim_fib_destroy(devlink, nsim_dev->fib_data);
1046 nsim_dev_dummy_region_exit(nsim_dev);
1052 struct nsim_dev *nsim_dev;
1056 devlink = devlink_alloc(&nsim_dev_devlink_ops, sizeof(*nsim_dev));
1060 nsim_dev = devlink_priv(devlink);
1061 nsim_dev->nsim_bus_dev = nsim_bus_dev;
1062 nsim_dev->switch_id.id_len = sizeof(nsim_dev->switch_id.id);
1063 get_random_bytes(nsim_dev->switch_id.id, nsim_dev->switch_id.id_len);
1064 INIT_LIST_HEAD(&nsim_dev->port_list);
1065 mutex_init(&nsim_dev->port_list_lock);
1066 nsim_dev->fw_update_status = true;
1067 nsim_dev->fw_update_overwrite_mask = 0;
1068 nsim_dev->max_macs = NSIM_DEV_MAX_MACS_DEFAULT;
1069 nsim_dev->test1 = NSIM_DEV_TEST1_DEFAULT;
1070 spin_lock_init(&nsim_dev->fa_cookie_lock);
1072 dev_set_drvdata(&nsim_bus_dev->dev, nsim_dev);
1086 nsim_devlink_set_params_init_values(nsim_dev, devlink);
1088 err = nsim_dev_dummy_region_init(nsim_dev, devlink);
1096 err = nsim_dev_debugfs_init(nsim_dev);
1100 nsim_dev->fib_data = nsim_fib_create(devlink, NULL);
1101 if (IS_ERR(nsim_dev->fib_data)) {
1102 err = PTR_ERR(nsim_dev->fib_data);
1106 err = nsim_dev_health_init(nsim_dev, devlink);
1110 err = nsim_bpf_dev_init(nsim_dev);
1114 err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count);
1123 nsim_bpf_dev_exit(nsim_dev);
1125 nsim_dev_health_exit(nsim_dev);
1127 nsim_fib_destroy(devlink, nsim_dev->fib_data);
1129 nsim_dev_debugfs_exit(nsim_dev);
1133 nsim_dev_dummy_region_exit(nsim_dev);
1146 static void nsim_dev_reload_destroy(struct nsim_dev *nsim_dev)
1148 struct devlink *devlink = priv_to_devlink(nsim_dev);
1152 debugfs_remove(nsim_dev->take_snapshot);
1153 nsim_dev_port_del_all(nsim_dev);
1154 nsim_dev_health_exit(nsim_dev);
1155 nsim_fib_destroy(devlink, nsim_dev->fib_data);
1157 nsim_dev_dummy_region_exit(nsim_dev);
1158 mutex_destroy(&nsim_dev->port_list_lock);
1163 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev);
1164 struct devlink *devlink = priv_to_devlink(nsim_dev);
1168 nsim_dev_reload_destroy(nsim_dev);
1170 nsim_bpf_dev_exit(nsim_dev);
1171 nsim_dev_debugfs_exit(nsim_dev);
1180 __nsim_dev_port_lookup(struct nsim_dev *nsim_dev, unsigned int port_index)
1184 list_for_each_entry(nsim_dev_port, &nsim_dev->port_list, list)
1193 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev);
1196 mutex_lock(&nsim_dev->port_list_lock);
1197 if (__nsim_dev_port_lookup(nsim_dev, port_index))
1200 err = __nsim_dev_port_add(nsim_dev, port_index);
1201 mutex_unlock(&nsim_dev->port_list_lock);
1208 struct nsim_dev *nsim_dev = dev_get_drvdata(&nsim_bus_dev->dev);
1212 mutex_lock(&nsim_dev->port_list_lock);
1213 nsim_dev_port = __nsim_dev_port_lookup(nsim_dev, port_index);
1218 mutex_unlock(&nsim_dev->port_list_lock);