aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mthca/mthca_qp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_qp.c')
-rw-r--r--drivers/infiniband/hw/mthca/mthca_qp.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c
index 8fe6fee7a97a..fee60c852d14 100644
--- a/drivers/infiniband/hw/mthca/mthca_qp.c
+++ b/drivers/infiniband/hw/mthca/mthca_qp.c
@@ -701,6 +701,19 @@ int mthca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
701 qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_PRIMARY_ADDR_PATH); 701 qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_PRIMARY_ADDR_PATH);
702 } 702 }
703 703
704 if (ibqp->qp_type == IB_QPT_RC &&
705 cur_state == IB_QPS_INIT && new_state == IB_QPS_RTR) {
706 u8 sched_queue = ibqp->uobject ? 0x2 : 0x1;
707
708 if (mthca_is_memfree(dev))
709 qp_context->rlkey_arbel_sched_queue |= sched_queue;
710 else
711 qp_context->tavor_sched_queue |= cpu_to_be32(sched_queue);
712
713 qp_param->opt_param_mask |=
714 cpu_to_be32(MTHCA_QP_OPTPAR_SCHED_QUEUE);
715 }
716
704 if (attr_mask & IB_QP_TIMEOUT) { 717 if (attr_mask & IB_QP_TIMEOUT) {
705 qp_context->pri_path.ackto = attr->timeout << 3; 718 qp_context->pri_path.ackto = attr->timeout << 3;
706 qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_ACK_TIMEOUT); 719 qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_ACK_TIMEOUT);