Index: usbatm.c =================================================================== RCS file: /home/cvs/usbatm/usbatm.c,v retrieving revision 1.47 diff -u -r1.47 usbatm.c --- usbatm.c 27 May 2005 16:17:23 -0000 1.47 +++ usbatm.c 28 Jun 2005 07:24:28 -0000 @@ -1039,7 +1039,15 @@ iso_size = usb_maxpacket(instance->usb_dev, channel->endpoint, 0); iso_size -= iso_size % channel->stride; /* alignment */ BUG_ON(!iso_size); +#if 0 iso_packets = (channel->buf_size - 1) / iso_size + 1; +#else + /* Some modem have problem when the last packet have + * a smaller size. + */ + iso_packets = channel->buf_size / iso_size; + channel->buf_size = iso_packets * iso_size; +#endif } urb = usb_alloc_urb(iso_packets, GFP_KERNEL);