Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2025 20:40:33 GMT
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 5240eab94e6e - main - Revert "epair: add support for checksum offloading"
Message-ID:  <202509022040.582KeXjT078960@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by tuexen:

URL: https://cgit.FreeBSD.org/src/commit/?id=5240eab94e6e218aaaa4221da5cc0d4a10c844fd

commit 5240eab94e6e218aaaa4221da5cc0d4a10c844fd
Author:     Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2025-09-02 20:39:32 +0000
Commit:     Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2025-09-02 20:39:32 +0000

    Revert "epair: add support for checksum offloading"
    
    This reverts commit e4ea162509e400340a2bc3e755071a92f3465e2d.
    
    kp reports failures related to pf tests. Revert until we
    understand what is going wrong.
---
 share/man/man4/epair.4 | 24 +-------------------
 sys/net/if_epair.c     | 61 ++------------------------------------------------
 2 files changed, 3 insertions(+), 82 deletions(-)

diff --git a/share/man/man4/epair.4 b/share/man/man4/epair.4
index 0014836b01ea..342b15b5612a 100644
--- a/share/man/man4/epair.4
+++ b/share/man/man4/epair.4
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd September 2, 2025
+.Dd August 12, 2025
 .Dt EPAIR 4
 .Os
 .Sh NAME
@@ -108,28 +108,6 @@ As with any other Ethernet interface,
 can have a
 .Xr vlan 4
 configured on top of it.
-.Pp
-The
-.Nm
-has RXCSUM and RXCSUM6 enabled because it may receive a packet where the
-checksum has already been validated by a physical interface.
-The
-.Nm
-supports TXCSUM and TXCSUM6 for TCP and UDP, but only by forwarding the order
-to compute the checksum.
-Thus, when using an
-.Nm
-interface, a TCP or UDP sender can offload checksum computation
-to a physical interface.
-Note that, in case the packet does not leave the host, the checksum is
-unnecessary and will be ignored if offloaded.
-TXCSUM and TXCSUM6 are synchronized between the
-.Nm
-interface pair (i.e., enabling/disabling the capability on one end
-enables/disables it on the other end).
-In case one end is in a bridge and the bridge disabled TXCSUM or TXCSUM6,
-this avoids a sender to send packets with checksum offloading into the
-bridge by using the other end.
 .Sh SEE ALSO
 .Xr ioctl 2 ,
 .Xr altq 4 ,
diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c
index fbffa8f359a0..581c2434b8fb 100644
--- a/sys/net/if_epair.c
+++ b/sys/net/if_epair.c
@@ -69,7 +69,6 @@
 #include <net/if_media.h>
 #include <net/if_private.h>
 #include <net/if_types.h>
-#include <net/if_vlan_var.h>
 #include <net/netisr.h>
 #ifdef RSS
 #include <net/rss_config.h>
@@ -435,21 +434,6 @@ epair_media_status(struct ifnet *ifp __unused, struct ifmediareq *imr)
 	imr->ifm_active = IFM_ETHER | IFM_10G_T | IFM_FDX;
 }
 
-/*
- * Update ifp->if_hwassist according to the current value of ifp->if_capenable.
- */
-static void
-epair_caps_changed(struct ifnet *ifp)
-{
-	uint64_t hwassist = 0;
-
-	if (ifp->if_capenable & IFCAP_TXCSUM)
-		hwassist |= CSUM_IP_TCP | CSUM_IP_UDP;
-	if (ifp->if_capenable & IFCAP_TXCSUM_IPV6)
-		hwassist |= CSUM_IP6_TCP | CSUM_IP6_UDP;
-	ifp->if_hwassist = hwassist;
-}
-
 static int
 epair_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
@@ -477,44 +461,6 @@ epair_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 		error = 0;
 		break;
 
-	case SIOCGIFCAP:
-		ifr->ifr_reqcap = ifp->if_capabilities;
-		ifr->ifr_curcap = ifp->if_capenable;
-		error = 0;
-		break;
-	case SIOCSIFCAP:
-		/*
-		 * Enable/disable capabilities as requested, besides
-		 * IFCAP_RXCSUM(_IPV6), which always remain enabled.
-		 * Incoming packets may have the mbuf flag CSUM_DATA_VALID set.
-		 * Without IFCAP_RXCSUM(_IPV6), this flag would have to be
-		 * removed, which does not seem helpful.
-		 */
-		ifp->if_capenable = ifr->ifr_reqcap | IFCAP_RXCSUM |
-		    IFCAP_RXCSUM_IPV6;
-		epair_caps_changed(ifp);
-		/*
-		 * If IFCAP_TXCSUM(_IPV6) has been changed, change it on the
-		 * other epair interface as well.
-		 * A bridge disables IFCAP_TXCSUM(_IPV6) when adding one epair
-		 * interface if another interface in the bridge has it disabled.
-		 * In that case this capability needs to be disabled on the
-		 * other epair interface to avoid sending packets in the bridge
-		 * that rely on this capability.
-		 */
-		sc = ifp->if_softc;
-		if ((ifp->if_capenable ^ sc->oifp->if_capenable) &
-		    (IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6)) {
-			sc->oifp->if_capenable &=
-			    ~(IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6);
-			sc->oifp->if_capenable |= ifp->if_capenable &
-			    (IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6);
-			epair_caps_changed(sc->oifp);
-		}
-		VLAN_CAPABILITIES(ifp);
-		error = 0;
-		break;
-
 	default:
 		/* Let the common ethernet handler process this. */
 		error = ether_ioctl(ifp, cmd, data);
@@ -626,11 +572,8 @@ epair_setup_ifp(struct epair_softc *sc, char *name, int unit)
 	ifp->if_dname = epairname;
 	ifp->if_dunit = unit;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-	ifp->if_capabilities = IFCAP_VLAN_MTU | IFCAP_TXCSUM |
-	    IFCAP_TXCSUM_IPV6 | IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6;
-	ifp->if_capenable = IFCAP_VLAN_MTU | IFCAP_TXCSUM |
-	    IFCAP_TXCSUM_IPV6 | IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6;
-	epair_caps_changed(ifp);
+	ifp->if_capabilities = IFCAP_VLAN_MTU;
+	ifp->if_capenable = IFCAP_VLAN_MTU;
 	ifp->if_transmit = epair_transmit;
 	ifp->if_qflush = epair_qflush;
 	ifp->if_start = epair_start;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202509022040.582KeXjT078960>