@@ -150,34 +150,33 @@ nfp_net_pf_init_vnic(struct nfp_pf *pf, struct nfp_net *nn, unsigned int id)
nn->id = id;
- err = nfp_net_init(nn);
- if (err)
- return err;
-
- nfp_net_debugfs_vnic_add(nn, pf->ddir);
-
if (nn->port) {
err = nfp_devlink_port_register(pf->app, nn->port);
if (err)
- goto err_dfs_clean;
+ return err;
}
- nfp_net_info(nn);
-
if (nfp_net_is_data_vnic(nn)) {
err = nfp_app_vnic_init(pf->app, nn);
if (err)
goto err_devlink_port_clean;
}
+ err = nfp_net_init(nn);
+ if (err)
+ goto err_app_vnic_free;
+
+ nfp_net_debugfs_vnic_add(nn, pf->ddir);
+ nfp_net_info(nn);
+
return 0;
+err_app_vnic_free:
+ if (nfp_net_is_data_vnic(nn))
+ nfp_app_vnic_clean(pf->app, nn);
err_devlink_port_clean:
if (nn->port)
nfp_devlink_port_unregister(nn->port);
-err_dfs_clean:
- nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
- nfp_net_clean(nn);
return err;
}
@@ -218,12 +217,12 @@ nfp_net_pf_alloc_vnics(struct nfp_pf *pf, void __iomem *ctrl_bar,
static void nfp_net_pf_clean_vnic(struct nfp_pf *pf, struct nfp_net *nn)
{
+ nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
+ nfp_net_clean(nn);
if (nfp_net_is_data_vnic(nn))
nfp_app_vnic_clean(pf->app, nn);
if (nn->port)
nfp_devlink_port_unregister(nn->port);
- nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
- nfp_net_clean(nn);
}
static int nfp_net_pf_alloc_irqs(struct nfp_pf *pf)