Hello, The function mtk_cqdma_find_active_desc contains the following code: struct virt_dma_desc *vd; unsigned long flags; spin_lock_irqsave(&cvc->pc->lock, flags); list_for_each_entry(vd, &cvc->pc->queue, node) if (vd->tx.cookie == cookie) { spin_unlock_irqrestore(&cvc->pc->lock, flags); return vd; } That is, from a &cvc->pc->queue there is an iteration over elements of type virt_dma_desc. But other uses of &cvc->pc->queue, such as in mtk_cqdma_is_vchan_active, seem to indicate that the elements of this list have type mtk_cqdma_vdesc. It is not clear to me how the body of the loop should be updated to account for this. thanks, julia