Date: Wed, 26 Nov 2025 08:06:45 -0500 From: "Drew Gallatin" <gallatin@freebsd.org> To: "Navdeep Parhar" <np@freebsd.org>, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 98f6f6e4f4bb - main - cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV Message-ID: <f6f3ff3c-ea22-4efb-8fac-9075aeb341e4@app.fastmail.com> In-Reply-To: <69261ce6.31d1c.79c43e11@gitrepo.freebsd.org> References: <69261ce6.31d1c.79c43e11@gitrepo.freebsd.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] 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 <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 > > [-- Attachment #2 --] <!DOCTYPE html><html><head><title></title></head><body><div>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.. </div><div><br></div><div>Drew</div><div><br></div><div>On Tue, Nov 25, 2025, at 4:17 PM, Navdeep Parhar wrote:</div><blockquote type="cite" id="qt" style=""><div>The branch main has been updated by np:</div><div><br></div><div>URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=98f6f6e4f4bb7b19e12de89fc8cc034915f7a759">https://cgit.FreeBSD.org/src/commit/?id=98f6f6e4f4bb7b19e12de89fc8cc034915f7a759</a></div><div><br></div><div>commit 98f6f6e4f4bb7b19e12de89fc8cc034915f7a759</div><div>Author: Navdeep Parhar <<a href="mailto:np@FreeBSD.org">np@FreeBSD.org</a>></div><div>AuthorDate: 2025-11-25 19:04:30 +0000</div><div>Commit: Navdeep Parhar <<a href="mailto:np@FreeBSD.org">np@FreeBSD.org</a>></div><div>CommitDate: 2025-11-25 21:08:03 +0000</div><div><br></div><div> cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV</div><div> </div><div> MFC after: 1 week</div><div> Sponsored by: Chelsio Communications</div><div>---</div><div>sys/dev/cxgbe/t4_main.c | 21 ++++++++++++++++++---</div><div>1 file changed, 18 insertions(+), 3 deletions(-)</div><div><br></div><div>diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c</div><div>index 946eb84457a3..5e02b47da8d9 100644</div><div>--- a/sys/dev/cxgbe/t4_main.c</div><div>+++ b/sys/dev/cxgbe/t4_main.c</div><div>@@ -2817,7 +2817,7 @@ cxgbe_probe(device_t dev)</div><div>#define T4_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \</div><div> IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \</div><div> IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6 | IFCAP_HWSTATS | \</div><div>- IFCAP_HWRXTSTMP | IFCAP_MEXTPG)</div><div>+ IFCAP_HWRXTSTMP | IFCAP_MEXTPG | IFCAP_NV)</div><div>#define T4_CAP_ENABLE (T4_CAP)</div><div> </div><div>static void</div><div>@@ -3065,7 +3065,7 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)</div><div>struct port_info *pi = vi->pi;</div><div>struct adapter *sc = pi->adapter;</div><div>struct ifreq *ifr = (struct ifreq *)data;</div><div>- uint32_t mask;</div><div>+ uint32_t mask, mask2;</div><div> </div><div>switch (cmd) {</div><div>case SIOCSIFMTU:</div><div>@@ -3124,12 +3124,24 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)</div><div>end_synchronized_op(sc, 0);</div><div>break;</div><div> </div><div>+ case SIOCGIFCAPNV:</div><div>+ break;</div><div>+ case SIOCSIFCAPNV:</div><div>case SIOCSIFCAP:</div><div>rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4cap");</div><div>if (rc)</div><div>return (rc);</div><div> </div><div>- mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);</div><div>+ if (cmd == SIOCSIFCAPNV) {</div><div>+ const struct siocsifcapnv_driver_data *ifr_nv =</div><div>+ (struct siocsifcapnv_driver_data *)data;</div><div>+</div><div>+ mask = ifr_nv->reqcap ^ if_getcapenable(ifp);</div><div>+ mask2 = ifr_nv->reqcap2 ^ if_getcapenable2(ifp);</div><div>+ } else {</div><div>+ mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);</div><div>+ mask2 = 0;</div><div>+ }</div><div>if (mask & IFCAP_TXCSUM) {</div><div>if_togglecapenable(ifp, IFCAP_TXCSUM);</div><div>if_togglehwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP);</div><div>@@ -3264,6 +3276,9 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)</div><div> CSUM_INNER_IP_TSO);</div><div>}</div><div> </div><div>+ MPASS(mask2 == 0);</div><div>+ (void)mask2;</div><div>+</div><div>#ifdef VLAN_CAPABILITIES</div><div>VLAN_CAPABILITIES(ifp);</div><div>#endif</div><div><br></div><div><br></div></blockquote><div><br></div></body></html>help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f6f3ff3c-ea22-4efb-8fac-9075aeb341e4>
