ChangeSet 1.1006.11.21, 2003/03/25 14:30:45-08:00, [EMAIL PROTECTED]
[PATCH] USB: fix up zero packet issues with CDCEther driver
drivers/usb/CDCEther.c | 21 +++++----------------
1 files changed, 5 insertions(+), 16 deletions(-)
diff -Nru a/drivers/usb/CDCEther.c b/drivers/usb/CDCEther.c
--- a/drivers/usb/CDCEther.c Thu Mar 27 16:01:29 2003
+++ b/drivers/usb/CDCEther.c Thu Mar 27 16:01:29 2003
@@ -306,22 +306,8 @@
static int CDCEther_start_xmit( struct sk_buff *skb, struct net_device *net )
{
ether_dev_t *ether_dev = net->priv;
- int count;
int res;
- // If we are told to transmit an ethernet frame that fits EXACTLY
- // into an integer number of USB packets, we force it to send one
- // more byte so the device will get a runt USB packet signalling the
- // end of the ethernet frame
- if ( skb->len % ether_dev->data_ep_out_size) {
- // It was not an exact multiple
- // no need to add anything extra
- count = skb->len;
- } else {
- // Add one to make it NOT an exact multiple
- count = skb->len + 1;
- }
-
// Tell the kernel, "No more frames 'til we are done
// with this one.'
netif_stop_queue( net );
@@ -336,8 +322,11 @@
write_bulk_callback, ether_dev );
// Tell the URB how much it will be transporting today
- ether_dev->tx_urb.transfer_buffer_length = count;
-
+ ether_dev->tx_urb.transfer_buffer_length = skb->len;
+
+ /* Deal with the Zero Length packet problem, I hope */
+ ether_dev->tx_urb.transfer_flags |= USB_ZERO_PACKET;
+
// Send the URB on its merry way.
if ((res = usb_submit_urb(ðer_dev->tx_urb))) {
// Hmm... It didn't go. Tell someone...
-------------------------------------------------------
This SF.net email is sponsored by:
The Definitive IT and Networking Event. Be There!
NetWorld+Interop Las Vegas 2003 -- Register today!
http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel