diff options
author | Kaike Wan <kaike.wan@intel.com> | 2019-01-24 06:51:27 +0100 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2019-02-06 00:07:44 +0100 |
commit | 572f0c3301138961a596c522729afb5801135d6e (patch) | |
tree | da496c33ff70f0883950b202774645290a600498 /drivers/infiniband/hw/hfi1/iowait.h | |
parent | IB/hfi1: Add the TID second leg ACK packet builder (diff) | |
download | linux-572f0c3301138961a596c522729afb5801135d6e.tar.xz linux-572f0c3301138961a596c522729afb5801135d6e.zip |
IB/hfi1: Add the dual leg code
The "Second Leg" of the TID RDMA WRITE protocol deals with
the transfer of data and ack packets, which are in the KDETH
PSN space, as opposed to the IB PSN space.
Therefore, the Second Leg could be considered as a separate
state machine. As such, it is handled by a different work
queue item which is scheduled along with the normal IB state
machine work item.
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/iowait.h')
-rw-r--r-- | drivers/infiniband/hw/hfi1/iowait.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/iowait.h b/drivers/infiniband/hw/hfi1/iowait.h index 23a58ac0d47c..bd913701761d 100644 --- a/drivers/infiniband/hw/hfi1/iowait.h +++ b/drivers/infiniband/hw/hfi1/iowait.h @@ -186,6 +186,18 @@ static inline bool iowait_schedule(struct iowait *wait, } /** + * iowait_tid_schedule - schedule the tid SE + * @wait: the iowait structure + * @wq: the work queue + * @cpu: the cpu + */ +static inline bool iowait_tid_schedule(struct iowait *wait, + struct workqueue_struct *wq, int cpu) +{ + return !!queue_work_on(cpu, wq, &wait->wait[IOWAIT_TID_SE].iowork); +} + +/** * iowait_sdma_drain() - wait for DMAs to drain * * @wait: iowait structure |