mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	Fixes no communication with tethered iOS devices in CDC NCM mode.
Freshly booted iOS devices start in legacy mode, but are put into
NCM mode by the official Apple driver.
[1] a2d274c62e
Fixes: #12566
Tested-by: Georgi Valkov <gvalkov@gmail.com>
Signed-off-by: Foster Snowhill <forst@pen.gy>
Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
[ better reference fixed issue ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
		
	
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 3e65efcca87a9bb5f3b864e0a43d167bc0a8688c Mon Sep 17 00:00:00 2001
 | 
						|
From: Foster Snowhill <forst@pen.gy>
 | 
						|
Date: Wed, 7 Jun 2023 15:57:00 +0200
 | 
						|
Subject: [PATCH 2/4] usbnet: ipheth: transmit URBs without trailing padding
 | 
						|
 | 
						|
The behaviour of the official iOS tethering driver on macOS is to not
 | 
						|
transmit any trailing padding at the end of URBs. This is applicable
 | 
						|
to both NCM and legacy modes, including older devices.
 | 
						|
 | 
						|
Adapt the driver to not include trailing padding in TX URBs, matching
 | 
						|
the behaviour of the official macOS driver.
 | 
						|
 | 
						|
Signed-off-by: Foster Snowhill <forst@pen.gy>
 | 
						|
Tested-by: Georgi Valkov <gvalkov@gmail.com>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 drivers/net/usb/ipheth.c | 4 +---
 | 
						|
 1 file changed, 1 insertion(+), 3 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/net/usb/ipheth.c
 | 
						|
+++ b/drivers/net/usb/ipheth.c
 | 
						|
@@ -373,12 +373,10 @@ static netdev_tx_t ipheth_tx(struct sk_b
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	memcpy(dev->tx_buf, skb->data, skb->len);
 | 
						|
-	if (skb->len < IPHETH_BUF_SIZE)
 | 
						|
-		memset(dev->tx_buf + skb->len, 0, IPHETH_BUF_SIZE - skb->len);
 | 
						|
 
 | 
						|
 	usb_fill_bulk_urb(dev->tx_urb, udev,
 | 
						|
 			  usb_sndbulkpipe(udev, dev->bulk_out),
 | 
						|
-			  dev->tx_buf, IPHETH_BUF_SIZE,
 | 
						|
+			  dev->tx_buf, skb->len,
 | 
						|
 			  ipheth_sndbulk_callback,
 | 
						|
 			  dev);
 | 
						|
 	dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
 |