summaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/ipath/ipath_verbs.c
diff options
context:
space:
mode:
authorRalph Campbell <ralph.campbell@qlogic.com>2008-05-13 11:40:25 -0700
committerRoland Dreier <rolandd@cisco.com>2008-05-13 11:40:25 -0700
commit53dc1ca194c062aa9771e194047f27ec1ca592df (patch)
tree4cf0fe73ea76f02f871d5e6def040a869b224f00 /drivers/infiniband/hw/ipath/ipath_verbs.c
parentdd37818dbdf8e51d0288c0197c351c005ffcdbdb (diff)
IB/ipath: Fix RC and UC error handling
When errors are detected in RC, the QP should transition to the IB_QPS_ERR state, not the IB_QPS_SQE state. Also, when the error is on the responder side, the receive work completion error was incorrect (remote vs. local). Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_verbs.c')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 5015cd2e57bd..22bb42dc8f73 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -744,12 +744,10 @@ static void ipath_ib_timer(struct ipath_ibdev *dev)
/* XXX What if timer fires again while this is running? */
for (qp = resend; qp != NULL; qp = qp->timer_next) {
- struct ib_wc wc;
-
spin_lock_irqsave(&qp->s_lock, flags);
if (qp->s_last != qp->s_tail && qp->state == IB_QPS_RTS) {
dev->n_timeouts++;
- ipath_restart_rc(qp, qp->s_last_psn + 1, &wc);
+ ipath_restart_rc(qp, qp->s_last_psn + 1);
}
spin_unlock_irqrestore(&qp->s_lock, flags);