From fd311f1e7548cf45a273d46aa9c9c8d8330d803c Mon Sep 17 00:00:00 2001 From: Intiyaz Basha Date: Fri, 27 Apr 2018 23:32:49 -0700 Subject: [PATCH] liquidio: Moved common function delete_glists to lio_core.c Moved common function delete_glists to lio_core.c and renamed it to lio_delete_glists Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas Signed-off-by: David S. Miller --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 41 ++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 50 ++-------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 49 ++------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 2 + 4 files changed, 51 insertions(+), 91 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index e9532e2..669b4f2 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -61,6 +61,47 @@ void lio_if_cfg_callback(struct octeon_device *oct, wake_up_interruptible(&ctx->wc); } +/** + * \brief Delete gather lists + * @param lio per-network private data + */ +void lio_delete_glists(struct lio *lio) +{ + struct octnic_gather *g; + int i; + + kfree(lio->glist_lock); + lio->glist_lock = NULL; + + if (!lio->glist) + return; + + for (i = 0; i < lio->linfo.num_txpciq; i++) { + do { + g = (struct octnic_gather *) + lio_list_delete_head(&lio->glist[i]); + kfree(g); + } while (g); + + if (lio->glists_virt_base && lio->glists_virt_base[i] && + lio->glists_dma_base && lio->glists_dma_base[i]) { + lio_dma_free(lio->oct_dev, + lio->glist_entry_size * lio->tx_qsize, + lio->glists_virt_base[i], + lio->glists_dma_base[i]); + } + } + + kfree(lio->glists_virt_base); + lio->glists_virt_base = NULL; + + kfree(lio->glists_dma_base); + lio->glists_dma_base = NULL; + + kfree(lio->glist); + lio->glist = NULL; +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index c117245..cb5df7c 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -542,48 +542,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - if (g) - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -617,7 +575,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -634,7 +592,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -656,7 +614,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -1452,7 +1410,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_rx_oom_poll_fn(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 0d97561..ab47fbb 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -285,47 +285,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -359,7 +318,7 @@ static int setup_glists(struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -374,7 +333,7 @@ static int setup_glists(struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -393,7 +352,7 @@ static int setup_glists(struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -837,7 +796,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_link_status_change_wq(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 1d9392b..777af06 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -203,6 +203,8 @@ void lio_if_cfg_callback(struct octeon_device *oct, u32 status __attribute__((unused)), void *buf); +void lio_delete_glists(struct lio *lio); + /** * \brief Net device change_mtu * @param netdev network device -- 2.7.4