diff options
author | Intiyaz Basha <intiyaz.basha@cavium.com> | 2018-04-27 23:32:49 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-04-30 09:26:28 -0400 |
commit | fd311f1e7548cf45a273d46aa9c9c8d8330d803c (patch) | |
tree | b3bb98cef16f2a078be5a24ca6767c64ffa9a0b0 /drivers/net/ethernet/cavium/liquidio/lio_core.c | |
parent | liquidio: Moved common function list_delete_head to octeon_network.h (diff) | |
download | linux-dev-fd311f1e7548cf45a273d46aa9c9c8d8330d803c.tar.xz linux-dev-fd311f1e7548cf45a273d46aa9c9c8d8330d803c.zip |
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 <intiyaz.basha@cavium.com>
Acked-by: Derek Chickles <derek.chickles@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/cavium/liquidio/lio_core.c')
-rw-r--r-- | drivers/net/ethernet/cavium/liquidio/lio_core.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index e9532e28ffac..669b4f2d45e0 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); |