Hi Doug, This patch set adds mlx5 support for Raw Packet QP for user-space applications, as this QP type is already supported by the IB core, no core changes are introduced. Raw Packet QP enables the user to send and receive raw packets. The user is responsible of building the packet including the headers. Raw Packet QP is composed of the following sub-objects: 1. RQ: Receive Queue 2. TIR: Transport Interface Receive 3. SQ: Send Queue 4. TIS: Transport Interface Send The first two sub-objects are responsible for the RX side, the later are responsible for the TX side. The Raw Packet QP state changes are implemented by changing the state of the sub-objects. Since the SQ and RQ work-queue (WQ) buffers are not contiguous like other QPs, we allocate separate buffers in the user-space and pass the address of each one of them separately to the kernel. In order to tie CQEs to SQ or RQ, we need to provide a user-index in the creation of each one of them. The user-index is generated by the user-space driver. The first two patches are responsible for this functionality. Patches 0004-0006 add RQ and SQ event handling. This is necessary in order to notify the user application regarding RQ/SQ affiliated events. Patch 0007 allocates a Transport Domain for each ucontext to be used afterwards by Raw Packet QPs for Self-Loopback Control. Patch 0008 refactors the mlx5_ib_qp structure to make it easier to accomodate other QP types such as Raw Packet QP. Patches 0009-0010 add Raw Packet QP create,query and destroy functionality. Patch 0011 adds support to modify the Raw Packet QP's Ethernet priority by modifying it's TIS. Patches 0012-0013 add support to modify Raw Packet QP's states and thus exposes the Raw Packet QP's functionality to user space consumers. This patch series is applied on top of your k.o/for-4.5 branch. v0 --> v1 changes - Refactoring the last patch to smaller changes - Bug fix around event handling - Passed through review of Matan, the driver maintainer Regards, Majd Haggai Abramovsky (3): IB/mlx5: Fix data validation in mlx5_ib_alloc_ucontext IB/mlx5: Add CQE version 1 support to user QPs and SRQs IB/mlx5: Expose CQE version to user-space Majd Dibbiny (10): net/mlx5_core: Export transport objects net/mlx5_core: Add RQ and SQ event handling net/mlx5_core: Warn on unsupported events of QP/RQ/SQ IB/mlx5: Allocate a Transport Domain for each ucontext IB/mlx5: Refactor mlx5_ib_qp to accommodate other QP types IB/mlx5: Add create and destroy functionality for Raw Packet QP IB/mlx5: Add Raw Packet QP query functionality IB/mlx5: Support setting Ethernet priority for Raw Packet QPs {IB,net}/mlx5: Move the modify QP operation table to mlx5_ib IB/mlx5: Expose Raw Packet QP to user space consumers drivers/infiniband/hw/mlx5/main.c | 36 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 90 +- drivers/infiniband/hw/mlx5/odp.c | 29 +- drivers/infiniband/hw/mlx5/qp.c | 920 ++++++++++++++++++--- drivers/infiniband/hw/mlx5/srq.c | 41 +- drivers/infiniband/hw/mlx5/user.h | 53 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 6 +- drivers/net/ethernet/mellanox/mlx5/core/eq.c | 1 + drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 - drivers/net/ethernet/mellanox/mlx5/core/qp.c | 233 ++++-- drivers/net/ethernet/mellanox/mlx5/core/srq.c | 4 +- drivers/net/ethernet/mellanox/mlx5/core/transobj.c | 50 +- drivers/net/ethernet/mellanox/mlx5/core/transobj.h | 72 -- include/linux/mlx5/device.h | 12 +- include/linux/mlx5/driver.h | 8 +- include/linux/mlx5/mlx5_ifc.h | 9 +- include/linux/mlx5/qp.h | 22 +- include/linux/mlx5/transobj.h | 78 ++ 19 files changed, 1356 insertions(+), 314 deletions(-) delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/transobj.h create mode 100644 include/linux/mlx5/transobj.h -- 1.8.3.1 -- 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