/freebsd/sys/dev/mthca/ |
H A D | mthca_srq.c | 74 static void *get_wqe(struct mthca_srq *srq, int n) in get_wqe() argument 76 if (srq->is_direct) in get_wqe() 77 return srq->queue.direct.buf + (n << srq->wqe_shift); in get_wqe() 79 return srq->queue.page_list[(n << srq->wqe_shift) >> PAGE_SHIFT].buf + in get_wqe() 80 ((n << srq->wqe_shift) & (PAGE_SIZE - 1)); in get_wqe() 99 struct mthca_srq *srq, in mthca_tavor_init_srq_context() argument 108 context->wqe_base_ds = cpu_to_be64(1 << (srq->wqe_shift - 4)); in mthca_tavor_init_srq_context() 110 context->lkey = cpu_to_be32(srq->mr.ibmr.lkey); in mthca_tavor_init_srq_context() 120 struct mthca_srq *srq, in mthca_arbel_init_srq_context() argument 129 logsize = ilog2(srq->max); in mthca_arbel_init_srq_context() [all …]
|
/freebsd/sys/dev/mlx4/mlx4_ib/ |
H A D | mlx4_ib_srq.c | 42 static void *get_wqe(struct mlx4_ib_srq *srq, int n) in get_wqe() argument 44 return mlx4_buf_offset(&srq->buf, n << srq->msrq.wqe_shift); in get_wqe() 47 static void mlx4_ib_srq_event(struct mlx4_srq *srq, enum mlx4_event type) in mlx4_ib_srq_event() argument 50 struct ib_srq *ibsrq = &to_mibsrq(srq)->ibsrq; in mlx4_ib_srq_event() 54 event.element.srq = ibsrq; in mlx4_ib_srq_event() 64 "on SRQ %06x\n", type, srq->srqn); in mlx4_ib_srq_event() 79 struct mlx4_ib_srq *srq = to_msrq(ib_srq); in mlx4_ib_create_srq() local 94 mutex_init(&srq->mutex); in mlx4_ib_create_srq() 95 spin_lock_init(&srq->lock); in mlx4_ib_create_srq() 96 srq->msrq.max = roundup_pow_of_two(init_attr->attr.max_wr + 1); in mlx4_ib_create_srq() [all …]
|
H A D | mlx4_ib_cq.c | 656 struct mlx4_ib_srq *srq; in mlx4_ib_poll_one() local 732 } else if ((*cur_qp)->ibqp.srq) { in mlx4_ib_poll_one() 733 srq = to_msrq((*cur_qp)->ibqp.srq); in mlx4_ib_poll_one() 735 wc->wr_id = srq->wrid[wqe_ctr]; in mlx4_ib_poll_one() 736 mlx4_ib_free_srq_wqe(srq, wqe_ctr); in mlx4_ib_poll_one() 738 srq = to_mibsrq(msrq); in mlx4_ib_poll_one() 740 wc->wr_id = srq->wrid[wqe_ctr]; in mlx4_ib_poll_one() 741 mlx4_ib_free_srq_wqe(srq, wqe_ctr); in mlx4_ib_poll_one() 913 void __mlx4_ib_cq_clean(struct mlx4_ib_cq *cq, u32 qpn, struct mlx4_ib_srq *srq) in __mlx4_ib_cq_clean() argument 941 if (srq && !(cqe->owner_sr_opcode & MLX4_CQE_IS_SEND_MASK)) in __mlx4_ib_cq_clean() [all …]
|
/freebsd/contrib/ofed/libmlx4/ |
H A D | srq.c | 44 static void *get_wqe(struct mlx4_srq *srq, int n) in get_wqe() argument 46 return srq->buf.buf + (n << srq->wqe_shift); in get_wqe() 49 void mlx4_free_srq_wqe(struct mlx4_srq *srq, int ind) in mlx4_free_srq_wqe() argument 53 pthread_spin_lock(&srq->lock); in mlx4_free_srq_wqe() 55 next = get_wqe(srq, srq->tail); in mlx4_free_srq_wqe() 57 srq->tail = ind; in mlx4_free_srq_wqe() 59 pthread_spin_unlock(&srq->lock); in mlx4_free_srq_wqe() 66 struct mlx4_srq *srq = to_msrq(ibsrq); in mlx4_post_srq_recv() local 73 pthread_spin_lock(&srq->lock); in mlx4_post_srq_recv() 76 if (wr->num_sge > srq->max_gs) { in mlx4_post_srq_recv() [all …]
|
H A D | verbs.c | 651 struct mlx4_srq *srq; in mlx4_create_srq() local 658 srq = malloc(sizeof *srq); in mlx4_create_srq() 659 if (!srq) in mlx4_create_srq() 662 if (pthread_spin_init(&srq->lock, PTHREAD_PROCESS_PRIVATE)) in mlx4_create_srq() 665 srq->max = align_queue_size(attr->attr.max_wr + 1); in mlx4_create_srq() 666 srq->max_gs = attr->attr.max_sge; in mlx4_create_srq() 667 srq->counter = 0; in mlx4_create_srq() 668 srq->ext_srq = 0; in mlx4_create_srq() 670 if (mlx4_alloc_srq_buf(pd, &attr->attr, srq)) in mlx4_create_srq() 673 srq->db = mlx4_alloc_db(to_mctx(pd->context), MLX4_DB_TYPE_RQ); in mlx4_create_srq() [all …]
|
H A D | cq.c | 241 struct mlx4_srq *srq; in mlx4_parse_cqe() local 270 srq = mlx4_find_xsrq(&mctx->xsrq_table, in mlx4_parse_cqe() 272 if (!srq) in mlx4_parse_cqe() 285 srq = ((*cur_qp)->verbs_qp.qp.srq) ? to_msrq((*cur_qp)->verbs_qp.qp.srq) : NULL; in mlx4_parse_cqe() 295 } else if (srq) { in mlx4_parse_cqe() 297 *pwr_id = srq->wrid[wqe_index]; in mlx4_parse_cqe() 298 mlx4_free_srq_wqe(srq, wqe_index); in mlx4_parse_cqe() 714 void __mlx4_cq_clean(struct mlx4_cq *cq, uint32_t qpn, struct mlx4_srq *srq) in __mlx4_cq_clean() argument 740 if (srq && srq->ext_srq && in __mlx4_cq_clean() 741 (be32toh(cqe->g_mlpath_rqpn) & MLX4_CQE_QPN_MASK) == srq->verbs_srq.srq_num && in __mlx4_cq_clean() [all …]
|
H A D | mlx4.h | 331 return container_of(container_of(ibsrq, struct verbs_srq, srq), in to_msrq() 397 void __mlx4_cq_clean(struct mlx4_cq *cq, uint32_t qpn, struct mlx4_srq *srq); 398 void mlx4_cq_clean(struct mlx4_cq *cq, uint32_t qpn, struct mlx4_srq *srq); 408 int mlx4_modify_srq(struct ibv_srq *srq, 411 int mlx4_query_srq(struct ibv_srq *srq, 413 int mlx4_destroy_srq(struct ibv_srq *srq); 414 int mlx4_destroy_xrc_srq(struct ibv_srq *srq); 416 struct mlx4_srq *srq); 421 struct mlx4_srq *srq); 423 void mlx4_free_srq_wqe(struct mlx4_srq *srq, int ind);
|
/freebsd/sys/dev/mlx5/mlx5_ib/ |
H A D | mlx5_ib_srq.c | 39 static void *get_wqe(struct mlx5_ib_srq *srq, int n) in get_wqe() argument 41 return mlx5_buf_offset(&srq->buf, n << srq->msrq.wqe_shift); in get_wqe() 44 static void mlx5_ib_srq_event(struct mlx5_core_srq *srq, int type) in mlx5_ib_srq_event() argument 47 struct ib_srq *ibsrq = &to_mibsrq(srq)->ibsrq; in mlx5_ib_srq_event() 51 event.element.srq = ibsrq; in mlx5_ib_srq_event() 61 type, srq->srqn); in mlx5_ib_srq_event() 69 static int create_srq_user(struct ib_pd *pd, struct mlx5_ib_srq *srq, in create_srq_user() argument 106 srq->wq_sig = !!(ucmd.flags & MLX5_SRQ_FLAG_SIGNATURE); in create_srq_user() 108 srq->umem = ib_umem_get(&ucontext->ibucontext, ucmd.buf_addr, buf_size, 0, 0); in create_srq_user() 109 if (IS_ERR(srq->umem)) { in create_srq_user() [all …]
|
H A D | mlx5_ib_cq.c | 169 struct mlx5_ib_srq *srq; in handle_responder() local 176 if (qp->ibqp.srq || qp->ibqp.xrcd) { in handle_responder() 182 srq = to_mibsrq(msrq); in handle_responder() 184 srq = to_msrq(qp->ibqp.srq); in handle_responder() 186 if (srq) { in handle_responder() 188 wc->wr_id = srq->wrid[wqe_ctr]; in handle_responder() 189 mlx5_ib_free_srq_wqe(srq, wqe_ctr); in handle_responder() 607 struct mlx5_ib_srq *srq; in mlx5_poll_one() local 609 if ((*cur_qp)->ibqp.srq) { in mlx5_poll_one() 1034 __mlx5_ib_cq_clean(struct mlx5_ib_cq * cq,u32 rsn,struct mlx5_ib_srq * srq) __mlx5_ib_cq_clean() argument 1085 mlx5_ib_cq_clean(struct mlx5_ib_cq * cq,u32 qpn,struct mlx5_ib_srq * srq) mlx5_ib_cq_clean() argument [all...] |
/freebsd/contrib/ofed/libmlx5/ |
H A D | srq.c | 44 static void *get_wqe(struct mlx5_srq *srq, int n) in get_wqe() argument 46 return srq->buf.buf + (n << srq->wqe_shift); in get_wqe() 49 int mlx5_copy_to_recv_srq(struct mlx5_srq *srq, int idx, void *buf, int size) in mlx5_copy_to_recv_srq() argument 55 int max = 1 << (srq->wqe_shift - 4); in mlx5_copy_to_recv_srq() 57 next = get_wqe(srq, idx); in mlx5_copy_to_recv_srq() 73 void mlx5_free_srq_wqe(struct mlx5_srq *srq, int ind) in mlx5_free_srq_wqe() argument 77 mlx5_spin_lock(&srq->lock); in mlx5_free_srq_wqe() 79 next = get_wqe(srq, srq->tail); in mlx5_free_srq_wqe() 81 srq->tail = ind; in mlx5_free_srq_wqe() 83 mlx5_spin_unlock(&srq->lock); in mlx5_free_srq_wqe() [all …]
|
H A D | verbs.c | 630 struct mlx5_srq *srq; in mlx5_create_srq() local 637 srq = calloc(1, sizeof *srq); in mlx5_create_srq() 638 if (!srq) { in mlx5_create_srq() 642 ibsrq = &srq->vsrq.srq; in mlx5_create_srq() 645 if (mlx5_spinlock_init(&srq->lock)) { in mlx5_create_srq() 670 srq->max = align_queue_size(attr->attr.max_wr + 1); in mlx5_create_srq() 671 srq->max_gs = attr->attr.max_sge; in mlx5_create_srq() 672 srq in mlx5_create_srq() 732 mlx5_modify_srq(struct ibv_srq * srq,struct ibv_srq_attr * attr,int attr_mask) mlx5_modify_srq() argument 741 mlx5_query_srq(struct ibv_srq * srq,struct ibv_srq_attr * attr) mlx5_query_srq() argument 749 mlx5_destroy_srq(struct ibv_srq * srq) mlx5_destroy_srq() argument 1775 mlx5_get_srq_num(struct ibv_srq * srq,uint32_t * srq_num) mlx5_get_srq_num() argument [all...] |
H A D | cq.c | 144 struct mlx5_resource *cur_rsc, struct mlx5_srq *srq) in handle_responder_lazy() argument 151 if (srq) { in handle_responder_lazy() 153 cq->ibv_cq.wr_id = srq->wrid[wqe_ctr]; in handle_responder_lazy() 154 mlx5_free_srq_wqe(srq, wqe_ctr); in handle_responder_lazy() 156 err = mlx5_copy_to_recv_srq(srq, wqe_ctr, cqe, in handle_responder_lazy() 159 err = mlx5_copy_to_recv_srq(srq, wqe_ctr, cqe - 1, in handle_responder_lazy() 185 struct mlx5_resource *cur_rsc, struct mlx5_srq *srq) in handle_responder() argument 194 if (srq) { in handle_responder() 196 wc->wr_id = srq->wrid[wqe_ctr]; in handle_responder() 197 mlx5_free_srq_wqe(srq, wqe_ctr); in handle_responder() [all …]
|
H A D | mlx5.h | 609 void __mlx5_cq_clean(struct mlx5_cq *cq, uint32_t qpn, struct mlx5_srq *srq); 610 void mlx5_cq_clean(struct mlx5_cq *cq, uint32_t qpn, struct mlx5_srq *srq); 615 int mlx5_modify_srq(struct ibv_srq *srq, struct ibv_srq_attr *attr, 617 int mlx5_query_srq(struct ibv_srq *srq, 619 int mlx5_destroy_srq(struct ibv_srq *srq); 620 int mlx5_alloc_srq_buf(struct ibv_context *context, struct mlx5_srq *srq); 621 void mlx5_free_srq_wqe(struct mlx5_srq *srq, int ind); 652 struct mlx5_srq *srq); 666 int mlx5_copy_to_recv_srq(struct mlx5_srq *srq, int idx, void *buf, int size); 669 int mlx5_get_srq_num(struct ibv_srq *srq, uint32_t *srq_num);
|
/freebsd/sys/dev/mlx5/mlx5_core/ |
H A D | mlx5_srq.c | 40 struct mlx5_core_srq *srq; in mlx5_srq_event() local 44 srq = radix_tree_lookup(&table->tree, srqn); in mlx5_srq_event() 45 if (srq) in mlx5_srq_event() 46 atomic_inc(&srq->refcount); in mlx5_srq_event() 50 if (!srq) { in mlx5_srq_event() 55 srq->event(srq, event_type); in mlx5_srq_event() 57 if (atomic_dec_and_test(&srq->refcount)) in mlx5_srq_event() 58 complete(&srq->free); in mlx5_srq_event() 116 struct mlx5_core_srq *srq; in mlx5_core_get_srq() local 120 srq = radix_tree_lookup(&table->tree, srqn); in mlx5_core_get_srq() [all …]
|
/freebsd/sys/dev/mlx4/mlx4_core/ |
H A D | mlx4_srq.c | 46 struct mlx4_srq *srq; in mlx4_srq_event() local 49 srq = radix_tree_lookup(&srq_table->tree, srqn & (dev->caps.num_srqs - 1)); in mlx4_srq_event() 51 if (srq) in mlx4_srq_event() 52 atomic_inc(&srq->refcount); in mlx4_srq_event() 58 srq->event(srq, event_type); in mlx4_srq_event() 60 if (atomic_dec_and_test(&srq->refcount)) in mlx4_srq_event() 61 complete(&srq->free); in mlx4_srq_event() 163 struct mlx4_mtt *mtt, u64 db_rec, struct mlx4_srq *srq) in mlx4_srq_alloc() argument 171 err = mlx4_srq_alloc_icm(dev, &srq->srqn); in mlx4_srq_alloc() 176 err = radix_tree_insert(&srq_table->tree, srq->srqn, srq); in mlx4_srq_alloc() [all …]
|
/freebsd/contrib/ofed/libibverbs/ |
H A D | compat-1_0.c | 77 struct ibv_srq_1_0 *srq; member 123 struct ibv_srq_1_0 *srq; member 187 int (*modify_srq)(struct ibv_srq *srq, 190 int (*query_srq)(struct ibv_srq *srq, 192 int (*destroy_srq)(struct ibv_srq *srq); 193 int (*post_srq_recv)(struct ibv_srq_1_0 *srq, 268 int __ibv_modify_srq_1_0(struct ibv_srq_1_0 *srq, struct ibv_srq_attr *srq_attr, 270 int __ibv_query_srq_1_0(struct ibv_srq_1_0 *srq, struct ibv_srq_attr *srq_attr); 271 int __ibv_destroy_srq_1_0(struct ibv_srq_1_0 *srq); 367 static int post_srq_recv_wrapper_1_0(struct ibv_srq_1_0 *srq, struct ibv_recv_wr_1_0 *wr, in post_srq_recv_wrapper_1_0() argument [all …]
|
H A D | verbs.c | 85 int __ibv_modify_srq(struct ibv_srq *srq, struct ibv_srq_attr *srq_attr, 87 int __ibv_query_srq(struct ibv_srq *srq, struct ibv_srq_attr *srq_attr); 88 int __ibv_destroy_srq(struct ibv_srq *srq); 544 struct ibv_srq *srq; in __ibv_create_srq() local 549 srq = pd->context->ops.create_srq(pd, srq_init_attr); in __ibv_create_srq() 550 if (!srq) in __ibv_create_srq() 553 srq->context = pd->context; in __ibv_create_srq() 554 srq->srq_context = srq_init_attr->srq_context; in __ibv_create_srq() 555 srq->pd = pd; in __ibv_create_srq() 556 srq->events_completed = 0; in __ibv_create_srq() [all …]
|
H A D | cmd.c | 641 struct ibv_srq *srq, struct ibv_srq_init_attr *attr, in ibv_cmd_create_srq() argument 646 cmd->user_handle = (uintptr_t) srq; in ibv_cmd_create_srq() 657 srq->handle = resp->srq_handle; in ibv_cmd_create_srq() 658 srq->context = pd->context; in ibv_cmd_create_srq() 676 struct verbs_srq *srq, int vsrq_sz, in ibv_cmd_create_srq_ex() argument 692 cmd->user_handle = (uintptr_t) srq; in ibv_cmd_create_srq_ex() 709 ret = pthread_mutex_init(&srq->srq.mutex, NULL); in ibv_cmd_create_srq_ex() 712 ret = pthread_cond_init(&srq->srq.cond, NULL); in ibv_cmd_create_srq_ex() 723 srq->srq.handle = resp->srq_handle; in ibv_cmd_create_srq_ex() 724 srq->srq.context = context; in ibv_cmd_create_srq_ex() [all …]
|
H A D | driver.h | 78 struct ibv_srq srq; member 211 struct ibv_srq *srq, struct ibv_srq_init_attr *attr, 215 struct verbs_srq *srq, int vsrq_sz, 219 int ibv_cmd_modify_srq(struct ibv_srq *srq, 223 int ibv_cmd_query_srq(struct ibv_srq *srq, 226 int ibv_cmd_destroy_srq(struct ibv_srq *srq); 268 int ibv_cmd_post_srq_recv(struct ibv_srq *srq, struct ibv_recv_wr *wr, 316 static inline int verbs_get_srq_num(struct ibv_srq *srq, uint32_t *srq_num) in verbs_get_srq_num() argument 318 struct verbs_srq *vsrq = container_of(srq, struct verbs_srq, srq); in verbs_get_srq_num()
|
H A D | device.c | 353 event->element.srq = (void *) (uintptr_t) ev.element; in __ibv_get_async_event() 408 struct ibv_srq *srq = event->element.srq; in __ibv_ack_async_event() local 410 pthread_mutex_lock(&srq->mutex); in __ibv_ack_async_event() 411 ++srq->events_completed; in __ibv_ack_async_event() 412 pthread_cond_signal(&srq->cond); in __ibv_ack_async_event() 413 pthread_mutex_unlock(&srq->mutex); in __ibv_ack_async_event()
|
H A D | verbs.h | 376 struct ibv_srq *srq; member 779 struct ibv_srq *srq; member 814 struct ibv_srq *srq; member 1046 struct ibv_srq *srq; member 1435 int (*modify_srq)(struct ibv_srq *srq, 1438 int (*query_srq)(struct ibv_srq *srq, 1440 int (*destroy_srq)(struct ibv_srq *srq); 1441 int (*post_srq_recv)(struct ibv_srq *srq, 1555 int (*get_srq_num)(struct ibv_srq *srq, uint32_t *srq_num); 1986 int ibv_modify_srq(struct ibv_srq *srq, [all …]
|
/freebsd/sys/dev/bnxt/bnxt_re/ |
H A D | qplib_fp.c | 73 if (!qp->srq) { in __bnxt_qplib_add_flush_qp() 119 if (!qp->srq) { in __bnxt_qplib_del_flush_qp() 388 struct bnxt_qplib_srq *srq; in bnxt_qplib_service_nq() local 394 srq = (struct bnxt_qplib_srq *)q_handle; in bnxt_qplib_service_nq() 395 bnxt_qplib_armen_db(&srq->dbinfo, in bnxt_qplib_service_nq() 613 struct bnxt_qplib_srq *srq) in __qplib_destroy_srq() argument 619 req.srq_cid = cpu_to_le32(srq->id); in __qplib_destroy_srq() 628 struct bnxt_qplib_srq *srq) in bnxt_qplib_destroy_srq() argument 633 rc = __qplib_destroy_srq(rcfw, srq); in bnxt_qplib_destroy_srq() 636 bnxt_qplib_free_hwq(res, &srq->hwq); in bnxt_qplib_destroy_srq() [all …]
|
/freebsd/sys/ofed/drivers/infiniband/core/ |
H A D | ib_verbs.c | 706 struct ib_srq *srq; in ib_create_srq() local 712 srq = rdma_zalloc_drv_obj(pd->device, ib_srq); in ib_create_srq() 713 if (!srq) in ib_create_srq() 716 srq->device = pd->device; in ib_create_srq() 717 srq->pd = pd; in ib_create_srq() 718 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq() 719 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq() 720 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq() 722 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq() 723 srq->ext.cq = srq_init_attr->ext.cq; in ib_create_srq() [all …]
|
/freebsd/sys/dev/qlnx/qlnxr/ |
H A D | qlnxr_verbs.c | 77 struct qlnxr_srq *srq, 82 qlnxr_alloc_srq_kernel_params(struct qlnxr_srq *srq, 88 struct qlnxr_srq *srq, 92 qlnxr_free_srq_user_params(struct qlnxr_srq *srq); 95 qlnxr_free_srq_kernel_params(struct qlnxr_srq *srq); 174 struct qlnxr_srq *srq = get_qlnxr_srq(ibsrq); in qlnxr_create_srq() local 184 srq->dev = dev; in qlnxr_create_srq() 185 hw_srq = &srq->hw_srq; in qlnxr_create_srq() 186 spin_lock_init(&srq->lock); in qlnxr_create_srq() 201 ret = qlnxr_init_srq_user_params(&ctx->ibucontext, srq, &ureq, 0, 0); in qlnxr_create_srq() [all …]
|
/freebsd/sys/ofed/include/uapi/rdma/ |
H A D | ib_user_cm.h | 156 __u8 srq; member 173 __u8 srq; member 253 __u8 srq; member 269 __u8 srq; member
|