Hi Eli, This patch set adds support for Raw Packet QP for user-space applications.
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 0003-0005 add RQ and SQ event handling. This is necessary in order to notify the user application regarding RQ/SQ affiliated events. Patch 0006 adds all the required functionality to the mlx5_ib module to create, destroy, modify and query a Raw Packet QP. This patch series is applied on top of ib-next and depends on "Add RoCE support to the mlx5 driver" series. In order to receive packets, flow steering support should be added to the mlx5_ib. Regards, Majd Haggai Abramonvsky (2): IB/mlx5: Add CQE version 1 support to user space IB/mlx5: Exposed CQE version to user-space Majd Dibbiny (4): 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: Add Raw Packet Queue Pair (QP) support drivers/infiniband/hw/mlx5/main.c | 19 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 54 +- drivers/infiniband/hw/mlx5/qp.c | 908 ++++++++++++++++++--- drivers/infiniband/hw/mlx5/srq.c | 31 +- drivers/infiniband/hw/mlx5/user.h | 8 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +- 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 | 230 ++++-- drivers/net/ethernet/mellanox/mlx5/core/srq.c | 4 +- drivers/net/ethernet/mellanox/mlx5/core/transobj.c | 49 +- drivers/net/ethernet/mellanox/mlx5/core/transobj.h | 72 -- include/linux/mlx5/device.h | 10 +- include/linux/mlx5/driver.h | 8 +- include/linux/mlx5/mlx5_ifc.h | 11 +- include/linux/mlx5/qp.h | 11 +- include/linux/mlx5/transobj.h | 78 ++ 17 files changed, 1228 insertions(+), 272 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html