diff options
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_ruc.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.c | 1 |
2 files changed, 3 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c index 8c5d20a4b5f3..837118676cc7 100644 --- a/drivers/infiniband/hw/ipath/ipath_ruc.c +++ b/drivers/infiniband/hw/ipath/ipath_ruc.c | |||
@@ -503,11 +503,9 @@ void ipath_no_bufs_available(struct ipath_qp *qp, struct ipath_ibdev *dev) | |||
503 | * could be called. If we are still in the tasklet function, | 503 | * could be called. If we are still in the tasklet function, |
504 | * tasklet_hi_schedule() will not call us until the next time | 504 | * tasklet_hi_schedule() will not call us until the next time |
505 | * tasklet_hi_schedule() is called. | 505 | * tasklet_hi_schedule() is called. |
506 | * We clear the tasklet flag now since we are committing to return | 506 | * We leave the busy flag set so that another post send doesn't |
507 | * from the tasklet function. | 507 | * try to put the same QP on the piowait list again. |
508 | */ | 508 | */ |
509 | clear_bit(IPATH_S_BUSY, &qp->s_busy); | ||
510 | tasklet_unlock(&qp->s_task); | ||
511 | want_buffer(dev->dd); | 509 | want_buffer(dev->dd); |
512 | dev->n_piowait++; | 510 | dev->n_piowait++; |
513 | } | 511 | } |
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c index 04294ca0a81f..cd79a8ca5104 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/drivers/infiniband/hw/ipath/ipath_verbs.c | |||
@@ -948,6 +948,7 @@ int ipath_ib_piobufavail(struct ipath_ibdev *dev) | |||
948 | qp = list_entry(dev->piowait.next, struct ipath_qp, | 948 | qp = list_entry(dev->piowait.next, struct ipath_qp, |
949 | piowait); | 949 | piowait); |
950 | list_del_init(&qp->piowait); | 950 | list_del_init(&qp->piowait); |
951 | clear_bit(IPATH_S_BUSY, &qp->s_busy); | ||
951 | tasklet_hi_schedule(&qp->s_task); | 952 | tasklet_hi_schedule(&qp->s_task); |
952 | } | 953 | } |
953 | spin_unlock_irqrestore(&dev->pending_lock, flags); | 954 | spin_unlock_irqrestore(&dev->pending_lock, flags); |