Thread (24 messages) 24 messages, 3 authors, 2025-02-22

Re: [PATCH net-next v4 1/9] net: add get_netmem/put_netmem support

From: Stanislav Fomichev <hidden>
Date: 2025-02-20 19:34:04
Also in: kvm, linux-doc, linux-kselftest, lkml, virtualization

On 02/20, Mina Almasry wrote:
Currently net_iovs support only pp ref counts, and do not support a
page ref equivalent.

This is fine for the RX path as net_iovs are used exclusively with the
pp and only pp refcounting is needed there. The TX path however does not
use pp ref counts, thus, support for get_page/put_page equivalent is
needed for netmem.

Support get_netmem/put_netmem. Check the type of the netmem before
passing it to page or net_iov specific code to obtain a page ref
equivalent.

For dmabuf net_iovs, we obtain a ref on the underlying binding. This
ensures the entire binding doesn't disappear until all the net_iovs have
been put_netmem'ed. We do not need to track the refcount of individual
dmabuf net_iovs as we don't allocate/free them from a pool similar to
what the buddy allocator does for pages.

This code is written to be extensible by other net_iov implementers.
get_netmem/put_netmem will check the type of the netmem and route it to
the correct helper:

pages -> [get|put]_page()
dmabuf net_iovs -> net_devmem_[get|put]_net_iov()
new net_iovs ->	new helpers

Signed-off-by: Mina Almasry <redacted>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>

I remember you wanted to have more fine grained refcnt, but starting
with this is good enough for me.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help