Michael Tuexen wrote:
The branch main has been updated by tuexen:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=7b6e84c9ac5668134ab2d075019ef0b827d90c84

commit 7b6e84c9ac5668134ab2d075019ef0b827d90c84
Author:     Michael Tuexen <[email protected]>
AuthorDate: 2026-01-31 10:42:10 +0000
Commit:     Michael Tuexen <[email protected]>
CommitDate: 2026-01-31 10:42:10 +0000

     ure: improve checksum offloading
This patch fixes three issues:
     (1) Initially, set the hwassist flags correctly when enabling
         transmit checksum offload for TCP/IPv6 and UDP/IPv6.
     (2) Keep the hwassist flags in sync with the capabilities when
         changing txcsum.
     (3) Keep the hwasssit flags in sync with the capabilities when
         changing txcsum6.
     Without this patch, transmit checksum offloading for TCP/IPv6 and
     UDP/IPv6 is never used and transmit checksum offloading for IPv4,
     TCP/IPv4 and UDP/IPv4 is always used, even if disabled via
     ifconfig ue? -txcsum.
Reviewed by: Timo Völker
     MFC after:              3 days
     Differential Revision:  https://reviews.freebsd.org/D54974
---
  sys/dev/usb/net/if_ure.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c
index c3f7b622d687..3dea88eb10f1 100644
--- a/sys/dev/usb/net/if_ure.c
+++ b/sys/dev/usb/net/if_ure.c
@@ -1015,6 +1015,7 @@ ure_attach_post_sub(struct usb_ether *ue)
        if_sethwassist(ifp, CSUM_IP|CSUM_IP_UDP|CSUM_IP_TCP);
  #ifdef INET6
        if_setcapabilitiesbit(ifp, IFCAP_HWCSUM_IPV6, 0);
+       if_sethwassistbits(ifp, CSUM_IP6_UDP|CSUM_IP6_TCP, 0);
  #endif
        if_setcapenable(ifp, if_getcapabilities(ifp));
@@ -1463,6 +1464,7 @@ ure_ioctl(if_t ifp, u_long cmd, caddr_t data)
                if ((mask & IFCAP_TXCSUM) != 0 &&
                    (if_getcapabilities(ifp) & IFCAP_TXCSUM) != 0) {
                        if_togglecapenable(ifp, IFCAP_TXCSUM);
+                       if_togglehwassist(ifp, CSUM_IP|CSUM_IP_UDP|CSUM_IP_TCP);
                }
                if ((mask & IFCAP_RXCSUM) != 0 &&
                    (if_getcapabilities(ifp) & IFCAP_RXCSUM) != 0) {
@@ -1471,6 +1473,7 @@ ure_ioctl(if_t ifp, u_long cmd, caddr_t data)
                if ((mask & IFCAP_TXCSUM_IPV6) != 0 &&
                    (if_getcapabilities(ifp) & IFCAP_TXCSUM_IPV6) != 0) {
                        if_togglecapenable(ifp, IFCAP_TXCSUM_IPV6);
+                       if_togglehwassist(ifp, CSUM_IP6_UDP|CSUM_IP6_TCP);
                }
                if ((mask & IFCAP_RXCSUM_IPV6) != 0 &&
                    (if_getcapabilities(ifp) & IFCAP_RXCSUM_IPV6) != 0) {


It seems that with this commit, all network traffic and then some, excluding ICMP{,v6}, time out. Even `route(8) get default` takes forever to query.

--
Charlie Li
...nope, still don't have an exit line.

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to