/openbmc/linux/drivers/net/ethernet/mellanox/mlx4/ |
H A D | en_cq.c | 55 cq = kzalloc_node(sizeof(*cq), GFP_KERNEL, node); in mlx4_en_create_cq() 56 if (!cq) { in mlx4_en_create_cq() 62 cq->buf_size = cq->size * mdev->dev->caps.cqe_size; in mlx4_en_create_cq() 79 *pcq = cq; in mlx4_en_create_cq() 84 kfree(cq); in mlx4_en_create_cq() 98 cq->mcq.set_ci_db = cq->wqres.db.db; in mlx4_en_activate_cq() 99 cq->mcq.arm_db = cq->wqres.db.db + 1; in mlx4_en_activate_cq() 102 memset(cq->buf, 0, cq->buf_size); in mlx4_en_activate_cq() 132 cq->size = priv->rx_ring[cq->ring]->actual_size; in mlx4_en_activate_cq() 140 &mdev->priv_uar, cq->wqres.db.dma, &cq->mcq, in mlx4_en_activate_cq() [all …]
|
H A D | cq.c | 106 struct mlx4_cq *cq; in mlx4_cq_completion() local 113 if (!cq) { in mlx4_cq_completion() 121 ++cq->arm_sn; in mlx4_cq_completion() 123 cq->comp(cq); in mlx4_cq_completion() 129 struct mlx4_cq *cq; in mlx4_cq_event() local 135 if (!cq) { in mlx4_cq_event() 143 cq->event(cq, event_type); in mlx4_cq_event() 360 err = mlx4_cq_alloc_icm(dev, &cq->cqn, cq->usage); in mlx4_cq_alloc() 365 err = radix_tree_insert(&cq_table->tree, cq->cqn, cq); in mlx4_cq_alloc() 410 cq->cons_index = 0; in mlx4_cq_alloc() [all …]
|
/openbmc/linux/drivers/infiniband/core/ |
H A D | cq.c | 50 cq->device->ops.modify_cq(cq, comps, usec); in ib_cq_rdma_dim_work() 187 queue_work(cq->comp_wq, &cq->work); in ib_cq_poll_work() 195 queue_work(cq->comp_wq, &cq->work); in ib_cq_completion_workqueue() 224 if (!cq) in __ib_alloc_cq() 261 cq->comp_wq = (cq->poll_ctx == IB_POLL_WORKQUEUE) ? in __ib_alloc_cq() 271 return cq; in __ib_alloc_cq() 275 cq->device->ops.destroy_cq(cq, NULL); in __ib_alloc_cq() 280 kfree(cq); in __ib_alloc_cq() 343 ret = cq->device->ops.destroy_cq(cq, NULL); in ib_free_cq() 347 kfree(cq); in ib_free_cq() [all …]
|
/openbmc/linux/drivers/net/ethernet/intel/ice/ |
H A D | ice_controlq.c | 77 if (cq->sq.len && cq->sq.len_mask && cq->sq.len_ena_mask) in ice_check_sq_alive() 78 return (rd32(hw, cq->sq.len) & (cq->sq.len_mask | in ice_check_sq_alive() 80 (cq->num_sq_entries | cq->sq.len_ena_mask); in ice_check_sq_alive() 106 cq->sq.desc_buf.va, cq->sq.desc_buf.pa); in ice_alloc_ctrlq_sq_ring() 372 if (!cq->num_sq_entries || !cq->sq_buf_size) { in ice_init_sq() 396 cq->sq.count = cq->num_sq_entries; in ice_init_sq() 432 if (!cq->num_rq_entries || !cq->rq_buf_size) { in ice_init_rq() 456 cq->rq.count = cq->num_rq_entries; in ice_init_rq() 635 !cq->rq_buf_size || !cq->sq_buf_size) { in ice_init_ctrlq() 1055 if (cq->sq.next_to_use == cq->sq.count) in ice_sq_send_cmd() [all …]
|
/openbmc/linux/drivers/infiniband/sw/rxe/ |
H A D | rxe_cq.c | 27 if (cq) { in rxe_cq_chk_attr() 52 if (!cq->queue) { in rxe_cq_from_init() 58 cq->queue->buf, cq->queue->buf_size, &cq->queue->ip); in rxe_cq_from_init() 61 kfree(cq->queue); in rxe_cq_from_init() 68 cq->ibcq.cqe = cqe; in rxe_cq_from_init() 103 ev.element.cq = &cq->ibcq; in rxe_cq_post() 105 cq->ibcq.event_handler(&ev, cq->ibcq.cq_context); in rxe_cq_post() 118 cq->notify = 0; in rxe_cq_post() 119 cq->ibcq.comp_handler(&cq->ibcq, cq->ibcq.cq_context); in rxe_cq_post() 129 struct rxe_cq *cq = container_of(elem, typeof(*cq), elem); in rxe_cq_cleanup() local [all …]
|
/openbmc/linux/drivers/infiniband/hw/mthca/ |
H A D | mthca_cq.c | 181 return cqe_sw(get_cqe(cq, cq->cons_index & cq->ibcq.cqe)); in next_cqe_sw() 230 cq->ibcq.comp_handler(&cq->ibcq, cq->ibcq.cq_context); in mthca_cq_completion() 254 event.element.cq = &cq->ibcq; in mthca_cq_event() 316 set_cqe_hw(get_cqe(cq, (cq->cons_index + i) & cq->ibcq.cqe)); in mthca_cq_clean() 337 cq->cons_index &= cq->ibcq.cqe; in mthca_cq_resize_copy_cqes() 339 cq->cons_index -= cq->ibcq.cqe + 1; in mthca_cq_resize_copy_cqes() 342 for (i = cq->cons_index; cqe_sw(get_cqe(cq, i & cq->ibcq.cqe)); ++i) in mthca_cq_resize_copy_cqes() 384 cq->cqn, cq->cons_index); in handle_error_cqe() 698 cq->cons_index &= cq->ibcq.cqe; in mthca_poll_cq() 799 cq->cqn, &cq->arm_db); in mthca_init_cq() [all …]
|
/openbmc/linux/drivers/net/ethernet/cisco/enic/ |
H A D | vnic_cq.c | 16 void vnic_cq_free(struct vnic_cq *cq) in vnic_cq_free() argument 18 vnic_dev_free_desc_ring(cq->vdev, &cq->ring); in vnic_cq_free() 20 cq->ctrl = NULL; in vnic_cq_free() 26 cq->index = index; in vnic_cq_alloc() 27 cq->vdev = vdev; in vnic_cq_alloc() 30 if (!cq->ctrl) { in vnic_cq_alloc() 48 iowrite32(cq->ring.desc_count, &cq->ctrl->ring_size); in vnic_cq_init() 65 cq->to_clean = 0; in vnic_cq_clean() 66 cq->last_color = 0; in vnic_cq_clean() 68 iowrite32(0, &cq->ctrl->cq_head); in vnic_cq_clean() [all …]
|
H A D | vnic_cq.h | 70 cq_desc = (struct cq_desc *)((u8 *)cq->ring.descs + in vnic_cq_service() 71 cq->ring.desc_size * cq->to_clean); in vnic_cq_service() 75 while (color != cq->last_color) { in vnic_cq_service() 77 if ((*q_service)(cq->vdev, cq_desc, type, in vnic_cq_service() 81 cq->to_clean++; in vnic_cq_service() 82 if (cq->to_clean == cq->ring.desc_count) { in vnic_cq_service() 83 cq->to_clean = 0; in vnic_cq_service() 84 cq->last_color = cq->last_color ? 0 : 1; in vnic_cq_service() 88 cq->ring.desc_size * cq->to_clean); in vnic_cq_service() 100 void vnic_cq_free(struct vnic_cq *cq); [all …]
|
/openbmc/linux/drivers/scsi/snic/ |
H A D | vnic_cq.c | 10 void svnic_cq_free(struct vnic_cq *cq) in svnic_cq_free() argument 12 svnic_dev_free_desc_ring(cq->vdev, &cq->ring); in svnic_cq_free() 14 cq->ctrl = NULL; in svnic_cq_free() 20 cq->index = index; in svnic_cq_alloc() 21 cq->vdev = vdev; in svnic_cq_alloc() 24 if (!cq->ctrl) { in svnic_cq_alloc() 43 iowrite32(cq->ring.desc_count, &cq->ctrl->ring_size); in svnic_cq_init() 58 cq->to_clean = 0; in svnic_cq_clean() 59 cq->last_color = 0; in svnic_cq_clean() 61 iowrite32(0, &cq->ctrl->cq_head); in svnic_cq_clean() [all …]
|
H A D | vnic_cq_fw.h | 10 vnic_cq_fw_service(struct vnic_cq *cq, in vnic_cq_fw_service() argument 21 desc = (struct snic_fw_req *)((u8 *)cq->ring.descs + in vnic_cq_fw_service() 22 cq->ring.desc_size * cq->to_clean); in vnic_cq_fw_service() 25 while (color != cq->last_color) { in vnic_cq_fw_service() 27 if ((*q_service)(cq->vdev, cq->index, desc)) in vnic_cq_fw_service() 30 cq->to_clean++; in vnic_cq_fw_service() 31 if (cq->to_clean == cq->ring.desc_count) { in vnic_cq_fw_service() 32 cq->to_clean = 0; in vnic_cq_fw_service() 33 cq->last_color = cq->last_color ? 0 : 1; in vnic_cq_fw_service() 36 desc = (struct snic_fw_req *)((u8 *)cq->ring.descs + in vnic_cq_fw_service() [all …]
|
H A D | vnic_cq.h | 57 cq_desc = (struct cq_desc *)((u8 *)cq->ring.descs + in svnic_cq_service() 58 cq->ring.desc_size * cq->to_clean); in svnic_cq_service() 62 while (color != cq->last_color) { in svnic_cq_service() 64 if ((*q_service)(cq->vdev, cq_desc, type, in svnic_cq_service() 68 cq->to_clean++; in svnic_cq_service() 69 if (cq->to_clean == cq->ring.desc_count) { in svnic_cq_service() 70 cq->to_clean = 0; in svnic_cq_service() 71 cq->last_color = cq->last_color ? 0 : 1; in svnic_cq_service() 75 cq->ring.desc_size * cq->to_clean); in svnic_cq_service() 87 void svnic_cq_free(struct vnic_cq *cq); [all …]
|
/openbmc/linux/drivers/scsi/fnic/ |
H A D | vnic_cq.c | 12 void vnic_cq_free(struct vnic_cq *cq) in vnic_cq_free() argument 14 vnic_dev_free_desc_ring(cq->vdev, &cq->ring); in vnic_cq_free() 16 cq->ctrl = NULL; in vnic_cq_free() 24 cq->index = index; in vnic_cq_alloc() 25 cq->vdev = vdev; in vnic_cq_alloc() 28 if (!cq->ctrl) { in vnic_cq_alloc() 50 iowrite32(cq->ring.desc_count, &cq->ctrl->ring_size); in vnic_cq_init() 65 cq->to_clean = 0; in vnic_cq_clean() 66 cq->last_color = 0; in vnic_cq_clean() 68 iowrite32(0, &cq->ctrl->cq_head); in vnic_cq_clean() [all …]
|
H A D | vnic_cq_copy.h | 12 struct vnic_cq *cq, in vnic_cq_copy_service() argument 23 desc = (struct fcpio_fw_req *)((u8 *)cq->ring.descs + in vnic_cq_copy_service() 24 cq->ring.desc_size * cq->to_clean); in vnic_cq_copy_service() 27 while (color != cq->last_color) { in vnic_cq_copy_service() 29 if ((*q_service)(cq->vdev, cq->index, desc)) in vnic_cq_copy_service() 32 cq->to_clean++; in vnic_cq_copy_service() 33 if (cq->to_clean == cq->ring.desc_count) { in vnic_cq_copy_service() 34 cq->to_clean = 0; in vnic_cq_copy_service() 35 cq->last_color = cq->last_color ? 0 : 1; in vnic_cq_copy_service() 38 desc = (struct fcpio_fw_req *)((u8 *)cq->ring.descs + in vnic_cq_copy_service() [all …]
|
H A D | vnic_cq.h | 69 cq_desc = (struct cq_desc *)((u8 *)cq->ring.descs + in vnic_cq_service() 70 cq->ring.desc_size * cq->to_clean); in vnic_cq_service() 74 while (color != cq->last_color) { in vnic_cq_service() 76 if ((*q_service)(cq->vdev, cq_desc, type, in vnic_cq_service() 80 cq->to_clean++; in vnic_cq_service() 81 if (cq->to_clean == cq->ring.desc_count) { in vnic_cq_service() 82 cq->to_clean = 0; in vnic_cq_service() 83 cq->last_color = cq->last_color ? 0 : 1; in vnic_cq_service() 87 cq->ring.desc_size * cq->to_clean); in vnic_cq_service() 99 void vnic_cq_free(struct vnic_cq *cq); [all …]
|
/openbmc/linux/drivers/infiniband/hw/mlx4/ |
H A D | cq.c | 90 return get_sw_cqe(cq, cq->mcq.cons_index); in next_cqe_sw() 229 cq->mcq.set_ci_db = cq->db.db; in mlx4_ib_create_cq() 230 cq->mcq.arm_db = cq->db.db + 1; in mlx4_ib_create_cq() 362 cqe = get_cqe(cq, i & cq->ibcq.cqe); in mlx4_ib_cq_resize_copy_cqes() 429 cq->buf = cq->resize_buf->buf; in mlx4_ib_resize_cq() 430 cq->ibcq.cqe = cq->resize_buf->cqe; in mlx4_ib_resize_cq() 432 cq->umem = cq->resize_umem; in mlx4_ib_resize_cq() 446 cq->buf = cq->resize_buf->buf; in mlx4_ib_resize_cq() 447 cq->ibcq.cqe = cq->resize_buf->cqe; in mlx4_ib_resize_cq() 698 cq->buf = cq->resize_buf->buf; in mlx4_ib_poll_one() [all …]
|
/openbmc/linux/drivers/infiniband/sw/rdmavt/ |
H A D | cq.c | 38 if (cq->ip) { in rvt_cq_enter() 39 u_wc = cq->queue; in rvt_cq_enter() 72 ev.element.cq = &cq->ibcq; in rvt_cq_enter() 74 cq->ibcq.event_handler(&ev, cq->ibcq.cq_context); in rvt_cq_enter() 140 cq->ibcq.comp_handler(&cq->ibcq, cq->ibcq.cq_context); in send_complete() 230 if (cq->ip) { in rvt_create_cq() 241 cq->rdi = rdi; in rvt_create_cq() 285 if (cq->ip) in rvt_destroy_cq() 322 if (cq->kqueue->head != cq->kqueue->tail) in rvt_req_notify_cq() 432 if (cq->ip) { in rvt_resize_cq() [all …]
|
/openbmc/linux/drivers/infiniband/hw/vmw_pvrdma/ |
H A D | pvrdma_cq.c | 135 if (!cq->is_kernel) { in pvrdma_create_cq() 165 ret = pvrdma_page_dir_init(dev, &cq->pdir, npages, cq->is_kernel); in pvrdma_create_cq() 173 if (cq->is_kernel) in pvrdma_create_cq() 174 cq->ring_state = cq->pdir.pages[0]; in pvrdma_create_cq() 176 pvrdma_page_dir_insert_umem(&cq->pdir, cq->umem, 0); in pvrdma_create_cq() 199 dev->cq_tbl[cq->cq_handle % dev->dsr->caps.max_cq] = cq; in pvrdma_create_cq() 273 &cq->pdir, in get_cqe() 274 cq->offset + in get_cqe() 283 if (!cq->is_kernel) in _pvrdma_flush_cqe() 315 cq->ibcq.cqe); in _pvrdma_flush_cqe() [all …]
|
/openbmc/linux/drivers/infiniband/hw/mlx5/ |
H A D | cq.c | 81 void *cqe = get_cqe(cq, n & cq->ibcq.cqe); in get_sw_cqe() 96 return get_sw_cqe(cq, cq->mcq.cons_index); in next_cqe_sw() 480 cq->buf = *cq->resize_buf; in mlx5_poll_one() 891 cq->mcq.set_ci_db = cq->db.db; in create_cq_kernel() 892 cq->mcq.arm_db = cq->db.db + 1; in create_cq_kernel() 941 cq->ibcq.comp_handler(&cq->ibcq, cq->ibcq.cq_context); in notify_soft_wc_handler() 1079 if (!cq) in __mlx5_ib_cq_clean() 1096 cqe = get_cqe(cq, prod_index & cq->ibcq.cqe); in __mlx5_ib_cq_clean() 1124 if (!cq) in mlx5_ib_cq_clean() 1370 cq->buf.umem = cq->resize_umem; in mlx5_ib_resize_cq() [all …]
|
/openbmc/linux/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | cq.c | 82 mlx5_cq_hold(cq); in mlx5_add_cq_to_tasklet() 109 cq->cons_index = 0; in mlx5_create_cq() 110 cq->arm_sn = 0; in mlx5_create_cq() 111 cq->eq = eq; in mlx5_create_cq() 115 if (!cq->comp) in mlx5_create_cq() 131 cq->pid = current->pid; in mlx5_create_cq() 135 cq->cqn); in mlx5_create_cq() 137 cq->uar = dev->priv.uar; in mlx5_create_cq() 138 cq->irqn = eq->core.irqn; in mlx5_create_cq() 171 mlx5_eq_del_cq(&cq->eq->core, cq); in mlx5_core_destroy_cq() [all …]
|
/openbmc/linux/drivers/infiniband/hw/cxgb4/ |
H A D | cq.c | 65 cq->memsize, cq->queue, in destroy_cq() 108 ((u8 *)cq->queue + (cq->size - 1) * in create_cq() 112 ((u8 *)cq->queue + (cq->size - 1) * in create_cq() 189 wq, cq, cq->sw_cidx, cq->sw_pidx); in insert_recv_cqe() 199 cq->sw_queue[cq->sw_pidx] = cqe; in insert_recv_cqe() 223 wq, cq, cq->sw_cidx, cq->sw_pidx); in insert_sq_cqe() 232 cq->sw_queue[cq->sw_pidx] = cqe; in insert_sq_cqe() 243 struct t4_cq *cq = &chp->cq; in c4iw_flush_sq() local 744 cq, cq->cqid, cq->sw_cidx); in poll_cq() 748 cq, cq->cqid, cq->cidx); in poll_cq() [all …]
|
H A D | t4.h | 709 writel(val | INGRESSQID_V(cq->cqid), cq->gts); in write_gts() 736 if (cq->sw_in_use == cq->size) { in t4_swcq_produce() 743 if (++cq->sw_pidx == cq->size) in t4_swcq_produce() 750 if (++cq->sw_cidx == cq->size) in t4_swcq_consume() 756 cq->bits_type_ts = cq->queue[cq->cidx].bits_type_ts; in t4_hwcq_consume() 757 if (++cq->cidx_inc == (cq->size >> 4) || cq->cidx_inc == CIDXINC_M) { in t4_hwcq_consume() 764 if (++cq->cidx == cq->size) { in t4_hwcq_consume() 777 return cq->sw_in_use || t4_valid_cqe(cq, &cq->queue[cq->cidx]); in t4_cq_notempty() 794 } else if (t4_valid_cqe(cq, &cq->queue[cq->cidx])) { in t4_next_hw_cqe() 798 *cqe = &cq->queue[cq->cidx]; in t4_next_hw_cqe() [all …]
|
H A D | restrack.c | 338 idx = (cq->cidx > 0) ? cq->cidx - 1 : cq->size - 1; in fill_hwcqes() 341 idx = cq->cidx; in fill_hwcqes() 355 if (!cq->sw_in_use) in fill_swcqes() 358 idx = cq->sw_cidx; in fill_swcqes() 363 idx = (cq->sw_pidx > 0) ? cq->sw_pidx - 1 : cq->size - 1; in fill_swcqes() 378 struct t4_cq cq; in c4iw_fill_res_cq_entry() local 393 cq = chp->cq; in c4iw_fill_res_cq_entry() 396 idx = (cq.cidx > 0) ? cq.cidx - 1 : cq.size - 1; in c4iw_fill_res_cq_entry() 399 idx = cq.cidx; in c4iw_fill_res_cq_entry() 404 swcqes[0] = chp->cq.sw_queue[cq.sw_cidx]; in c4iw_fill_res_cq_entry() [all …]
|
/openbmc/linux/include/linux/mlx5/ |
H A D | cq.h | 141 static inline void mlx5_cq_set_ci(struct mlx5_core_cq *cq) in mlx5_cq_set_ci() argument 143 *cq->set_ci_db = cpu_to_be32(cq->cons_index & 0xffffff); in mlx5_cq_set_ci() 159 sn = cq->arm_sn & 3; in mlx5_cq_arm() 162 *cq->arm_db = cpu_to_be32(sn << 28 | cmd | ci); in mlx5_cq_arm() 170 doorbell[1] = cpu_to_be32(cq->cqn); in mlx5_cq_arm() 175 static inline void mlx5_cq_hold(struct mlx5_core_cq *cq) in mlx5_cq_hold() argument 177 refcount_inc(&cq->refcount); in mlx5_cq_hold() 180 static inline void mlx5_cq_put(struct mlx5_core_cq *cq) in mlx5_cq_put() argument 182 if (refcount_dec_and_test(&cq->refcount)) in mlx5_cq_put() 183 complete(&cq->free); in mlx5_cq_put() [all …]
|
/openbmc/linux/drivers/scsi/elx/efct/ |
H A D | efct_hw_queues.c | 46 if (!cq) { in efct_hw_init_queues() 60 if (!cq) { in efct_hw_init_queues() 164 if (!cq) in efct_hw_new_cq() 171 cq->queue = &hw->cq[cq->instance]; in efct_hw_new_cq() 183 hw->hw_cq[cq->instance] = cq; in efct_hw_new_cq() 187 cq->queue->id, cq->entry_count); in efct_hw_new_cq() 207 cq = kzalloc(sizeof(*cq), GFP_KERNEL); in efct_hw_new_cq_set() 216 cq->queue = &hw->cq[cq->instance]; in efct_hw_new_cq_set() 252 mq->cq = cq; in efct_hw_new_mq() 284 wq->cq = cq; in efct_hw_new_wq() [all …]
|
/openbmc/linux/drivers/infiniband/hw/erdma/ |
H A D | erdma_cq.c | 11 __be32 *cqe = get_queue_entry(cq->kern_cq.qbuf, cq->kern_cq.ci, in get_next_valid_cqe() 12 cq->depth, CQE_SHIFT); in get_next_valid_cqe() 16 return owner ^ !!(cq->kern_cq.ci & cq->depth) ? cqe : NULL; in get_next_valid_cqe() 23 FIELD_PREP(ERDMA_CQDB_CQN_MASK, cq->cqn) | in notify_cq() 29 *cq->kern_cq.db_record = db_data; in notify_cq() 30 writeq(db_data, cq->kern_cq.db); in notify_cq() 35 struct erdma_cq *cq = to_ecq(ibcq); in erdma_req_notify_cq() local 46 cq->kern_cq.notify_cnt++; in erdma_req_notify_cq() 122 cqe = get_next_valid_cqe(cq); in erdma_poll_one_cqe() 126 cq->kern_cq.ci++; in erdma_poll_one_cqe() [all …]
|