git: 75b13b151c9e - stable/13 - netmap: iflib: add nm_config callback

Vincenzo Maffione vmaffione at FreeBSD.org
Mon Apr 5 08:04:21 UTC 2021


The branch stable/13 has been updated by vmaffione:

URL: https://cgit.FreeBSD.org/src/commit/?id=75b13b151c9e3d8fd71eab3578d4a83b067dadf6

commit 75b13b151c9e3d8fd71eab3578d4a83b067dadf6
Author:     Vincenzo Maffione <vmaffione at FreeBSD.org>
AuthorDate: 2021-03-29 09:26:12 +0000
Commit:     Vincenzo Maffione <vmaffione at FreeBSD.org>
CommitDate: 2021-04-05 08:04:00 +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
    
    (cherry picked from commit 21d0c01226eb979556d6d792ec58eb54012fbc24)
---
 sys/net/iflib.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index 9f3eff555728..788cc51822a1 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