Re: [linux-usb-devel] USB Host performance
On Tue, May 09, 2006 at 11:16:57AM +0530, Juhee MALA wrote: We are using Linux USB Host stack and doing some performance analysis. For performance analysis we are testing it with a device, which accepts the Bulk-OUT packets with full effieciency (not much-NYTES from device side). We are submitting the data of URB size 8kbytes. The throughput in such scenario that we are getting is approximately 175Mbps. 1. Can anybody tell me, if this is a good performance? I don't know, is that the max speed of your device? 2. Can anybody tell me what is the best performance that can be achieved on a USB host? It all depends on the USB device as well as the USB host controller type. 3. IS there any bench marking tool for checking the host stack performance? 4. Which application should be used for demonstrating the host performance? Again, it all depends on your device. What exactly are you trying to show here? The raw speed of Linux, or of a specific hardware implementation? thanks, greg k-h --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [RFC 2.6.16.5 1/1] usb/media : Support for Quickcam Messenger
Hi GregKH, USB folk, QCE-GA folk (esp Tuukka/Kurt/Christian), I've appended my first pass at a driver for the Logitech Quickcam Messenger USB webcam. I'm still at an early stage. I just got ohphone working with it today so I figured I'd pause here and check my bearings. I'd like to get your feedback about the general design and anything else you'd care to comment about. I've implemented it as a usbvideo driver (rather than plain usb + v4l or v4l2) because I wanted to take advantage of the existing interface and buffer management code in usbvideo.c The konicawc driver looked really simple and nice so I used that as the starting point for this code. I noticed that there is an out-of-tree driver at http://home.mag.cx/messenger/source/qc-usb-messenger-1.2.tar.gz I found this code to be useful for obtaining the register read/write sequences for init. I recognize that the image quality obtained from that driver will probably be far superior to what I've implemented. This is because I've only implemented a very trivial demosaicing scheme. The Pei-Tam linear filtering done in the out-of-tree driver is nice but I felt that should be done in userspace. se401 which is already in-tree does Bayer decode and I decided to do something similar. So I've done only trivial demosaic so that I could just test the driver with regular unmodified userspace apps. Here are a list of various other thoughts and to-do items: - hsv, auto-exposure, shutter, gain control stuff - supporting the other known-to-work sizes of QCIF, etc - check proper byte order support for BE archs - reducing copies in the buffer management between urb, ringqueue, and user frames and removing the scratch buf for demosaicing - how to deliver raw (un-demosaiced) Bayer to userspace. - support for the 640x480 mode in the hardware ( btw, I called ST Microelectronics sales about getting the datasheet for the VV6422 on May 2nd and was told to send email instead. I've sent emails to their sales as well as several distributors of the VV6422 chip. Maybe someone from ST can help. ) - v4lv2 in usbvideo support - some on-loading sysfs complaint coming from usbvideo, I think. - frame sync problem I look forward to your feedback. Thanks, Jaya Kumar ps: in case it's useful, i'm using ohphone v1.14 and test args are: ohphone -o /tmp/oh.log -t -n 192.168.0.1 --videotransmit --videodevice QCM USB Camera --videosize large --videoinput 0 --- Kconfig | 18 + Makefile |1 quickcam_messenger.c | 793 +++ 3 files changed, 812 insertions(+) --- diff -X linux-2.6.16.5/Documentation/dontdiff -uprN linux-2.6.16.5-vanilla/drivers/usb/media/Kconfig linux-2.6.16.5/drivers/usb/media/Kconfig --- linux-2.6.16.5-vanilla/drivers/usb/media/Kconfig2006-04-15 11:02:25.0 +0800 +++ linux-2.6.16.5/drivers/usb/media/Kconfig2006-04-15 11:27:25.0 +0800 @@ -224,3 +224,21 @@ config USB_PWC To compile this driver as a module, choose M here: the module will be called pwc. + +config USB_QUICKCAM_MESSENGER + tristate USB Logitech Quickcam Messenger + depends on USB VIDEO_DEV + ---help--- + Say Y or M here to enable support for the USB Logitech Quickcam + Messenger webcam. + + The built-in microphone is enabled by selecting USB Audio support. + + This driver uses the Video For Linux API. You must say Y or M to + Video For Linux (under Character Devices) to use this driver. + Information on this API and pointers to v4l programs may be found + at file:Documentation/video4linux/API.html. + + To compile this driver as a module, choose M here: the + module will be called quickcam_messenger. + diff -X linux-2.6.16.5/Documentation/dontdiff -uprN linux-2.6.16.5-vanilla/drivers/usb/media/Makefile linux-2.6.16.5/drivers/usb/media/Makefile --- linux-2.6.16.5-vanilla/drivers/usb/media/Makefile 2006-04-15 11:02:25.0 +0800 +++ linux-2.6.16.5/drivers/usb/media/Makefile 2006-04-15 11:28:01.0 +0800 @@ -17,3 +17,4 @@ obj-$(CONFIG_USB_STV680) += stv680.o obj-$(CONFIG_USB_VICAM)+= vicam.o usbvideo.o obj-$(CONFIG_USB_W9968CF) += w9968cf.o obj-$(CONFIG_USB_PWC) += pwc/ +obj-$(CONFIG_USB_QUICKCAM_MESSENGER) += quickcam_messenger.o usbvideo.o diff -X linux-2.6.16.5/Documentation/dontdiff -uprN linux-2.6.16.5-vanilla/drivers/usb/media/quickcam_messenger.c linux-2.6.16.5/drivers/usb/media/quickcam_messenger.c --- linux-2.6.16.5-vanilla/drivers/usb/media/quickcam_messenger.c 1970-01-01 07:30:00.0 +0730 +++ linux-2.6.16.5/drivers/usb/media/quickcam_messenger.c 2006-05-09 16:36:47.0 +0800 @@ -0,0 +1,793 @@ +/* + * Driver for Logitech Quickcam Messenger usb video camera + * Copyright (C) Jaya Kumar + * + * This work was sponsored by CIS(M) Sdn Bhd. + * History: + * 05/08/2006 - Jaya Kumar +
Re: [linux-usb-devel] [RFC 2.6.16.5 1/1] usb/media : Support for Quickcam Messenger
Am Dienstag, 9. Mai 2006 10:50 schrieb [EMAIL PROTECTED]: + /* buf for doing demosaicing */ + for (i=0; i USBVIDEO_NUMSBUF; i++) { + errflag = usb_submit_urb(uvd-sbuf[i].urb, GFP_KERNEL); + if (errflag) + err (usb_submit_isoc(%d) ret %d, i, errflag); + } + + qcm_camera_on(uvd); + uvd-streaming = 1; + return 0; +} Race condition. The irq handler may run before you mark the device as streaming. Regards Oliver
Re: [linux-usb-devel] USB Host performance
On Tue, 9 May 2006, Juhee MALA wrote: We are using Linux USB Host stack and doing some performance analysis. For performance analysis we are testing it with a device, which accepts the Bulk-OUT packets with full effieciency (not much-NYTES from device side). We are submitting the data of URB size 8kbytes. The throughput in such scenario that we are getting is approximately 175Mbps. 1. Can anybody tell me, if this is a good performance? Good for what? It's certainly not the best possible. But it's more than adequate for USB-audio. 2. Can anybody tell me what is the best performance that can be achieved on a USB host? The maximum theoretical throughput for high-speed 512-byte bulk transfers is 13 packets per microframe, or 53248000 B/s. That's equivalent to 426 million bits per second. Linux can achieve such rates, if the hardware allows. To reach it, you have to submit a lot of URBs asynchronously. If you're using 8 KB transfer lengths then you should submit at least two batches of URBs, with at least 64 URBs in each batch, and with the URB_NO_INTERRUPT flag set on each URB except the last one in a batch. Each time a batch completes, immediately submit another batch. 3. IS there any bench marking tool for checking the host stack performance? Not that I know of. 4. Which application should be used for demonstrating the host performance? This is almost the same question as number 3. If you want to use your test device, you should select an application that will work with it. Of course, since I don't know what your test device is, I can't recommend any applications. Alan Stern --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] problems moving EHCI glue from 2.6.10 to 2.6.16
On Monday 08 May 2006 5:06 pm, Duck wrote: Hi, I'm working on an ARM-based SoC with an ARC USB block. It has 2 EHCI host controllers and an OTG controller. Everything worked fairly well on a 2.6.10+ kernel. However, after moving my code to 2.6.16.11, I'm having absoultely no luck talking to a device with any host controller. HCD initialization has changed substantially since then, addressing various design bugs. But that doesn't seem to be an obvious issue, since the resulting init looks OK here. One problem is that you're getting an ERR irq from EHCI, presumably just highlighting what the QTD_STS_HALT flag in the qtd token says in the first few requests. You didn't see that in earlier kernels, and so the obvious question is why _that_ request is losing. Now, I _did_ see one successful descriptor fetch, after the fallback to the old style enumeration. So it looks like the controller is doing many of the right things, and signals are likely getting to/from the downstream device. I don't have any bright ideas for you, sorry. Double check clock and PLL setup ... see if other USB peripherals have the same issue. (Try full, low, and high speed devices.) If you have any kind of USB sniffer (CATC etc) then this would be a good time to use it. Just borrowing one for a few days could save a lot of time. - Dave --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] ehci-sched.c questions
On Wednesday 03 May 2006 1:03 pm, Christopher Montgomery wrote: I've done some of the requisite homework myself for getting full speed audio devices to work properly through ehci and TTs on a 2.0 hub (playback *and* capture). At this point it all works although my changes are not production-ready. Good; the ISO stuff has always been a bit iffy, in that some things have worked and others haven't. Capture has been iffiest. I have three specific questions for now. The primary reason DIR_IN iso modes didn't work comes down to schedule mask bugs. However, there's also an explicit test to see that IN csplits are not wrapped into a following frame; if they would have to be, the schedule attempt is rejected. I see no reason for this restriction anywhere in the spec docs (and indeed, ISO IN can't work properly unless the restriction is removed; the 'start capture' OUT plus the 'get capture data' IN don't fit in one frame for stereo capture). AFAICT, the restriction was there to hide/prevent a c_mask overflow. And the question is .. why? Probably because what you see is the very first implementation for the split iso support, and the goal was to have something work at all (for the test devices at hand, mostly USB speakers) and defer the more complex scheduling issues until later when they were better understood. So that restriction is a simplification. And you're wrong about the can't work; the start split plus N* complete split messages can certainly fit into a single frame in cases like SSPLIT in uframe 0 and needing only a couple CSPLITs. Second question: The official USB 2.0 spec shows no examples that do this, but the Intel echi spec examples all pipeline transfers heavily by overlapping the final c-split of the current transfer and the initial s-split of the following transfer into the same uframe. I've implemented the same strategy myself and it works as the Intel docs suggest... but is there a reason the preexisting scheduler does not do this? Is there a contention issue I'm not seing (eg, is this only working because my final csplit and overlapping intiial ssplit are small enough to fit in one uframe, but it's possible that wouldn't work in the future? Or is the final c-split always padding anyway?) That sort of pipelining was always on the to do list, but the initial scheduling for periodic split transfers (iso and interrupt) was simplistic, in order to get something working. I have some patches from Dan Streetman that I need to go back and re-review. As you implied, the USB 2.0 spec and the EHCI spec are not quite in lockstep ... not that there's necessarily any kind of conflic, but split iso scheduling is not at all simple, and time has been lacking. (I'll forward his patches to you, with some comments about one issue I need to make time to investigate.) Third: In ehci-sched.c:check_intr_sched(): if (qh-c_usecs uframe = 6){ /* FSTN territory? */ goto done; } Huh? Reject any csplit that falls into uframe 6 or 7 for an intr? That doesn't make any sense (yes, a s-split can't fall into uframe 6, but that's something different that, ironically, the code doesn't check for). At this point I don't recall what was going on there. Likely it's the same sort of take some shortcuts to get something working thing I mentioned already. That might even predate the existence of the interrupt schedule tree. - Dave --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] ehci-sched.c questions
Hi David, I thought my post got lost; I never saw it appear and hadn't seen replies. Scratch that, I was *hoping* it got lost, as more code research later showed each question was at least partially nonsensical. At this point, the actual ISO transfer machinery all looks perfectly solid. The problem is entirely the scheduler. It's not that the scheduler is buggy, it's that it burns burns burns bandwidth as if there's an infinite number of uFrames to stick requests into. Once it's faced with, eg, full duplex audio using two endpoints each with a data interval of one, it can't usually fit both requests into the Hframe cmask/ssmask despite the fact they'd fit comfortably in half of one full-speed frame. But this we know. The primary reason DIR_IN iso modes didn't work comes down to schedule mask bugs. And the question is .. why? Actually, I retract this. The schedule mask code is not buggy, it's just, as you say, an initial design. That sort of pipelining was always on the to do list, but the initial scheduling for periodic split transfers (iso and interrupt) was simplistic, in order to get something working. I have some patches from Dan Streetman that I need to go back and re-review. As you implied, the USB 2.0 spec and the EHCI spec are not quite in lockstep ... not that there's necessarily any kind of conflic, but split iso scheduling is not at all simple, and time has been lacking. (I'll forward his patches to you, with some comments about one issue I need to make time to investigate.) I've also been reviewing the schedulers for other OSes to help with spec understanding. They primarily schedule by counting microseconds used in uFrames and full speed frames. SSPLITS and CSPLITS overlap freely (so long as each endpoint only sees one per frame and the other limitation restrictions are obeyed). Third: In ehci-sched.c:check_intr_sched(): if (qh-c_usecs uframe = 6){ /* FSTN territory? */ goto done; } Huh? Reject any csplit that falls into uframe 6 or 7 for an intr? That doesn't make any sense (yes, a s-split can't fall into uframe 6, but that's something different that, ironically, the code doesn't check for). At this point I don't recall what was going on there. Likely it's the same sort of take some shortcuts to get something working thing I mentioned already. That might even predate the existence of the interrupt schedule tree. [After more meditation] the code is for avoiding the need to potentially schedule an FSTN, but I'm still not quite sure that just checking uFrame number against '6' was sufficient... I'd have though '4' was correct, or you'd have to look at the highest bit in the mask, or count microseconds Popping back up in the conversation, I have a device that will never fit all it needs to do in one Hframe using the bitmask scheduling method. It needs to 'overlap' too tightly with two interval 1 endpoints and two interval 32 endpoints all in the periodic schedule. The timing fits (obviously, it works fine under UHCI), but not if you can't overlap transactions. So, send me that patch and I'll read up on the spec sections detailing budgeting timing. I need this bugger to work, or I need to buy a MacMini ;-) Monty --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid0709bid3057dat1642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] Re: 2.6.16: usb modem (cdc-acm driver) and duplicate bytes
On Sat, May 06, 2006 at 10:23:05AM +0200, Oliver Neukum wrote: Am Samstag, 6. Mai 2006 07:20 schrieben Sie: On Sat, May 06, 2006 at 12:05:42AM +0200, Oliver Neukum wrote: It might be that your modem cannot cope with the ring buffer patch that went into 2.6.16. Can you revert a specific patch? The patch indicated below. Are you running on x86? Yes, x86. It is an athlon xp system with nforce2 chipset. I could not find complete patch from the mailing list message you pointed me to, the sf list archive contains truncated (short) message with the patch, and e-mail addresses from the patch are mangled. But I have taken cdc_acm driver from 2.6.15, patched forward tty_flip and usb_driver.owner incompatibilities with 2.6.16, and voila - cdc_acm driver from 2.6.15 works fine on 2.6.16 kernel, no dups at all. This includes the patch: http://sourceforge.net/mailarchive/message.php?msg_id=13720408 -- Alexander. --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] Re: 2.6.16: usb modem (cdc-acm driver) and duplicate bytes
On Tue, 9 May 2006 19:57:50 +0400, Alexander V. Lukyanov [EMAIL PROTECTED] wrote: But I have taken cdc_acm driver from 2.6.15, patched forward tty_flip and usb_driver.owner incompatibilities with 2.6.16, and voila - cdc_acm driver from 2.6.15 works fine on 2.6.16 kernel, no dups at all. Hmm, glad to hear that. I just got around to reading the trace you collected, but oh well... -- Pete --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] Re: 2.6.16: usb modem (cdc-acm driver) and duplicate bytes
Am Dienstag, 9. Mai 2006 17:57 schrieb Alexander V. Lukyanov: On Sat, May 06, 2006 at 10:23:05AM +0200, Oliver Neukum wrote: Am Samstag, 6. Mai 2006 07:20 schrieben Sie: On Sat, May 06, 2006 at 12:05:42AM +0200, Oliver Neukum wrote: It might be that your modem cannot cope with the ring buffer patch that went into 2.6.16. Can you revert a specific patch? The patch indicated below. Are you running on x86? Yes, x86. It is an athlon xp system with nforce2 chipset. I could not find complete patch from the mailing list message you pointed me to, the sf list archive contains truncated (short) message with the patch, and e-mail addresses from the patch are mangled. But I have taken cdc_acm driver from 2.6.15, patched forward tty_flip and usb_driver.owner incompatibilities with 2.6.16, and voila - cdc_acm driver from 2.6.15 works fine on 2.6.16 kernel, no dups at all. Very good. It seems that something in your system cannot cope with higher speeds of the 2.6.16 driver. Could you please take the 2.6.16 driver and half the values of ACM_NRU and ACM_NRB in cdc-acm.h until you find a value that works? The traces you provided show that the duplication is already present at the hcd layer. Thus it must either be the hcd driver (very unlikely), your motherboard or the device. In the latter case I'll have to introduce a special case for your modem. Regards Oliver --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [GIT PATCH] USB fixes for 2.6.17-rc3
Here are some more small USB fixes for 2.6.17-rc3. They contain a few small bug fixes and a few new device ids for new devices. All of these changes have been in the -mm tree for a number of weeks. Please pull from: rsync://rsync.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git/ or if master.kernel.org hasn't synced up yet: master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6.git/ The full patches will be sent to the linux-usb-devel mailing list, if anyone wants to see them. thanks, greg k-h drivers/block/ub.c| 18 ++ drivers/usb/atm/speedtch.c|2 +- drivers/usb/atm/usbatm.c |8 drivers/usb/core/hcd.c| 13 ++--- drivers/usb/core/hub.c| 23 +-- drivers/usb/host/ohci-hcd.c |2 +- drivers/usb/net/pegasus.c | 20 +++- drivers/usb/serial/ftdi_sio.c |2 ++ drivers/usb/serial/ftdi_sio.h |9 + 9 files changed, 61 insertions(+), 36 deletions(-) --- Alan Stern: USB: usbcore: don't check the device's power source David Brownell: USB: fix bug in ohci-hcd.c ohci_restart() USB: pegasus fixes (logstorm, suspend) USB: fix OHCI PM regression Duncan Sands: USBATM: change the default speedtouch iso altsetting USBATM: fix modinfo output Ian Abbott: USB: ftdi_sio: Add support for HCG HF Dual ISO RFID Reader Pete Zaitcev: USB: ub oops in block_uevent Razvan Gavril: USB: ftdi_sio: add device id for ACT Solutions HomePro ZWave interface --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 1/9] USB: fix bug in ohci-hcd.c ohci_restart()
From: David Brownell [EMAIL PROTECTED] A loop on a power-lost resume path used the wrong index. I suspect khubd has been working around such bugs. Noticed by Andreas Mohr [EMAIL PROTECTED]. Signed-off-by: David Brownell [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/host/ohci-hcd.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) 839ab1d4ce4dfd7e6c189391a82c584292488b41 diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 544f758..73f5a37 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -863,7 +863,7 @@ static int ohci_restart (struct ohci_hcd i = ohci-num_ports; while (i--) ohci_writel (ohci, RH_PS_PSS, - ohci-regs-roothub.portstatus [temp]); + ohci-regs-roothub.portstatus [i]); ohci_dbg (ohci, restart complete\n); } return 0; -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 7/9] USB: ub oops in block_uevent
From: Pete Zaitcev [EMAIL PROTECTED] In kernel 2.6.16, if a mounted storage device is removed, an oops happens because ub supplies an interface device (and kobject) to the block layer, but neglects to pin it. And apparently, the block layer expects its users to pin device structures. The code in ub was broken this way for years. But the bug was exposed only by 2.6.16 when it started to call block_uevent on close, which traverses device structures (kobjects actually). Signed-off-by: Pete Zaitcev [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/block/ub.c | 18 ++ 1 files changed, 10 insertions(+), 8 deletions(-) 77ef6c4d6e23653a79eedacdd6d1d0da7083e59c diff --git a/drivers/block/ub.c b/drivers/block/ub.c index f73446f..c688c25 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c @@ -536,6 +536,9 @@ static void ub_cleanup(struct ub_dev *sc kfree(lun); } + usb_set_intfdata(sc-intf, NULL); + usb_put_intf(sc-intf); + usb_put_dev(sc-dev); kfree(sc); } @@ -2221,7 +2224,12 @@ static int ub_probe(struct usb_interface // sc-ifnum = intf-cur_altsetting-desc.bInterfaceNumber; usb_set_intfdata(intf, sc); usb_get_dev(sc-dev); - // usb_get_intf(sc-intf); /* Do we need this? */ + /* +* Since we give the interface struct to the block level through +* disk-driverfs_dev, we have to pin it. Otherwise, block_uevent +* oopses on close after a disconnect (kernels 2.6.16 and up). +*/ + usb_get_intf(sc-intf); snprintf(sc-name, 12, DRV_NAME (%d.%d), sc-dev-bus-busnum, sc-dev-devnum); @@ -2286,7 +2294,7 @@ #endif err_dev_desc: usb_set_intfdata(intf, NULL); - // usb_put_intf(sc-intf); + usb_put_intf(sc-intf); usb_put_dev(sc-dev); kfree(sc); err_core: @@ -2461,12 +2469,6 @@ static void ub_disconnect(struct usb_int * and no URBs left in transit. */ - usb_set_intfdata(intf, NULL); - // usb_put_intf(sc-intf); - sc-intf = NULL; - usb_put_dev(sc-dev); - sc-dev = NULL; - ub_put(sc); } -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 6/9] USB: usbcore: don't check the device's power source
From: Alan Stern [EMAIL PROTECTED] The choose_configuration() routine contains code the determine the device's power source, so that configurations requiring external power can be ruled out if the device is running on bus power. Unfortunately it turns out that some devices have errors in their config descriptors and other devices don't like the GET_DEVICE_STATUS request. Since that information wasn't used for anything else, this patch (as673) removes the code, leaving only a comment. It fixes bugzilla entry #6448. Signed-off-by: Alan Stern [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/core/hub.c | 23 +-- 1 files changed, 13 insertions(+), 10 deletions(-) 436f5762bcd4929825a0725d4bc78337e6fc0d8f diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 0c87f73..90b8d43 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1168,19 +1168,9 @@ static inline const char *plural(int n) static int choose_configuration(struct usb_device *udev) { int i; - u16 devstatus; - int bus_powered; int num_configs; struct usb_host_config *c, *best; - /* If this fails, assume the device is bus-powered */ - devstatus = 0; - usb_get_status(udev, USB_RECIP_DEVICE, 0, devstatus); - le16_to_cpus(devstatus); - bus_powered = ((devstatus (1 USB_DEVICE_SELF_POWERED)) == 0); - dev_dbg(udev-dev, device is %s-powered\n, - bus_powered ? bus : self); - best = NULL; c = udev-config; num_configs = udev-descriptor.bNumConfigurations; @@ -1197,6 +1187,19 @@ static int choose_configuration(struct u * similar errors in their descriptors. If the next test * were allowed to execute, such configurations would always * be rejected and the devices would not work as expected. +* In the meantime, we run the risk of selecting a config +* that requires external power at a time when that power +* isn't available. It seems to be the lesser of two evils. +* +* Bugzilla #6448 reports a device that appears to crash +* when it receives a GET_DEVICE_STATUS request! We don't +* have any other way to tell whether a device is self-powered, +* but since we don't use that information anywhere but here, +* the call has been removed. +* +* Maybe the GET_DEVICE_STATUS call and the test below can +* be reinstated when device firmwares become more reliable. +* Don't hold your breath. */ #if 0 /* Rule out self-powered configs for a bus-powered device */ -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 2/9] USBATM: change the default speedtouch iso altsetting
From: Duncan Sands [EMAIL PROTECTED] The maximum possible bandwidth for a speedtouch modem is about 7Mbaud. You can only get this by using isochronous urbs (enable_isoc=1) and altsetting 3. With the current default altsetting of 2, the modem maxes out at about 4Mbaud. So change the default altsetting to 3 when using isochronous urbs. It would be nice to base the altsetting on the detected line speed, but that's hard given the current design. Signed-off-by: Duncan Sands [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/atm/speedtch.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) 67c752b41a4238c1a2d7eebcd061ff8c1127d3e9 diff --git a/drivers/usb/atm/speedtch.c b/drivers/usb/atm/speedtch.c index 7860c8a..956b7a1 100644 --- a/drivers/usb/atm/speedtch.c +++ b/drivers/usb/atm/speedtch.c @@ -69,7 +69,7 @@ #define MAX_POLL_DELAY6 /* millise #define RESUBMIT_DELAY 1000/* milliseconds */ #define DEFAULT_BULK_ALTSETTING1 -#define DEFAULT_ISOC_ALTSETTING2 +#define DEFAULT_ISOC_ALTSETTING3 #define DEFAULT_DL_512_FIRST 0 #define DEFAULT_ENABLE_ISOC0 #define DEFAULT_SW_BUFFERING 0 -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 4/9] USB: pegasus fixes (logstorm, suspend)
From: David Brownell [EMAIL PROTECTED] Teach pegasus to handle a few of the disconnect fault paths without hundreds of usless syslog messages. Handle the carrier check workqueue entry even if the driver has not been opened. Signed-off-by: David Brownell [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/net/pegasus.c | 20 +++- 1 files changed, 15 insertions(+), 5 deletions(-) 7e713b825610de9a9584c189c72e2d9f2326359c diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index 2deb4c0..7683926 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c @@ -318,6 +318,8 @@ static int read_mii_word(pegasus_t * peg set_register(pegasus, PhyCtrl, (indx | PHY_READ)); for (i = 0; i REG_TIMEOUT; i++) { ret = get_registers(pegasus, PhyCtrl, 1, data); + if (ret == -ESHUTDOWN) + goto fail; if (data[0] PHY_DONE) break; } @@ -326,6 +328,7 @@ static int read_mii_word(pegasus_t * peg *regd = le16_to_cpu(regdi); return ret; } +fail: if (netif_msg_drv(pegasus)) dev_warn(pegasus-intf-dev, fail %s\n, __FUNCTION__); @@ -354,12 +357,15 @@ static int write_mii_word(pegasus_t * pe set_register(pegasus, PhyCtrl, (indx | PHY_WRITE)); for (i = 0; i REG_TIMEOUT; i++) { ret = get_registers(pegasus, PhyCtrl, 1, data); + if (ret == -ESHUTDOWN) + goto fail; if (data[0] PHY_DONE) break; } if (i REG_TIMEOUT) return ret; +fail: if (netif_msg_drv(pegasus)) dev_warn(pegasus-intf-dev, fail %s\n, __FUNCTION__); return -ETIMEDOUT; @@ -387,6 +393,8 @@ static int read_eprom_word(pegasus_t * p ret = get_registers(pegasus, EpromCtrl, 1, tmp); if (tmp EPROM_DONE) break; + if (ret == -ESHUTDOWN) + goto fail; } if (i REG_TIMEOUT) { ret = get_registers(pegasus, EpromData, 2, retdatai); @@ -394,6 +402,7 @@ static int read_eprom_word(pegasus_t * p return ret; } +fail: if (netif_msg_drv(pegasus)) dev_warn(pegasus-intf-dev, fail %s\n, __FUNCTION__); return -ETIMEDOUT; @@ -433,12 +442,15 @@ static int write_eprom_word(pegasus_t * for (i = 0; i REG_TIMEOUT; i++) { ret = get_registers(pegasus, EpromCtrl, 1, tmp); + if (ret == -ESHUTDOWN) + goto fail; if (tmp EPROM_DONE) break; } disable_eprom_write(pegasus); if (i REG_TIMEOUT) return ret; +fail: if (netif_msg_drv(pegasus)) dev_warn(pegasus-intf-dev, fail %s\n, __FUNCTION__); return -ETIMEDOUT; @@ -1378,9 +1390,8 @@ static int pegasus_suspend (struct usb_i struct pegasus *pegasus = usb_get_intfdata(intf); netif_device_detach (pegasus-net); + cancel_delayed_work(pegasus-carrier_check); if (netif_running(pegasus-net)) { - cancel_delayed_work(pegasus-carrier_check); - usb_kill_urb(pegasus-rx_urb); usb_kill_urb(pegasus-intr_urb); } @@ -1400,10 +1411,9 @@ static int pegasus_resume (struct usb_in pegasus-intr_urb-status = 0; pegasus-intr_urb-actual_length = 0; intr_callback(pegasus-intr_urb, NULL); - - queue_delayed_work(pegasus_workqueue, pegasus-carrier_check, - CARRIER_CHECK_DELAY); } + queue_delayed_work(pegasus_workqueue, pegasus-carrier_check, + CARRIER_CHECK_DELAY); return 0; } -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 5/9] USB: fix OHCI PM regression
From: David Brownell [EMAIL PROTECTED] This fixes a small regression in USB controller power usage for many OHCI controllers, notably including every non-PCI version of OHCI: on those systems, the runtime autosuspend mechanism is no longer enabled. The change moves to saner defaults. All root hubs are expected to handle remote wakeup (and hence autosuspend), although drivers for buggy silicon may override that default. Signed-off-by: David Brownell [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/core/hcd.c | 13 ++--- 1 files changed, 6 insertions(+), 7 deletions(-) db4cefaaea4c6d67cdaebfd315abc791c5c9d22f diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index fbd938d..e2e00ba 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1805,6 +1805,12 @@ int usb_add_hcd(struct usb_hcd *hcd, USB_SPEED_FULL; hcd-self.root_hub = rhdev; + /* wakeup flag init defaults to everything works for root hubs, +* but drivers can override it in reset() if needed, along with +* recording the overall controller's system wakeup capability. +*/ + device_init_wakeup(rhdev-dev, 1); + /* reset is misnamed; its role is now one-time init. the controller * should already have been reset (and boot firmware kicked off etc). */ @@ -1813,13 +1819,6 @@ int usb_add_hcd(struct usb_hcd *hcd, goto err_hcd_driver_setup; } - /* wakeup flag init is in transition; for now we can't rely on PCI to -* initialize these bits properly, so we let reset() override it. -* This init should _precede_ the reset() once PCI behaves. -*/ - device_init_wakeup(rhdev-dev, - device_can_wakeup(hcd-self.controller)); - /* NOTE: root hub and controller capabilities may not be the same */ if (device_can_wakeup(hcd-self.controller) device_can_wakeup(hcd-self.root_hub-dev)) -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 8/9] USB: ftdi_sio: Add support for HCG HF Dual ISO RFID Reader
From: Ian Abbott [EMAIL PROTECTED] This patch adds support for ACG Identification Technologies GmbH's HF Dual ISO Reader (an RFID tag reader) to the ftdi_sio driver's device ID table. The product ID was supplied by anotonios (anton at goto10 dot org) on the ftdi-usb-sio-devel list and subsequently verified by myself (Ian Abbott). Signed-off-by: Ian Abbott [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/serial/ftdi_sio.c |1 + drivers/usb/serial/ftdi_sio.h |5 + 2 files changed, 6 insertions(+), 0 deletions(-) 20a0f47e18c646bcc772282512fc59e56b2fc968 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 8215120..9498da4 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -498,6 +498,7 @@ static struct usb_device_id id_table_com { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) }, { },/* Optional parameter entry */ { } /* Terminating entry */ }; diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index 2c55a5e..3e4123f 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h @@ -426,6 +426,11 @@ #define FTDI_ECLO_COM_1WIRE_PID0xEA90 / #define PAPOUCH_VID0x5050 /* Vendor ID */ #define PAPOUCH_TMU_PID0x0400 /* TMU USB Thermometer */ +/* + * ACG Identification Technologies GmbH products (http://www.acg.de/). + * Submitted by anton -at- goto10 -dot- org. + */ +#define FTDI_ACG_HFDUAL_PID0xDD20 /* HF Dual ISO Reader (RFID) */ /* Commands */ #define FTDI_SIO_RESET 0 /* Reset the port */ -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 3/9] USBATM: fix modinfo output
From: Duncan Sands [EMAIL PROTECTED] Because of the way stringify works, using an expression like 64 * 1024 for UDSL_MAX_BUF_SIZE results in 64 * 1024 turning up in the modinfo output instead of 65536. So use 65536 directly (this was the only way I found of fixing this). Signed-off-by: Duncan Sands [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/atm/usbatm.c |8 1 files changed, 4 insertions(+), 4 deletions(-) 6275cdfa0fe032208937a3567ebb8bcfd42d20b1 diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c index c1211fc..5462498 100644 --- a/drivers/usb/atm/usbatm.c +++ b/drivers/usb/atm/usbatm.c @@ -99,11 +99,11 @@ static const char usbatm_driver_name[] = #define UDSL_MAX_RCV_URBS 16 #define UDSL_MAX_SND_URBS 16 -#define UDSL_MAX_BUF_SIZE 64 * 1024 /* bytes */ +#define UDSL_MAX_BUF_SIZE 65536 #define UDSL_DEFAULT_RCV_URBS 4 #define UDSL_DEFAULT_SND_URBS 4 -#define UDSL_DEFAULT_RCV_BUF_SIZE 64 * ATM_CELL_SIZE /* bytes */ -#define UDSL_DEFAULT_SND_BUF_SIZE 64 * ATM_CELL_SIZE /* bytes */ +#define UDSL_DEFAULT_RCV_BUF_SIZE 3392/* 64 * ATM_CELL_SIZE */ +#define UDSL_DEFAULT_SND_BUF_SIZE 3392/* 64 * ATM_CELL_SIZE */ #define ATM_CELL_HEADER(ATM_CELL_SIZE - ATM_CELL_PAYLOAD) @@ -135,7 +135,7 @@ MODULE_PARM_DESC(rcv_buf_bytes, module_param(snd_buf_bytes, uint, S_IRUGO); MODULE_PARM_DESC(snd_buf_bytes, Size of the buffers used for transmission, in bytes (range: 1- -__MODULE_STRING(UDSL_MAX_SND_BUF_SIZE) , default: +__MODULE_STRING(UDSL_MAX_BUF_SIZE) , default: __MODULE_STRING(UDSL_DEFAULT_SND_BUF_SIZE) )); -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] [PATCH 9/9] USB: ftdi_sio: add device id for ACT Solutions HomePro ZWave interface
From: Razvan Gavril [EMAIL PROTECTED] Signed-off-by: Razvan Gavril [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/usb/serial/ftdi_sio.c |1 + drivers/usb/serial/ftdi_sio.h |4 2 files changed, 5 insertions(+), 0 deletions(-) 72a9f958421a519e69b3e7b409948c3a294f4a32 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 9498da4..986d762 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -307,6 +307,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIR static struct usb_device_id id_table_combined [] = { + { USB_DEVICE(FTDI_VID, FTDI_ACTZWAVE_PID) }, { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index 3e4123f..d69a917 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h @@ -32,6 +32,10 @@ #define FTDI_NF_RIC_VID 0x0DCD /* Vendor #define FTDI_NF_RIC_PID0x0001 /* Product Id */ +/* ACT Solutions HomePro ZWave interface (http://www.act-solutions.com/HomePro.htm) */ +#define FTDI_ACTZWAVE_PID 0xF2D0 + + /* www.irtrans.de device */ #define FTDI_IRTRANS_PID 0xFC60 /* Product Id */ -- 1.3.2 --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] Add support for,multiple gadgets
ext David Brownell wrote: On Wednesday 19 April 2006 12:01 pm, Carlos Aguiar wrote: Hi folks, I'm starting a project that the main idea is to try to add support for multiple gadgets. Ideally we would have Ethernet, serial and mass storage available at the same time. Good, I'll be glad to see some progress on this. But please keep to the current terminology: there will be exactly one gadget, but it will expose multiple interfaces or functions. The platforms that I intend to use to develop the project is OMAP H2 and H3. So it'll also go well with an OMAP OSK [1] or Nokia N770 ... ;) I agree that the OMAP is a good platform to start this work on; it's got plenty of endpoints, and I think omap_udc seems pretty solid. You should however think about what it'd mean to do this with a dual speed peripheral too; there are some differences that can crop up. I'm new in this list and I would like to ask you some orientations and to get any hints on where to get started. As I recall, the model we came up with last time this was discussed included: - Some core gadget driver into which interface/function/... drivers plug; when given a single widget, the driver should act like todays drivers do. - Those interface/function/u-name-it/... widgets would include: * one or more usb_gadget_string tables for the strings * descriptors for the interface(s), for building the config descriptor * ... for dual-speed hardware, both high speed and full speed desriptors... * setup() callback for interface and class requests and SET_CONFIGURATION * init() callback, used to set up interface and string identifers So that core driver would be configured somehow, maybe with the desired device descriptor and a table of those widgets to match each gadget configuration (or maybe some other way). The gadget code would call the widget init() routines, which would use some convention to allocate those numeric identifiers so they don't collide. At that point, that core driver would be able do respond to all setup() requests from the USB host ... it would return device, string, and configuration descriptors on demand (matching the current peripheral speed), and pass SET_CONFIGURATION and SET_INTERFACE requests up to the widgets. The widgets would initiate endpoint I/O as appropriate, etc. Details are left as an exercise. :) However you'll notice that all the gadget drivers you mentioned have already been factored into tables of strings and descriptors, so that part has been done already. You should be able to get quite far by changing only the gadget driver initialization, and splitting out setup() code into a reausable core plus widget-specific bits. - Dave [1] http://tree.celinuxforum.org/CelfPubWiki/OSK ... more generally available than H2 or H3. Hi Dave, First of all, thanks for this explanation that was very helpful. But now, we have to write an action plan. We would like to know which tasks could be done for us. Could you help us to define these tasks? Thanks in advance. Carlos and David. -- Carlos Eduardo Software Engineer Nokia Institute of Technology - INdT Embedded Linux Laboratory - 10LE Phone: +55 92 2126-1079 Mobile: +55 92 8127-1797 E-mail: [EMAIL PROTECTED] --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Re: [linux-usb-devel] Re: 2.6.16: usb modem (cdc-acm driver) and duplicate bytes
On Tue, May 09, 2006 at 07:19:08PM +0200, Oliver Neukum wrote: Very good. It seems that something in your system cannot cope with higher speeds of the 2.6.16 driver. Could you please take the 2.6.16 driver and half the values of ACM_NRU and ACM_NRB in cdc-acm.h until you find a value that works? I have tried value of 1 - still get dups. Duplicated data occurs rarer, but a larger chunks of it get duplicated. I attach test data - typescript of `atv' command and corresponding usbmon data. File name notation: *-n1data with ACM_NRU=ACM_NRB=1 *-n16 data with ACM_NRU=ACM_NRB=16 *-old data with 2.6.15 cdc_acm driver. In the `n1' case the second attempt of atv results in a duplicated line. `n16' produces lots of small dups. `old' produces no dups. -- Alexander. 2.mon.out-n1.gz Description: application/gunzip 2.mon.out-n16.gz Description: application/gunzip 2.mon.out-old.gz Description: application/gunzip typescript-n1.gz Description: application/gunzip typescript-n16.gz Description: application/gunzip typescript-old.gz Description: application/gunzip
Re: [linux-usb-devel] Re: 2.6.16: usb modem (cdc-acm driver) and duplicate bytes
Am Dienstag, 9. Mai 2006 23:12 schrieb Alexander V. Lukyanov: On Tue, May 09, 2006 at 07:19:08PM +0200, Oliver Neukum wrote: Very good. It seems that something in your system cannot cope with higher speeds of the 2.6.16 driver. Could you please take the 2.6.16 driver and half the values of ACM_NRU and ACM_NRB in cdc-acm.h until you find a value that works? I have tried value of 1 - still get dups. Duplicated data occurs rarer, but a larger chunks of it get duplicated. I attach test data - typescript of `atv' command and corresponding usbmon data. File name notation: *-n1data with ACM_NRU=ACM_NRB=1 *-n16 data with ACM_NRU=ACM_NRB=16 *-old data with 2.6.15 cdc_acm driver. In the `n1' case the second attempt of atv results in a duplicated line. `n16' produces lots of small dups. `old' produces no dups. Could you please remobe #undef DEBUG from the driver and rerun the n=1 test? Regards Oliver --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid=120709bid=263057dat=121642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
RE: [linux-usb-devel] USB Host performance
Hello Allan, Thanks for your answers. Just one question, when we use the URB_NO_INTERRUPT flag, does it inhibit the interrrupt for non-error completions only? or does it inhbit all the interrupts? If it inhibits all the interrupts how can we monitor the status? The application we are using is the zero gadget driver, for testing our host. Actually I just wanted to know what is the maximum speed that anybody would have seen with the URB size of 8KByte, or is the theoretical value actually achievable? The host controller that we are using is Synopsys EHCI controller. rgds Juhee -Original Message- From: Alan Stern [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 09, 2006 8:10 PM To: Juhee MALA Cc: linux-usb-devel@lists.sourceforge.net Subject: Re: [linux-usb-devel] USB Host performance On Tue, 9 May 2006, Juhee MALA wrote: We are using Linux USB Host stack and doing some performance analysis. For performance analysis we are testing it with a device, which accepts the Bulk-OUT packets with full effieciency (not much-NYTES from device side). We are submitting the data of URB size 8kbytes. The throughput in such scenario that we are getting is approximately 175Mbps. 1. Can anybody tell me, if this is a good performance? Good for what? It's certainly not the best possible. But it's more than adequate for USB-audio. 2. Can anybody tell me what is the best performance that can be achieved on a USB host? The maximum theoretical throughput for high-speed 512-byte bulk transfers is 13 packets per microframe, or 53248000 B/s. That's equivalent to 426 million bits per second. Linux can achieve such rates, if the hardware allows. To reach it, you have to submit a lot of URBs asynchronously. If you're using 8 KB transfer lengths then you should submit at least two batches of URBs, with at least 64 URBs in each batch, and with the URB_NO_INTERRUPT flag set on each URB except the last one in a batch. Each time a batch completes, immediately submit another batch. 3. IS there any bench marking tool for checking the host stack performance? Not that I know of. 4. Which application should be used for demonstrating the host performance? This is almost the same question as number 3. If you want to use your test device, you should select an application that will work with it. Of course, since I don't know what your test device is, I can't recommend any applications. Alan Stern --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid0709bid3057dat1642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] Doubts in HCD Suspend/Resume
Hi , I have written the platform glue for ARC - EHCI controller. I provided the suspend/resume call backs in struct platform_driver with CONFIG_PM and CONFIG_USB_SUSPEND for selecti ve suspend/resume enabled. My kernel is compile to be monolithic. So once the kernel boots up, the driver is registered. I mounted on sysfs and when i try to suspend the host controller with a camera (mass storage) pluggged in to it. I have provided some debug prints in the suspend/resume call backs i provided in the struct platform_driver. I execute the command to suspend using /sys/bus/usb/devices/usb1/powe/state ehco -n 3 /sys/bus/usb/devices/usb1/powe/state, Shouldn't the corresponding suspend call back get invoked. For me it is not. Similarly for resume. Please tell me where i am wrong. Rak --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid0709bid3057dat1642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[linux-usb-devel] Re: USB 2.0 ehci failure with large amount of RAM (4GB) on x86_64
Like I said in my previous message, I am not a kernel developer. I am a programmer though, so I thought I'd give your suggestions a try. I added 1 line to drivers/usb/host/ehci-pci.c which sets the DMA mask, and now it seems to work with ehci loaded and with 4 GB of RAM. Unfortunately, I don't really understand what I did. Perhaps you have a better idea what this is doing and if it is correct. case PCI_VENDOR_ID_NVIDIA: /* NVidia reports that certain chips don't handle * QH, ITD, or SITD addresses above 2GB. (But TD, * data buffer, and periodic schedule are normal.) */ dma_set_mask(hcd-self.controller, DMA_31BIT_MASK); /* I added this line */ switch (pdev-device) { case 0x003c:/* MCP04 */ case 0x005b:/* CK804 */ case 0x00d8:/* CK8 */ case 0x00e8:/* CK8S */ if (pci_set_consistent_dma_mask(pdev, DMA_31BIT_MASK) 0) ehci_warn(ehci, can't enable NVidia workaround for 2GB RAM\n); break; } break; } --- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnkkid0709bid3057dat1642 ___ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel