Hi Dave, We are writing you as the maintainer for the usbnet.c driver and have questions re: function usbnet_start_xmit() in usbnet.c. We found a problem in the way our modems handle USB packets of specific size which we fixed by adding the line urb->transfer_flags |= USB_ZERO_PACKET; inside function usbnet_start_xmit() right after the call to usb_fill_bulk_urb(). We are curious to know the reasons, if any, why this flag is not always set before submitting the urb? We also found that the next section of code: /* don't assume the hardware handles USB_ZERO_PACKET * NOTE: strictly conforming cdc-ether devices should expect * the ZLP here, but ignore the one-byte packet. */ if (!(info->flags &FLAG_SEND_ZLP) && (length % dev->maxpacket) == 0) { urb->transfer_buffer_length++; if (skb_tailroom(skb)) { skb->data[skb->len] = 0; __skb_put(skb, 1); } } produces non-deterministic sized packets depending on whether the skb buffer has an extra space for 1 byte or not. When we commented out the whole section and set the urb transfer flag USB_ZERO_PACKET instead we did observe the zero-length byte being sent correctly and the problem with our modem went away. We would like to offer to patch this driver to replace the code section above with a single line to set the USB_ZERO_PACKET flag. Please let us know your view. Thanks, Elina -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html