From: Mina Almasry <almasrymina@google.com>
To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
bpf@vger.kernel.org
Cc: "Mina Almasry" <almasrymina@google.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Ingo Molnar" <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Michael Chan" <michael.chan@broadcom.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"John Fastabend" <john.fastabend@gmail.com>,
"Wei Fang" <wei.fang@nxp.com>,
"Shenwei Wang" <shenwei.wang@nxp.com>,
"Clark Wang" <xiaoning.wang@nxp.com>,
"NXP Linux Team" <linux-imx@nxp.com>,
"Jeroen de Borst" <jeroendb@google.com>,
"Praveen Kaligineedi" <pkaligineedi@google.com>,
"Shailend Chand" <shailend@google.com>,
"Yisen Zhuang" <yisen.zhuang@huawei.com>,
"Salil Mehta" <salil.mehta@huawei.com>,
"Jesse Brandeburg" <jesse.brandeburg@intel.com>,
"Tony Nguyen" <anthony.l.nguyen@intel.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Marcin Wojtas" <mw@semihalf.com>,
"Russell King" <linux@armlinux.org.uk>,
"Sunil Goutham" <sgoutham@marvell.com>,
"Geetha sowjanya" <gakula@marvell.com>,
"Subbaraya Sundeep" <sbhatta@marvell.com>,
hariprasad <hkelam@marvell.com>, "Felix Fietkau" <nbd@nbd.name>,
"John Crispin" <john@phrozen.org>,
"Sean Wang" <sean.wang@mediatek.com>,
"Mark Lee" <Mark-MC.Lee@mediatek.com>,
"Lorenzo Bianconi" <lorenzo@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Saeed Mahameed" <saeedm@nvidia.com>,
"Leon Romanovsky" <leon@kernel.org>,
"Horatiu Vultur" <horatiu.vultur@microchip.com>,
UNGLinuxDriver@microchip.com,
"K. Y. Srinivasan" <kys@microsoft.com>,
"Haiyang Zhang" <haiyangz@microsoft.com>,
"Wei Liu" <wei.liu@kernel.org>,
"Dexuan Cui" <decui@microsoft.com>,
"Jassi Brar" <jaswinder.singh@linaro.org>,
"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
"Jose Abreu" <joabreu@synopsys.com>,
"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
"Siddharth Vadapalli" <s-vadapalli@ti.com>,
"Ravi Gunasekaran" <r-gunasekaran@ti.com>,
"Roger Quadros" <rogerq@kernel.org>,
"Jiawen Wu" <jiawenwu@trustnetic.com>,
"Mengyuan Lou" <mengyuanlou@net-swift.com>,
"Ronak Doshi" <doshir@vmware.com>,
"VMware PV-Drivers Reviewers" <pv-drivers@vmware.com>,
"Ryder Lee" <ryder.lee@mediatek.com>,
"Shayne Chen" <shayne.chen@mediatek.com>,
"Kalle Valo" <kvalo@kernel.org>,
"Juergen Gross" <jgross@suse.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Martin KaFai Lau" <martin.lau@linux.dev>,
"Song Liu" <song@kernel.org>,
"Yonghong Song" <yonghong.song@linux.dev>,
"KP Singh" <kpsingh@kernel.org>,
"Stanislav Fomichev" <sdf@google.com>,
"Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Stefano Garzarella" <sgarzare@redhat.com>,
"Shuah Khan" <shuah@kernel.org>,
"Mickaël Salaün" <mic@digikod.net>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
"Jason Gunthorpe" <jgg@nvidia.com>,
"Shakeel Butt" <shakeelb@google.com>,
"Yunsheng Lin" <linyunsheng@huawei.com>,
"Willem de Bruijn" <willemdebruijn.kernel@gmail.com>
Subject: [RFC PATCH net-next v1 0/4] Abstract page from net stack
Date: Wed, 13 Dec 2023 18:05:23 -0800 [thread overview]
Message-ID: <20231214020530.2267499-1-almasrymina@google.com> (raw)
Currently these components in the net stack use the struct page
directly:
1. Drivers.
2. Page pool.
3. skb_frag_t.
To add support for new (non struct page) memory types to the net stack, we
must first abstract the current memory type.
Originally the plan was to reuse struct page* for the new memory types,
and to set the LSB on the page* to indicate it's not really a page.
However, for safe compiler type checking we need to introduce a new type.
struct netmem is introduced to abstract the underlying memory type.
Currently it's a no-op abstraction that is always a struct page underneath.
In parallel there is an undergoing effort to add support for devmem to the
net stack:
https://lore.kernel.org/netdev/20231208005250.2910004-1-almasrymina@google.com/
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Yunsheng Lin <linyunsheng@huawei.com>
Cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Mina Almasry (4):
vsock/virtio: use skb_frag_page() helper
net: introduce abstraction for network memory
net: add netmem_t to skb_frag_t
net: page_pool: use netmem_t instead of struct page in API
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 15 ++--
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 8 ++-
drivers/net/ethernet/engleder/tsnep_main.c | 22 +++---
drivers/net/ethernet/freescale/fec_main.c | 33 ++++++---
.../net/ethernet/hisilicon/hns3/hns3_enet.c | 14 ++--
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 2 +-
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 15 ++--
drivers/net/ethernet/marvell/mvneta.c | 24 ++++---
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 18 +++--
.../marvell/octeontx2/nic/otx2_common.c | 8 ++-
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 +++---
.../net/ethernet/mellanox/mlx5/core/en/xdp.c | 27 ++++---
.../net/ethernet/mellanox/mlx5/core/en_rx.c | 28 ++++----
.../ethernet/microchip/lan966x/lan966x_fdma.c | 16 +++--
drivers/net/ethernet/microsoft/mana/mana_en.c | 10 +--
drivers/net/ethernet/socionext/netsec.c | 25 ++++---
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 48 ++++++++-----
drivers/net/ethernet/ti/cpsw.c | 11 +--
drivers/net/ethernet/ti/cpsw_new.c | 11 +--
drivers/net/ethernet/ti/cpsw_priv.c | 12 ++--
drivers/net/ethernet/wangxun/libwx/wx_lib.c | 18 +++--
drivers/net/veth.c | 5 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 7 +-
drivers/net/vmxnet3/vmxnet3_xdp.c | 20 +++---
drivers/net/wireless/mediatek/mt76/dma.c | 4 +-
drivers/net/wireless/mediatek/mt76/mt76.h | 5 +-
.../net/wireless/mediatek/mt76/mt7915/mmio.c | 4 +-
drivers/net/xen-netfront.c | 4 +-
include/linux/skbuff.h | 11 ++-
include/net/netmem.h | 35 +++++++++
include/net/page_pool/helpers.h | 72 ++++++++++---------
include/net/page_pool/types.h | 9 +--
net/bpf/test_run.c | 2 +-
net/core/page_pool.c | 39 +++++-----
net/core/skbuff.c | 2 +-
net/core/xdp.c | 3 +-
net/kcm/kcmsock.c | 9 ++-
net/vmw_vsock/virtio_transport.c | 2 +-
38 files changed, 381 insertions(+), 239 deletions(-)
create mode 100644 include/net/netmem.h
--
2.43.0.472.g3155946c3a-goog
next reply other threads:[~2023-12-14 2:05 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-14 2:05 Mina Almasry [this message]
2023-12-14 2:05 ` [RFC PATCH net-next v1 1/4] vsock/virtio: use skb_frag_page() helper Mina Almasry
2023-12-14 6:27 ` David Ahern
2023-12-14 8:19 ` Stefano Garzarella
2023-12-14 2:05 ` [RFC PATCH net-next v1 2/4] net: introduce abstraction for network memory Mina Almasry
2023-12-14 6:34 ` David Ahern
2023-12-16 2:51 ` Jakub Kicinski
2023-12-16 22:10 ` Mina Almasry
2023-12-17 1:45 ` David Ahern
2023-12-17 8:14 ` Mina Almasry
2023-12-18 22:06 ` Jakub Kicinski
2023-12-18 22:38 ` Mina Almasry
2023-12-19 17:27 ` Shakeel Butt
2023-12-14 2:05 ` [RFC PATCH net-next v1 3/4] net: add netmem_t to skb_frag_t Mina Almasry
2023-12-14 2:05 ` [RFC PATCH net-next v1 4/4] net: page_pool: use netmem_t instead of struct page in API Mina Almasry
2023-12-14 12:05 ` Yunsheng Lin
2023-12-14 16:27 ` Mina Almasry
2023-12-15 2:11 ` Shakeel Butt
2023-12-15 11:04 ` Yunsheng Lin
2023-12-15 16:47 ` Shakeel Butt
2023-12-16 3:01 ` Jakub Kicinski
2023-12-16 19:46 ` Shakeel Butt
2023-12-16 22:06 ` Mina Almasry
2023-12-20 3:01 ` Mina Almasry
2023-12-21 11:32 ` Yunsheng Lin
2023-12-21 21:22 ` Mina Almasry
2023-12-22 6:42 ` Yunsheng Lin
2024-01-02 16:14 ` Mina Almasry
2024-01-03 9:47 ` Yunsheng Lin
2024-01-03 18:38 ` Mina Almasry
2024-01-04 8:48 ` Yunsheng Lin
2024-01-04 18:24 ` Mina Almasry
2024-01-05 8:40 ` Yunsheng Lin
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=20231214020530.2267499-1-almasrymina@google.com \
--to=almasrymina@google.com \
--cc=Mark-MC.Lee@mediatek.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrii@kernel.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=anthony.l.nguyen@intel.com \
--cc=ast@kernel.org \
--cc=bp@alien8.de \
--cc=bpf@vger.kernel.org \
--cc=christian.koenig@amd.com \
--cc=daniel@iogearbox.net \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=doshir@vmware.com \
--cc=edumazet@google.com \
--cc=gakula@marvell.com \
--cc=gregkh@linuxfoundation.org \
--cc=haiyangz@microsoft.com \
--cc=haoluo@google.com \
--cc=hawk@kernel.org \
--cc=hkelam@marvell.com \
--cc=horatiu.vultur@microchip.com \
--cc=hpa@zytor.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jaswinder.singh@linaro.org \
--cc=jeroendb@google.com \
--cc=jesse.brandeburg@intel.com \
--cc=jgg@nvidia.com \
--cc=jgross@suse.com \
--cc=jiawenwu@trustnetic.com \
--cc=joabreu@synopsys.com \
--cc=john.fastabend@gmail.com \
--cc=john@phrozen.org \
--cc=jolsa@kernel.org \
--cc=justinstitt@google.com \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=kvalo@kernel.org \
--cc=kys@microsoft.com \
--cc=leon@kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linyunsheng@huawei.com \
--cc=lorenzo@kernel.org \
--cc=martin.lau@linux.dev \
--cc=matthias.bgg@gmail.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=mengyuanlou@net-swift.com \
--cc=mic@digikod.net \
--cc=michael.chan@broadcom.com \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=mw@semihalf.com \
--cc=nathan@kernel.org \
--cc=nbd@nbd.name \
--cc=ndesaulniers@google.com \
--cc=netdev@vger.kernel.org \
--cc=oleksandr_tyshchenko@epam.com \
--cc=pabeni@redhat.com \
--cc=pkaligineedi@google.com \
--cc=pv-drivers@vmware.com \
--cc=r-gunasekaran@ti.com \
--cc=rafael@kernel.org \
--cc=rogerq@kernel.org \
--cc=ryder.lee@mediatek.com \
--cc=s-vadapalli@ti.com \
--cc=saeedm@nvidia.com \
--cc=salil.mehta@huawei.com \
--cc=sbhatta@marvell.com \
--cc=sdf@google.com \
--cc=sean.wang@mediatek.com \
--cc=sgarzare@redhat.com \
--cc=sgoutham@marvell.com \
--cc=shailend@google.com \
--cc=shakeelb@google.com \
--cc=shayne.chen@mediatek.com \
--cc=shenwei.wang@nxp.com \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=sstabellini@kernel.org \
--cc=stefanha@redhat.com \
--cc=sumit.semwal@linaro.org \
--cc=tglx@linutronix.de \
--cc=thomas.petazzoni@bootlin.com \
--cc=wei.fang@nxp.com \
--cc=wei.liu@kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
--cc=x86@kernel.org \
--cc=xiaoning.wang@nxp.com \
--cc=yisen.zhuang@huawei.com \
--cc=yonghong.song@linux.dev \
/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