diff options
author | Ralph Campbell <ralph.campbell@qlogic.com> | 2007-06-18 17:24:43 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-07-09 23:12:26 -0400 |
commit | db5518cd09c21f0fa70af0a4ca38badd90622c9e (patch) | |
tree | c8183dc863a03411bdb2f8737870ea3ed743d8c8 /drivers/infiniband/hw/ipath/ipath_verbs.c | |
parent | 06ee109002672ac875558ec699b53cf08a865bd3 (diff) |
IB/ipath: Wait for PIO available interrupt
The send function is called when posting new send work requests.
There is no point in trying to send a packet if the QP is already
waiting for a HW send buffer so don't clear the busy bit until the
buffer available interrupt happens.
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.c | 1 |
1 files changed, 1 insertions, 0 deletions
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); |