mbox series

[RFC,net-next,v1,0/4] net: devmem: TX Path

Message ID 20240913150913.1280238-1-sdf@fomichev.me (mailing list archive)
Headers show
Series net: devmem: TX Path | expand

Message

Stanislav Fomichev Sept. 13, 2024, 3:09 p.m. UTC
As discussed in [1], sending the preliminary version of the transmit
path. It is somewhat based on [2], but at this point probably nothing
of the original patch remains. Since we are not using fake pages
anymore, I had to do the following:
1. Add new bind_tx netlink to attach dmabufs to the netdev and export id
2. Ask users to pass that id in SCM_DEVMEM_DMABUF sendmsg
3. The payload chunks are referenced via zero-based iov_base and iov_len

Note that this series should be applied on top of [3].

1: https://lore.kernel.org/netdev/CAHS8izM8e4OhOFjRm9cF2LuN=ePWPgd-EY09fZHSybgcOaH4MA@mail.gmail.com/
2: https://lore.kernel.org/netdev/20230710223304.1174642-8-almasrymina@google.com/
3: https://lore.kernel.org/netdev/ZuNgklyeerU5BjqG@mini-arch/T/#t

Cc: Mina Almasry <almasrymina@google.com>

Stanislav Fomichev (4):
  net: devmem: Implement TX path
  selftests: ncdevmem: Implement client side
  selftests: ncdevmem: Implement loopback mode
  selftests: ncdevmem: Add TX side to the test

 Documentation/netlink/specs/netdev.yaml       |  13 +
 include/linux/skbuff.h                        |  16 +-
 include/linux/skbuff_ref.h                    |  17 +
 include/net/devmem.h                          |   1 +
 include/net/sock.h                            |   1 +
 include/uapi/linux/netdev.h                   |   1 +
 kernel/dma/mapping.c                          |  18 +-
 net/core/datagram.c                           |  52 ++-
 net/core/devmem.c                             |  73 ++++-
 net/core/devmem.h                             |  28 +-
 net/core/netdev-genl-gen.c                    |  13 +
 net/core/netdev-genl-gen.h                    |   1 +
 net/core/netdev-genl.c                        |  65 +++-
 net/core/skbuff.c                             |  21 +-
 net/core/sock.c                               |   5 +
 net/ipv4/tcp.c                                |  38 ++-
 net/vmw_vsock/virtio_transport_common.c       |   2 +-
 tools/include/uapi/linux/netdev.h             |   1 +
 tools/testing/selftests/drivers/net/devmem.py |  37 ++-
 .../testing/selftests/drivers/net/ncdevmem.c  | 307 ++++++++++++++++--
 20 files changed, 651 insertions(+), 59 deletions(-)
 create mode 120000 include/net/devmem.h