Lines Matching refs:q

577 	struct ionic_queue *q = &qcq->q;  in ionic_dev_cmd_adminq_init()  local
583 .q_init.type = q->type, in ionic_dev_cmd_adminq_init()
584 .q_init.ver = qcq->q.lif->qtype_info[q->type].version, in ionic_dev_cmd_adminq_init()
585 .q_init.index = cpu_to_le32(q->index), in ionic_dev_cmd_adminq_init()
588 .q_init.pid = cpu_to_le16(q->pid), in ionic_dev_cmd_adminq_init()
590 .q_init.ring_size = ilog2(q->num_descs), in ionic_dev_cmd_adminq_init()
591 .q_init.ring_base = cpu_to_le64(q->base_pa), in ionic_dev_cmd_adminq_init()
665 void ionic_cq_bind(struct ionic_cq *cq, struct ionic_queue *q) in ionic_cq_bind() argument
667 cq->bound_q = q; in ionic_cq_bind()
698 struct ionic_queue *q, unsigned int index, const char *name, in ionic_q_init() argument
711 q->lif = lif; in ionic_q_init()
712 q->idev = idev; in ionic_q_init()
713 q->index = index; in ionic_q_init()
714 q->num_descs = num_descs; in ionic_q_init()
715 q->desc_size = desc_size; in ionic_q_init()
716 q->sg_desc_size = sg_desc_size; in ionic_q_init()
717 q->tail_idx = 0; in ionic_q_init()
718 q->head_idx = 0; in ionic_q_init()
719 q->pid = pid; in ionic_q_init()
721 snprintf(q->name, sizeof(q->name), "L%d-%s%u", lif->index, name, index); in ionic_q_init()
726 void ionic_q_map(struct ionic_queue *q, void *base, dma_addr_t base_pa) in ionic_q_map() argument
731 q->base = base; in ionic_q_map()
732 q->base_pa = base_pa; in ionic_q_map()
734 for (i = 0, cur = q->info; i < q->num_descs; i++, cur++) in ionic_q_map()
735 cur->desc = base + (i * q->desc_size); in ionic_q_map()
738 void ionic_q_cmb_map(struct ionic_queue *q, void __iomem *base, dma_addr_t base_pa) in ionic_q_cmb_map() argument
743 q->cmb_base = base; in ionic_q_cmb_map()
744 q->cmb_base_pa = base_pa; in ionic_q_cmb_map()
746 for (i = 0, cur = q->info; i < q->num_descs; i++, cur++) in ionic_q_cmb_map()
747 cur->cmb_desc = base + (i * q->desc_size); in ionic_q_cmb_map()
750 void ionic_q_sg_map(struct ionic_queue *q, void *base, dma_addr_t base_pa) in ionic_q_sg_map() argument
755 q->sg_base = base; in ionic_q_sg_map()
756 q->sg_base_pa = base_pa; in ionic_q_sg_map()
758 for (i = 0, cur = q->info; i < q->num_descs; i++, cur++) in ionic_q_sg_map()
759 cur->sg_desc = base + (i * q->sg_desc_size); in ionic_q_sg_map()
762 void ionic_q_post(struct ionic_queue *q, bool ring_doorbell, ionic_desc_cb cb, in ionic_q_post() argument
766 struct ionic_lif *lif = q->lif; in ionic_q_post()
767 struct device *dev = q->dev; in ionic_q_post()
769 desc_info = &q->info[q->head_idx]; in ionic_q_post()
773 q->head_idx = (q->head_idx + 1) & (q->num_descs - 1); in ionic_q_post()
776 q->lif->index, q->name, q->hw_type, q->hw_index, in ionic_q_post()
777 q->head_idx, ring_doorbell); in ionic_q_post()
780 ionic_dbell_ring(lif->kern_dbpage, q->hw_type, in ionic_q_post()
781 q->dbval | q->head_idx); in ionic_q_post()
783 q->dbell_jiffies = jiffies; in ionic_q_post()
785 if (q_to_qcq(q)->napi_qcq) in ionic_q_post()
786 mod_timer(&q_to_qcq(q)->napi_qcq->napi_deadline, in ionic_q_post()
791 static bool ionic_q_is_posted(struct ionic_queue *q, unsigned int pos) in ionic_q_is_posted() argument
795 mask = q->num_descs - 1; in ionic_q_is_posted()
796 tail = q->tail_idx; in ionic_q_is_posted()
797 head = q->head_idx; in ionic_q_is_posted()
802 void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info, in ionic_q_service() argument
811 if (q->tail_idx == q->head_idx) in ionic_q_service()
815 if (unlikely(!ionic_q_is_posted(q, stop_index))) in ionic_q_service()
816 dev_err(q->dev, in ionic_q_service()
818 q->name, stop_index, q->tail_idx, q->head_idx); in ionic_q_service()
821 desc_info = &q->info[q->tail_idx]; in ionic_q_service()
822 index = q->tail_idx; in ionic_q_service()
823 q->tail_idx = (q->tail_idx + 1) & (q->num_descs - 1); in ionic_q_service()
832 cb(q, desc_info, cq_info, cb_arg); in ionic_q_service()