diff options
author | Intiyaz Basha <intiyaz.basha@cavium.com> | 2017-08-09 21:07:08 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-11 22:54:41 +0200 |
commit | c1550fde51482feebeb8e27742672a2614cb1f12 (patch) | |
tree | 689b8d22ee8bba958544cb60ef0ec13f88f9359d /drivers/net/ethernet/cavium | |
parent | Merge branch 'net-sched-let-the-offloader-decide-what-to-offload' (diff) | |
download | linux-c1550fde51482feebeb8e27742672a2614cb1f12.tar.xz linux-c1550fde51482feebeb8e27742672a2614cb1f12.zip |
liquidio: rx/tx queue cleanup
When deleting a queue, clear its corresponding bit in the qmask, vfree its
memory, clear out the pointer that's pointing to it, and decrement the
queue count.
Signed-off-by: Intiyaz Basha <intiyaz.basha@cavium.com>
Signed-off-by: Felix Manlunas <fmanlunas@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/cavium')
-rw-r--r-- | drivers/net/ethernet/cavium/liquidio/octeon_droq.c | 4 | ||||
-rw-r--r-- | drivers/net/ethernet/cavium/liquidio/request_manager.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c index f7b5d68eb4cf..9372d4ce9954 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c @@ -209,6 +209,10 @@ int octeon_delete_droq(struct octeon_device *oct, u32 q_no) droq->desc_ring, droq->desc_ring_dma); memset(droq, 0, OCT_DROQ_SIZE); + oct->io_qmask.oq &= ~(1ULL << q_no); + vfree(oct->droq[q_no]); + oct->droq[q_no] = NULL; + oct->num_oqs--; return 0; } diff --git a/drivers/net/ethernet/cavium/liquidio/request_manager.c b/drivers/net/ethernet/cavium/liquidio/request_manager.c index 7b297f1f6dbe..20a96bab3d0d 100644 --- a/drivers/net/ethernet/cavium/liquidio/request_manager.c +++ b/drivers/net/ethernet/cavium/liquidio/request_manager.c @@ -190,6 +190,10 @@ int octeon_delete_instr_queue(struct octeon_device *oct, u32 iq_no) q_size = iq->max_count * desc_size; lio_dma_free(oct, (u32)q_size, iq->base_addr, iq->base_addr_dma); + oct->io_qmask.iq &= ~(1ULL << iq_no); + vfree(oct->instr_queue[iq_no]); + oct->instr_queue[iq_no] = NULL; + oct->num_iqs--; return 0; } return 1; |