<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-go/conn, branch master</title>
<subtitle>Go implementation of WireGuard</subtitle>
<id>https://git.zx2c4.com/wireguard-go/atom/conn?h=master</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-go/atom/conn?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/'/>
<updated>2025-05-21T23:43:39Z</updated>
<entry>
<title>conn: don't enable GRO on Linux &lt; 5.12</title>
<updated>2025-05-21T23:43:39Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2025-05-21T23:33:55Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=c92064f1ce35f82bf0c5a183b54e51fd5d58ad50'/>
<id>urn:sha1:c92064f1ce35f82bf0c5a183b54e51fd5d58ad50</id>
<content type='text'>
Kernels below 5.12 are missing this:

    commit 98184612aca0a9ee42b8eb0262a49900ee9eef0d
    Author: Norman Maurer &lt;norman_maurer@apple.com&gt;
    Date:   Thu Apr 1 08:59:17 2021

        net: udp: Add support for getsockopt(..., ..., UDP_GRO, ..., ...);

        Support for UDP_GRO was added in the past but the implementation for
        getsockopt was missed which did lead to an error when we tried to
        retrieve the setting for UDP_GRO. This patch adds the missing switch
        case for UDP_GRO

        Fixes: e20cf8d3f1f7 ("udp: implement GRO for plain UDP sockets.")
        Signed-off-by: Norman Maurer &lt;norman_maurer@apple.com&gt;
        Reviewed-by: David Ahern &lt;dsahern@kernel.org&gt;
        Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

That means we can't set the option and then read it back later. Given
how buggy UDP_GRO is in general on odd kernels, just disable it on older
kernels all together.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>global: replaced unused function params with _</title>
<updated>2025-05-05T13:10:08Z</updated>
<author>
<name>Tom Holford</name>
<email>tomholford@users.noreply.github.com</email>
</author>
<published>2025-05-04T16:49:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=77b6c824a8225328aebca78eba676ea7eb606a69'/>
<id>urn:sha1:77b6c824a8225328aebca78eba676ea7eb606a69</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>global: bump copyright notice</title>
<updated>2025-05-05T13:05:35Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2025-05-04T15:48:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=9eb3221f1de589e5dd6a1721fdd7dc0fde0eb10b'/>
<id>urn:sha1:9eb3221f1de589e5dd6a1721fdd7dc0fde0eb10b</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn: set unused OOB to zero length</title>
<updated>2023-10-21T17:32:07Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2023-10-21T17:32:07Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=b3df23dcd40ba4568572f338f9fd16b87053fc29'/>
<id>urn:sha1:b3df23dcd40ba4568572f338f9fd16b87053fc29</id>
<content type='text'>
Otherwise in the event that we're using GSO without sticky sockets, we
pass garbage OOB buffers to sendmmsg, making a EINVAL, when GSO doesn't
set its header.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn: fix cmsg data padding calculation for gso</title>
<updated>2023-10-21T17:06:38Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2023-10-21T17:06:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=f502ec3fad116d11109529bcf283e464f4822c18'/>
<id>urn:sha1:f502ec3fad116d11109529bcf283e464f4822c18</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn: separate gso and sticky control</title>
<updated>2023-10-21T16:44:01Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2023-10-21T16:41:27Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=5d37bd24e14e3fff6c1ce61e299480beb3d68c00'/>
<id>urn:sha1:5d37bd24e14e3fff6c1ce61e299480beb3d68c00</id>
<content type='text'>
Android wants GSO but not sticky.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn: harmonize GOOS checks between "linux" and "android"</title>
<updated>2023-10-18T19:14:13Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2023-10-18T19:14:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=24ea13351eb7a06c3760f2eae18a484ce009fcf9'/>
<id>urn:sha1:24ea13351eb7a06c3760f2eae18a484ce009fcf9</id>
<content type='text'>
Otherwise GRO gets enabled on Android, but the conn doesn't use it,
resulting in bundled packets being discarded.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn: simplify supportsUDPOffload</title>
<updated>2023-10-18T19:02:52Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2023-10-18T19:02:52Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=177caa7e4419d1b95bbf0423f6be6230c7101504'/>
<id>urn:sha1:177caa7e4419d1b95bbf0423f6be6230c7101504</id>
<content type='text'>
This allows a kernel to support UDP_GRO while not supporting
UDP_SEGMENT.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>conn, device: use UDP GSO and GRO on Linux</title>
<updated>2023-10-10T13:07:36Z</updated>
<author>
<name>Jordan Whited</name>
<email>jordan@tailscale.com</email>
</author>
<published>2023-10-02T20:53:07Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=6a84778f2ca810f5fb5cb078e001494f08d9085f'/>
<id>urn:sha1:6a84778f2ca810f5fb5cb078e001494f08d9085f</id>
<content type='text'>
StdNetBind probes for UDP GSO and GRO support at runtime. UDP GSO is
dependent on checksum offload support on the egress netdev. UDP GSO
will be disabled in the event sendmmsg() returns EIO, which is a strong
signal that the egress netdev does not support checksum offload.

The iperf3 results below demonstrate the effect of this commit between
two Linux computers with i5-12400 CPUs. There is roughly ~13us of round
trip latency between them.

The first result is from commit 052af4a without UDP GSO or GRO.

Starting Test: protocol: TCP, 1 streams, 131072 byte blocks
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec  9.85 GBytes  8.46 Gbits/sec  1139   3.01 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  9.85 GBytes  8.46 Gbits/sec  1139  sender
[  5]   0.00-10.04  sec  9.85 GBytes  8.42 Gbits/sec        receiver

The second result is with UDP GSO and GRO.

Starting Test: protocol: TCP, 1 streams, 131072 byte blocks
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec  12.3 GBytes  10.6 Gbits/sec  232   3.15 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  12.3 GBytes  10.6 Gbits/sec  232   sender
[  5]   0.00-10.04  sec  12.3 GBytes  10.6 Gbits/sec        receiver

Reviewed-by: Adrian Dewhurst &lt;adrian@tailscale.com&gt;
Signed-off-by: Jordan Whited &lt;jordan@tailscale.com&gt;
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>all: adjust build tags for wasip1/wasm</title>
<updated>2023-07-04T13:54:42Z</updated>
<author>
<name>Brad Fitzpatrick</name>
<email>bradfitz@tailscale.com</email>
</author>
<published>2023-06-11T23:10:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-go/commit/?id=6e755e132ac18b44625baae0b7ea7ced572d7ff5'/>
<id>urn:sha1:6e755e132ac18b44625baae0b7ea7ced572d7ff5</id>
<content type='text'>
Signed-off-by: Brad Fitzpatrick &lt;bradfitz@tailscale.com&gt;
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
</feed>
