git: 21d0c01226eb - main - netmap: iflib: add nm_config callback
Vincenzo Maffione
vmaffione at FreeBSD.org
Mon Mar 29 09:59:40 UTC 2021
The branch main has been updated by vmaffione:
URL: https://cgit.FreeBSD.org/src/commit/?id=21d0c01226eb979556d6d792ec58eb54012fbc24
commit 21d0c01226eb979556d6d792ec58eb54012fbc24
Author: you at x <you at x>
AuthorDate: 2021-03-29 09:26:12 +0000
Commit: Vincenzo Maffione <vmaffione at FreeBSD.org>
CommitDate: 2021-03-29 09:31:18 +0000
netmap: iflib: add nm_config callback
This per-driver callback is invoked by netmap when it wants
to align the number of TX/RX netmap rings and/or the number of
TX/RX netmap slots to the actual state configured in the hardware.
The alignment happens when netmap mode is switched on (with no
active netmap file descriptors for that netmap port), or when
collecting netmap port information.
MFC after: 1 week
---
sys/net/iflib.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index 05e99ba318df..f6cf1233a3b5 100644
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -829,6 +829,26 @@ iflib_netmap_register(struct netmap_adapter *na, int onoff)
return (status);
}
+static int
+iflib_netmap_config(struct netmap_adapter *na, struct nm_config_info *info)
+{
+ if_t ifp = na->ifp;
+ if_ctx_t ctx = ifp->if_softc;
+ iflib_rxq_t rxq = &ctx->ifc_rxqs[0];
+ iflib_fl_t fl = &rxq->ifr_fl[0];
+
+ info->num_tx_rings = ctx->ifc_softc_ctx.isc_ntxqsets;
+ info->num_rx_rings = ctx->ifc_softc_ctx.isc_nrxqsets;
+ info->num_tx_descs = iflib_num_tx_descs(ctx);
+ info->num_rx_descs = iflib_num_rx_descs(ctx);
+ info->rx_buf_maxsize = fl->ifl_buf_size;
+ nm_prinf("txr %u rxr %u txd %u rxd %u rbufsz %u",
+ info->num_tx_rings, info->num_rx_rings, info->num_tx_descs,
+ info->num_rx_descs, info->rx_buf_maxsize);
+
+ return 0;
+}
+
static int
netmap_fl_refill(iflib_rxq_t rxq, struct netmap_kring *kring, bool init)
{
@@ -1279,6 +1299,7 @@ iflib_netmap_attach(if_ctx_t ctx)
na.nm_rxsync = iflib_netmap_rxsync;
na.nm_register = iflib_netmap_register;
na.nm_intr = iflib_netmap_intr;
+ na.nm_config = iflib_netmap_config;
na.num_tx_rings = ctx->ifc_softc_ctx.isc_ntxqsets;
na.num_rx_rings = ctx->ifc_softc_ctx.isc_nrxqsets;
return (netmap_attach(&na));
More information about the dev-commits-src-all
mailing list