Advertise GSO_MAX_SIZE as TSO max size in order support BIG TCP for wireguard.
This helps to improve wireguard performance a bit when enabled as it allows
wireguard to aggregate larger skbs in wg_packet_consume_data_done() via
napi_gro_receive(), but also allows the stack to build larger skbs on xmit
where the driver then segments them before encryption inside wg_xmit().
We've seen a 15% improvement in TCP stream performance.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
endif
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-3.14.79-amba-fix.patch
+ # Linux 6.13 backported patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-6.12-wireguard-device-omit-unnecessary-memset.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-6.12-wireguard-big-tcp-gso.patch
+
# Customise the release
cd $(DIR_APP) && echo "$(KVER_SUFFIX)" > localversion.10-$(SNAME)
--- /dev/null
+From 06a34f7db773e01efa8a90c5b4d912207a80dd60 Mon Sep 17 00:00:00 2001
+From: Daniel Borkmann <daniel@iogearbox.net>
+Date: Sun, 17 Nov 2024 22:20:30 +0100
+Subject: [PATCH] wireguard: device: support big tcp GSO
+
+Advertise GSO_MAX_SIZE as TSO max size in order support BIG TCP for wireguard.
+This helps to improve wireguard performance a bit when enabled as it allows
+wireguard to aggregate larger skbs in wg_packet_consume_data_done() via
+napi_gro_receive(), but also allows the stack to build larger skbs on xmit
+where the driver then segments them before encryption inside wg_xmit().
+We've seen a 15% improvement in TCP stream performance.
+
+Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+Link: https://patch.msgid.link/20241117212030.629159-5-Jason@zx2c4.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+---
+ drivers/net/wireguard/device.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/wireguard/device.c b/drivers/net/wireguard/device.c
+index a2ba71fbbed46..6cf173a008e78 100644
+--- a/drivers/net/wireguard/device.c
++++ b/drivers/net/wireguard/device.c
+@@ -302,6 +302,8 @@ static void wg_setup(struct net_device *dev)
+ /* We need to keep the dst around in case of icmp replies. */
+ netif_keep_dst(dev);
+
++ netif_set_tso_max_size(dev, GSO_MAX_SIZE);
++
+ wg->dev = dev;
+ }
+
+--
+2.39.5
+
--- /dev/null
+From 2c862914fbcf85609147401ea8674ae9a9e3b8cc Mon Sep 17 00:00:00 2001
+From: Tobias Klauser <tklauser@distanz.ch>
+Date: Sun, 17 Nov 2024 22:20:27 +0100
+Subject: [PATCH] wireguard: device: omit unnecessary memset of netdev private
+ data
+
+The memory for netdev_priv is allocated using kvzalloc in
+alloc_netdev_mqs before rtnl_link_ops->setup is called so there is no
+need to zero it again in wg_setup.
+
+Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+Link: https://patch.msgid.link/20241117212030.629159-2-Jason@zx2c4.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+---
+ drivers/net/wireguard/device.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/net/wireguard/device.c b/drivers/net/wireguard/device.c
+index 45e9b908dbfb0..a2ba71fbbed46 100644
+--- a/drivers/net/wireguard/device.c
++++ b/drivers/net/wireguard/device.c
+@@ -302,7 +302,6 @@ static void wg_setup(struct net_device *dev)
+ /* We need to keep the dst around in case of icmp replies. */
+ netif_keep_dst(dev);
+
+- memset(wg, 0, sizeof(*wg));
+ wg->dev = dev;
+ }
+
+--
+2.39.5
+