From nobody Wed Nov 26 13:06:45 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dGfwX1nlKz6J2c3; Wed, 26 Nov 2025 13:07:08 +0000 (UTC) (envelope-from gallatin@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dGfwW6vd9z4JKF; Wed, 26 Nov 2025 13:07:07 +0000 (UTC) (envelope-from gallatin@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764162428; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=4zLnPAY8xTI0S5t+DjZ6K36XG/HVxh0vDGBvArjZR9o=; b=Q5dLAEFMyzbQY82L7m069p67kzhXfThAKiF9rDQlzHGY/HFUVQAcSi2nBguOFtzbDttbDF tvre2fedYJBSpK5GVhRZSZ48VxTjY9hEQI+m62MoWBuQeOOdPDfj5fkJ6PWA/PiQBU5WB6 b9odUHWHSSkSmQ6ZDetIxvfwJWcSbXelwz1Xp4z65cPQmKa69z6Ck1wRzE6Mzi9joTEXgo 4zuyWU5diK64BEfiKZKFHiEolf7sTIgM9x8lfr3/2dpsG24VzdbGsVPrQkl0TnKAwexxVe wAOZjRoH4CI+4oH3O7ucO172u2msmxM5MF9cXPOMzyublbUV0kLsCzCx8gFiNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764162428; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=4zLnPAY8xTI0S5t+DjZ6K36XG/HVxh0vDGBvArjZR9o=; b=omGKZITkRqyPP+lXqjEcw+8d/TxpCCyVTvPmwFmLL43HmRuXLl1i9+MQF9N8rA/Zqzz2zC 2Rye0eWlHp98IouI+Wx7PFYfsP/yGcCM45qSAHa9wb0Ot1avly43cTlHyqGGBnySBN+5SL 4tPrNck7V+locD4M/t67h/8ja2APHRYx/qRCNLJYUdtMIfk5rCK3n0R3VkO6FOsf+dTC6i DhDEX2WQGRV4nWvErdbqmX4fvhFiUBL5oA6gBfdTja8rXw86jTSmETKy+2yW0ScH7IoErI 7/ZXLzkN5kdso3nkc3JU3DDdIj9xTJNHl0Bd6dnb6bTqA4tJ5b/zUVKhHmGZbg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764162428; a=rsa-sha256; cv=none; b=SydkKXKJ4tmunEgD4RnjGrDHF4rGAgiLMehT8lPBumPjwi5vQ54dtYXdL/WmYH2vZ5fMUZ CdyOSXW/9uMKMfiAy6CqaVch9Q07SBtsNlNy/IEy4DDqmDqO4uoBk/j8+VD0nSnfz5mVq2 yeXMY0ilItrBS4w9yJ5XmrNYCKbsFotlD9/zjcp/7df+Y8mm4tU5VDE9rNGfKS8dWsnGOC G2yfBfdKw63O+KShcEHQKQFI9BPCMwrQt1A07VLczbTxxza/8N/RV9JSmSUjYaMvR1Jbf1 bvpTpdxlhnPC5VH4qkU2MrHDpna8rCAq/du4cA2qmZL09C96MgWvZbet2O5u7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from fauth-a2-smtp.messagingengine.com (fauth-a2-smtp.messagingengine.com [103.168.172.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: gallatin) by smtp.freebsd.org (Postfix) with ESMTPSA id 4dGfwW5m7cztHB; Wed, 26 Nov 2025 13:07:07 +0000 (UTC) (envelope-from gallatin@freebsd.org) Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfauth.phl.internal (Postfix) with ESMTP id BFC84F4006A; Wed, 26 Nov 2025 08:07:05 -0500 (EST) Received: from phl-imap-09 ([10.202.2.99]) by phl-compute-05.internal (MEProxy); Wed, 26 Nov 2025 08:07:05 -0500 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvgeeggeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvffkjghfufgtsegrtderreertddtnecuhfhrohhmpedfffhrvgifucfi rghllhgrthhinhdfuceoghgrlhhlrghtihhnsehfrhgvvggsshgurdhorhhgqeenucggtf frrghtthgvrhhnpeekiedtheevhfejhfdukefgudegtdevjeelgfehtddvvefhgfeugffg feevffevgeenucffohhmrghinhepfhhrvggvsghsugdrohhrghenucevlhhushhtvghruf hiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehgrghllhgrthhinhdomhgvshhm thhprghuthhhphgvrhhsohhnrghlihhthidqudeffeehledvvdduiedqvdelhedtgeduke egqdhgrghllhgrthhinheppehfrhgvvggsshgurdhorhhgsehfrghsthhmrghilhdrtgho mhdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepug gvvhdqtghomhhmihhtshdqshhrtgdqrghllhesfhhrvggvsghsugdrohhrghdprhgtphht thhopeguvghvqdgtohhmmhhithhsqdhsrhgtqdhmrghinhesfhhrvggvsghsugdrohhrgh dprhgtphhtthhopehnphesfhhrvggvsghsugdrohhrghdprhgtphhtthhopehsrhgtqdgt ohhmmhhithhtvghrshesfhhrvggvsghsugdrohhrgh X-ME-Proxy: Feedback-ID: i41414658:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 846F23020054; Wed, 26 Nov 2025 08:07:05 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 X-ThreadId: A806yzzdulAF Date: Wed, 26 Nov 2025 08:06:45 -0500 From: "Drew Gallatin" To: "Navdeep Parhar" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-Id: In-Reply-To: <69261ce6.31d1c.79c43e11@gitrepo.freebsd.org> References: <69261ce6.31d1c.79c43e11@gitrepo.freebsd.org> Subject: Re: git: 98f6f6e4f4bb - main - cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV Content-Type: multipart/alternative; boundary=2ce58595791f4fdea9e6f8b5932d2002 --2ce58595791f4fdea9e6f8b5932d2002 Content-Type: text/plain Content-Transfer-Encoding: 7bit I really wish we would have just expanded if capa to 64 bits. Having 2 sets of bits for caps is incredibly awkward and error prone. I'm reminded of that every time a driver is converted.. Drew On Tue, Nov 25, 2025, at 4:17 PM, Navdeep Parhar wrote: > The branch main has been updated by np: > > URL: https://cgit.FreeBSD.org/src/commit/?id=98f6f6e4f4bb7b19e12de89fc8cc034915f7a759 > > commit 98f6f6e4f4bb7b19e12de89fc8cc034915f7a759 > Author: Navdeep Parhar > AuthorDate: 2025-11-25 19:04:30 +0000 > Commit: Navdeep Parhar > 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 > > --2ce58595791f4fdea9e6f8b5932d2002 Content-Type: text/html Content-Transfer-Encoding: quoted-printable
I really wis= h we would have just expanded if capa to 64 bits.  Having 2 sets of= bits for caps is incredibly awkward and error prone.  I'm reminded= of that every time a driver is converted.. 

Drew

On Tue, Nov 25, 2025, at 4:17 PM, Navde= ep Parhar wrote:
The branch main has been updated by np:


comm= it 98f6f6e4f4bb7b19e12de89fc8cc034915f7a759
Author:  = ;   Navdeep Parhar <np@Fr= eeBSD.org>
AuthorDate: 2025-11-25 19:04:30 +0000
<= div>Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2025-11-25= 21:08:03 +0000

    cxgbe(4): En= able IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV
 &n= bsp;  
    MFC after:  &nbs= p;   1 week
    Sponsored by: &n= bsp; Chelsio Communications
---
sys/dev/cxgbe/t4_mai= n.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..5e02b47d= a8d9 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_HW= STATS | \
-    IFCAP_HWRXTSTMP | IFCAP_MEXTPG)<= /div>
+    IFCAP_HWRXTSTMP | IFCAP_MEXTPG | IFCAP_NV)=
#define T4_CAP_ENABLE (T4_CAP)
 
sta= tic void
@@ -3065,7 +3065,7 @@ cxgbe_ioctl(if_t ifp, unsigned = long cmd, caddr_t data)
struct port_info *pi =3D vi->pi;
struct adapter *sc =3D pi->adapter;
struct ifreq *i= fr =3D (struct ifreq *)data;
- uint32_t mask;
+ uint= 32_t mask, mask2;
 
switch (cmd) {
ca= se SIOCSIFMTU:
@@ -3124,12 +3124,24 @@ cxgbe_ioctl(if_t ifp, u= nsigned long cmd, caddr_t data)
end_synchronized_op(sc, 0);
break;
 
+ case SIOCGIFCAPNV:
+ break;
+ case SIOCSIFCAPNV:
case SIOCSIFCAP:
rc =3D begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4cap")= ;
if (rc)
return (rc);
 
- = mask =3D ifr->ifr_reqcap ^ if_getcapenable(ifp);
+ if (cm= d =3D=3D SIOCSIFCAPNV) {
+ const struct siocsifcapnv_driver_= data *ifr_nv =3D
+     (struct siocsifcapnv_d= river_data *)data;
+
+ mask =3D ifr_nv->reqcap = ^ if_getcapenable(ifp);
+ mask2 =3D ifr_nv->reqcap2 ^ if_= getcapenable2(ifp);
+ } else {
+ mask =3D ifr->= ;ifr_reqcap ^ if_getcapenable(ifp);
+ mask2 =3D 0;
+ }
if (mask & IFCAP_TXCSUM) {
if_togglecapena= ble(ifp, IFCAP_TXCSUM);
if_togglehwassist(ifp, CSUM_TCP | CSUM= _UDP | CSUM_IP);
@@ -3264,6 +3276,9 @@ cxgbe_ioctl(if_t ifp, u= nsigned long cmd, caddr_t data)
    CSUM_INNER_= IP_TSO);
}
 
+ MPASS(mask2 =3D=3D 0)= ;
+ (void)mask2;
+
#ifdef VLAN_CAPABILITI= ES
VLAN_CAPABILITIES(ifp);
#endif



--2ce58595791f4fdea9e6f8b5932d2002--