genode/repos/dde_linux/patches/usb_net_pinephone.patch

24 lines
948 B
Diff
Raw Normal View History

The PinePhone Modems' CDC Ethernet Interface does not respond if RX/TX queue size
is greater 12 (experimentally determined), the default would be 60, meaning 60
RX Bulk URBs are sent at once to the device.
diff --git src/linux/drivers/net/usb/usbnet.c src/linux/drivers/net/usb/usbnet.c
index 2d14b0d78..d8c566b8c 100644
--- src/linux/drivers/net/usb/usbnet.c
+++ src/linux/drivers/net/usb/usbnet.c
@@ -356,6 +356,14 @@ EXPORT_SYMBOL_GPL(usbnet_skb_return);
void usbnet_update_max_qlen(struct usbnet *dev)
{
enum usb_device_speed speed = dev->udev->speed;
+ struct usb_device_descriptor *descr = &dev->udev->descriptor;
+
+ /* Quectel EG25-G does not respond on queue size > 12 */
+ if (descr->idVendor == 0x2c7c && descr->idProduct == 0x0125) {
+ printk("Quectel EG25-G detected limiting TX/RX queue size to 12 (from 60)\n");
+ dev->rx_qlen = dev->tx_qlen = 12;
+ return;
+ }
if (!dev->rx_urb_size || !dev->hard_mtu)
goto insanity;