Lines Matching defs:init_attr
553 struct ib_qp_init_attr *init_attr,
556 rss_ctx->base_qpn_tbl_sz = init_attr->rwq_ind_tbl->ind_tbl[0]->wq_num |
557 (init_attr->rwq_ind_tbl->log_ind_tbl_size << 24);
655 struct ib_qp_init_attr *init_attr,
684 (struct ib_qp *)init_attr->rwq_ind_tbl->ind_tbl[0]))->mtt;
692 err = set_qp_rss(dev, qp->rss_ctx, init_attr, ucmd);
711 struct ib_qp_init_attr *init_attr,
751 if (init_attr->qp_type != IB_QPT_RAW_PACKET) {
753 init_attr->qp_type);
757 if (init_attr->create_flags) {
762 if (init_attr->send_cq || init_attr->cap.max_send_wr) {
770 err = create_qp_rss(to_mdev(pd->device), init_attr, &ucmd, qp);
861 static int create_rq(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
908 if (init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS)
911 err = set_rq_size(dev, &init_attr->cap, true, true, qp, qp->inl_recv_sz);
960 mlx4_ib_lock_cqs(to_mcq(init_attr->send_cq),
961 to_mcq(init_attr->recv_cq));
969 mcq = to_mcq(init_attr->send_cq);
971 mcq = to_mcq(init_attr->recv_cq);
973 mlx4_ib_unlock_cqs(to_mcq(init_attr->send_cq),
974 to_mcq(init_attr->recv_cq));
991 static int create_qp_common(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
1000 enum mlx4_ib_qp_type qp_type = (enum mlx4_ib_qp_type) init_attr->qp_type;
1008 !(init_attr->create_flags & MLX4_IB_SRIOV_SQP))) {
1009 if (init_attr->qp_type == IB_QPT_GSI)
1021 init_attr->cap.max_recv_sge++;
1022 } else if (init_attr->create_flags & MLX4_IB_SRIOV_TUNNEL_QP) {
1024 container_of(init_attr,
1025 struct mlx4_ib_qp_tunnel_init_attr, init_attr);
1045 if (init_attr->qp_type == IB_QPT_SMI ||
1046 init_attr->qp_type == IB_QPT_GSI || qp_type == MLX4_IB_QPT_SMI ||
1063 if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)
1081 if (init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS) {
1092 err = set_rq_size(dev, &init_attr->cap, udata,
1093 qp_has_rq(init_attr), qp, qp->inl_recv_sz);
1120 if (qp_has_rq(init_attr)) {
1127 err = set_rq_size(dev, &init_attr->cap, udata,
1128 qp_has_rq(init_attr), qp, 0);
1134 if (init_attr->create_flags & IB_QP_CREATE_IPOIB_UD_LSO)
1137 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
1147 err = set_kernel_sq_size(dev, &init_attr->cap, qp_type, qp);
1151 if (qp_has_rq(init_attr)) {
1197 if (init_attr->qp_type == IB_QPT_RAW_PACKET)
1199 (init_attr->cap.max_send_wr ?
1201 (init_attr->cap.max_recv_wr ?
1214 if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK)
1221 if (init_attr->qp_type == IB_QPT_XRC_TGT)
1234 mlx4_ib_lock_cqs(to_mcq(init_attr->send_cq),
1235 to_mcq(init_attr->recv_cq));
1243 mcq = to_mcq(init_attr->send_cq);
1245 mcq = to_mcq(init_attr->recv_cq);
1247 mlx4_ib_unlock_cqs(to_mcq(init_attr->send_cq),
1248 to_mcq(init_attr->recv_cq));
1264 if (qp_has_rq(init_attr))
1280 if (!udata && qp_has_rq(init_attr))
1517 struct ib_qp_init_attr *init_attr,
1524 if (init_attr->rwq_ind_tbl)
1525 return _mlx4_ib_create_qp_rss(pd, qp, init_attr, udata);
1531 if (init_attr->create_flags & ~(MLX4_IB_QP_LSO |
1539 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
1540 if (init_attr->qp_type != IB_QPT_UD)
1544 if (init_attr->create_flags) {
1545 if (udata && init_attr->create_flags & ~(sup_u_create_flags))
1548 if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP |
1551 init_attr->qp_type != IB_QPT_UD) ||
1552 (init_attr->create_flags & MLX4_IB_SRIOV_SQP &&
1553 init_attr->qp_type > IB_QPT_GSI) ||
1554 (init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI &&
1555 init_attr->qp_type != IB_QPT_GSI))
1559 switch (init_attr->qp_type) {
1561 pd = to_mxrcd(init_attr->xrcd)->pd;
1562 xrcdn = to_mxrcd(init_attr->xrcd)->xrcdn;
1563 init_attr->send_cq = to_mxrcd(init_attr->xrcd)->cq;
1568 init_attr->recv_cq = init_attr->send_cq;
1576 err = create_qp_common(pd, init_attr, udata, 0, qp);
1588 if (init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI) {
1596 sqpn = get_sqp_num(to_mdev(pd->device), init_attr);
1601 err = create_qp_common(pd, init_attr, udata, sqpn, qp);
1605 if (init_attr->create_flags &
1610 qp->port = init_attr->port_num;
1611 qp->ibqp.qp_num = init_attr->qp_type == IB_QPT_SMI ? 0 :
1612 init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI ? sqpn : 1;
1622 int mlx4_ib_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init_attr,
1632 ret = _mlx4_ib_create_qp(pd, qp, init_attr, udata);
1636 if (init_attr->qp_type == IB_QPT_GSI &&
1637 !(init_attr->create_flags & MLX4_IB_QP_CREATE_ROCE_V2_GSI)) {
1639 int is_eth = rdma_cap_eth_ah(&dev->ib_dev, init_attr->port_num);
1643 init_attr->create_flags |= MLX4_IB_QP_CREATE_ROCE_V2_GSI;
1644 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
1654 init_attr->create_flags &= ~MLX4_IB_QP_CREATE_ROCE_V2_GSI;
4120 struct ib_wq_init_attr *init_attr,
4149 if (init_attr->wq_type != IB_WQT_RQ) {
4150 pr_debug("unsupported wq type %d\n", init_attr->wq_type);
4154 if (init_attr->create_flags & ~IB_WQ_FLAGS_SCATTER_FCS ||
4157 init_attr->create_flags);
4169 ib_qp_init_attr.qp_context = init_attr->wq_context;
4171 ib_qp_init_attr.cap.max_recv_wr = init_attr->max_wr;
4172 ib_qp_init_attr.cap.max_recv_sge = init_attr->max_sge;
4173 ib_qp_init_attr.recv_cq = init_attr->cq;
4176 if (init_attr->create_flags & IB_WQ_FLAGS_SCATTER_FCS)
4185 qp->ibwq.event_handler = init_attr->event_handler;
4331 struct ib_rwq_ind_table_init_attr *init_attr,
4335 unsigned int ind_tbl_size = 1 << init_attr->log_ind_tbl_size;
4358 base_wqn = init_attr->ind_tbl[0]->wq_num;
4367 if (++base_wqn != init_attr->ind_tbl[i]->wq_num) {