Lines Matching refs:srq

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()
1342 ib_umem_release(srq->usrq.umem); in qedr_free_srq_user_params()
1343 ib_umem_release(srq->prod_umem); in qedr_free_srq_user_params()
1346 static void qedr_free_srq_kernel_params(struct qedr_srq *srq) in qedr_free_srq_kernel_params() argument
1348 struct qedr_srq_hwq_info *hw_srq = &srq->hw_srq; in qedr_free_srq_kernel_params()
1349 struct qedr_dev *dev = srq->dev; in qedr_free_srq_kernel_params()
1359 struct qedr_srq *srq, in qedr_init_srq_user_params() argument
1366 rc = qedr_init_user_queue(ib_ctx, srq->dev, &srq->usrq, ureq->srq_addr, in qedr_init_srq_user_params()
1371 srq->prod_umem = ib_umem_get(ib_ctx, ureq->prod_pair_addr, in qedr_init_srq_user_params()
1374 if (IS_ERR(srq->prod_umem)) { in qedr_init_srq_user_params()
1375 qedr_free_pbl(srq->dev, &srq->usrq.pbl_info, srq->usrq.pbl_tbl); in qedr_init_srq_user_params()
1376 ib_umem_release(srq->usrq.umem); in qedr_init_srq_user_params()
1377 DP_ERR(srq->dev, in qedr_init_srq_user_params()
1379 PTR_ERR(srq->prod_umem)); in qedr_init_srq_user_params()
1380 return PTR_ERR(srq->prod_umem); in qedr_init_srq_user_params()
1383 sg = srq->prod_umem->sg_head.sgl; in qedr_init_srq_user_params()
1384 srq->hw_srq.phy_prod_pair_addr = sg_dma_address(sg); in qedr_init_srq_user_params()
1389 static int qedr_alloc_srq_kernel_params(struct qedr_srq *srq, in qedr_alloc_srq_kernel_params() argument
1393 struct qedr_srq_hwq_info *hw_srq = &srq->hw_srq; in qedr_alloc_srq_kernel_params()
1452 struct qedr_srq *srq; in qedr_create_srq() local
1463 srq = kzalloc(sizeof(*srq), GFP_KERNEL); in qedr_create_srq()
1464 if (!srq) in qedr_create_srq()
1467 srq->dev = dev; in qedr_create_srq()
1468 hw_srq = &srq->hw_srq; in qedr_create_srq()
1469 spin_lock_init(&srq->lock); in qedr_create_srq()
1484 rc = qedr_init_srq_user_params(ib_ctx, srq, &ureq, 0, 0); in qedr_create_srq()
1488 page_cnt = srq->usrq.pbl_info.num_pbes; in qedr_create_srq()
1489 pbl_base_addr = srq->usrq.pbl_tbl->pa; in qedr_create_srq()
1491 page_size = BIT(srq->usrq.umem->page_shift); in qedr_create_srq()
1495 rc = qedr_alloc_srq_kernel_params(srq, dev, init_attr); in qedr_create_srq()
1516 srq->srq_id = out_params.srq_id; in qedr_create_srq()
1519 rc = qedr_copy_srq_uresp(dev, srq, udata); in qedr_create_srq()
1524 rc = qedr_idr_add(dev, &dev->srqidr, srq, srq->srq_id); in qedr_create_srq()
1529 "create srq: created srq with srq_id=0x%0x\n", srq->srq_id); in qedr_create_srq()
1530 return &srq->ibsrq; in qedr_create_srq()
1533 destroy_in_params.srq_id = srq->srq_id; in qedr_create_srq()
1538 qedr_free_srq_user_params(srq); in qedr_create_srq()
1540 qedr_free_srq_kernel_params(srq); in qedr_create_srq()
1542 kfree(srq); in qedr_create_srq()
1551 struct qedr_srq *srq = get_qedr_srq(ibsrq); in qedr_destroy_srq() local
1553 qedr_idr_remove(dev, &dev->srqidr, srq->srq_id); in qedr_destroy_srq()
1554 in_params.srq_id = srq->srq_id; in qedr_destroy_srq()
1558 qedr_free_srq_user_params(srq); in qedr_destroy_srq()
1560 qedr_free_srq_kernel_params(srq); in qedr_destroy_srq()
1564 srq->srq_id); in qedr_destroy_srq()
1565 kfree(srq); in qedr_destroy_srq()
1575 struct qedr_srq *srq = get_qedr_srq(ibsrq); in qedr_modify_srq() local
1581 attr_mask, srq); in qedr_modify_srq()
1586 if (attr->srq_limit >= srq->hw_srq.max_wr) { in qedr_modify_srq()
1589 attr->srq_limit, srq->hw_srq.max_wr); in qedr_modify_srq()
1593 in_params.srq_id = srq->srq_id; in qedr_modify_srq()
1600 srq->srq_limit = attr->srq_limit; in qedr_modify_srq()
1603 "modify srq: modified srq with srq_id=0x%0x\n", srq->srq_id); in qedr_modify_srq()
1629 if (!qp->srq) { in qedr_init_common_qp_in_params()
1634 params->srq_id = qp->srq->srq_id; in qedr_init_common_qp_in_params()
1686 if (!qp->srq) { in qedr_iwarp_populate_user_qp()
1735 if (!qp->srq) { in qedr_create_user_qp()
1749 if (!qp->srq) { in qedr_create_user_qp()
3587 struct qedr_srq *srq = get_qedr_srq(ibsrq); in qedr_post_srq_recv() local
3589 struct qedr_dev *dev = srq->dev; in qedr_post_srq_recv()
3596 spin_lock_irqsave(&srq->lock, flags); in qedr_post_srq_recv()
3598 hw_srq = &srq->hw_srq; in qedr_post_srq_recv()
3599 pbl = &srq->hw_srq.pbl; in qedr_post_srq_recv()
3605 wr->num_sge > srq->hw_srq.max_sges) { in qedr_post_srq_recv()
3608 wr->num_sge, srq->hw_srq.max_sges); in qedr_post_srq_recv()
3619 srq->hw_srq.wr_prod_cnt++; in qedr_post_srq_recv()
3650 *srq->hw_srq.virt_prod_pair_addr = hw_srq->sge_prod; in qedr_post_srq_recv()
3652 *((u8 *)srq->hw_srq.virt_prod_pair_addr + offset) = in qedr_post_srq_recv()
3662 spin_unlock_irqrestore(&srq->lock, flags); in qedr_post_srq_recv()
4062 struct qedr_srq *srq = qp->srq; in process_resp_one_srq() local
4079 srq->hw_srq.wr_cons_cnt++; in process_resp_one_srq()