RDMA/mlx5: Introduce and implement new IB_WR_REG_MR_INTEGRITY work request
Max Gurtovoy authored

This new WR will be used to perform PI (protection information) handover
using the new API. Using the new API, the user will post a single WR that
will internally perform all the needed actions to complete PI operation.
This new WR will use a memory region that was allocated as
IB_MR_TYPE_INTEGRITY and was mapped using ib_map_mr_sg_pi to perform the
registration. In the old API, in order to perform a signature handover
operation, each ULP should perform the following:
1. Map and register the data buffers.
2. Map and register the protection buffers.
3. Post a special reg WR to configure the signature handover operation
   layout.
4. Invalidate the signature memory key.
5. Invalidate protection buffers memory key.
6. Invalidate data buffers memory key.

In the new API, the mapping of both data and protection buffers is
performed using a single call to ib_map_mr_sg_pi function. Also the
registration of the buffers and the configuration of the signature
operation layout is done by a single new work request called
IB_WR_REG_MR_INTEGRITY.
This patch implements this operation for mlx5 devices that are capable to
offload data integrity generation/validation while performing the actual
buffer transfer.
This patch will not remove the old signature API that is used by the iSER
initiator and target drivers. This will be done in the future.

In the internal implementation, for each IB_WR_REG_MR_INTEGRITY work
request, we are using a single UMR operation to register both data and
protection buffers using KLM's.
Afterwards, another UMR operation will describe the strided block format.
These will be followed by 2 SET_PSV operations to set the memory/wire
domains initial signature parameters passed by the user.
In the end of the whole transaction, only the signature memory key
(the one that exposed for the RDMA operation) will be invalidated.
Signed-off-by: default avatarMax Gurtovoy <maxg@mellanox.com>
Signed-off-by: default avatarIsrael Rukshin <israelr@mellanox.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
38ca87c6
Name Last commit Last update
Documentation rdma: Remove nes
LICENSES LICENSES: Rename other to deprecated
arch Merge branch 'akpm' (patches from Andrew)
block Merge tag 'for-5.2/block-post-20190516' of git://git.kernel.dk/linux-block
certs kexec, KEYS: Make use of platform keyring for signature verify
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
drivers RDMA/mlx5: Introduce and implement new IB_WR_REG_MR_INTEGRITY work request
fs Merge tag 'upstream-5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs
include RDMA/mlx5: Introduce and implement new IB_WR_REG_MR_INTEGRITY work request
init initramfs: don't free a non-existent initrd
ipc ipc: do cyclic id allocation for the ipc object.
kernel Merge branch 'akpm' (patches from Andrew)
lib slab: remove /proc/slab_allocators
mm Merge branch 'akpm' (patches from Andrew)
net Merge remote-tracking branch 'mlx5-next/mlx5-next' into HEAD
samples samples: guard sub-directories with CONFIG options
scripts kconfig: use 'else ifneq' for Makefile to improve readability
security Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
sound Merge tag 'sound-fix-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
tools Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
usr user/Makefile: Fix typo and capitalization in comment section
virt Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
.clang-format Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
.cocciconfig scripts: add Linux .cocciconfig for coccinelle
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile
README
Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.