From: Leon Romanovsky <leonro@xxxxxxxxxxxx> The following set of patches adds cross-channel (CC) support in the libibverbs. The cross-channel feature allows to execute WQEs that involve cross-channel synchronization of IO operations’ on different QPs. Complex applications usually require synchronizations for IO operations from multiple sources before continuing their execution. In order to implement this, the host software usually needs to handle completions from each one of the receive queues (arriving in arbitrary order), process the data after last message arrival and only then post work request on the send queue to send the combined data to its destination. Execution of such operation generates multiple interrupts at an unpredictable time with an overhead of interrupts handling and context switches. This patchset adds synchronization primitives which gives ability to perform conditional operations and a following submission will introduce arithmetic calculation offload. Synchronization abilities combined with arithmetic calculations will allow us to program complex scenarios with a single function call, hereby significantly reducing overhead associated with IO processing. Patch #1 adds CQ ignore overrun flag. Patch #2 implements QP flags to configure master/slave properties of queue. Patch #3 expands work request structure to have cross-channel specific primitives. Patch #4 exports cross-channel device capability flag. Patch #5 provides an example of cross-channel synchronizations. These patches were added on top of "Completion timestamping" [1] and "Expose QP block self multicast loopback creation flag" [2] series. [1] https://www.mail-archive.com/linux-rdma@xxxxxxxxxxxxxxx/msg28895.html [2] http://comments.gmane.org/gmane.linux.drivers.rdma/30158 Changes from v0: * Enrich cover message and commit messages. * Add ibv_cc_pingpong example. * Add manual to all newly created flags. Leon Romanovsky (5): Add CQ ignore overrun flag Add cross-channel QP flags Add cross-channel work requests primitives Export cross-channel capability flag Add an example of cross-channel synchronization Makefile.am | 6 +- examples/.gitignore | 1 + examples/cc_pingpong.c | 991 +++++++++++++++++++++++++++++++++++++++++++++ include/infiniband/verbs.h | 23 +- man/ibv_cc_pingpong.1 | 66 +++ man/ibv_create_cq_ex.3 | 18 +- man/ibv_create_qp_ex.3 | 18 +- man/ibv_post_send.3 | 25 +- src/cmd.c | 5 +- 9 files changed, 1141 insertions(+), 12 deletions(-) create mode 100644 examples/cc_pingpong.c create mode 100644 man/ibv_cc_pingpong.1 -- 1.7.12.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html