Re: [PATCH net-next v1 2/7] net: page_pool: create page_pool_alloc_netmem

2024-11-07 Thread Mina Almasry
On Sun, Nov 3, 2024 at 6:35 AM Yunsheng Lin  wrote:
>
> On 11/1/2024 9:10 PM, Mina Almasry wrote:
>
> ...
>
> >>
> >> Isn't it a little odd that old and new are not following the same
> >> pattern?
> >
> > Hi Yunsheng,
> >
> > The intention is that page_pool_alloc_pages is mirrored by
> > page_pool_alloc_netmems.
> >
> > And page_pool_alloc is mirrored by page_pool_alloc_netmem.
> >
> >>From your description, the behavior is the same for each function and
> > its mirror. What is the gap in the pattern that you see?
>
> I was mostly referring to the API naming pattern.
>
> Isn't it better if page_pool_alloc is mirrored by netmem_pool_alloc and
> netmem_pool_alloc_netmems is mirrored by page_pool_alloc_pages() from
> API naming prespective?
>

I've been treating the page_pool_* prefix to all the page_pool
functions as constant in all the renames so far. I replace 'page' with
'netmem' when available, or add a _netmem postfix when available.

> And maybe page_pool_alloc_frag can be mirrored by netmem_pool_alloc_frag
> in the future?
>
> Also, it would be good to update Documentation/networking/page_pool.rst
> for those new netmem APIs, or create a new doc file for them.
>

Heard. I do have an action item to update the docs. Currently, outside
of drivers immediately looking to immediately adopt devmem tcp, there
is no need yet to use the netmem APIs, but I do hope to make them more
widespread (and perhaps deprecate the page APIs when it's time to do
so).

-- 
Thanks,
Mina



Re: [PATCH net-next v1 2/7] net: page_pool: create page_pool_alloc_netmem

2024-11-03 Thread Yunsheng Lin

On 11/1/2024 9:10 PM, Mina Almasry wrote:

...



Isn't it a little odd that old and new are not following the same
pattern?


Hi Yunsheng,

The intention is that page_pool_alloc_pages is mirrored by
page_pool_alloc_netmems.

And page_pool_alloc is mirrored by page_pool_alloc_netmem.


From your description, the behavior is the same for each function and

its mirror. What is the gap in the pattern that you see?


I was mostly referring to the API naming pattern.

Isn't it better if page_pool_alloc is mirrored by netmem_pool_alloc and
netmem_pool_alloc_netmems is mirrored by page_pool_alloc_pages() from
API naming prespective?

And maybe page_pool_alloc_frag can be mirrored by netmem_pool_alloc_frag
in the future?

Also, it would be good to update Documentation/networking/page_pool.rst
for those new netmem APIs, or create a new doc file for them.








Re: [PATCH net-next v1 2/7] net: page_pool: create page_pool_alloc_netmem

2024-11-01 Thread Mina Almasry
On Fri, Nov 1, 2024 at 4:14 AM Yunsheng Lin  wrote:
>
> On 2024/10/30 4:45, Mina Almasry wrote:
> > Create page_pool_alloc_netmem to be the mirror of page_pool_alloc.
> >
> > This enables drivers that want currently use page_pool_alloc to
> > transition to netmem by converting the call sites to
> > page_pool_alloc_netmem.
>
> For old API, page_pool_alloc_pages() always return a whole page, and
> page_pool_alloc() returns a whole page or a page fragment based on the
> requested size.
>
> For new netmem API, page_pool_alloc_netmems() always return a whole
> netmem, and page_pool_alloc_netmem() returns a whole netmem or a netmem
> fragment based on the requested size.
>
> Isn't it a little odd that old and new are not following the same
> pattern?

Hi Yunsheng,

The intention is that page_pool_alloc_pages is mirrored by
page_pool_alloc_netmems.

And page_pool_alloc is mirrored by page_pool_alloc_netmem.

>From your description, the behavior is the same for each function and
its mirror. What is the gap in the pattern that you see?

-- 
Thanks,
Mina



Re: [PATCH net-next v1 2/7] net: page_pool: create page_pool_alloc_netmem

2024-11-01 Thread Yunsheng Lin
On 2024/10/30 4:45, Mina Almasry wrote:
> Create page_pool_alloc_netmem to be the mirror of page_pool_alloc.
> 
> This enables drivers that want currently use page_pool_alloc to
> transition to netmem by converting the call sites to
> page_pool_alloc_netmem.

For old API, page_pool_alloc_pages() always return a whole page, and
page_pool_alloc() returns a whole page or a page fragment based on the
requested size.

For new netmem API, page_pool_alloc_netmems() always return a whole
netmem, and page_pool_alloc_netmem() returns a whole netmem or a netmem
fragment based on the requested size.

Isn't it a little odd that old and new are not following the same
pattern?