[PATCH V2 rdma-core 0/6] Enable mlx5 vendor functionality

Yishai Hadas
2017-03-23T13:55:23Z

Sending V2 to handle few notes from Jason, details below.

This patch set is the supplementary part of the kernel series that
was accepted few months ago into 4.10.

The below functionality was accepted in mlx5 kernel driver in the vendor
channel path as some driver specific capabilities and functionality, as such it
is exposed to user applications in the same manner by using the direct access
mechanism.

The vendor specific capabilities are reported via the direct mlx5 query
capabilities API.

In addition, an explicit API was added in mlx5 to enable creating a CQ with
some private data. This private data is passed to mlx5 kernel driver in the
vendor channel path.

This follows the requirement to have a more rigid, typed interface than
previous solution that was used on top of ibv_create_cq_ex().

To be able to share the libibverbs code of ibv_create_cq_ex() as of locking,
reference counting a verbs helper API was added, see patch #4 for further details.

Specifically this series:
Report whether mlx5 hardware supports multi packet send WQE offload for RAW QP.
- Multi packet WQE enables sending multiple fix sized packets using a single
WQE. When the WQE is completed a single CQE will be generated.

Report CQE compressing capabilities and enable creating a CQ with such
capabilities.
- CQE compressing reduces PCI overhead by coalescing and compressing multiple
CQEs into a single merged CQE. Successful compressing improves message rate
especially for small packet traffic.

The series is exposed from 6 patches:
#1: Pre-patch which aligns mlx5 query device response to 64 bit.
#2-3: Report mlx5 specific hardware capabilities through direct verbs.
#4: Enable an helper API for post CQ creation for providers.
#5: Add support in mlx5 provider to create a CQ with compressed CQEs using
private vendor data.
#6: Bump package version and update debian relevant files.

Pull request was sent:
https://github.com/linux-rdma/rdma-core/pull/103

Changes from V1:
Patch #4:
- Move to use an helper function from verbs instead of using some provider
callback.
- Bump the whole IBVERBS_PRIVATE section to 14.

Patch #5:
- Move to use the verbs helper API.
- Naming changes. (replaced 'vendor' and dropped 'ex')
- Update libmlx5.map to use coming version number.(i.e. 14).

An additional patch #6 was added:
- Bump package version and update debian relevant files.
- As a result the relevant libraries symlinks (verb, mlx5) has 1.14 in
the name as expected. (Tested in both RH & debian).

Bodong Wang (3):
mlx5: Explicitly align mlx5 query device response to 64 bit
mlx5: Report multi packet send WQE capability for mlx5 based hardware
mlx5: Report CQE compression capabilities through mlx5 direct verbs

Yishai Hadas (3):
verbs: Expose verbs init CQ helper API
mlx5: Expose direct create_cq with private data
Bump version and update debian

CMakeLists.txt | 2 +-
debian/changelog | 5 ++-
debian/ibverbs-providers.symbols | 2 ++
debian/libibverbs1.symbols | 2 +-
libibverbs/device.c | 38 ++++++++++++++---------
libibverbs/driver.h | 3 ++
libibverbs/ibverbs.h | 2 +-
libibverbs/libibverbs.map | 3 +-
libibverbs/verbs.c | 26 ++++------------
providers/mlx5/libmlx5.map | 5 +++
providers/mlx5/man/mlx5dv_query_device.3 | 1 +
providers/mlx5/mlx5-abi.h | 15 +++++++--
providers/mlx5/mlx5.c | 17 +++++++++--
providers/mlx5/mlx5.h | 6 ++++
providers/mlx5/mlx5dv.h | 33 +++++++++++++++++++-
providers/mlx5/verbs.c | 52 +++++++++++++++++++++++++++++---
16 files changed, 163 insertions(+), 49 deletions(-)

--
1.8.3.1