From a7b0271ca3c2129bcf593711fa5f1ba097e9b479 Mon Sep 17 00:00:00 2001 From: suyuan168 <175338101@qq.com> Date: Sat, 5 Feb 2022 22:04:03 +0800 Subject: [PATCH 1/2] fix 780 --- .../780-net-ipheth-fix-RX-EOVERFLOW.patch | 52 ------------------- .../780-net-ipheth-fix-RX-EOVERFLOW.patch | 52 ------------------- 2 files changed, 104 deletions(-) delete mode 100755 root/target/linux/generic/hack-5.15/780-net-ipheth-fix-RX-EOVERFLOW.patch delete mode 100755 root/target/linux/generic/hack-5.4/780-net-ipheth-fix-RX-EOVERFLOW.patch diff --git a/root/target/linux/generic/hack-5.15/780-net-ipheth-fix-RX-EOVERFLOW.patch b/root/target/linux/generic/hack-5.15/780-net-ipheth-fix-RX-EOVERFLOW.patch deleted file mode 100755 index 7d7c5aa4..00000000 --- a/root/target/linux/generic/hack-5.15/780-net-ipheth-fix-RX-EOVERFLOW.patch +++ /dev/null @@ -1,52 +0,0 @@ -From dd109ded2b526636fff438d33433ab64ffd21583 Mon Sep 17 00:00:00 2001 -From: Georgi Valkov -Date: Fri, 16 Apr 2021 20:44:36 +0300 -Subject: [PATCH] ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback - -When rx_buf is allocated we need to account for IPHETH_IP_ALIGN, -which reduces the usable size by 2 bytes. Otherwise we have 1512 -bytes usable instead of 1514, and if we receive more than 1512 -bytes, ipheth_rcvbulk_callback is called with status -EOVERFLOW, -after which the driver malfunctiones and all communication stops. - -Fixes: ipheth 2-1:4.2: ipheth_rcvbulk_callback: urb status: -75 - -Signed-off-by: Georgi Valkov ---- - drivers/net/usb/ipheth.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c -index 207e59e74935..06d9f19ca142 100644 ---- a/drivers/net/usb/ipheth.c -+++ b/drivers/net/usb/ipheth.c -@@ -121,7 +121,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone) - if (tx_buf == NULL) - goto free_rx_urb; - -- rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE, -+ rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, - GFP_KERNEL, &rx_urb->transfer_dma); - if (rx_buf == NULL) - goto free_tx_buf; -@@ -146,7 +146,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone) - - static void ipheth_free_urbs(struct ipheth_device *iphone) - { -- usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->rx_buf, -+ usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, iphone->rx_buf, - iphone->rx_urb->transfer_dma); - usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->tx_buf, - iphone->tx_urb->transfer_dma); -@@ -317,7 +317,7 @@ static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags) - - usb_fill_bulk_urb(dev->rx_urb, udev, - usb_rcvbulkpipe(udev, dev->bulk_in), -- dev->rx_buf, IPHETH_BUF_SIZE, -+ dev->rx_buf, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, - ipheth_rcvbulk_callback, - dev); - dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; --- -2.31.1 - diff --git a/root/target/linux/generic/hack-5.4/780-net-ipheth-fix-RX-EOVERFLOW.patch b/root/target/linux/generic/hack-5.4/780-net-ipheth-fix-RX-EOVERFLOW.patch deleted file mode 100755 index 7d7c5aa4..00000000 --- a/root/target/linux/generic/hack-5.4/780-net-ipheth-fix-RX-EOVERFLOW.patch +++ /dev/null @@ -1,52 +0,0 @@ -From dd109ded2b526636fff438d33433ab64ffd21583 Mon Sep 17 00:00:00 2001 -From: Georgi Valkov -Date: Fri, 16 Apr 2021 20:44:36 +0300 -Subject: [PATCH] ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback - -When rx_buf is allocated we need to account for IPHETH_IP_ALIGN, -which reduces the usable size by 2 bytes. Otherwise we have 1512 -bytes usable instead of 1514, and if we receive more than 1512 -bytes, ipheth_rcvbulk_callback is called with status -EOVERFLOW, -after which the driver malfunctiones and all communication stops. - -Fixes: ipheth 2-1:4.2: ipheth_rcvbulk_callback: urb status: -75 - -Signed-off-by: Georgi Valkov ---- - drivers/net/usb/ipheth.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c -index 207e59e74935..06d9f19ca142 100644 ---- a/drivers/net/usb/ipheth.c -+++ b/drivers/net/usb/ipheth.c -@@ -121,7 +121,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone) - if (tx_buf == NULL) - goto free_rx_urb; - -- rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE, -+ rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, - GFP_KERNEL, &rx_urb->transfer_dma); - if (rx_buf == NULL) - goto free_tx_buf; -@@ -146,7 +146,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone) - - static void ipheth_free_urbs(struct ipheth_device *iphone) - { -- usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->rx_buf, -+ usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, iphone->rx_buf, - iphone->rx_urb->transfer_dma); - usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->tx_buf, - iphone->tx_urb->transfer_dma); -@@ -317,7 +317,7 @@ static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags) - - usb_fill_bulk_urb(dev->rx_urb, udev, - usb_rcvbulkpipe(udev, dev->bulk_in), -- dev->rx_buf, IPHETH_BUF_SIZE, -+ dev->rx_buf, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, - ipheth_rcvbulk_callback, - dev); - dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; --- -2.31.1 - From 3d6f3107bd17a9b1912659b959505332b558bf28 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 7 Feb 2022 09:28:02 +0100 Subject: [PATCH 2/2] Add latest overflow patch --- .../999-fix-oeoverflow-ipheth.patch | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 root/target/linux/generic/pending-5.4/999-fix-oeoverflow-ipheth.patch diff --git a/root/target/linux/generic/pending-5.4/999-fix-oeoverflow-ipheth.patch b/root/target/linux/generic/pending-5.4/999-fix-oeoverflow-ipheth.patch new file mode 100644 index 00000000..594fa62c --- /dev/null +++ b/root/target/linux/generic/pending-5.4/999-fix-oeoverflow-ipheth.patch @@ -0,0 +1,57 @@ +From 63e4b45c82ed1bde979da7052229a4229ce9cabf Mon Sep 17 00:00:00 2001 +From: Georgi Valkov +Date: Tue, 1 Feb 2022 08:16:18 +0100 +Subject: ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback + +When rx_buf is allocated we need to account for IPHETH_IP_ALIGN, +which reduces the usable size by 2 bytes. Otherwise we have 1512 +bytes usable instead of 1514, and if we receive more than 1512 +bytes, ipheth_rcvbulk_callback is called with status -EOVERFLOW, +after which the driver malfunctiones and all communication stops. + +Resolves ipheth 2-1:4.2: ipheth_rcvbulk_callback: urb status: -75 + +Fixes: f33d9e2b48a3 ("usbnet: ipheth: fix connectivity with iOS 14") +Signed-off-by: Georgi Valkov +Tested-by: Jan Kiszka +Link: https://lore.kernel.org/all/B60B8A4B-92A0-49B3-805D-809A2433B46C@abv.bg/ +Link: https://lore.kernel.org/all/24851bd2769434a5fc24730dce8e8a984c5a4505.1643699778.git.jan.kiszka@siemens.com/ +Signed-off-by: Jakub Kicinski +--- + drivers/net/usb/ipheth.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c +index cd33955df0b65f..6a769df0b4213c 100644 +--- a/drivers/net/usb/ipheth.c ++++ b/drivers/net/usb/ipheth.c +@@ -121,7 +121,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone) + if (tx_buf == NULL) + goto free_rx_urb; + +- rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE, ++ rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, + GFP_KERNEL, &rx_urb->transfer_dma); + if (rx_buf == NULL) + goto free_tx_buf; +@@ -146,7 +146,7 @@ error_nomem: + + static void ipheth_free_urbs(struct ipheth_device *iphone) + { +- usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->rx_buf, ++ usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, iphone->rx_buf, + iphone->rx_urb->transfer_dma); + usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->tx_buf, + iphone->tx_urb->transfer_dma); +@@ -317,7 +317,7 @@ static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags) + + usb_fill_bulk_urb(dev->rx_urb, udev, + usb_rcvbulkpipe(udev, dev->bulk_in), +- dev->rx_buf, IPHETH_BUF_SIZE, ++ dev->rx_buf, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, + ipheth_rcvbulk_callback, + dev); + dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; +-- +cgit +