Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2025 21:17:26 +0000
From:      Navdeep Parhar <np@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 98f6f6e4f4bb - main - cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV
Message-ID:  <69261ce6.31d1c.79c43e11@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by np:

URL: https://cgit.FreeBSD.org/src/commit/?id=98f6f6e4f4bb7b19e12de89fc8cc034915f7a759

commit 98f6f6e4f4bb7b19e12de89fc8cc034915f7a759
Author:     Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2025-11-25 19:04:30 +0000
Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2025-11-25 21:08:03 +0000

    cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV
    
    MFC after:      1 week
    Sponsored by:   Chelsio Communications
---
 sys/dev/cxgbe/t4_main.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index 946eb84457a3..5e02b47da8d9 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -2817,7 +2817,7 @@ cxgbe_probe(device_t dev)
 #define T4_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \
     IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \
     IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6 | IFCAP_HWSTATS | \
-    IFCAP_HWRXTSTMP | IFCAP_MEXTPG)
+    IFCAP_HWRXTSTMP | IFCAP_MEXTPG | IFCAP_NV)
 #define T4_CAP_ENABLE (T4_CAP)
 
 static void
@@ -3065,7 +3065,7 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
 	struct port_info *pi = vi->pi;
 	struct adapter *sc = pi->adapter;
 	struct ifreq *ifr = (struct ifreq *)data;
-	uint32_t mask;
+	uint32_t mask, mask2;
 
 	switch (cmd) {
 	case SIOCSIFMTU:
@@ -3124,12 +3124,24 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
 		end_synchronized_op(sc, 0);
 		break;
 
+	case SIOCGIFCAPNV:
+		break;
+	case SIOCSIFCAPNV:
 	case SIOCSIFCAP:
 		rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4cap");
 		if (rc)
 			return (rc);
 
-		mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
+		if (cmd == SIOCSIFCAPNV) {
+			const struct siocsifcapnv_driver_data *ifr_nv =
+			    (struct siocsifcapnv_driver_data *)data;
+
+			mask = ifr_nv->reqcap ^ if_getcapenable(ifp);
+			mask2 = ifr_nv->reqcap2 ^ if_getcapenable2(ifp);
+		} else {
+			mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
+			mask2 = 0;
+		}
 		if (mask & IFCAP_TXCSUM) {
 			if_togglecapenable(ifp, IFCAP_TXCSUM);
 			if_togglehwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP);
@@ -3264,6 +3276,9 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
 			    CSUM_INNER_IP_TSO);
 		}
 
+		MPASS(mask2 == 0);
+		(void)mask2;
+
 #ifdef VLAN_CAPABILITIES
 		VLAN_CAPABILITIES(ifp);
 #endif


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69261ce6.31d1c.79c43e11>