diff options
author | Jack Morgenstein <jackm@mellanox.co.il> | 2006-08-28 12:10:34 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-09-22 18:22:41 -0400 |
commit | f6f76725b5ed8085c602b16bfd309c9957fb84c8 (patch) | |
tree | d1784262a4239e7e17dc1262f2a4112561553639 | |
parent | b046a04e162dc7f468700a0817acda0321b2b3ae (diff) |
IB/mthca: Return port number for unconnected QPs in query_qp
port_num was not being returned for unconnected QPs.
Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_qp.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c index 6d6ba4180a39..4ac25cf06794 100644 --- a/drivers/infiniband/hw/mthca/mthca_qp.c +++ b/drivers/infiniband/hw/mthca/mthca_qp.c | |||
@@ -472,10 +472,14 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m | |||
472 | if (qp->transport == RC || qp->transport == UC) { | 472 | if (qp->transport == RC || qp->transport == UC) { |
473 | to_ib_ah_attr(dev, &qp_attr->ah_attr, &context->pri_path); | 473 | to_ib_ah_attr(dev, &qp_attr->ah_attr, &context->pri_path); |
474 | to_ib_ah_attr(dev, &qp_attr->alt_ah_attr, &context->alt_path); | 474 | to_ib_ah_attr(dev, &qp_attr->alt_ah_attr, &context->alt_path); |
475 | qp_attr->alt_pkey_index = | ||
476 | be32_to_cpu(context->alt_path.port_pkey) & 0x7f; | ||
477 | qp_attr->alt_port_num = qp_attr->alt_ah_attr.port_num; | ||
475 | } | 478 | } |
476 | 479 | ||
477 | qp_attr->pkey_index = be32_to_cpu(context->pri_path.port_pkey) & 0x7f; | 480 | qp_attr->pkey_index = be32_to_cpu(context->pri_path.port_pkey) & 0x7f; |
478 | qp_attr->alt_pkey_index = be32_to_cpu(context->alt_path.port_pkey) & 0x7f; | 481 | qp_attr->port_num = |
482 | (be32_to_cpu(context->pri_path.port_pkey) >> 24) & 0x3; | ||
479 | 483 | ||
480 | /* qp_attr->en_sqd_async_notify is only applicable in modify qp */ | 484 | /* qp_attr->en_sqd_async_notify is only applicable in modify qp */ |
481 | qp_attr->sq_draining = mthca_state == MTHCA_QP_STATE_DRAINING; | 485 | qp_attr->sq_draining = mthca_state == MTHCA_QP_STATE_DRAINING; |
@@ -486,11 +490,9 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m | |||
486 | 1 << ((be32_to_cpu(context->params2) >> 21) & 0x7); | 490 | 1 << ((be32_to_cpu(context->params2) >> 21) & 0x7); |
487 | qp_attr->min_rnr_timer = | 491 | qp_attr->min_rnr_timer = |
488 | (be32_to_cpu(context->rnr_nextrecvpsn) >> 24) & 0x1f; | 492 | (be32_to_cpu(context->rnr_nextrecvpsn) >> 24) & 0x1f; |
489 | qp_attr->port_num = qp_attr->ah_attr.port_num; | ||
490 | qp_attr->timeout = context->pri_path.ackto >> 3; | 493 | qp_attr->timeout = context->pri_path.ackto >> 3; |
491 | qp_attr->retry_cnt = (be32_to_cpu(context->params1) >> 16) & 0x7; | 494 | qp_attr->retry_cnt = (be32_to_cpu(context->params1) >> 16) & 0x7; |
492 | qp_attr->rnr_retry = context->pri_path.rnr_retry >> 5; | 495 | qp_attr->rnr_retry = context->pri_path.rnr_retry >> 5; |
493 | qp_attr->alt_port_num = qp_attr->alt_ah_attr.port_num; | ||
494 | qp_attr->alt_timeout = context->alt_path.ackto >> 3; | 496 | qp_attr->alt_timeout = context->alt_path.ackto >> 3; |
495 | qp_init_attr->cap = qp_attr->cap; | 497 | qp_init_attr->cap = qp_attr->cap; |
496 | 498 | ||