IB/ipath: Fix potentially wrong RNR retry counter returned in ipath_query_qp()
authorPatrick Marchand Latifi <patrick.latifi@qlogic.com>
Tue, 8 Jan 2008 07:43:04 +0000 (23:43 -0800)
committerRoland Dreier <rolandd@cisco.com>
Tue, 11 Mar 2008 21:01:14 +0000 (14:01 -0700)
There can be a case where the requester's rnr retry counter
(s_rnr_retry) is less than the number of rnr retries allowed per QP
(s_rnr_retry_cnt).  This can happen if the s_rnr_retry counter is being
decremented and an ipath_query_qp call is issued during that time frame.
The fix is to always return the number of rnr retries allowed per QP
instead of the requester's rnr counter.

Found by code review.

Signed-off-by: Patrick Marchand Latifi <patrick.latifi@qlogic.com>
Acked-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_qp.c

index 80dc623cee403637c5d828cc33a519204b869b1d..8214c0905c7552ee9bea442f322cba1a120a2b88 100644 (file)
@@ -647,7 +647,7 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
        attr->port_num = 1;
        attr->timeout = qp->timeout;
        attr->retry_cnt = qp->s_retry_cnt;
-       attr->rnr_retry = qp->s_rnr_retry;
+       attr->rnr_retry = qp->s_rnr_retry_cnt;
        attr->alt_port_num = 0;
        attr->alt_timeout = 0;