summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/cavium/liquidio/request_manager.c
diff options
context:
space:
mode:
authorIntiyaz Basha2017-08-09 21:07:08 +0200
committerDavid S. Miller2017-08-11 22:54:41 +0200
commitc1550fde51482feebeb8e27742672a2614cb1f12 (patch)
tree689b8d22ee8bba958544cb60ef0ec13f88f9359d /drivers/net/ethernet/cavium/liquidio/request_manager.c
parentMerge branch 'net-sched-let-the-offloader-decide-what-to-offload' (diff)
downloadkernel-qcow2-linux-c1550fde51482feebeb8e27742672a2614cb1f12.tar.gz
kernel-qcow2-linux-c1550fde51482feebeb8e27742672a2614cb1f12.tar.xz
kernel-qcow2-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/liquidio/request_manager.c')
-rw-r--r--drivers/net/ethernet/cavium/liquidio/request_manager.c4
1 files changed, 4 insertions, 0 deletions
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;