dev.c (794b2c05ca1c4ded4a023d11833e3855a0ed6ea8) dev.c (e05b2d141fef22cfac1928cf0eb6890e5dae4216)
1/*
2 * Copyright (c) 2018 Cumulus Networks. All rights reserved.
3 * Copyright (c) 2018 David Ahern <dsa@cumulusnetworks.com>
4 * Copyright (c) 2019 Mellanox Technologies. All rights reserved.
5 *
6 * This software is licensed under the GNU General License Version 2,
7 * June 1991 as shown in the file COPYING in the top-level directory of this
8 * source tree.

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

273 devlink_resources_unregister(devlink, NULL);
274err_fib_destroy:
275 nsim_fib_destroy(nsim_dev->fib_data);
276err_devlink_free:
277 devlink_free(devlink);
278 return ERR_PTR(err);
279}
280
1/*
2 * Copyright (c) 2018 Cumulus Networks. All rights reserved.
3 * Copyright (c) 2018 David Ahern <dsa@cumulusnetworks.com>
4 * Copyright (c) 2019 Mellanox Technologies. All rights reserved.
5 *
6 * This software is licensed under the GNU General License Version 2,
7 * June 1991 as shown in the file COPYING in the top-level directory of this
8 * source tree.

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

273 devlink_resources_unregister(devlink, NULL);
274err_fib_destroy:
275 nsim_fib_destroy(nsim_dev->fib_data);
276err_devlink_free:
277 devlink_free(devlink);
278 return ERR_PTR(err);
279}
280
281void nsim_dev_destroy(struct nsim_dev *nsim_dev)
281static void nsim_dev_destroy(struct nsim_dev *nsim_dev)
282{
283 struct devlink *devlink = priv_to_devlink(nsim_dev);
284
285 nsim_bpf_dev_exit(nsim_dev);
286 nsim_dev_debugfs_exit(nsim_dev);
287 devlink_unregister(devlink);
288 devlink_resources_unregister(devlink, NULL);
289 nsim_fib_destroy(nsim_dev->fib_data);

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

312 port_index);
313 if (err)
314 goto err_port_free;
315
316 err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port);
317 if (err)
318 goto err_dl_port_unregister;
319
282{
283 struct devlink *devlink = priv_to_devlink(nsim_dev);
284
285 nsim_bpf_dev_exit(nsim_dev);
286 nsim_dev_debugfs_exit(nsim_dev);
287 devlink_unregister(devlink);
288 devlink_resources_unregister(devlink, NULL);
289 nsim_fib_destroy(nsim_dev->fib_data);

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

312 port_index);
313 if (err)
314 goto err_port_free;
315
316 err = nsim_dev_port_debugfs_init(nsim_dev, nsim_dev_port);
317 if (err)
318 goto err_dl_port_unregister;
319
320 nsim_dev_port->ns = nsim_create(nsim_dev, nsim_dev_port);
321 if (IS_ERR(nsim_dev_port->ns)) {
322 err = PTR_ERR(nsim_dev_port->ns);
323 goto err_port_debugfs_exit;
324 }
325
326 devlink_port_type_eth_set(devlink_port, nsim_dev_port->ns->netdev);
320 list_add(&nsim_dev_port->list, &nsim_dev->port_list);
321
322 return 0;
323
327 list_add(&nsim_dev_port->list, &nsim_dev->port_list);
328
329 return 0;
330
331err_port_debugfs_exit:
332 nsim_dev_port_debugfs_exit(nsim_dev_port);
324err_dl_port_unregister:
325 devlink_port_unregister(devlink_port);
326err_port_free:
327 kfree(nsim_dev_port);
328 return err;
329}
330
331static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_port)
332{
333 struct devlink_port *devlink_port = &nsim_dev_port->devlink_port;
334
335 list_del(&nsim_dev_port->list);
333err_dl_port_unregister:
334 devlink_port_unregister(devlink_port);
335err_port_free:
336 kfree(nsim_dev_port);
337 return err;
338}
339
340static void __nsim_dev_port_del(struct nsim_dev_port *nsim_dev_port)
341{
342 struct devlink_port *devlink_port = &nsim_dev_port->devlink_port;
343
344 list_del(&nsim_dev_port->list);
345 devlink_port_type_clear(devlink_port);
346 nsim_destroy(nsim_dev_port->ns);
336 nsim_dev_port_debugfs_exit(nsim_dev_port);
337 devlink_port_unregister(devlink_port);
338 kfree(nsim_dev_port);
339}
340
341static void nsim_dev_port_del_all(struct nsim_dev *nsim_dev)
342{
343 struct nsim_dev_port *nsim_dev_port, *tmp;

--- 93 unchanged lines hidden ---
347 nsim_dev_port_debugfs_exit(nsim_dev_port);
348 devlink_port_unregister(devlink_port);
349 kfree(nsim_dev_port);
350}
351
352static void nsim_dev_port_del_all(struct nsim_dev *nsim_dev)
353{
354 struct nsim_dev_port *nsim_dev_port, *tmp;

--- 93 unchanged lines hidden ---