git: 240d81169286 - main - dpaa/dtsec: advertise RX/TX csum

Justin Hibbits <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a87c3fa.3d301.7750e483__40407.0991951571$1787282443$gmane$org@gitrepo.freebsd.org>
The branch main has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=240d81169286cd436368644f863aa1dea996fdee

commit 240d81169286cd436368644f863aa1dea996fdee
Author:     Justin Hibbits <[email protected]>
AuthorDate: 2026-08-10 18:26:54 +0000
Commit:     Justin Hibbits <[email protected]>
CommitDate: 2026-08-21 03:17:55 +0000

    dpaa/dtsec: advertise RX/TX csum
    
    Apply 6464974 to dTSEC, since it supports the same offload capabilities
    as mEMAC.
    
    The DPAA_CSUM_TX_OFFLOAD macro moves from if_memac.c to the shared
    dpaa_eth.h since both drivers now reference it.
---
 sys/dev/dpaa/dpaa_eth.h |  4 ++++
 sys/dev/dpaa/if_dtsec.c | 20 +++++++++++++++++++-
 sys/dev/dpaa/if_memac.c |  2 --
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/sys/dev/dpaa/dpaa_eth.h b/sys/dev/dpaa/dpaa_eth.h
index cc46dc5485d6..a897b43b725e 100644
--- a/sys/dev/dpaa/dpaa_eth.h
+++ b/sys/dev/dpaa/dpaa_eth.h
@@ -27,6 +27,10 @@
 #ifndef DPAA_ETH_H_
 #define DPAA_ETH_H_
 
+/* * TX csum-offload hwassist mask for dTSEC and mEMAC. */
+#define	DPAA_CSUM_TX_OFFLOAD	\
+	(CSUM_IP | CSUM_DELAY_DATA | CSUM_DELAY_DATA_IPV6)
+
 struct dpaa_pcpu_cnt {
 	u_int	cnt;
 } __aligned(CACHE_LINE_SIZE);
diff --git a/sys/dev/dpaa/if_dtsec.c b/sys/dev/dpaa/if_dtsec.c
index 0d886abc5345..a0ea6e69dee3 100644
--- a/sys/dev/dpaa/if_dtsec.c
+++ b/sys/dev/dpaa/if_dtsec.c
@@ -244,6 +244,7 @@ dtsec_if_ioctl(if_t ifp, u_long command, caddr_t data)
 {
 	struct dtsec_softc *sc;
 	struct ifreq *ifr;
+	uint32_t changed;
 	int error;
 
 	sc = if_getsoftc(ifp);
@@ -272,6 +273,20 @@ dtsec_if_ioctl(if_t ifp, u_long command, caddr_t data)
 		DTSEC_UNLOCK(sc);
 		break;
 
+	case SIOCSIFCAP:
+		changed = if_getcapenable(ifp) ^ ifr->ifr_reqcap;
+		if ((changed & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) != 0)
+			if_togglecapenable(ifp,
+			    IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6);
+		if ((changed & (IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6)) != 0) {
+			if_togglecapenable(ifp,
+			    IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6);
+			if_togglehwassist(ifp, DPAA_CSUM_TX_OFFLOAD);
+		}
+		if ((changed & IFCAP_LRO) != 0)
+			if_togglecapenable(ifp, IFCAP_LRO);
+		break;
+
 	case SIOCGIFMEDIA:
 	case SIOCSIFMEDIA:
 		error = ifmedia_ioctl(ifp, ifr, &sc->sc_base.sc_mii->mii_media,
@@ -515,8 +530,11 @@ dtsec_attach(device_t dev)
 	if_setsendqready(ifp);
 #endif
 
-	if_setcapabilities(ifp, IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU);
+	if_setcapabilities(ifp, IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU |
+	    IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 |
+	    IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6);
 	if_setcapenable(ifp, if_getcapabilities(ifp));
+	if_sethwassist(ifp, DPAA_CSUM_TX_OFFLOAD);
 
 	/* Attach PHY(s) */
 	error = mii_attach(sc->sc_base.sc_dev, &sc->sc_base.sc_mii_dev,
diff --git a/sys/dev/dpaa/if_memac.c b/sys/dev/dpaa/if_memac.c
index 6d0fa3f5e337..047cfea323a6 100644
--- a/sys/dev/dpaa/if_memac.c
+++ b/sys/dev/dpaa/if_memac.c
@@ -89,8 +89,6 @@
 
 #define	DEFAULT_PAUSE_QUANTA	0xf000
 
-#define	DPAA_CSUM_TX_OFFLOAD	(CSUM_IP | CSUM_DELAY_DATA | CSUM_DELAY_DATA_IPV6)
-
 
 /**
  * @group FMan MAC routines.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.