diff options
Diffstat (limited to 'drivers/infiniband/core/mad.c')
-rw-r--r-- | drivers/infiniband/core/mad.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index dc3fd1e8af07..4c837e66516b 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c | |||
@@ -2663,6 +2663,7 @@ static int ib_mad_port_start(struct ib_mad_port_private *port_priv) | |||
2663 | int ret, i; | 2663 | int ret, i; |
2664 | struct ib_qp_attr *attr; | 2664 | struct ib_qp_attr *attr; |
2665 | struct ib_qp *qp; | 2665 | struct ib_qp *qp; |
2666 | u16 pkey_index; | ||
2666 | 2667 | ||
2667 | attr = kmalloc(sizeof *attr, GFP_KERNEL); | 2668 | attr = kmalloc(sizeof *attr, GFP_KERNEL); |
2668 | if (!attr) { | 2669 | if (!attr) { |
@@ -2670,6 +2671,11 @@ static int ib_mad_port_start(struct ib_mad_port_private *port_priv) | |||
2670 | return -ENOMEM; | 2671 | return -ENOMEM; |
2671 | } | 2672 | } |
2672 | 2673 | ||
2674 | ret = ib_find_pkey(port_priv->device, port_priv->port_num, | ||
2675 | IB_DEFAULT_PKEY_FULL, &pkey_index); | ||
2676 | if (ret) | ||
2677 | pkey_index = 0; | ||
2678 | |||
2673 | for (i = 0; i < IB_MAD_QPS_CORE; i++) { | 2679 | for (i = 0; i < IB_MAD_QPS_CORE; i++) { |
2674 | qp = port_priv->qp_info[i].qp; | 2680 | qp = port_priv->qp_info[i].qp; |
2675 | if (!qp) | 2681 | if (!qp) |
@@ -2680,7 +2686,7 @@ static int ib_mad_port_start(struct ib_mad_port_private *port_priv) | |||
2680 | * one is needed for the Reset to Init transition | 2686 | * one is needed for the Reset to Init transition |
2681 | */ | 2687 | */ |
2682 | attr->qp_state = IB_QPS_INIT; | 2688 | attr->qp_state = IB_QPS_INIT; |
2683 | attr->pkey_index = 0; | 2689 | attr->pkey_index = pkey_index; |
2684 | attr->qkey = (qp->qp_num == 0) ? 0 : IB_QP1_QKEY; | 2690 | attr->qkey = (qp->qp_num == 0) ? 0 : IB_QP1_QKEY; |
2685 | ret = ib_modify_qp(qp, attr, IB_QP_STATE | | 2691 | ret = ib_modify_qp(qp, attr, IB_QP_STATE | |
2686 | IB_QP_PKEY_INDEX | IB_QP_QKEY); | 2692 | IB_QP_PKEY_INDEX | IB_QP_QKEY); |