questions re: usbnet.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux