Hi, I am stuck with the above issue, I have some doubts regarding USB - Generic driver 1. Could you please explain me why USB - Generic driver is slow ? 2. Now I am try to study USB - Generic driver implementation , I am confused with the function usb_serial_generic_read_bulk_callback() , could you please tell me from where this function is calling ? 3. If you have any detailed doc regarding the implementation of USB - Generic serial driver, Please send to me, Regards, Arun On Thu, Aug 6, 2015 at 3:42 PM, arun k <arunkarunakaran08@xxxxxxxxx> wrote: > / # lsusb -v > Bus 002 Device 006: ID 045b:0218 > Bus 001 Device 001: ID 1d6b:0002 > Bus 002 Device 001: ID 1d6b:0001 > Bus 003 Device 001: ID 1d6b:0002 > Bus 004 Device 001: ID 1d6b:0003 > > In this my device is > Bus 002 Device 006: ID 045b:0218 > > I enabled data dumping in usb_serial_generic_read_bulk_callback() > function and found data received in this function is losing. > In this function data is received as 64 bytes packets and two > continuous 64 bytes having no data loss but the next packets are lost > ie > 1st packet ok(64 byte) > 2nd packet ok(64 byte) > . > . packet lossing.... > . > 7th packet ok(64 byte) > 8th packet ok(64 byte) > . > . > In this way data loss is happening. Number of packets losing is > different not constant always. > >>> I think the generic USB driver ignores baud rate. Like Greg suggested, >>you need to >>>use the proper driver for your hardware. > > I did't find any other suitable driver inside Linux. > I checked this device in windows in that usbser.sys is detecting(.inf > file is attached with the mail). > > Could you suggest any available drivers for my device. Sorry I am > very new to Linux drivers. > I will post my USB device descriptor values below > > [ 1291.908071] ## udev->descriptor.bLength 0x12 > [ 1291.908089] ## udev->descriptor.bDescriptorType 0x1 > [ 1291.908147] ## udev->descriptor.bcdUSB 0x200 > [ 1291.908165] ## udev->descriptor.bDeviceClass 0xef > [ 1291.908181] ## udev->descriptor.bDeviceSubClass 0x2 > [ 1291.908196] ## udev->descriptor.bDeviceProtocol 0x1 > [ 1291.908211] ## udev->descriptor.bMaxPacketSize0 0x40 > [ 1291.908226] ## udev->descriptor.idVendor 0x45b > [ 1291.908241] ## udev->descriptor.idProduct 0x218 > [ 1291.908255] ## udev->descriptor.bcdDevice 0x1 > [ 1291.908270] ## udev->descriptor.iManufacturer 0x0 > [ 1291.908284] ## udev->descriptor.iProduct 0x0 > [ 1291.908298] ## udev->descriptor.iSerialNumber 0x0 > [ 1291.908313] ## udev->descriptor.bNumConfigurations 0x1 > > Regards, > Arun > > > > > > > > > > > > On Wed, Aug 5, 2015 at 9:31 PM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote: >> On 08/04/2015 11:57 PM, arun k wrote: >>>> Ok, but does the sending device know how to process in-band software flow control >>>> and is it set up to respond properly? >>> >>> I am not sure about this. I need to check this. >>> >>>> Also, I doubt software flow control is going to work @ 4Mbaud line rate. >>>> If you're stuck using software flow control, start with a 115kbaud line rate >>>> and see if that fixes your data loss problem >>> >>> I tried B115200 also but issue is still there. >> >> I think the generic USB driver ignores baud rate. Like Greg suggested, you need to >> use the proper driver for your hardware. >> >> What is the output from 'lsusb -v' and please identify in that output which >> device you are using. >> >>> I am using a USB device and that sending data at a rate of *409600 bytes/sec*. Is this data rate have any relation with issue. >> >> Yes. Also, can you test this on a newer kernel like 3.18? >> >> Regards, >> Peter Hurley >> >>> On Wed, Aug 5, 2015 at 11:24 AM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx <mailto:peter@xxxxxxxxxxxxxxxxxx>> wrote: >>> >>> On 08/04/2015 10:00 PM, arun k wrote: >>> > I enabled software flow control like below >>> > >>> > tty.c_iflag |= (IXON | IXOFF | IXANY); >>> >>> Ok, but does the sending device know how to process in-band software flow control >>> and is it set up to respond properly? >>> >>> Also, I doubt software flow control is going to work @ 4Mbaud line rate. >>> If you're stuck using software flow control, start with a 115kbaud line rate >>> and see if that fixes your data loss problem. >>> >>> Regards, >>> Peter Hurley >>> >>> >>> > On Wed, Aug 5, 2015 at 12:59 AM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx <mailto:peter@xxxxxxxxxxxxxxxxxx>> wrote: >>> >> On 08/03/2015 10:47 PM, arun k wrote: >>> >>> Thank you for the reply >>> >>> >>> >>>>> The tty layer is limiting you, just keep reading in a loop until you >>> >>>>> run out of data, you should not ever expect to read a specific number of >>> >>>>> bytes from a tty device at a time, the read call will tell you the >>> >>>>> number that was read properly. >>> >>> >>> >>> I tried this method but in my case I found data loss. By changing any buffer size modification in driver side , can we fix this issue ? >>> >> >>> >> The data loss is probably occurring because you have all flow control disabled >>> >> and the line speed is too fast for no flow control. >>> >> >>> >> Regards, >>> >> Peter Hurley >>> >> >>> >>>>> Please don't use the "generic" driver, it's slow and not the best to >>> >>>>> use >>> >>> >>> >>> Could you tell me is generic driver is suitable for my application ( My usb device sending data at a rate of 409600 bytes/sec) , ? >>> >>> or do you have any other suggestion for me ? >>> >>> >>> >>> My Linux kernel version is 3.4.35 >>> >>> >>> >>> Regards, >>> >>> Arun >>> >>> >>> >>> On Tue, Aug 4, 2015 at 1:13 AM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx <mailto:gregkh@xxxxxxxxxxxxxxxxxxx> <mailto:gregkh@xxxxxxxxxxxxxxxxxxx <mailto:gregkh@xxxxxxxxxxxxxxxxxxx>>> wrote: >>> >>> >>> >>> On Mon, Aug 03, 2015 at 04:44:07PM +0900, arun k wrote: >>> >>> > Hi , >>> >>> > >>> >>> > I have a trouble with using usb serial generic device. >>> >>> > I am using USB - Generic Serial driver for communicating with my usb >>> >>> > device and my embedded device. >>> >>> >>> >>> Please don't use the "generic" driver, it's slow and not the best to >>> >>> use. >>> >>> >>> >>> > My usb device sending data at a rate of 409600 bytes/sec, and in host >>> >>> > side application I tried to read 16384 bytes in one read. But the read >>> >>> > size returning is always 4095 >>> >>> >>> >>> The tty layer is limiting you, just keep reading in a loop until you >>> >>> run out of data, you should not ever expect to read a specific number of >>> >>> bytes from a tty device at a time, the read call will tell you the >>> >>> number that was read properly. >>> >>> >>> >>> thanks, >>> >>> >>> >>> greg k-h >>> >>> >>> >>> >>> >> >>> >>> >> -- 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