netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC net-next 0/7] Provide an ism layer
@ 2025-01-15 19:55 Alexandra Winter
  2025-01-15 19:55 ` [RFC net-next 1/7] net/ism: Create net/ism Alexandra Winter
                   ` (7 more replies)
  0 siblings, 8 replies; 61+ messages in thread
From: Alexandra Winter @ 2025-01-15 19:55 UTC (permalink / raw)
  To: Wenjia Zhang, Jan Karcher, Gerd Bayer, Alexandra Winter,
	Halil Pasic, D. Wythe, Tony Lu, Wen Gu, Peter Oberparleiter,
	David Miller, Jakub Kicinski, Paolo Abeni, Eric Dumazet,
	Andrew Lunn
  Cc: Julian Ruess, Niklas Schnelle, Thorsten Winkler, netdev,
	linux-s390, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Simon Horman

This RFC is about providing a generic shim layer between all kinds of
ism devices and all kinds of ism users.

Benefits:
- Cleaner separation of ISM and SMC-D functionality
- simpler and less module dependencies
- Clear interface definition.
- Extendable for future devices and clients.

Request for comments:
---------------------
Any comments are welcome, but I am aware that this series needs more work.
It may not be worth your time to do an in-depth review of the details, I am
looking for feedback on the general idea.
I am mostly interested in your thoughts and recommendations about the general
concept, the location of net/ism, the structure of include/linux/ism.h, the
KConfig and makefiles.

Status of this RFC:
-------------------
This is a very early RFC to ask you for comments on this general idea.
The RFC does not fullfill all criteria required for a patchset.
The whole set compiles and runs, but I did not try all combinations of
module and built-in yet. I did not check for checkpatch or any other checkers.
Also I have only done very rudimentary quick tests of SMC-D. More testing is
required.

Background / Status quo:
------------------------
Currently s390 hardware provides virtual PCI ISM devices (ism_vpci). Their
driver is in drivers/s390/net/ism_drv.c. The main user is SMC-D (net/smc).
ism_vpci driver offers a client interface so other users/protocols
can also use them, but it is still heavily intermingled with the smc code.
Namely, the ISM vPCI module cannot be used without the SMC module, which
feels artificial.

The ISM concept is being extended:
[1] proposed an ISM loopback interface (ism_lo), that can be used on non-s390
architectures (e.g. between containers or to test SMC-D). A minimal implementation
went upstream with [2]: ism_lo currently is a part of the smc protocol and rather
hidden.

[3] proposed a virtio definition of ISM (ism_virtio) that can be used between
kvm guests.

We will shortly send an RFC for an ISM client that uses ISM as transport for TTY.

Concept:
--------
Create a shim layer in net/ism that contains common definitions and code for
all ism devices and all ism clients.
Any device or client module only needs to depend on this ism layer module and
any device or client code only needs to include the definitions in
include/linux/ism.h

Ideas for next steps:
---------------------
- sysfs representation? e.g. as /sys/class/ism ?
- provide a full-fledged ism loopback interface
    (runtime enable/disable, sysfs device, ..)
- additional clients (tty over ism)
- additional devices (virtio-ism, ...)

Link: [1] https://lore.kernel.org/netdev/1695568613-125057-1-git-send-email-guwen@linux.alibaba.com/
Link: [2] https://lore.kernel.org/linux-kernel//20240428060738.60843-1-guwen@linux.alibaba.com/
Link: [3] https://groups.oasis-open.org/communities/community-home/digestviewer/viewthread?GroupId=3973&MessageKey=c060ecf9-ea1a-49a2-9827-c92f0e6447b2&CommunityKey=2f26be99-3aa1-48f6-93a5-018dce262226&hlmlt=VT

Alexandra Winter (7):
  net/ism: Create net/ism
  net/ism: Remove dependencies between ISM_VPCI and SMC
  net/ism: Use uuid_t for ISM GID
  net/ism: Add kernel-doc comments for ism functions
  net/ism: Move ism_loopback to net/ism
  s390/ism: Define ismvp_dev
  net/smc: Use only ism_ops

 MAINTAINERS                |   7 +
 drivers/s390/net/Kconfig   |  10 +-
 drivers/s390/net/Makefile  |   4 +-
 drivers/s390/net/ism.h     |  27 ++-
 drivers/s390/net/ism_drv.c | 467 ++++++++++++-------------------------
 include/linux/ism.h        | 299 +++++++++++++++++++++---
 include/net/smc.h          |  52 +----
 net/Kconfig                |   1 +
 net/Makefile               |   1 +
 net/ism/Kconfig            |  27 +++
 net/ism/Makefile           |   8 +
 net/ism/ism_loopback.c     | 366 +++++++++++++++++++++++++++++
 net/ism/ism_loopback.h     |  59 +++++
 net/ism/ism_main.c         | 171 ++++++++++++++
 net/smc/Kconfig            |  13 --
 net/smc/Makefile           |   1 -
 net/smc/af_smc.c           |  12 +-
 net/smc/smc_clc.c          |   6 +-
 net/smc/smc_core.c         |   6 +-
 net/smc/smc_diag.c         |   2 +-
 net/smc/smc_ism.c          | 112 +++++----
 net/smc/smc_ism.h          |  29 ++-
 net/smc/smc_loopback.c     | 427 ---------------------------------
 net/smc/smc_loopback.h     |  60 -----
 net/smc/smc_pnet.c         |   8 +-
 25 files changed, 1183 insertions(+), 992 deletions(-)
 create mode 100644 net/ism/Kconfig
 create mode 100644 net/ism/Makefile
 create mode 100644 net/ism/ism_loopback.c
 create mode 100644 net/ism/ism_loopback.h
 create mode 100644 net/ism/ism_main.c
 delete mode 100644 net/smc/smc_loopback.c
 delete mode 100644 net/smc/smc_loopback.h

-- 
2.45.2


^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2025-02-25  9:01 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-15 19:55 [RFC net-next 0/7] Provide an ism layer Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 1/7] net/ism: Create net/ism Alexandra Winter
2025-01-16 20:08   ` Andrew Lunn
2025-01-17 12:06     ` Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 2/7] net/ism: Remove dependencies between ISM_VPCI and SMC Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 3/7] net/ism: Use uuid_t for ISM GID Alexandra Winter
2025-01-20 17:18   ` Simon Horman
2025-01-22 14:46     ` Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 4/7] net/ism: Add kernel-doc comments for ism functions Alexandra Winter
2025-01-15 22:06   ` Halil Pasic
2025-01-20  6:32   ` Dust Li
2025-01-20  9:56     ` Alexandra Winter
2025-01-20 10:07       ` Julian Ruess
2025-01-20 11:35         ` Alexandra Winter
2025-01-20 10:34     ` Niklas Schnelle
2025-01-22 15:02       ` Dust Li
2025-01-15 19:55 ` [RFC net-next 5/7] net/ism: Move ism_loopback to net/ism Alexandra Winter
2025-01-20  3:55   ` Dust Li
2025-01-20  9:31     ` Alexandra Winter
2025-02-06 17:36   ` Julian Ruess
2025-02-10 10:39     ` Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 6/7] s390/ism: Define ismvp_dev Alexandra Winter
2025-01-15 19:55 ` [RFC net-next 7/7] net/smc: Use only ism_ops Alexandra Winter
2025-01-16  9:32 ` [RFC net-next 0/7] Provide an ism layer Dust Li
2025-01-16 11:55   ` Julian Ruess
2025-01-16 16:17     ` Alexandra Winter
2025-01-16 17:08       ` Julian Ruess
2025-01-17  2:13       ` Dust Li
2025-01-17 10:38         ` Niklas Schnelle
2025-01-17 15:02           ` Andrew Lunn
2025-01-17 16:00             ` Niklas Schnelle
2025-01-17 16:33               ` Andrew Lunn
2025-01-17 16:57                 ` Niklas Schnelle
2025-01-17 20:29                   ` Andrew Lunn
2025-01-20  6:21                     ` Dust Li
2025-01-20 12:03                       ` Alexandra Winter
2025-01-20 16:01                         ` Andrew Lunn
2025-01-20 17:25                           ` Alexandra Winter
2025-01-18 15:31           ` Dust Li
2025-01-28 16:04             ` Alexandra Winter
2025-02-10  5:08               ` Dust Li
2025-02-10  9:38                 ` Alexandra Winter
2025-02-11  1:57                   ` Dust Li
2025-02-16 15:40                   ` Wen Gu
2025-02-19 11:25                     ` [RFC net-next 0/7] Provide an ism layer - naming Alexandra Winter
2025-02-25  1:36                       ` Dust Li
2025-02-25  8:40                         ` Alexandra Winter
2025-01-17 13:00         ` [RFC net-next 0/7] Provide an ism layer Alexandra Winter
2025-01-17 15:10           ` Andrew Lunn
2025-01-17 16:20             ` Alexandra Winter
2025-01-20 10:28           ` Alexandra Winter
2025-01-22  3:04             ` Dust Li
2025-01-22 12:02               ` Alexandra Winter
2025-01-22 12:05                 ` Alexandra Winter
2025-01-22 14:10                   ` Dust Li
2025-01-17 15:06       ` Andrew Lunn
2025-01-17 15:38         ` Alexandra Winter
2025-02-16 15:38       ` Wen Gu
2025-01-17 11:04   ` Alexandra Winter
2025-01-18 15:24     ` Dust Li
2025-01-20 11:45       ` Alexandra Winter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).