Lines Matching refs:init_attr
518 struct ib_qp_init_attr *init_attr,
521 rss_ctx->base_qpn_tbl_sz = init_attr->rwq_ind_tbl->ind_tbl[0]->wq_num |
522 (init_attr->rwq_ind_tbl->log_ind_tbl_size << 24);
620 struct ib_qp_init_attr *init_attr,
649 (struct ib_qp *)init_attr->rwq_ind_tbl->ind_tbl[0]))->mtt;
657 err = set_qp_rss(dev, qp->rss_ctx, init_attr, ucmd);
676 struct ib_qp_init_attr *init_attr,
716 if (init_attr->qp_type != IB_QPT_RAW_PACKET) {
718 init_attr->qp_type);
722 if (init_attr->create_flags) {
727 if (init_attr->send_cq || init_attr->cap.max_send_wr) {
735 err = create_qp_rss(to_mdev(pd->device), init_attr, &ucmd, qp);
826 static int create_rq(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
873 if (init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS)
876 err = set_rq_size(dev, &init_attr->cap, true, true, qp, qp->inl_recv_sz);
925 mlx4_ib_lock_cqs(to_mcq(init_attr->send_cq),
926 to_mcq(init_attr->recv_cq));
934 mcq = to_mcq(init_attr->send_cq);
936 mcq = to_mcq(init_attr->recv_cq);
938 mlx4_ib_unlock_cqs(to_mcq(init_attr->send_cq),
939 to_mcq(init_attr->recv_cq));
956 static int create_qp_common(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
965 enum mlx4_ib_qp_type qp_type = (enum mlx4_ib_qp_type) init_attr->qp_type;
973 !(init_attr->create_flags & MLX4_IB_SRIOV_SQP))) {
974 if (init_attr->qp_type == IB_QPT_GSI)
986 init_attr->cap.max_recv_sge++;
987 } else if (init_attr->create_flags & MLX4_IB_SRIOV_TUNNEL_QP) {
989 container_of(init_attr,
990 struct mlx4_ib_qp_tunnel_init_attr, init_attr);
1010 if (init_attr->qp_type == IB_QPT_SMI ||
1011 init_attr->qp_type == IB_QPT_GSI || qp_type == MLX4_IB_QPT_SMI ||
1028 if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)
1046 if (init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS) {
1057 err = set_rq_size(dev, &init_attr->cap, udata,
1058 qp_has_rq(init_attr), qp, qp->inl_recv_sz);
1085 if (qp_has_rq(init_attr)) {
1092 err = set_rq_size(dev, &init_attr->cap, udata,
1093 qp_has_rq(init_attr), qp, 0);
1099 if (init_attr->create_flags & IB_QP_CREATE_IPOIB_UD_LSO)
1102 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
1112 err = set_kernel_sq_size(dev, &init_attr->cap, qp_type, qp);
1116 if (qp_has_rq(init_attr)) {
1162 if (init_attr->qp_type == IB_QPT_RAW_PACKET)
1164 (init_attr->cap.max_send_wr ?
1166 (init_attr->cap.max_recv_wr ?
1179 if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK)
1186 if (init_attr->qp_type == IB_QPT_XRC_TGT)
1199 mlx4_ib_lock_cqs(to_mcq(init_attr->send_cq),
1200 to_mcq(init_attr->recv_cq));
1208 mcq = to_mcq(init_attr->send_cq);
1210 mcq = to_mcq(init_attr->recv_cq);
1212 mlx4_ib_unlock_cqs(to_mcq(init_attr->send_cq),
1213 to_mcq(init_attr->recv_cq));
1229 if (qp_has_rq(init_attr))
1245 if (!udata && qp_has_rq(init_attr))
1482 struct ib_qp_init_attr *init_attr,
1489 if (init_attr->rwq_ind_tbl)
1490 return _mlx4_ib_create_qp_rss(pd, qp, init_attr, udata);
1496 if (init_attr->create_flags & ~(MLX4_IB_QP_LSO |
1504 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
1505 if (init_attr->qp_type != IB_QPT_UD)
1509 if (init_attr->create_flags) {
1510 if (udata && init_attr->create_flags & ~(sup_u_create_flags))
1513 if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP |
1516 init_attr->qp_type != IB_QPT_UD) ||
1517 (init_attr->create_flags & MLX4_IB_SRIOV_SQP &&
1518 init_attr->qp_type > IB_QPT_GSI) ||
1519 (init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI &&
1520 init_attr->qp_type != IB_QPT_GSI))
1524 switch (init_attr->qp_type) {
1526 pd = to_mxrcd(init_attr->xrcd)->pd;
1527 xrcdn = to_mxrcd(init_attr->xrcd)->xrcdn;
1528 init_attr->send_cq = to_mxrcd(init_attr->xrcd)->cq;
1533 init_attr->recv_cq = init_attr->send_cq;
1541 err = create_qp_common(pd, init_attr, udata, 0, qp);
1553 if (init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI) {
1561 sqpn = get_sqp_num(to_mdev(pd->device), init_attr);
1566 err = create_qp_common(pd, init_attr, udata, sqpn, qp);
1570 qp->port = init_attr->port_num;
1571 qp->ibqp.qp_num = init_attr->qp_type == IB_QPT_SMI ? 0 :
1572 init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI ? sqpn : 1;
1583 struct ib_qp_init_attr *init_attr,
1585 struct ib_device *device = pd ? pd->device : init_attr->xrcd->device;
1595 ret = _mlx4_ib_create_qp(pd, qp, init_attr, udata);
1601 if (init_attr->qp_type == IB_QPT_GSI &&
1602 !(init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI)) {
1604 int is_eth = rdma_cap_eth_ah(&dev->ib_dev, init_attr->port_num);
1608 init_attr->create_flags |= MLX4_IB_QP_CREATE_ROCE_V2_GSI;
1609 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
1619 init_attr->create_flags &= ~MLX4_IB_QP_CREATE_ROCE_V2_GSI;
4085 struct ib_wq_init_attr *init_attr,
4114 if (init_attr->wq_type != IB_WQT_RQ) {
4115 pr_debug("unsupported wq type %d\n", init_attr->wq_type);
4119 if (init_attr->create_flags & ~IB_WQ_FLAGS_SCATTER_FCS ||
4122 init_attr->create_flags);
4134 ib_qp_init_attr.qp_context = init_attr->wq_context;
4136 ib_qp_init_attr.cap.max_recv_wr = init_attr->max_wr;
4137 ib_qp_init_attr.cap.max_recv_sge = init_attr->max_sge;
4138 ib_qp_init_attr.recv_cq = init_attr->cq;
4141 if (init_attr->create_flags & IB_WQ_FLAGS_SCATTER_FCS)
4150 qp->ibwq.event_handler = init_attr->event_handler;
4296 struct ib_rwq_ind_table_init_attr *init_attr,
4300 unsigned int ind_tbl_size = 1 << init_attr->log_ind_tbl_size;
4323 base_wqn = init_attr->ind_tbl[0]->wq_num;
4332 if (++base_wqn != init_attr->ind_tbl[i]->wq_num) {