Merge branch 'abstract-page-from-net-stack'
authorPaolo Abeni <pabeni@redhat.com>
Tue, 20 Feb 2024 08:23:00 +0000 (09:23 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 20 Feb 2024 08:23:00 +0000 (09:23 +0100)
commitbb18fc7a521b41bfee201643f65d7b74bc6b901f
tree1b4f042cb1272aa4fb9fbefa7c9db26a33708804
parent74293ea1c4db62cb969e741fbfd479a34d935024
parent21d2e6737c9789aa9b23c8a4131cbca8260139fd
Merge branch 'abstract-page-from-net-stack'

Mina Almasry says:

====================
Abstract page from net stack

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>
====================

Link: https://lore.kernel.org/r/20240214223405.1972973-1-almasrymina@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>