net/smc: add operations to merge sndbuf with peer DMB
authorWen Gu <guwen@linux.alibaba.com>
Sun, 28 Apr 2024 06:07:35 +0000 (14:07 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 30 Apr 2024 11:24:48 +0000 (13:24 +0200)
commit4398888268582cb51b69c6ee94f551bb8d37d12f
tree13f8f7f8805bc634546aba27ed5a940c559998f4
parent04791343d858242dc2bd25e05be480ad1591e900
net/smc: add operations to merge sndbuf with peer DMB

In some scenarios using Emulated-ISM device, sndbuf can share the same
physical memory region with peer DMB to avoid data copy from one side
to the other. In such case the sndbuf is only a descriptor that
describes the shared memory and does not actually occupy memory, it's
more like a ghost buffer.

      +----------+                     +----------+
      | socket A |                     | socket B |
      +----------+                     +----------+
            |                               |
       +--------+                       +--------+
       | sndbuf |                       |  DMB   |
       |  desc  |                       |  desc  |
       +--------+                       +--------+
            |                               |
            |                          +----v-----+
            +-------------------------->  memory  |
                                       +----------+

So here introduces three new SMC-D device operations to check if this
feature is supported by device, and to {attach|detach} ghost sndbuf to
peer DMB. For now only loopback-ism supports this.

Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com>
Reviewed-and-tested-by: Jan Karcher <jaka@linux.ibm.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
include/net/smc.h
net/smc/smc_ism.c
net/smc/smc_ism.h