? .built-in.o.cmd ? .tmp_versions ? .usbatm.ko.cmd ? .usbatm.mod.o.cmd ? .usbatm.o.cmd ? iso.patch ? iso1.patch ? quirk.patch ? usbatm.ko ? usbatm.mod.c 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 1 Jul 2005 18:04:32 -0000 @@ -1017,7 +1017,10 @@ usbatm_init_channel(&instance->tx_channel); tasklet_init(&instance->rx_channel.tasklet, usbatm_rx_process, (unsigned long)instance); tasklet_init(&instance->tx_channel.tasklet, usbatm_tx_process, (unsigned long)instance); - instance->rx_channel.endpoint = usb_rcvbulkpipe(usb_dev, driver->in); + if (usb_pipeisoc(driver->in)) + instance->rx_channel.endpoint = usb_rcvisocpipe(usb_dev, driver->in); + else + instance->rx_channel.endpoint = usb_rcvbulkpipe(usb_dev, driver->in); instance->tx_channel.endpoint = usb_sndbulkpipe(usb_dev, driver->out); instance->rx_channel.stride = ATM_CELL_SIZE + driver->rx_padding; instance->tx_channel.stride = ATM_CELL_SIZE + driver->tx_padding; @@ -1039,7 +1042,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 packet size is + * not maxpacket size. + */ + iso_packets = channel->buf_size / iso_size; + channel->buf_size = iso_packets * iso_size; +#endif } urb = usb_alloc_urb(iso_packets, GFP_KERNEL); Index: usbatm.h =================================================================== RCS file: /home/cvs/usbatm/usbatm.h,v retrieving revision 1.19 diff -u -r1.19 usbatm.h --- usbatm.h 30 May 2005 08:48:13 -0000 1.19 +++ usbatm.h 1 Jul 2005 18:04:32 -0000 @@ -79,6 +79,9 @@ do {} while (0) #endif +/* macro for passing an endpoint type */ +#define ISO_ENDPOINT(num) (num | PIPE_ISOCHRONOUS << 30) +#define BULK_ENDPOINT(num) (num) /* mini driver */