All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH net-next v5 0/2] Abstract page from net stack
@ 2024-01-09  1:14 Mina Almasry
  2024-01-09  1:14 ` [RFC PATCH net-next v5 1/2] net: introduce abstraction for network memory Mina Almasry
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Mina Almasry @ 2024-01-09  1:14 UTC (permalink / raw)
  To: linux-kernel, netdev
  Cc: Mina Almasry, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Jason Gunthorpe, Christian König, Shakeel Butt,
	Yunsheng Lin, Willem de Bruijn

Changes in RFC v5:
- RFC due to merge window
- Changed netmem to __bitwise unsigned long.

-----------

Changes in v4:
- Forked off the trivial fixes to skb_frag_t field access to their own
  patches and changed this to RFC that depends on these fixes:

https://lore.kernel.org/netdev/20240102205905.793738-1-almasrymina@google.com/T/#u
https://lore.kernel.org/netdev/20240102205959.794513-1-almasrymina@google.com/T/#u

- Use an empty struct for netmem instead of void* __bitwise as that's
  not a correct use of __bitwise.

-----------

Changes in v3:

- Replaced the struct netmem union with an opaque netmem_ref type.
- Added func docs to the netmem helpers and type.
- Renamed the skb_frag_t fields since it's no longer a bio_vec

-----------

Changes in v2:
- Reverted changes to the page_pool. The page pool now retains the same
  API, so that we don't have to touch many existing drivers. The devmem
  TCP series will include the changes to the page pool.

- Addressed comments.

This series is a prerequisite to the devmem TCP series. For a full
snapshot of the code which includes these changes, feel free to check:

https://github.com/mina/linux/commits/tcpdevmem-rfcv5/

-----------

Currently these components in the net stack use the struct page
directly:

1. Drivers.
2. Page pool.
3. skb_frag_t.

To add support for new (non struct page) memory types to the net stack, we
must first abstract the current memory type.

Originally the plan was to reuse struct page* for the new memory types,
and to set the LSB on the page* to indicate it's not really a page.
However, for safe compiler type checking we need to introduce a new type.

struct netmem is introduced to abstract the underlying memory type.
Currently it's a no-op abstraction that is always a struct page underneath.
In parallel there is an undergoing effort to add support for devmem to the
net stack:

https://lore.kernel.org/netdev/20231208005250.2910004-1-almasrymina@google.com/

Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Yunsheng Lin <linyunsheng@huawei.com>
Cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>

Mina Almasry (2):
  net: introduce abstraction for network memory
  net: add netmem to skb_frag_t

 include/linux/skbuff.h | 90 +++++++++++++++++++++++++++++-------------
 include/net/netmem.h   | 41 +++++++++++++++++++
 net/core/skbuff.c      | 22 ++++++++---
 net/kcm/kcmsock.c      |  9 ++++-
 4 files changed, 127 insertions(+), 35 deletions(-)
 create mode 100644 include/net/netmem.h

-- 
2.43.0.472.g3155946c3a-goog


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

end of thread, other threads:[~2024-01-18 13:57 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-09  1:14 [RFC PATCH net-next v5 0/2] Abstract page from net stack Mina Almasry
2024-01-09  1:14 ` [RFC PATCH net-next v5 1/2] net: introduce abstraction for network memory Mina Almasry
2024-01-10 18:45   ` Shakeel Butt
2024-01-09  1:14 ` [RFC PATCH net-next v5 2/2] net: add netmem to skb_frag_t Mina Almasry
2024-01-11 12:44   ` Yunsheng Lin
2024-01-12  0:34     ` Mina Almasry
2024-01-12 11:51       ` Yunsheng Lin
2024-01-12 15:35         ` Mina Almasry
2024-01-15  9:37           ` Yunsheng Lin
2024-01-15 23:23             ` Mina Almasry
2024-01-16  0:01               ` Jason Gunthorpe
2024-01-16 11:04                 ` Yunsheng Lin
2024-01-16 12:16                   ` Jason Gunthorpe
2024-01-17  9:28                     ` Yunsheng Lin
2024-01-17 18:00                     ` Mina Almasry
2024-01-17 18:34                       ` Mina Almasry
2024-01-17 18:54                         ` Willem de Bruijn
2024-01-18  8:52                           ` Yunsheng Lin
2024-01-18 13:56                           ` Mina Almasry
2024-01-10  2:03 ` [RFC PATCH net-next v5 0/2] Abstract page from net stack Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.