nfp: add helper for cleaning up vNICs
[linux-2.6-block.git] / drivers / net / ethernet / netronome / nfp / nfp_net_main.c
index 8f5a240c8d2f5d9f2418cb9a2ee850daf2a51a6b..b0a6ec4fe0979fa2a587f4bef88c72de86771b54 100644 (file)
@@ -418,6 +418,12 @@ err_free_prev:
        return err;
 }
 
+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);
+}
+
 static int
 nfp_net_pf_spawn_vnics(struct nfp_pf *pf,
                       void __iomem *ctrl_bar, void __iomem *tx_bar,
@@ -480,10 +486,8 @@ nfp_net_pf_spawn_vnics(struct nfp_pf *pf,
        return 0;
 
 err_prev_deinit:
-       list_for_each_entry_continue_reverse(nn, &pf->vnics, vnic_list) {
-               nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
-               nfp_net_clean(nn);
-       }
+       list_for_each_entry_continue_reverse(nn, &pf->vnics, vnic_list)
+               nfp_net_pf_clean_vnic(pf, nn);
        nfp_net_irqs_disable(pf->pdev);
 err_vec_free:
        kfree(pf->irq_entries);
@@ -585,9 +589,7 @@ static void nfp_net_refresh_vnics(struct work_struct *work)
                if (!nn->port || nn->port->type != NFP_PORT_INVALID)
                        continue;
 
-               nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
-               nfp_net_clean(nn);
-
+               nfp_net_pf_clean_vnic(pf, nn);
                nfp_net_pf_free_vnic(pf, nn);
        }
 
@@ -760,11 +762,8 @@ void nfp_net_pci_remove(struct nfp_pf *pf)
        if (list_empty(&pf->vnics))
                goto out;
 
-       list_for_each_entry(nn, &pf->vnics, vnic_list) {
-               nfp_net_debugfs_dir_clean(&nn->debugfs_dir);
-
-               nfp_net_clean(nn);
-       }
+       list_for_each_entry(nn, &pf->vnics, vnic_list)
+               nfp_net_pf_clean_vnic(pf, nn);
 
        nfp_net_pf_free_vnics(pf);