[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <77d929b2-c124-d3db-1cd9-8301d1d269d3@intel.com>
Date: Fri, 19 May 2023 15:56:40 +0200
From: Alexander Lobakin <aleksander.lobakin@...el.com>
To: Jakub Kicinski <kuba@...nel.org>
CC: Jesper Dangaard Brouer <hawk@...nel.org>, Larysa Zaremba
<larysa.zaremba@...el.com>, <netdev@...r.kernel.org>, Ilias Apalodimas
<ilias.apalodimas@...aro.org>, <linux-kernel@...r.kernel.org>, "Christoph
Hellwig" <hch@....de>, Eric Dumazet <edumazet@...gle.com>, Michal Kubiak
<michal.kubiak@...el.com>, <intel-wired-lan@...ts.osuosl.org>, Paolo Abeni
<pabeni@...hat.com>, "David S. Miller" <davem@...emloft.net>, Magnus Karlsson
<magnus.karlsson@...el.com>
Subject: Re: [Intel-wired-lan] [PATCH net-next 07/11] net: page_pool: add
DMA-sync-for-CPU inline helpers
From: Jakub Kicinski <kuba@...nel.org>
Date: Thu, 18 May 2023 13:36:27 -0700
> On Thu, 18 May 2023 17:41:52 +0200 Alexander Lobakin wrote:
>>> Or maybe we can do both? I think that separating types, defines and
>>> simple wrappers from helpers should be considered good code hygiene.
>>
>> I'll definitely take a look, I also like the idea of minimalistic and
>> lightweight headers.
>> page_pool.h and page_pool_drv.h? :D
>
> What I've been doing lately is split like this:
>
> include/net/something.h (simply includes all other headers)
> include/net/something/types.h (structs, defines, enums)
> include/net/something/functions.h (inlines and function declarations)
>
> If that's reasonable -- we should put the helpers under
>
> include/net/page_pool/functions.h ?
Hmm, all files that need something from page_pool.h usually need both
types and functions. Not sure we'll benefit anything here. OTOH leaving
those sync-for-cpu inlines alone allows to avoid including dma-mapping.h
and currently only IAVF needs them. So my idea is:
- you need smth from PP, but not sync-for-cpu -- more lightweight
page_pool.h is for you;
- you need sync-for-cpu (or maybe something else with heavy deps in the
future) -- just include page_pool_drv.h.
I tried moving something else, but couldn't find anything that would
give any win. <linux/mm.h> and <linux/ptr_ring.h> are needed to define
`struct page_pool`, i.e. even being structured like in your example they
would've gone into pp/types.h =\
`struct ptr_ring` itself doesn't require any MM-related definitions, so
would we split it into ptr_ring/{types,functions}.h, we could probably
avoid a couple includes :D
Thanks,
Olek
Powered by blists - more mailing lists