[PATCH v1 00/13] Raw Packet QP user-space support for mlx5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux