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

Reply via email to