From: Jakub Kicinski <kuba@kernel.org> To: Alexander Lobakin <aleksander.lobakin@intel.com> Cc: Jesper Dangaard Brouer <hawk@kernel.org>, Larysa Zaremba <larysa.zaremba@intel.com>, <netdev@vger.kernel.org>, Ilias Apalodimas <ilias.apalodimas@linaro.org>, <linux-kernel@vger.kernel.org>, "Christoph Hellwig" <hch@lst.de>, Eric Dumazet <edumazet@google.com>, Michal Kubiak <michal.kubiak@intel.com>, <intel-wired-lan@lists.osuosl.org>, Paolo Abeni <pabeni@redhat.com>, "David S. Miller" <davem@davemloft.net>, Magnus Karlsson <magnus.karlsson@intel.com> Subject: Re: [Intel-wired-lan] [PATCH net-next 07/11] net: page_pool: add DMA-sync-for-CPU inline helpers Date: Fri, 19 May 2023 13:45:45 -0700 [thread overview] Message-ID: <20230519134545.5807e1d8@kernel.org> (raw) In-Reply-To: <77d929b2-c124-d3db-1cd9-8301d1d269d3@intel.com> On Fri, 19 May 2023 15:56:40 +0200 Alexander Lobakin wrote: > From: Jakub Kicinski <kuba@kernel.org> > Date: Thu, 18 May 2023 13:36:27 -0700 > >> 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. Ack, in the scheme above most places (source files) would include something.h, the something/types.h is just for other headers. something/functions.h is basically never included directly. > 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. The idea makes sense in isolation, but I'm trying to figure out a convention which would not require case-by-case discussions. > 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 Ack, not saying that we need to split now, it's just about the naming (everyone's favorite topic). I think that it's a touch weird to name the header _drv.h and then include it in the core in multiple places (*cough* xdp_sock_drv.h). Also If someone needs to add another "heavy" static line for use by the core they will try to put it in page_pool.h rather than _drv.h... I'd rather split the includes by the basic language-level contents, first, then by the intended consumer, only if necessary. Language level sorting require less thinking :) But none of this is important, if you don't wanna to do it, just keep the new helpers in page_pool.h (let's not do another _drv.h).
WARNING: multiple messages have this Message-ID (diff)
From: Jakub Kicinski <kuba@kernel.org> To: Alexander Lobakin <aleksander.lobakin@intel.com> Cc: Jesper Dangaard Brouer <hawk@kernel.org>, Larysa Zaremba <larysa.zaremba@intel.com>, netdev@vger.kernel.org, Ilias Apalodimas <ilias.apalodimas@linaro.org>, linux-kernel@vger.kernel.org, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Michal Kubiak <michal.kubiak@intel.com>, intel-wired-lan@lists.osuosl.org, Paolo Abeni <pabeni@redhat.com>, Christoph Hellwig <hch@lst.de>, Magnus Karlsson <magnus.karlsson@intel.com> Subject: Re: [Intel-wired-lan] [PATCH net-next 07/11] net: page_pool: add DMA-sync-for-CPU inline helpers Date: Fri, 19 May 2023 13:45:45 -0700 [thread overview] Message-ID: <20230519134545.5807e1d8@kernel.org> (raw) In-Reply-To: <77d929b2-c124-d3db-1cd9-8301d1d269d3@intel.com> On Fri, 19 May 2023 15:56:40 +0200 Alexander Lobakin wrote: > From: Jakub Kicinski <kuba@kernel.org> > Date: Thu, 18 May 2023 13:36:27 -0700 > >> 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. Ack, in the scheme above most places (source files) would include something.h, the something/types.h is just for other headers. something/functions.h is basically never included directly. > 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. The idea makes sense in isolation, but I'm trying to figure out a convention which would not require case-by-case discussions. > 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 Ack, not saying that we need to split now, it's just about the naming (everyone's favorite topic). I think that it's a touch weird to name the header _drv.h and then include it in the core in multiple places (*cough* xdp_sock_drv.h). Also If someone needs to add another "heavy" static line for use by the core they will try to put it in page_pool.h rather than _drv.h... I'd rather split the includes by the basic language-level contents, first, then by the intended consumer, only if necessary. Language level sorting require less thinking :) But none of this is important, if you don't wanna to do it, just keep the new helpers in page_pool.h (let's not do another _drv.h). _______________________________________________ Intel-wired-lan mailing list Intel-wired-lan@osuosl.org https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
next prev parent reply other threads:[~2023-05-19 20:45 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-16 16:18 [PATCH net-next 00/11] net: intel: start The Great Code Dedup + Page Pool for iavf Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [PATCH net-next 01/11] net: intel: introduce Intel Ethernet common library Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [PATCH net-next 02/11] iavf: kill "legacy-rx" for good Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [PATCH net-next 03/11] iavf: optimize Rx buffer allocation a bunch Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 04/11] iavf: remove page splitting/recycling Alexander Lobakin 2023-05-16 16:18 ` Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 05/11] iavf: always use a full order-0 page Alexander Lobakin 2023-05-16 16:18 ` Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 06/11] net: page_pool: avoid calling no-op externals when possible Alexander Lobakin 2023-05-16 16:18 ` Alexander Lobakin 2023-05-17 8:14 ` Christoph Hellwig 2023-05-17 8:14 ` [Intel-wired-lan] " Christoph Hellwig 2023-05-18 13:26 ` Alexander Lobakin 2023-05-18 13:26 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-18 4:08 ` Jakub Kicinski 2023-05-18 4:08 ` [Intel-wired-lan] " Jakub Kicinski 2023-05-18 4:54 ` Yunsheng Lin 2023-05-18 4:54 ` [Intel-wired-lan] " Yunsheng Lin 2023-05-18 13:29 ` Alexander Lobakin 2023-05-18 13:29 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-18 13:34 ` Alexander Lobakin 2023-05-18 13:34 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-18 15:02 ` Jakub Kicinski 2023-05-18 15:02 ` Jakub Kicinski 2023-05-16 16:18 ` [PATCH net-next 07/11] net: page_pool: add DMA-sync-for-CPU inline helpers Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-18 4:12 ` Jakub Kicinski 2023-05-18 4:12 ` [Intel-wired-lan] " Jakub Kicinski 2023-05-18 7:03 ` Ilias Apalodimas 2023-05-18 7:03 ` [Intel-wired-lan] " Ilias Apalodimas 2023-05-18 13:53 ` Alexander Lobakin 2023-05-18 13:53 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-18 13:45 ` Alexander Lobakin 2023-05-18 13:45 ` Alexander Lobakin 2023-05-18 14:56 ` Jakub Kicinski 2023-05-18 14:56 ` Jakub Kicinski 2023-05-18 15:41 ` Alexander Lobakin 2023-05-18 15:41 ` Alexander Lobakin 2023-05-18 20:36 ` Jakub Kicinski 2023-05-18 20:36 ` Jakub Kicinski 2023-05-19 13:56 ` Alexander Lobakin 2023-05-19 13:56 ` Alexander Lobakin 2023-05-19 20:45 ` Jakub Kicinski [this message] 2023-05-19 20:45 ` Jakub Kicinski 2023-05-22 13:48 ` Alexander Lobakin 2023-05-22 13:48 ` Alexander Lobakin 2023-05-22 15:27 ` Magnus Karlsson 2023-05-22 15:27 ` Magnus Karlsson 2023-05-18 4:19 ` Jakub Kicinski 2023-05-18 4:19 ` [Intel-wired-lan] " Jakub Kicinski 2023-05-16 16:18 ` [PATCH net-next 08/11] iavf: switch to Page Pool Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-23 22:42 ` David Christensen 2023-05-23 22:42 ` [Intel-wired-lan] " David Christensen 2023-05-25 11:08 ` Alexander Lobakin 2023-05-25 11:08 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-31 20:18 ` David Christensen 2023-06-02 13:25 ` Alexander Lobakin 2023-06-02 13:25 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [PATCH net-next 09/11] libie: add common queue stats Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 10/11] libie: add per-queue Page Pool stats Alexander Lobakin 2023-05-16 16:18 ` Alexander Lobakin 2023-05-18 4:19 ` Jakub Kicinski 2023-05-18 4:19 ` [Intel-wired-lan] " Jakub Kicinski 2023-05-18 13:47 ` Alexander Lobakin 2023-05-18 13:47 ` [Intel-wired-lan] " Alexander Lobakin 2023-05-22 15:05 ` Paul Menzel 2023-05-22 15:05 ` Paul Menzel 2023-05-22 15:32 ` Alexander Lobakin 2023-05-22 15:32 ` Alexander Lobakin 2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 11/11] iavf: switch queue stats to libie Alexander Lobakin 2023-05-16 16:18 ` Alexander Lobakin
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=20230519134545.5807e1d8@kernel.org \ --to=kuba@kernel.org \ --cc=aleksander.lobakin@intel.com \ --cc=davem@davemloft.net \ --cc=edumazet@google.com \ --cc=hawk@kernel.org \ --cc=hch@lst.de \ --cc=ilias.apalodimas@linaro.org \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=larysa.zaremba@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=magnus.karlsson@intel.com \ --cc=michal.kubiak@intel.com \ --cc=netdev@vger.kernel.org \ --cc=pabeni@redhat.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.