diff options
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_rc.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_rc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c index 5c29b2bfea17..120a61b03bc4 100644 --- a/drivers/infiniband/hw/ipath/ipath_rc.c +++ b/drivers/infiniband/hw/ipath/ipath_rc.c | |||
@@ -959,8 +959,9 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode, | |||
959 | /* If this is a partial ACK, reset the retransmit timer. */ | 959 | /* If this is a partial ACK, reset the retransmit timer. */ |
960 | if (qp->s_last != qp->s_tail) { | 960 | if (qp->s_last != qp->s_tail) { |
961 | spin_lock(&dev->pending_lock); | 961 | spin_lock(&dev->pending_lock); |
962 | list_add_tail(&qp->timerwait, | 962 | if (list_empty(&qp->timerwait)) |
963 | &dev->pending[dev->pending_index]); | 963 | list_add_tail(&qp->timerwait, |
964 | &dev->pending[dev->pending_index]); | ||
964 | spin_unlock(&dev->pending_lock); | 965 | spin_unlock(&dev->pending_lock); |
965 | /* | 966 | /* |
966 | * If we get a partial ACK for a resent operation, | 967 | * If we get a partial ACK for a resent operation, |