diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2020-02-29 09:25:20 +0100 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2020-02-29 12:50:51 +0100 |
commit | a1383655cfaa71609d6236ae0fcf3b6047462b98 (patch) | |
tree | c6f123859e0dfcfaa6c1063eda26f27e208d3cac /target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch | |
parent | a8aa974a9dfb4cba484dc4c1e4207fd9ec803410 (diff) | |
download | upstream-a1383655cfaa71609d6236ae0fcf3b6047462b98.tar.gz upstream-a1383655cfaa71609d6236ae0fcf3b6047462b98.tar.bz2 upstream-a1383655cfaa71609d6236ae0fcf3b6047462b98.zip |
bcm27xx: add linux 5.4 support
Tested on bcm2710 (Raspberry Pi 3B).
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch new file mode 100644 index 0000000000..be6173c930 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0117-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch @@ -0,0 +1,56 @@ +From b34a93b528f08401835259c477ade49730fc1baf Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.org> +Date: Wed, 13 Jun 2018 15:21:10 +0100 +Subject: [PATCH] net: lan78xx: Disable TCP Segmentation Offload (TSO) + +TSO seems to be having issues when packets are dropped and the +remote end uses Selective Acknowledge (SACK) to denote that +data is missing. The missing data is never resent, so the +connection eventually stalls. + +There is a module parameter of enable_tso added to allow +further debugging without forcing a rebuild of the kernel. + +https://github.com/raspberrypi/linux/issues/2449 +https://github.com/raspberrypi/linux/issues/2482 + +Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> +--- + drivers/net/usb/lan78xx.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +--- a/drivers/net/usb/lan78xx.c ++++ b/drivers/net/usb/lan78xx.c +@@ -429,6 +429,15 @@ static int msg_level = -1; + module_param(msg_level, int, 0); + MODULE_PARM_DESC(msg_level, "Override default message level"); + ++/* TSO seems to be having some issue with Selective Acknowledge (SACK) that ++ * results in lost data never being retransmitted. ++ * Disable it by default now, but adds a module parameter to enable it for ++ * debug purposes (the full cause is not currently understood). ++ */ ++static bool enable_tso; ++module_param(enable_tso, bool, 0644); ++MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload"); ++ + static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) + { + u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); +@@ -2995,8 +3004,14 @@ static int lan78xx_bind(struct lan78xx_n + if (DEFAULT_RX_CSUM_ENABLE) + dev->net->features |= NETIF_F_RXCSUM; + +- if (DEFAULT_TSO_CSUM_ENABLE) +- dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG; ++ if (DEFAULT_TSO_CSUM_ENABLE) { ++ dev->net->features |= NETIF_F_SG; ++ /* Use module parameter to control TCP segmentation offload as ++ * it appears to cause issues. ++ */ ++ if (enable_tso) ++ dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6; ++ } + + if (DEFAULT_VLAN_RX_OFFLOAD) + dev->net->features |= NETIF_F_HW_VLAN_CTAG_RX; |