[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250523032609.16334-18-byungchul@sk.com>
Date: Fri, 23 May 2025 12:26:08 +0900
From: Byungchul Park <byungchul@...com>
To: willy@...radead.org,
netdev@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
linux-mm@...ck.org,
kernel_team@...ynix.com,
kuba@...nel.org,
almasrymina@...gle.com,
ilias.apalodimas@...aro.org,
harry.yoo@...cle.com,
hawk@...nel.org,
akpm@...ux-foundation.org,
davem@...emloft.net,
john.fastabend@...il.com,
andrew+netdev@...n.ch,
asml.silence@...il.com,
toke@...hat.com,
tariqt@...dia.com,
edumazet@...gle.com,
pabeni@...hat.com,
saeedm@...dia.com,
leon@...nel.org,
ast@...nel.org,
daniel@...earbox.net,
david@...hat.com,
lorenzo.stoakes@...cle.com,
Liam.Howlett@...cle.com,
vbabka@...e.cz,
rppt@...nel.org,
surenb@...gle.com,
mhocko@...e.com,
horms@...nel.org,
linux-rdma@...r.kernel.org,
bpf@...r.kernel.org,
vishal.moola@...il.com
Subject: [PATCH 17/18] netdevsim: use netmem descriptor and APIs for page pool
To simplify struct page, the effort to seperate its own descriptor from
struct page is required and the work for page pool is on going.
Use netmem descriptor and APIs for page pool in netdevsim code.
Signed-off-by: Byungchul Park <byungchul@...com>
---
drivers/net/netdevsim/netdev.c | 18 +++++++++---------
drivers/net/netdevsim/netdevsim.h | 2 +-
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
index af545d42961c..c550a234807c 100644
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -821,7 +821,7 @@ nsim_pp_hold_read(struct file *file, char __user *data,
struct netdevsim *ns = file->private_data;
char buf[3] = "n\n";
- if (ns->page)
+ if (ns->netmem)
buf[0] = 'y';
return simple_read_from_buffer(data, count, ppos, buf, 2);
@@ -841,18 +841,18 @@ nsim_pp_hold_write(struct file *file, const char __user *data,
rtnl_lock();
ret = count;
- if (val == !!ns->page)
+ if (val == !!ns->netmem)
goto exit;
if (!netif_running(ns->netdev) && val) {
ret = -ENETDOWN;
} else if (val) {
- ns->page = page_pool_dev_alloc_pages(ns->rq[0]->page_pool);
- if (!ns->page)
+ ns->netmem = page_pool_dev_alloc_netmem(ns->rq[0]->page_pool, NULL, NULL);
+ if (!ns->netmem)
ret = -ENOMEM;
} else {
- page_pool_put_full_page(ns->page->pp, ns->page, false);
- ns->page = NULL;
+ page_pool_put_full_netmem(netmem_get_pp(ns->netmem), ns->netmem, false);
+ ns->netmem = 0;
}
exit:
@@ -1077,9 +1077,9 @@ void nsim_destroy(struct netdevsim *ns)
nsim_exit_netdevsim(ns);
/* Put this intentionally late to exercise the orphaning path */
- if (ns->page) {
- page_pool_put_full_page(ns->page->pp, ns->page, false);
- ns->page = NULL;
+ if (ns->netmem) {
+ page_pool_put_full_netmem(netmem_get_pp(ns->netmem), ns->netmem, false);
+ ns->netmem = 0;
}
free_netdev(dev);
diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h
index d04401f0bdf7..1dc51468a50c 100644
--- a/drivers/net/netdevsim/netdevsim.h
+++ b/drivers/net/netdevsim/netdevsim.h
@@ -138,7 +138,7 @@ struct netdevsim {
struct debugfs_u32_array dfs_ports[2];
} udp_ports;
- struct page *page;
+ netmem_ref netmem;
struct dentry *pp_dfs;
struct dentry *qr_dfs;
--
2.17.1
Powered by blists - more mailing lists