aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/netmap
diff options
context:
space:
mode:
authorVincenzo Maffione <vmaffione@FreeBSD.org>2022-03-06 17:28:44 +0000
committerVincenzo Maffione <vmaffione@FreeBSD.org>2022-03-06 17:29:44 +0000
commitdd6ab49a9aebb5fbb85973d9a859d24daa5e2165 (patch)
treed0f1a7c49ab7e94fd5d755b0eb1c3718bed0e8cb /sys/dev/netmap
parent09a1893398fdcd1d000dae1cb3fd5239c0bfb360 (diff)
Diffstat (limited to 'sys/dev/netmap')
-rw-r--r--sys/dev/netmap/netmap_bdg.c4
-rw-r--r--sys/dev/netmap/netmap_kern.h4
-rw-r--r--sys/dev/netmap/netmap_vale.c13
3 files changed, 14 insertions, 7 deletions
diff --git a/sys/dev/netmap/netmap_bdg.c b/sys/dev/netmap/netmap_bdg.c
index 103a3b00762e..1d49a97eec12 100644
--- a/sys/dev/netmap/netmap_bdg.c
+++ b/sys/dev/netmap/netmap_bdg.c
@@ -1828,7 +1828,7 @@ netmap_init_bridges(void)
#ifdef CONFIG_NET_NS
return netmap_bns_register();
#else
- nm_bridges = netmap_init_bridges2(NM_BRIDGES);
+ nm_bridges = netmap_init_bridges2(vale_max_bridges);
if (nm_bridges == NULL)
return ENOMEM;
return 0;
@@ -1841,6 +1841,6 @@ netmap_uninit_bridges(void)
#ifdef CONFIG_NET_NS
netmap_bns_unregister();
#else
- netmap_uninit_bridges2(nm_bridges, NM_BRIDGES);
+ netmap_uninit_bridges2(nm_bridges, vale_max_bridges);
#endif
}
diff --git a/sys/dev/netmap/netmap_kern.h b/sys/dev/netmap/netmap_kern.h
index 5d8957241c21..f8d824f08ebb 100644
--- a/sys/dev/netmap/netmap_kern.h
+++ b/sys/dev/netmap/netmap_kern.h
@@ -1559,6 +1559,8 @@ int netmap_get_vale_na(struct nmreq_header *hdr, struct netmap_adapter **na,
void *netmap_vale_create(const char *bdg_name, int *return_status);
int netmap_vale_destroy(const char *bdg_name, void *auth_token);
+extern unsigned int vale_max_bridges;
+
#else /* !WITH_VALE */
#define netmap_bdg_learning(_1, _2, _3, _4) 0
#define netmap_get_vale_na(_1, _2, _3, _4) 0
@@ -1606,7 +1608,7 @@ extern struct nm_bridge *nm_bridges;
#define netmap_bns_get()
#define netmap_bns_put(_1)
#define netmap_bns_getbridges(b, n) \
- do { *b = nm_bridges; *n = NM_BRIDGES; } while (0)
+ do { *b = nm_bridges; *n = vale_max_bridges; } while (0)
#endif
/* Various prototypes */
diff --git a/sys/dev/netmap/netmap_vale.c b/sys/dev/netmap/netmap_vale.c
index aac4cfe6736a..7813984ad295 100644
--- a/sys/dev/netmap/netmap_vale.c
+++ b/sys/dev/netmap/netmap_vale.c
@@ -84,10 +84,9 @@ __FBSDID("$FreeBSD$");
/*
* system parameters (most of them in netmap_kern.h)
- * NM_BDG_NAME prefix for switch port names, default "vale"
+ * NM_BDG_NAME prefix for switch port names, default "vale"
* NM_BDG_MAXPORTS number of ports
- * NM_BRIDGES max number of switches in the system.
- * XXX should become a sysctl or tunable
+ * NM_BRIDGES max number of switches in the system.
*
* Switch ports are named valeX:Y where X is the switch name and Y
* is the port. If Y matches a physical interface name, the port is
@@ -115,10 +114,16 @@ __FBSDID("$FreeBSD$");
* last packet in the block may overflow the size.
*/
static int bridge_batch = NM_BDG_BATCH; /* bridge batch size */
+
+/* Max number of vale bridges (loader tunable). */
+unsigned int vale_max_bridges = NM_BRIDGES;
+
SYSBEGIN(vars_vale);
SYSCTL_DECL(_dev_netmap);
SYSCTL_INT(_dev_netmap, OID_AUTO, bridge_batch, CTLFLAG_RW, &bridge_batch, 0,
"Max batch size to be used in the bridge");
+SYSCTL_UINT(_dev_netmap, OID_AUTO, max_bridges, CTLFLAG_RDTUN, &vale_max_bridges, 0,
+ "Max number of vale bridges");
SYSEND;
static int netmap_vale_vp_create(struct nmreq_header *hdr, struct ifnet *,
@@ -366,7 +371,7 @@ netmap_vale_list(struct nmreq_header *hdr)
j = req->nr_port_idx;
NMG_LOCK();
- for (error = ENOENT; i < NM_BRIDGES; i++) {
+ for (error = ENOENT; i < vale_max_bridges; i++) {
b = bridges + i;
for ( ; j < NM_BDG_MAXPORTS; j++) {
if (b->bdg_ports[j] == NULL)