diff options
Diffstat (limited to 'drivers/net/netdevsim/dev.c')
| -rw-r--r-- | drivers/net/netdevsim/dev.c | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c index dbeb29fa16e8..6189a4c0d39e 100644 --- a/drivers/net/netdevsim/dev.c +++ b/drivers/net/netdevsim/dev.c @@ -1032,10 +1032,14 @@ static int nsim_dev_reload_create(struct nsim_dev *nsim_dev,  	if (err)  		goto err_fib_destroy; -	err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); +	err = nsim_dev_psample_init(nsim_dev);  	if (err)  		goto err_health_exit; +	err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); +	if (err) +		goto err_psample_exit; +  	nsim_dev->take_snapshot = debugfs_create_file("take_snapshot",  						      0200,  						      nsim_dev->ddir, @@ -1043,6 +1047,8 @@ static int nsim_dev_reload_create(struct nsim_dev *nsim_dev,  						&nsim_dev_take_snapshot_fops);  	return 0; +err_psample_exit: +	nsim_dev_psample_exit(nsim_dev);  err_health_exit:  	nsim_dev_health_exit(nsim_dev);  err_fib_destroy: @@ -1118,14 +1124,20 @@ int nsim_dev_probe(struct nsim_bus_dev *nsim_bus_dev)  	if (err)  		goto err_health_exit; -	err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); +	err = nsim_dev_psample_init(nsim_dev);  	if (err)  		goto err_bpf_dev_exit; +	err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); +	if (err) +		goto err_psample_exit; +  	devlink_params_publish(devlink);  	devlink_reload_enable(devlink);  	return 0; +err_psample_exit: +	nsim_dev_psample_exit(nsim_dev);  err_bpf_dev_exit:  	nsim_bpf_dev_exit(nsim_dev);  err_health_exit: @@ -1158,6 +1170,7 @@ static void nsim_dev_reload_destroy(struct nsim_dev *nsim_dev)  		return;  	debugfs_remove(nsim_dev->take_snapshot);  	nsim_dev_port_del_all(nsim_dev); +	nsim_dev_psample_exit(nsim_dev);  	nsim_dev_health_exit(nsim_dev);  	nsim_fib_destroy(devlink, nsim_dev->fib_data);  	nsim_dev_traps_exit(devlink); | 
