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;