Lines Matching refs:nsim_bus_dev
21 static struct nsim_bus_dev *to_nsim_bus_dev(struct device *dev) in to_nsim_bus_dev()
23 return container_of(dev, struct nsim_bus_dev, dev); in to_nsim_bus_dev()
30 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_dev_numvfs_store() local
41 ret = nsim_drv_configure_vfs(nsim_bus_dev, num_vfs); in nsim_bus_dev_numvfs_store()
51 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_dev_numvfs_show() local
53 return sprintf(buf, "%u\n", nsim_bus_dev->num_vfs); in nsim_bus_dev_numvfs_show()
64 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in new_port_store() local
69 if (!smp_load_acquire(&nsim_bus_dev->init)) in new_port_store()
75 if (!mutex_trylock(&nsim_bus_dev->nsim_bus_reload_lock)) in new_port_store()
78 if (nsim_bus_dev->in_reload) { in new_port_store()
79 mutex_unlock(&nsim_bus_dev->nsim_bus_reload_lock); in new_port_store()
83 ret = nsim_drv_port_add(nsim_bus_dev, NSIM_DEV_PORT_TYPE_PF, port_index); in new_port_store()
84 mutex_unlock(&nsim_bus_dev->nsim_bus_reload_lock); in new_port_store()
94 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in del_port_store() local
99 if (!smp_load_acquire(&nsim_bus_dev->init)) in del_port_store()
105 if (!mutex_trylock(&nsim_bus_dev->nsim_bus_reload_lock)) in del_port_store()
108 if (nsim_bus_dev->in_reload) { in del_port_store()
109 mutex_unlock(&nsim_bus_dev->nsim_bus_reload_lock); in del_port_store()
113 ret = nsim_drv_port_del(nsim_bus_dev, NSIM_DEV_PORT_TYPE_PF, port_index); in del_port_store()
114 mutex_unlock(&nsim_bus_dev->nsim_bus_reload_lock); in del_port_store()
145 static struct nsim_bus_dev *
152 struct nsim_bus_dev *nsim_bus_dev; in new_device_store() local
181 nsim_bus_dev = nsim_bus_dev_new(id, port_count, num_queues); in new_device_store()
182 if (IS_ERR(nsim_bus_dev)) { in new_device_store()
183 err = PTR_ERR(nsim_bus_dev); in new_device_store()
188 smp_store_release(&nsim_bus_dev->init, true); in new_device_store()
190 list_add_tail(&nsim_bus_dev->list, &nsim_bus_dev_list); in new_device_store()
200 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev);
205 struct nsim_bus_dev *nsim_bus_dev, *tmp; in del_device_store() local
229 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) { in del_device_store()
230 if (nsim_bus_dev->dev.id != id) in del_device_store()
232 list_del(&nsim_bus_dev->list); in del_device_store()
233 nsim_bus_dev_del(nsim_bus_dev); in del_device_store()
251 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_probe() local
253 return nsim_drv_probe(nsim_bus_dev); in nsim_bus_probe()
258 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_remove() local
260 nsim_drv_remove(nsim_bus_dev); in nsim_bus_remove()
265 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_num_vf() local
267 return nsim_bus_dev->num_vfs; in nsim_num_vf()
281 static struct nsim_bus_dev *
284 struct nsim_bus_dev *nsim_bus_dev; in nsim_bus_dev_new() local
287 nsim_bus_dev = kzalloc(sizeof(*nsim_bus_dev), GFP_KERNEL); in nsim_bus_dev_new()
288 if (!nsim_bus_dev) in nsim_bus_dev_new()
294 nsim_bus_dev->dev.id = err; in nsim_bus_dev_new()
295 nsim_bus_dev->dev.bus = &nsim_bus; in nsim_bus_dev_new()
296 nsim_bus_dev->dev.type = &nsim_bus_dev_type; in nsim_bus_dev_new()
297 nsim_bus_dev->port_count = port_count; in nsim_bus_dev_new()
298 nsim_bus_dev->num_queues = num_queues; in nsim_bus_dev_new()
299 nsim_bus_dev->initial_net = current->nsproxy->net_ns; in nsim_bus_dev_new()
300 nsim_bus_dev->max_vfs = NSIM_BUS_DEV_MAX_VFS; in nsim_bus_dev_new()
301 mutex_init(&nsim_bus_dev->nsim_bus_reload_lock); in nsim_bus_dev_new()
303 smp_store_release(&nsim_bus_dev->init, false); in nsim_bus_dev_new()
305 err = device_register(&nsim_bus_dev->dev); in nsim_bus_dev_new()
309 return nsim_bus_dev; in nsim_bus_dev_new()
312 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id); in nsim_bus_dev_new()
314 kfree(nsim_bus_dev); in nsim_bus_dev_new()
318 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev) in nsim_bus_dev_del() argument
321 smp_store_release(&nsim_bus_dev->init, false); in nsim_bus_dev_del()
322 device_unregister(&nsim_bus_dev->dev); in nsim_bus_dev_del()
323 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id); in nsim_bus_dev_del()
324 kfree(nsim_bus_dev); in nsim_bus_dev_del()
354 struct nsim_bus_dev *nsim_bus_dev, *tmp; in nsim_bus_exit() local
360 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) { in nsim_bus_exit()
361 list_del(&nsim_bus_dev->list); in nsim_bus_exit()
362 nsim_bus_dev_del(nsim_bus_dev); in nsim_bus_exit()