Lines Matching full:cmdq

25 static int nitrox_cmdq_init(struct nitrox_cmdq *cmdq, int align_bytes)  in nitrox_cmdq_init()  argument
27 struct nitrox_device *ndev = cmdq->ndev; in nitrox_cmdq_init()
29 cmdq->qsize = (ndev->qlen * cmdq->instr_size) + align_bytes; in nitrox_cmdq_init()
30 cmdq->unalign_base = dma_alloc_coherent(DEV(ndev), cmdq->qsize, in nitrox_cmdq_init()
31 &cmdq->unalign_dma, in nitrox_cmdq_init()
33 if (!cmdq->unalign_base) in nitrox_cmdq_init()
36 cmdq->dma = PTR_ALIGN(cmdq->unalign_dma, align_bytes); in nitrox_cmdq_init()
37 cmdq->base = cmdq->unalign_base + (cmdq->dma - cmdq->unalign_dma); in nitrox_cmdq_init()
38 cmdq->write_idx = 0; in nitrox_cmdq_init()
40 spin_lock_init(&cmdq->cmd_qlock); in nitrox_cmdq_init()
41 spin_lock_init(&cmdq->resp_qlock); in nitrox_cmdq_init()
42 spin_lock_init(&cmdq->backlog_qlock); in nitrox_cmdq_init()
44 INIT_LIST_HEAD(&cmdq->response_head); in nitrox_cmdq_init()
45 INIT_LIST_HEAD(&cmdq->backlog_head); in nitrox_cmdq_init()
46 INIT_WORK(&cmdq->backlog_qflush, backlog_qflush_work); in nitrox_cmdq_init()
48 atomic_set(&cmdq->pending_count, 0); in nitrox_cmdq_init()
49 atomic_set(&cmdq->backlog_count, 0); in nitrox_cmdq_init()
53 static void nitrox_cmdq_reset(struct nitrox_cmdq *cmdq) in nitrox_cmdq_reset() argument
55 cmdq->write_idx = 0; in nitrox_cmdq_reset()
56 atomic_set(&cmdq->pending_count, 0); in nitrox_cmdq_reset()
57 atomic_set(&cmdq->backlog_count, 0); in nitrox_cmdq_reset()
60 static void nitrox_cmdq_cleanup(struct nitrox_cmdq *cmdq) in nitrox_cmdq_cleanup() argument
64 if (!cmdq) in nitrox_cmdq_cleanup()
67 if (!cmdq->unalign_base) in nitrox_cmdq_cleanup()
70 ndev = cmdq->ndev; in nitrox_cmdq_cleanup()
71 cancel_work_sync(&cmdq->backlog_qflush); in nitrox_cmdq_cleanup()
73 dma_free_coherent(DEV(ndev), cmdq->qsize, in nitrox_cmdq_cleanup()
74 cmdq->unalign_base, cmdq->unalign_dma); in nitrox_cmdq_cleanup()
75 nitrox_cmdq_reset(cmdq); in nitrox_cmdq_cleanup()
77 cmdq->dbell_csr_addr = NULL; in nitrox_cmdq_cleanup()
78 cmdq->compl_cnt_csr_addr = NULL; in nitrox_cmdq_cleanup()
79 cmdq->unalign_base = NULL; in nitrox_cmdq_cleanup()
80 cmdq->base = NULL; in nitrox_cmdq_cleanup()
81 cmdq->unalign_dma = 0; in nitrox_cmdq_cleanup()
82 cmdq->dma = 0; in nitrox_cmdq_cleanup()
83 cmdq->qsize = 0; in nitrox_cmdq_cleanup()
84 cmdq->instr_size = 0; in nitrox_cmdq_cleanup()
103 struct nitrox_cmdq *cmdq; in nitrox_alloc_aqm_queues() local
106 cmdq = kzalloc_node(sizeof(*cmdq), GFP_KERNEL, ndev->node); in nitrox_alloc_aqm_queues()
107 if (!cmdq) { in nitrox_alloc_aqm_queues()
112 cmdq->ndev = ndev; in nitrox_alloc_aqm_queues()
113 cmdq->qno = i; in nitrox_alloc_aqm_queues()
114 cmdq->instr_size = sizeof(struct aqmq_command_s); in nitrox_alloc_aqm_queues()
118 cmdq->dbell_csr_addr = NITROX_CSR_ADDR(ndev, offset); in nitrox_alloc_aqm_queues()
121 cmdq->compl_cnt_csr_addr = NITROX_CSR_ADDR(ndev, offset); in nitrox_alloc_aqm_queues()
123 err = nitrox_cmdq_init(cmdq, AQM_Q_ALIGN_BYTES); in nitrox_alloc_aqm_queues()
125 kfree_sensitive(cmdq); in nitrox_alloc_aqm_queues()
128 ndev->aqmq[i] = cmdq; in nitrox_alloc_aqm_queues()
143 struct nitrox_cmdq *cmdq = &ndev->pkt_inq[i]; in nitrox_free_pktin_queues() local
145 nitrox_cmdq_cleanup(cmdq); in nitrox_free_pktin_queues()
162 struct nitrox_cmdq *cmdq; in nitrox_alloc_pktin_queues() local
165 cmdq = &ndev->pkt_inq[i]; in nitrox_alloc_pktin_queues()
166 cmdq->ndev = ndev; in nitrox_alloc_pktin_queues()
167 cmdq->qno = i; in nitrox_alloc_pktin_queues()
168 cmdq->instr_size = sizeof(struct nps_pkt_instr); in nitrox_alloc_pktin_queues()
172 cmdq->dbell_csr_addr = NITROX_CSR_ADDR(ndev, offset); in nitrox_alloc_pktin_queues()
175 cmdq->compl_cnt_csr_addr = NITROX_CSR_ADDR(ndev, offset); in nitrox_alloc_pktin_queues()
177 err = nitrox_cmdq_init(cmdq, PKTIN_Q_ALIGN_BYTES); in nitrox_alloc_pktin_queues()