nfp: add helper for cleaning up vNICs
authorJakub Kicinski <jakub.kicinski@netronome.com>
Fri, 26 May 2017 08:03:33 +0000 (01:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 May 2017 15:01:49 +0000 (11:01 -0400)
We will soon have to invoke more clean up for vNICs.
Move the cleanup callbacks into a helper.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
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);