In https://reviews.freebsd.org/D12417, if_hn.c is changed at lines 5590 and 5886, which should allow UDPv6 packets to enter hn_set_hlen at line 780. However, at line 813, traffic not matching TCPv6 (UDPv6) would error. Thusly, it seems when IPv6 transmit checksum offloading is on, UDPv6 traffic is dropped in the hn driver. I first noticed this in practice with dhcp6c, where the first UDPv6 solicit would fail with the error, transmit failed: Input/output error due to the kernel returning EIO for the UDPv6 packet. As expected, the output error count rises correspondingly, with no kernel output messages in the syslogs. I was able to determine that disabling TXCSUM_IPV6 via, ifconfig hn0 -txcsum6 Stops the EIO from propogating from the driver, which led me to this area in the source.
I was seeing the same "transmit failed: Input/output error" which resulted in no IPv6 connectivity for me. I can confirm that disabling checksum offloading prevents the error and brings back my IPv6 connectivity.
Created attachment 197807 [details] Patch to not discard UDPv6
(In reply to Kevin from comment #2) Thanks Kevin for the patch! At a glance, it looks good to me (sorry, I don't have a setup to test this right away). @matt_ : can you please also test the patch?
Thanks for this patch! When will it land? FWIW, the bitwise & should be changed to && and the inner parenthesis are not strictly needed. :) Cheers, Franco
Created attachment 198333 [details] Updated patch to not discard UDPv6 Hi Franco, Thanks for the review. I believe the team from Microsoft is reviewing the patch right now since they emailed me about the bitwise &. It was actually a typo which I have fixed in this patch. Functionally the & worked but switching to && should be faster since && can "short-circuit". Kevin
A commit references this bug: Author: whu Date: Mon Oct 22 11:23:51 UTC 2018 New revision: 339585 URL: https://svnweb.freebsd.org/changeset/base/339585 Log: Do not trop UDP traffic when TXCSUM_IPV6 flag is on PR: 231797 Submitted by: whu Reviewed by: dexuan Obtained from: Kevin Morse MFC after: 3 days Sponsored by: Microsoft Differential Revision: https://bugs.freebsd.org/bugzilla/attachment.cgi?id=198333&action=diff Changes: head/sys/dev/hyperv/netvsc/if_hn.c
A commit references this bug: Author: whu Date: Mon Oct 29 15:12:16 UTC 2018 New revision: 339863 URL: https://svnweb.freebsd.org/changeset/base/339863 Log: MFC: 339585 r339585: Do not drop UDP traffic when TXCSUM_IPV6 flag is on PR: 231797 Submitted by: whu Reviewed by: dexuan Obtained from: Kevin Morse Sponsored by: Microsoft Differential Revision: https://bugs.freebsd.org/bugzilla/attachment.cgi?id=198333&action=diff Changes: _U stable/11/ stable/11/sys/dev/hyperv/netvsc/if_hn.c
A commit references this bug: Author: whu Date: Wed Oct 31 06:24:08 UTC 2018 New revision: 339942 URL: https://svnweb.freebsd.org/changeset/base/339942 Log: MFC: 339585 r339585: Do not drop UDP traffic when TXCSUM_IPV6 flag is on PR: 231797 Submitted by: whu Reviewed by: dexuan Obtained from: Kevin Morse Sponsored by: Microsoft Changes: _U stable/10/ stable/10/sys/dev/hyperv/netvsc/if_hn.c
A commit references this bug: Author: whu Date: Thu Nov 1 08:08:08 UTC 2018 New revision: 339984 URL: https://svnweb.freebsd.org/changeset/base/339984 Log: MFC r339585: Do not drop UDP traffic when TXCSUM_IPV6 flag is on. PR: 231797 Submitted by: whu Reviewed by: dexuan Obtained from: Kevin Morse Approved by: re (rgrimes) Sponsored by: Microsoft Changes: _U stable/12/ stable/12/sys/dev/hyperv/netvsc/if_hn.c
There is a commit referencing this PR, but it's still not closed and has been inactive for some time. Closing the PR as fixed but feel free to re-open it if the issue hasn't been completely resolved. Thanks