From: Jakub Kicinski <kuba@kernel.org>
To: Mina Almasry <almasrymina@google.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, linux-alpha@vger.kernel.org,
linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
sparclinux@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org,
bpf@vger.kernel.org, linux-media@vger.kernel.org,
dri-devel@lists.freedesktop.org,
"Donald Hunter" <donald.hunter@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Ivan Kokshaysky" <ink@jurassic.park.msu.ru>,
"Matt Turner" <mattst88@gmail.com>,
"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"Helge Deller" <deller@gmx.de>,
"Andreas Larsson" <andreas@gaisler.com>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Masami Hiramatsu" <mhiramat@kernel.org>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Steffen Klassert" <steffen.klassert@secunet.com>,
"Herbert Xu" <herbert@gondor.apana.org.au>,
"David Ahern" <dsahern@kernel.org>,
"Willem de Bruijn" <willemdebruijn.kernel@gmail.com>,
"Shuah Khan" <shuah@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Bagas Sanjaya" <bagasdotme@gmail.com>,
"Christoph Hellwig" <hch@infradead.org>,
"Nikolay Aleksandrov" <razor@blackwall.org>,
"Taehee Yoo" <ap420073@gmail.com>,
"Pavel Begunkov" <asml.silence@gmail.com>,
"David Wei" <dw@davidwei.uk>, "Jason Gunthorpe" <jgg@ziepe.ca>,
"Yunsheng Lin" <linyunsheng@huawei.com>,
"Shailend Chand" <shailend@google.com>,
"Harshitha Ramamurthy" <hramamurthy@google.com>,
"Shakeel Butt" <shakeel.butt@linux.dev>,
"Jeroen de Borst" <jeroendb@google.com>,
"Praveen Kaligineedi" <pkaligineedi@google.com>,
linux-mm@kvack.org, "Matthew Wilcox" <willy@infradead.org>
Subject: Re: [PATCH net-next v16 05/13] page_pool: devmem support
Date: Wed, 10 Jul 2024 09:49:00 -0700 [thread overview]
Message-ID: <20240710094900.0f808684@kernel.org> (raw)
In-Reply-To: <20240710001749.1388631-6-almasrymina@google.com>
On Wed, 10 Jul 2024 00:17:38 +0000 Mina Almasry wrote:
> @@ -68,17 +107,103 @@ static inline netmem_ref page_to_netmem(struct page *page)
>
> static inline int netmem_ref_count(netmem_ref netmem)
> {
> + /* The non-pp refcount of net_iov is always 1. On net_iov, we only
> + * support pp refcounting which uses the pp_ref_count field.
> + */
> + if (netmem_is_net_iov(netmem))
> + return 1;
> +
> return page_ref_count(netmem_to_page(netmem));
> }
How can this work if we had to revert the patch which made all of
the networking stack take pp-aware refs? Maybe we should add the
refcount, and let it be bumped, but WARN() if the net_iov is released
with refcount other than 1? Or we need a very solid explanation why
the conversion had to be reverted and this is fine.
> static inline unsigned long netmem_to_pfn(netmem_ref netmem)
> {
> + if (netmem_is_net_iov(netmem))
> + return 0;
> +
> return page_to_pfn(netmem_to_page(netmem));
> }
Can we move this out and rename it to netmem_pfn_trace() ?
Silently returning 0 is not generally okay, but since it's only
for tracing we don't care.
> +static inline struct net_iov *__netmem_clear_lsb(netmem_ref netmem)
> +{
> + return (struct net_iov *)((__force unsigned long)netmem & ~NET_IOV);
> +}
> +
> +static inline unsigned long netmem_get_pp_magic(netmem_ref netmem)
> +{
> + return __netmem_clear_lsb(netmem)->pp_magic;
> +}
> +
> +static inline void netmem_or_pp_magic(netmem_ref netmem, unsigned long pp_magic)
> +{
> + __netmem_clear_lsb(netmem)->pp_magic |= pp_magic;
> +}
> +
> +static inline void netmem_clear_pp_magic(netmem_ref netmem)
> +{
> + __netmem_clear_lsb(netmem)->pp_magic = 0;
> +}
> +
> +static inline struct page_pool *netmem_get_pp(netmem_ref netmem)
> +{
> + return __netmem_clear_lsb(netmem)->pp;
> +}
> +
> +static inline void netmem_set_pp(netmem_ref netmem, struct page_pool *pool)
> +{
> + __netmem_clear_lsb(netmem)->pp = pool;
> +}
Why is all this stuff in the main header? It's really low level.
Please put helpers which are only used by the core in a header
under net/core/, like net/core/dev.h
next prev parent reply other threads:[~2024-07-10 16:49 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-10 0:17 [PATCH net-next v16 00/13] Device Memory TCP Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 01/13] netdev: add netdev_rx_queue_restart() Mina Almasry
2024-07-10 15:35 ` Jakub Kicinski
2024-07-10 0:17 ` [PATCH net-next v16 02/13] net: netdev netlink api to bind dma-buf to a net device Mina Almasry
2024-07-10 10:30 ` Donald Hunter
2024-07-10 15:43 ` Jakub Kicinski
2024-07-10 0:17 ` [PATCH net-next v16 03/13] netdev: support binding dma-buf to netdevice Mina Almasry
2024-07-10 15:56 ` Jakub Kicinski
2024-07-10 0:17 ` [PATCH net-next v16 04/13] netdev: netdevice devmem allocator Mina Almasry
2024-07-10 16:36 ` Jakub Kicinski
2024-07-10 19:29 ` Mina Almasry
2024-07-10 19:55 ` Jakub Kicinski
2024-07-10 22:45 ` Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 05/13] page_pool: devmem support Mina Almasry
2024-07-10 16:49 ` Jakub Kicinski [this message]
2024-07-10 20:29 ` Mina Almasry
2024-07-11 1:22 ` Jakub Kicinski
2024-07-10 23:42 ` Mina Almasry
2024-07-11 1:23 ` Jakub Kicinski
2024-07-11 20:57 ` Mina Almasry
2024-07-11 21:41 ` Jakub Kicinski
2024-07-10 0:17 ` [PATCH net-next v16 06/13] memory-provider: dmabuf devmem memory provider Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 07/13] net: support non paged skb frags Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 08/13] net: add support for skbs with unreadable frags Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 09/13] tcp: RX path for devmem TCP Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 10/13] net: add SO_DEVMEM_DONTNEED setsockopt to release RX frags Mina Almasry
2024-07-10 0:17 ` [PATCH net-next v16 11/13] net: add devmem TCP documentation Mina Almasry
2024-07-10 10:28 ` Donald Hunter
2024-07-10 0:17 ` [PATCH net-next v16 12/13] selftests: add ncdevmem, netcat for devmem TCP Mina Almasry
2024-07-11 0:44 ` John Hubbard
2024-07-11 15:28 ` Mina Almasry
2024-07-11 18:34 ` John Hubbard
2024-07-10 0:17 ` [PATCH net-next v16 13/13] netdev: add dmabuf introspection Mina Almasry
2024-07-11 1:35 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240710094900.0f808684@kernel.org \
--to=kuba@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=almasrymina@google.com \
--cc=andreas@gaisler.com \
--cc=ap420073@gmail.com \
--cc=arnd@arndb.de \
--cc=asml.silence@gmail.com \
--cc=bagasdotme@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=christian.koenig@amd.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=donald.hunter@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=dsahern@kernel.org \
--cc=dw@davidwei.uk \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=hch@infradead.org \
--cc=herbert@gondor.apana.org.au \
--cc=hramamurthy@google.com \
--cc=ilias.apalodimas@linaro.org \
--cc=ink@jurassic.park.msu.ru \
--cc=jeroendb@google.com \
--cc=jgg@ziepe.ca \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mattst88@gmail.com \
--cc=mhiramat@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pkaligineedi@google.com \
--cc=razor@blackwall.org \
--cc=richard.henderson@linaro.org \
--cc=rostedt@goodmis.org \
--cc=shailend@google.com \
--cc=shakeel.butt@linux.dev \
--cc=shuah@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=steffen.klassert@secunet.com \
--cc=sumit.semwal@linaro.org \
--cc=tsbogend@alpha.franken.de \
--cc=willemdebruijn.kernel@gmail.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).