Thread (33 messages) 33 messages, 6 authors, 2024-01-05

Re: [RFC PATCH net-next v1 4/4] net: page_pool: use netmem_t instead of struct page in API

flat view

From: Mina Almasry <hidden>
Date: 2023-12-16 22:06:53
Also in: bpf, lkml

On Sat, Dec 16, 2023 at 11:47 AM Shakeel Butt [off-list ref] wrote:
On Fri, Dec 15, 2023 at 7:01 PM Jakub Kicinski [off-list ref] wrote:
quoted
On Fri, 15 Dec 2023 02:11:14 +0000 Shakeel Butt wrote:
quoted
quoted
From my POV it has to be the first one. We want to abstract the memory
type from the drivers as much as possible, not introduce N new memory
types and ask the driver to implement new code for each of them
separately.
Agree with Mina's point. Let's aim to decouple memory types from
drivers.
What does "decouple" mean? Drivers should never convert netmem
to pages. Either a path in the driver can deal with netmem,
i.e. never touch the payload, or it needs pages.
I'm guessing the paths in the driver that need pages will have to be
disabled for non-paged netmem, which is fine.

One example that I ran into with GVE is that it calls page_address()
to copy small packets instead of adding them as a frag. I can add a
netmem_address() that returns page_address() for pages, and NULL for
non-pages (never passing non-pages to mm code). The driver can detect
that the netmem has no address, and disable the optimization for
non-paged netmem.
"Decouple" might not be the right word. What I wanted to say was to
avoid too much specialization such that we have to have a new API for
every new fancy thing.
quoted
Perhaps we should aim to not export netmem_to_page(),
prevent modules from accessing it directly.
+1.
This is an aggressive approach and I like it. I'll try to make it work
(should be fine).


--
Thanks,
Mina
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help