]> Pileus Git - ~andy/linux/blobdiff - drivers/infiniband/hw/ipath/ipath_rc.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[~andy/linux] / drivers / infiniband / hw / ipath / ipath_rc.c
index 5c29b2bfea17b7c6236181f214b4224fbf4cb60d..120a61b03bc4846de8423c436767806e563e97d6 100644 (file)
@@ -959,8 +959,9 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode,
                /* If this is a partial ACK, reset the retransmit timer. */
                if (qp->s_last != qp->s_tail) {
                        spin_lock(&dev->pending_lock);
-                       list_add_tail(&qp->timerwait,
-                                     &dev->pending[dev->pending_index]);
+                       if (list_empty(&qp->timerwait))
+                               list_add_tail(&qp->timerwait,
+                                       &dev->pending[dev->pending_index]);
                        spin_unlock(&dev->pending_lock);
                        /*
                         * If we get a partial ACK for a resent operation,