git: 284f29f84ac8 - stable/14 - netmap: Let memory allocator parameters be settable via loader.conf
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 07 Jan 2026 13:50:53 UTC
The branch stable/14 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=284f29f84ac8a5a3f9f02ef145332af678ccc23f
commit 284f29f84ac8a5a3f9f02ef145332af678ccc23f
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-12-14 15:47:48 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-01-07 13:50:37 +0000
netmap: Let memory allocator parameters be settable via loader.conf
This is useful when dev.netmap.port_numa_affinity is set to 1. When
interfaces attach, they get a memory allocator that is copied from
nm_mem. Parameters in nm_mem can be set using sysctls, but this happens
after their values are copied.
To work around this, we can make it possible to set these memory
parameters as tunables.
Reviewed by: vmaffione
MFC after: 1 week
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D54178
(cherry picked from commit c694122f3cfb7d52b882fa79086d49f45a2c7fd2)
---
sys/dev/netmap/netmap_mem2.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/sys/dev/netmap/netmap_mem2.c b/sys/dev/netmap/netmap_mem2.c
index 50a5d2bc50f2..adcb1acbbd5c 100644
--- a/sys/dev/netmap/netmap_mem2.c
+++ b/sys/dev/netmap/netmap_mem2.c
@@ -628,22 +628,26 @@ static const struct netmap_mem_d nm_blueprint = {
#define STRINGIFY(x) #x
-#define DECLARE_SYSCTLS(id, name) \
- SYSBEGIN(mem2_ ## name); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, name##_size, \
- CTLFLAG_RW, &nm_mem.params[id].size, 0, "Requested size of netmap " STRINGIFY(name) "s"); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, name##_curr_size, \
- CTLFLAG_RD, &nm_mem.pools[id]._objsize, 0, "Current size of netmap " STRINGIFY(name) "s"); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, name##_num, \
- CTLFLAG_RW, &nm_mem.params[id].num, 0, "Requested number of netmap " STRINGIFY(name) "s"); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, name##_curr_num, \
- CTLFLAG_RD, &nm_mem.pools[id].objtotal, 0, "Current number of netmap " STRINGIFY(name) "s"); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, priv_##name##_size, \
- CTLFLAG_RW, &netmap_min_priv_params[id].size, 0, \
+#define DECLARE_SYSCTLS(id, name) \
+ SYSBEGIN(mem2_ ## name); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, name##_size, \
+ CTLFLAG_RWTUN, &nm_mem.params[id].size, 0, \
+ "Requested size of netmap " STRINGIFY(name) "s"); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, name##_curr_size, \
+ CTLFLAG_RD, &nm_mem.pools[id]._objsize, 0, \
+ "Current size of netmap " STRINGIFY(name) "s"); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, name##_num, \
+ CTLFLAG_RWTUN, &nm_mem.params[id].num, 0, \
+ "Requested number of netmap " STRINGIFY(name) "s"); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, name##_curr_num, \
+ CTLFLAG_RD, &nm_mem.pools[id].objtotal, 0, \
+ "Current number of netmap " STRINGIFY(name) "s"); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, priv_##name##_size, \
+ CTLFLAG_RWTUN, &netmap_min_priv_params[id].size, 0, \
"Default size of private netmap " STRINGIFY(name) "s"); \
- SYSCTL_INT(_dev_netmap, OID_AUTO, priv_##name##_num, \
- CTLFLAG_RW, &netmap_min_priv_params[id].num, 0, \
- "Default number of private netmap " STRINGIFY(name) "s"); \
+ SYSCTL_INT(_dev_netmap, OID_AUTO, priv_##name##_num, \
+ CTLFLAG_RWTUN, &netmap_min_priv_params[id].num, 0, \
+ "Default number of private netmap " STRINGIFY(name) "s"); \
SYSEND
SYSCTL_DECL(_dev_netmap);