/Linux-v4.19/drivers/infiniband/hw/mthca/ |
D | mthca_srq.c | 72 static void *get_wqe(struct mthca_srq *srq, int n) in get_wqe() argument 74 if (srq->is_direct) in get_wqe() 75 return srq->queue.direct.buf + (n << srq->wqe_shift); in get_wqe() 77 return srq->queue.page_list[(n << srq->wqe_shift) >> PAGE_SHIFT].buf + in get_wqe() 78 ((n << srq->wqe_shift) & (PAGE_SIZE - 1)); in get_wqe() 97 struct mthca_srq *srq, in mthca_tavor_init_srq_context() argument 102 context->wqe_base_ds = cpu_to_be64(1 << (srq->wqe_shift - 4)); in mthca_tavor_init_srq_context() 104 context->lkey = cpu_to_be32(srq->mr.ibmr.lkey); in mthca_tavor_init_srq_context() 115 struct mthca_srq *srq, in mthca_arbel_init_srq_context() argument 126 max = srq->max; in mthca_arbel_init_srq_context() [all …]
|
D | mthca_provider.c | 448 struct mthca_srq *srq; in mthca_create_srq() local 454 srq = kmalloc(sizeof *srq, GFP_KERNEL); in mthca_create_srq() 455 if (!srq) in mthca_create_srq() 473 srq->mr.ibmr.lkey = ucmd.lkey; in mthca_create_srq() 474 srq->db_index = ucmd.db_index; in mthca_create_srq() 478 &init_attr->attr, srq); in mthca_create_srq() 487 if (context && ib_copy_to_udata(udata, &srq->srqn, sizeof (__u32))) { in mthca_create_srq() 488 mthca_free_srq(to_mdev(pd->device), srq); in mthca_create_srq() 493 return &srq->ibsrq; in mthca_create_srq() 496 kfree(srq); in mthca_create_srq() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/mlx4/ |
D | srq.c | 41 static void *get_wqe(struct mlx4_ib_srq *srq, int n) in get_wqe() argument 43 return mlx4_buf_offset(&srq->buf, n << srq->msrq.wqe_shift); in get_wqe() 46 static void mlx4_ib_srq_event(struct mlx4_srq *srq, enum mlx4_event type) in mlx4_ib_srq_event() argument 49 struct ib_srq *ibsrq = &to_mibsrq(srq)->ibsrq; in mlx4_ib_srq_event() 53 event.element.srq = ibsrq; in mlx4_ib_srq_event() 63 "on SRQ %06x\n", type, srq->srqn); in mlx4_ib_srq_event() 76 struct mlx4_ib_srq *srq; in mlx4_ib_create_srq() local 91 srq = kmalloc(sizeof *srq, GFP_KERNEL); in mlx4_ib_create_srq() 92 if (!srq) in mlx4_ib_create_srq() 95 mutex_init(&srq->mutex); in mlx4_ib_create_srq() [all …]
|
D | cq.c | 671 struct mlx4_ib_srq *srq; in mlx4_ib_poll_one() local 747 } else if ((*cur_qp)->ibqp.srq) { in mlx4_ib_poll_one() 748 srq = to_msrq((*cur_qp)->ibqp.srq); in mlx4_ib_poll_one() 750 wc->wr_id = srq->wrid[wqe_ctr]; in mlx4_ib_poll_one() 751 mlx4_ib_free_srq_wqe(srq, wqe_ctr); in mlx4_ib_poll_one() 753 srq = to_mibsrq(msrq); in mlx4_ib_poll_one() 755 wc->wr_id = srq->wrid[wqe_ctr]; in mlx4_ib_poll_one() 756 mlx4_ib_free_srq_wqe(srq, wqe_ctr); in mlx4_ib_poll_one() 922 void __mlx4_ib_cq_clean(struct mlx4_ib_cq *cq, u32 qpn, struct mlx4_ib_srq *srq) in __mlx4_ib_cq_clean() argument 950 if (srq && !(cqe->owner_sr_opcode & MLX4_CQE_IS_SEND_MASK)) in __mlx4_ib_cq_clean() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/mlx5/ |
D | srq.c | 45 static void *get_wqe(struct mlx5_ib_srq *srq, int n) in get_wqe() argument 47 return mlx5_buf_offset(&srq->buf, n << srq->msrq.wqe_shift); in get_wqe() 50 static void mlx5_ib_srq_event(struct mlx5_core_srq *srq, enum mlx5_event type) in mlx5_ib_srq_event() argument 53 struct ib_srq *ibsrq = &to_mibsrq(srq)->ibsrq; in mlx5_ib_srq_event() 57 event.element.srq = ibsrq; in mlx5_ib_srq_event() 67 type, srq->srqn); in mlx5_ib_srq_event() 75 static int create_srq_user(struct ib_pd *pd, struct mlx5_ib_srq *srq, in create_srq_user() argument 111 srq->wq_sig = !!(ucmd.flags & MLX5_SRQ_FLAG_SIGNATURE); in create_srq_user() 113 srq->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr, buf_size, in create_srq_user() 115 if (IS_ERR(srq->umem)) { in create_srq_user() [all …]
|
/Linux-v4.19/drivers/infiniband/sw/rdmavt/ |
D | srq.c | 80 struct rvt_srq *srq; in rvt_create_srq() local 93 srq = kzalloc_node(sizeof(*srq), GFP_KERNEL, dev->dparms.node); in rvt_create_srq() 94 if (!srq) in rvt_create_srq() 100 srq->rq.size = srq_init_attr->attr.max_wr + 1; in rvt_create_srq() 101 srq->rq.max_sge = srq_init_attr->attr.max_sge; in rvt_create_srq() 102 sz = sizeof(struct ib_sge) * srq->rq.max_sge + in rvt_create_srq() 104 srq->rq.wq = udata ? in rvt_create_srq() 105 vmalloc_user(sizeof(struct rvt_rwq) + srq->rq.size * sz) : in rvt_create_srq() 106 vzalloc_node(sizeof(struct rvt_rwq) + srq->rq.size * sz, in rvt_create_srq() 108 if (!srq->rq.wq) { in rvt_create_srq() [all …]
|
D | qp.c | 789 if (!init_attr->srq) { in rvt_create_qp() 823 if (init_attr->srq) { in rvt_create_qp() 824 struct rvt_srq *srq = ibsrq_to_rvtsrq(init_attr->srq); in rvt_create_qp() local 826 if (srq->rq.max_sge > 1) in rvt_create_qp() 828 (srq->rq.max_sge - 1); in rvt_create_qp() 866 if (init_attr->srq) { in rvt_create_qp() 1495 attr->cap.max_recv_wr = qp->ibqp.srq ? 0 : qp->r_rq.size - 1; in rvt_query_qp() 1520 init_attr->srq = qp->ibqp.srq; in rvt_query_qp() 1548 !qp->ibqp.srq; in rvt_post_recv() 1954 struct rvt_srq *srq = ibsrq_to_rvtsrq(ibsrq); in rvt_post_srq_recv() local [all …]
|
/Linux-v4.19/drivers/infiniband/sw/rxe/ |
D | rxe_srq.c | 38 int rxe_srq_chk_attr(struct rxe_dev *rxe, struct rxe_srq *srq, in rxe_srq_chk_attr() argument 41 if (srq && srq->error) { in rxe_srq_chk_attr() 58 if (srq && srq->limit && (attr->max_wr < srq->limit)) { in rxe_srq_chk_attr() 60 attr->max_wr, srq->limit); in rxe_srq_chk_attr() 75 if (srq && (attr->srq_limit > srq->rq.queue->buf->index_mask)) { in rxe_srq_chk_attr() 78 srq->rq.queue->buf->index_mask); in rxe_srq_chk_attr() 100 int rxe_srq_from_init(struct rxe_dev *rxe, struct rxe_srq *srq, in rxe_srq_from_init() argument 109 srq->ibsrq.event_handler = init->event_handler; in rxe_srq_from_init() 110 srq->ibsrq.srq_context = init->srq_context; in rxe_srq_from_init() 111 srq->limit = init->attr.srq_limit; in rxe_srq_from_init() [all …]
|
D | rxe_verbs.c | 344 struct rxe_srq *srq; in rxe_create_srq() local 358 srq = rxe_alloc(&rxe->srq_pool); in rxe_create_srq() 359 if (!srq) { in rxe_create_srq() 364 rxe_add_index(srq); in rxe_create_srq() 366 srq->pd = pd; in rxe_create_srq() 368 err = rxe_srq_from_init(rxe, srq, init, context, uresp); in rxe_create_srq() 372 return &srq->ibsrq; in rxe_create_srq() 376 rxe_drop_index(srq); in rxe_create_srq() 377 rxe_drop_ref(srq); in rxe_create_srq() 387 struct rxe_srq *srq = to_rsrq(ibsrq); in rxe_modify_srq() local [all …]
|
D | rxe_resp.c | 322 struct rxe_srq *srq = qp->srq; in get_srq_wqe() local 323 struct rxe_queue *q = srq->rq.queue; in get_srq_wqe() 327 if (srq->error) in get_srq_wqe() 330 spin_lock_bh(&srq->rq.consumer_lock); in get_srq_wqe() 334 spin_unlock_bh(&srq->rq.consumer_lock); in get_srq_wqe() 344 if (srq->limit && srq->ibsrq.event_handler && in get_srq_wqe() 345 (queue_count(q) < srq->limit)) { in get_srq_wqe() 346 srq->limit = 0; in get_srq_wqe() 350 spin_unlock_bh(&srq->rq.consumer_lock); in get_srq_wqe() 354 spin_unlock_bh(&srq->rq.consumer_lock); in get_srq_wqe() [all …]
|
D | rxe_qp.c | 95 if (rxe_qp_chk_cap(rxe, cap, !!init->srq)) in rxe_qp_chk_init() 284 if (!qp->srq) { in rxe_qp_init_resp() 333 struct rxe_srq *srq = init->srq ? to_rsrq(init->srq) : NULL; in rxe_qp_from_init() local 339 if (srq) in rxe_qp_from_init() 340 rxe_add_ref(srq); in rxe_qp_from_init() 345 qp->srq = srq; in rxe_qp_from_init() 365 if (srq) in rxe_qp_from_init() 366 rxe_drop_ref(srq); in rxe_qp_from_init() 381 init->srq = qp->ibqp.srq; in rxe_qp_to_init() 387 if (!qp->srq) { in rxe_qp_to_init() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/vmw_pvrdma/ |
D | pvrdma_srq.c | 65 struct pvrdma_srq *srq = to_vsrq(ibsrq); in pvrdma_query_srq() local 74 cmd->srq_handle = srq->srq_handle; in pvrdma_query_srq() 103 struct pvrdma_srq *srq = NULL; in pvrdma_create_srq() local 138 srq = kmalloc(sizeof(*srq), GFP_KERNEL); in pvrdma_create_srq() 139 if (!srq) { in pvrdma_create_srq() 144 spin_lock_init(&srq->lock); in pvrdma_create_srq() 145 refcount_set(&srq->refcnt, 1); in pvrdma_create_srq() 146 init_completion(&srq->free); in pvrdma_create_srq() 156 srq->umem = ib_umem_get(pd->uobject->context, in pvrdma_create_srq() 159 if (IS_ERR(srq->umem)) { in pvrdma_create_srq() [all …]
|
/Linux-v4.19/drivers/net/ethernet/mellanox/mlx5/core/ |
D | srq.c | 45 struct mlx5_core_srq *srq; in mlx5_srq_event() local 49 srq = radix_tree_lookup(&table->tree, srqn); in mlx5_srq_event() 50 if (srq) in mlx5_srq_event() 51 atomic_inc(&srq->refcount); in mlx5_srq_event() 55 if (!srq) { in mlx5_srq_event() 60 srq->event(srq, event_type); in mlx5_srq_event() 62 if (atomic_dec_and_test(&srq->refcount)) in mlx5_srq_event() 63 complete(&srq->free); in mlx5_srq_event() 138 struct mlx5_core_srq *srq; in mlx5_core_get_srq() local 142 srq = radix_tree_lookup(&table->tree, srqn); in mlx5_core_get_srq() [all …]
|
/Linux-v4.19/drivers/net/ethernet/mellanox/mlx4/ |
D | 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 refcount_inc(&srq->refcount); in mlx4_srq_event() 58 srq->event(srq, event_type); in mlx4_srq_event() 60 if (refcount_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 …]
|
/Linux-v4.19/drivers/infiniband/hw/cxgb4/ |
D | t4.h | 424 static inline u32 t4_srq_avail(struct t4_srq *srq) in t4_srq_avail() argument 426 return srq->size - 1 - srq->in_use; in t4_srq_avail() 429 static inline void t4_srq_produce(struct t4_srq *srq, u8 len16) in t4_srq_produce() argument 431 srq->in_use++; in t4_srq_produce() 432 if (++srq->pidx == srq->size) in t4_srq_produce() 433 srq->pidx = 0; in t4_srq_produce() 434 srq->wq_pidx += DIV_ROUND_UP(len16 * 16, T4_EQ_ENTRY_SIZE); in t4_srq_produce() 435 if (srq->wq_pidx >= srq->size * T4_RQ_NUM_SLOTS) in t4_srq_produce() 436 srq->wq_pidx %= srq->size * T4_RQ_NUM_SLOTS; in t4_srq_produce() 437 srq->queue[srq->size].status.host_pidx = srq->pidx; in t4_srq_produce() [all …]
|
D | cq.c | 463 static void post_pending_srq_wrs(struct t4_srq *srq) in post_pending_srq_wrs() argument 468 while (srq->pending_in_use) { in post_pending_srq_wrs() 469 pwr = &srq->pending_wrs[srq->pending_cidx]; in post_pending_srq_wrs() 470 srq->sw_rq[srq->pidx].wr_id = pwr->wr_id; in post_pending_srq_wrs() 471 srq->sw_rq[srq->pidx].valid = 1; in post_pending_srq_wrs() 475 srq->cidx, srq->pidx, srq->wq_pidx, in post_pending_srq_wrs() 476 srq->in_use, srq->size, in post_pending_srq_wrs() 479 c4iw_copy_wr_to_srq(srq, &pwr->wqe, pwr->len16); in post_pending_srq_wrs() 480 t4_srq_consume_pending_wr(srq); in post_pending_srq_wrs() 481 t4_srq_produce(srq, pwr->len16); in post_pending_srq_wrs() [all …]
|
D | qp.c | 897 ucontext ? &ucontext->uctx : &rhp->rdev.uctx, !qhp->srq); in free_qp_work() 1360 static void defer_srq_wr(struct t4_srq *srq, union t4_recv_wr *wqe, in defer_srq_wr() argument 1363 struct t4_srq_pending_wr *pwr = &srq->pending_wrs[srq->pending_pidx]; in defer_srq_wr() 1366 __func__, srq->cidx, srq->pidx, srq->wq_pidx, in defer_srq_wr() 1367 srq->in_use, srq->ooo_count, in defer_srq_wr() 1368 (unsigned long long)wr_id, srq->pending_cidx, in defer_srq_wr() 1369 srq->pending_pidx, srq->pending_in_use); in defer_srq_wr() 1373 t4_srq_produce_pending_wr(srq); in defer_srq_wr() 1380 struct c4iw_srq *srq; in c4iw_post_srq_recv() local 1387 srq = to_c4iw_srq(ibsrq); in c4iw_post_srq_recv() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/bnxt_re/ |
D | qplib_fp.c | 55 static void bnxt_qplib_arm_srq(struct bnxt_qplib_srq *srq, u32 arm_type); 80 if (!qp->srq) { in __bnxt_qplib_add_flush_qp() 128 if (!qp->srq) { in __bnxt_qplib_del_flush_qp() 482 static void bnxt_qplib_arm_srq(struct bnxt_qplib_srq *srq, u32 arm_type) in bnxt_qplib_arm_srq() argument 484 struct bnxt_qplib_hwq *srq_hwq = &srq->hwq; in bnxt_qplib_arm_srq() 490 sw_prod = (arm_type == DBR_DBR_TYPE_SRQ_ARM) ? srq->threshold : in bnxt_qplib_arm_srq() 494 db_msg.type_xid = cpu_to_le32(((srq->id << DBR_DBR_XID_SFT) & in bnxt_qplib_arm_srq() 497 srq->dbr_base : srq->dpi->dbr; in bnxt_qplib_arm_srq() 503 struct bnxt_qplib_srq *srq) in bnxt_qplib_destroy_srq() argument 514 req.srq_cid = cpu_to_le32(srq->id); in bnxt_qplib_destroy_srq() [all …]
|
D | qplib_fp.h | 292 struct bnxt_qplib_srq *srq; member 458 struct bnxt_qplib_srq *srq, 479 struct bnxt_qplib_srq *srq, 482 struct bnxt_qplib_srq *srq); 484 struct bnxt_qplib_srq *srq); 486 struct bnxt_qplib_srq *srq); 488 struct bnxt_qplib_srq *srq); 489 int bnxt_qplib_post_srq_recv(struct bnxt_qplib_srq *srq,
|
D | ib_verbs.c | 905 if (!qp->qplib_qp.srq) { in bnxt_re_init_user_qp() 1047 struct bnxt_re_srq *srq; in bnxt_re_create_qp() local 1104 if (qp_init_attr->srq) { in bnxt_re_create_qp() 1105 srq = container_of(qp_init_attr->srq, struct bnxt_re_srq, in bnxt_re_create_qp() 1107 if (!srq) { in bnxt_re_create_qp() 1112 qp->qplib_qp.srq = &srq->qplib_srq; in bnxt_re_create_qp() 1328 struct bnxt_re_srq *srq = container_of(ib_srq, struct bnxt_re_srq, in bnxt_re_destroy_srq() local 1330 struct bnxt_re_dev *rdev = srq->rdev; in bnxt_re_destroy_srq() 1331 struct bnxt_qplib_srq *qplib_srq = &srq->qplib_srq; in bnxt_re_destroy_srq() 1343 if (srq->umem) in bnxt_re_destroy_srq() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/ocrdma/ |
D | ocrdma_verbs.c | 1191 if (!attrs->srq && (attrs->cap.max_recv_wr > dev->attr.max_rqe)) { in ocrdma_check_qp_params() 1246 int dpp_credit_lmt, int srq) in ocrdma_copy_qp_uresp() argument 1263 if (!srq) { in ocrdma_copy_qp_uresp() 1290 if (!srq) { in ocrdma_copy_qp_uresp() 1417 (attrs->srq != NULL)); in ocrdma_create_qp() 1617 static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, unsigned int idx) in ocrdma_srq_toggle_bit() argument 1622 srq->idx_bit_fields[i] ^= mask; in ocrdma_srq_toggle_bit() 1684 if (is_hw_sq_empty(qp) && (!qp->srq && is_hw_rq_empty(qp))) in ocrdma_discard_cqes() 1701 if (qp->srq) { in ocrdma_discard_cqes() 1704 qp->srq->rq.max_wqe_idx; in ocrdma_discard_cqes() [all …]
|
/Linux-v4.19/drivers/infiniband/core/ |
D | verbs.c | 934 struct ib_srq *srq; in ib_create_srq() local 939 srq = pd->device->create_srq(pd, srq_init_attr, NULL); in ib_create_srq() 941 if (!IS_ERR(srq)) { in ib_create_srq() 942 srq->device = pd->device; in ib_create_srq() 943 srq->pd = pd; in ib_create_srq() 944 srq->uobject = NULL; in ib_create_srq() 945 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq() 946 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq() 947 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq() 948 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq() [all …]
|
/Linux-v4.19/drivers/net/ |
D | eql.c | 262 static int eql_enslave(struct net_device *dev, slaving_request_t __user *srq); 263 static int eql_emancipate(struct net_device *dev, slaving_request_t __user *srq); 410 slaving_request_t srq; in eql_enslave() local 412 if (copy_from_user(&srq, srqp, sizeof (slaving_request_t))) in eql_enslave() 415 slave_dev = __dev_get_by_name(&init_net, srq.slave_name); in eql_enslave() 431 s->priority = srq.priority; in eql_enslave() 432 s->priority_bps = srq.priority; in eql_enslave() 433 s->priority_Bps = srq.priority / 8; in eql_enslave() 453 slaving_request_t srq; in eql_emancipate() local 456 if (copy_from_user(&srq, srqp, sizeof (slaving_request_t))) in eql_emancipate() [all …]
|
/Linux-v4.19/drivers/infiniband/hw/qedr/ |
D | verbs.c | 95 struct qedr_srq *srq = get_qedr_srq(ibsrq); in qedr_query_srq() local 97 srq_attr->srq_limit = srq->srq_limit; in qedr_query_srq() 1203 struct qedr_srq *srq, struct ib_udata *udata) in qedr_copy_srq_uresp() argument 1208 uresp.srq_id = srq->srq_id; in qedr_copy_srq_uresp() 1285 if (attrs->srq) { in qedr_set_common_qp_params() 1286 qp->srq = get_qedr_srq(attrs->srq); in qedr_set_common_qp_params() 1298 qp->state, qp->signaled, (attrs->srq) ? 1 : 0); in qedr_set_common_qp_params() 1309 if (!qp->srq) { in qedr_set_roce_db_info() 1339 static void qedr_free_srq_user_params(struct qedr_srq *srq) in qedr_free_srq_user_params() argument 1341 qedr_free_pbl(srq->dev, &srq->usrq.pbl_info, srq->usrq.pbl_tbl); in qedr_free_srq_user_params() [all …]
|
/Linux-v4.19/include/uapi/rdma/ |
D | ib_user_cm.h | 151 __u8 srq; member 168 __u8 srq; member 248 __u8 srq; member 264 __u8 srq; member
|