Messages in this thread | | | Date | Fri, 19 May 2023 15:56:40 +0200 | Subject | Re: [Intel-wired-lan] [PATCH net-next 07/11] net: page_pool: add DMA-sync-for-CPU inline helpers | From | Alexander Lobakin <> |
| |
From: Jakub Kicinski <kuba@kernel.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
| |