On Mon, 14 Oct 2024 15:06:32 +0530 Gagandeep Singh <g.si...@nxp.com> wrote:
> @@ -551,7 +485,7 @@ fsl_qdma_reg_init(struct fsl_qdma_engine *fsl_qdma) > > /* Initialize the status queue mode. */ > reg = FSL_QDMA_BSQMR_EN; > - val = ilog2(fsl_qdma->status[j]->n_cq) - 6; > + val = ilog2_qsize(temp_stat->n_cq); > reg |= FSL_QDMA_BSQMR_CQ_SIZE(val); > qdma_writel(reg, block + FSL_QDMA_BSQMR); > } > @@ -563,158 +497,389 @@ fsl_qdma_reg_init(struct fsl_qdma_engine *fsl_qdma) > return 0; > } > > -static void * > -fsl_qdma_prep_memcpy(void *fsl_chan, dma_addr_t dst, > - dma_addr_t src, size_t len, > - void *call_back, > - void *param) > +static uint16_t > +dpaa_qdma_block_dequeue(struct fsl_qdma_engine *fsl_qdma, > + uint8_t block_id) > { > - struct fsl_qdma_comp *fsl_comp; > + struct fsl_qdma_status_queue *stat_queue; > + struct fsl_qdma_queue *cmd_queue; > + struct fsl_qdma_comp_cmd_desc *cq; > + uint16_t start, count = 0; > + uint8_t qid = 0; > + uint32_t reg; > + int ret; > + uint8_t *block; > + uint16_t *dq_complete; > + struct fsl_qdma_desc *desc[FSL_QDMA_SG_MAX_ENTRY]; > > - fsl_comp = > - fsl_qdma_request_enqueue_desc((struct fsl_qdma_chan *)fsl_chan); > - if (!fsl_comp) > - return NULL; > + stat_queue = &fsl_qdma->stat_queues[block_id]; > + cq = stat_queue->cq; > + start = stat_queue->complete; > + > + block = fsl_qdma->block_base + > + FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, block_id); > > - fsl_comp->qchan = fsl_chan; > - fsl_comp->call_back_func = call_back; > - fsl_comp->params = param; > + do { > + reg = qdma_readl_be(block + FSL_QDMA_BSQSR); > + if (reg & FSL_QDMA_BSQSR_QE_BE) > + break; > > - fsl_qdma_comp_fill_memcpy(fsl_comp, dst, src, len); > - return (void *)fsl_comp; > + qdma_writel_be(FSL_QDMA_BSQMR_DI, block + FSL_QDMA_BSQMR); > + ret = qdma_ccdf_get_queue(&cq[start], &qid); > + if (ret == true) { > + cmd_queue = &fsl_qdma->cmd_queues[block_id][qid]; > + > + ret = rte_ring_dequeue(cmd_queue->complete_burst, > + (void **)&dq_complete); > + if (ret) > + rte_panic("DQ desc number failed!\n"); Please don't panic here, either recover, log an error or take the device offline. Killing the whole application is not acceptable.