]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Jul 2022 10:14:51 +0000 (12:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Jul 2022 10:14:51 +0000 (12:14 +0200)
added patches:
net-usb-ax88179_178a-needs-flag_send_zlp.patch

queue-5.4/net-usb-ax88179_178a-needs-flag_send_zlp.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/net-usb-ax88179_178a-needs-flag_send_zlp.patch b/queue-5.4/net-usb-ax88179_178a-needs-flag_send_zlp.patch
new file mode 100644 (file)
index 0000000..94da9a5
--- /dev/null
@@ -0,0 +1,121 @@
+From 36a15e1cb134c0395261ba1940762703f778438c Mon Sep 17 00:00:00 2001
+From: Jose Alonso <joalonsof@gmail.com>
+Date: Mon, 13 Jun 2022 15:32:44 -0300
+Subject: net: usb: ax88179_178a needs FLAG_SEND_ZLP
+
+From: Jose Alonso <joalonsof@gmail.com>
+
+commit 36a15e1cb134c0395261ba1940762703f778438c upstream.
+
+The extra byte inserted by usbnet.c when
+ (length % dev->maxpacket == 0) is causing problems to device.
+
+This patch sets FLAG_SEND_ZLP to avoid this.
+
+Tested with: 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
+
+Problems observed:
+======================================================================
+1) Using ssh/sshfs. The remote sshd daemon can abort with the message:
+   "message authentication code incorrect"
+   This happens because the tcp message sent is corrupted during the
+   USB "Bulk out". The device calculate the tcp checksum and send a
+   valid tcp message to the remote sshd. Then the encryption detects
+   the error and aborts.
+2) NETDEV WATCHDOG: ... (ax88179_178a): transmit queue 0 timed out
+3) Stop normal work without any log message.
+   The "Bulk in" continue receiving packets normally.
+   The host sends "Bulk out" and the device responds with -ECONNRESET.
+   (The netusb.c code tx_complete ignore -ECONNRESET)
+Under normal conditions these errors take days to happen and in
+intense usage take hours.
+
+A test with ping gives packet loss, showing that something is wrong:
+ping -4 -s 462 {destination}   # 462 = 512 - 42 - 8
+Not all packets fail.
+My guess is that the device tries to find another packet starting
+at the extra byte and will fail or not depending on the next
+bytes (old buffer content).
+======================================================================
+
+Signed-off-by: Jose Alonso <joalonsof@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/usb/ax88179_178a.c |   16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/usb/ax88179_178a.c
++++ b/drivers/net/usb/ax88179_178a.c
+@@ -1690,7 +1690,7 @@ static const struct driver_info ax88179_
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1703,7 +1703,7 @@ static const struct driver_info ax88178a
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1716,7 +1716,7 @@ static const struct driver_info cypress_
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1729,7 +1729,7 @@ static const struct driver_info dlink_du
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1742,7 +1742,7 @@ static const struct driver_info sitecom_
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1755,7 +1755,7 @@ static const struct driver_info samsung_
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1768,7 +1768,7 @@ static const struct driver_info lenovo_i
+       .link_reset = ax88179_link_reset,
+       .reset = ax88179_reset,
+       .stop = ax88179_stop,
+-      .flags = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
+@@ -1781,7 +1781,7 @@ static const struct driver_info belkin_i
+       .link_reset = ax88179_link_reset,
+       .reset  = ax88179_reset,
+       .stop   = ax88179_stop,
+-      .flags  = FLAG_ETHER | FLAG_FRAMING_AX,
++      .flags  = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP,
+       .rx_fixup = ax88179_rx_fixup,
+       .tx_fixup = ax88179_tx_fixup,
+ };
index 27f1b3d372cfa8cbae2fb0562595ae7b42668b3b..6ced4629fda72d6c303422ae72a7a324093f4226 100644 (file)
@@ -84,3 +84,4 @@ tty-the-rest-stop-using-tty_schedule_flip.patch
 tty-drop-tty_schedule_flip.patch
 tty-extract-tty_flip_buffer_commit-from-tty_flip_buffer_push.patch
 tty-use-new-tty_insert_flip_string_and_push_buffer-in-pty_write.patch
+net-usb-ax88179_178a-needs-flag_send_zlp.patch