Hello,

On 26-May-01 Roman Weissgaerber wrote:

>> On 25-May-01 Norbert Preining wrote:
>> >> There is something else you can do: in pwc_isoc_handler, there is a
>> >> large
>> >> piece of code inside ?if (fst == 0) { ... }?, but there is no ?else?
>> >> branch.
>> >> Try and print this fst-status if its != 0, there maybe some corrupted
>> >> packets on the line.
>> >
>> > Here what I did:
>> >        for (i = 0; i < urb->number_of_packets; i++) {
>> >                fst  = urb->iso_frame_desc[i].status;
>> >                printk("DEBUG: fst=%d\n", fst);
>> >                flen = urb->iso_frame_desc[i].actual_length;
>> >                iso_buf = urb->transfer_buffer +
>> >urb->iso_frame_desc[i].offset;
>> >                if (fst == 0) {
>> >                        printk("DEBUG: entering fst==0\n");
>> >...
>> >                } else /* ..status == 0 */
>> >                { /* fst status != 0 */
>> >                        printk("DEBUG: entering fst NOT= 0\n");
>> >                        printk("DEBUG: fst=%d, flen=%d\n", fst, flen);
>> >                        printk("DEBUG: urb->transfer_flags &
>> >                        USB_DISABLE_SPD
>> >=%d\n", urb->transfer_flags & USB_DISABLE_SPD ? 1 : 0);
>> >                }
>> >
>> > And I get the following messages:
>> >
>> > Then there are a lot of line packets like this:
>> >
>> > A good one:
>> > May 25 16:26:44 mandala kernel: DEBUG: fst=0
>> > May 25 16:26:44 mandala kernel: DEBUG: entering fst==0
>> >
>> >
>> > And a bad one:
>> > May 25 16:26:44 mandala kernel: DEBUG: fst=-18
>> > May 25 16:26:44 mandala kernel: DEBUG: entering fst NOT= 0
>> > May 25 16:26:44 mandala kernel: DEBUG: fst=-18, flen=0
>> > May 25 16:26:44 mandala kernel: DEBUG: urb->transfer_flags &
>> > USB_DISABLE_SPD = 0
>> 
>> [fst is the status of each and every transfered URB]
>> 
>> > I always get fst = -18. Whatever this means.
>> 
>> I don�t know either; the maintainer of the OHCI driver can hopefully tell
>> us exactly what this means.
>> 
> -EXDEV (-18) means that the frame descriptor is empty 
> (has not been processed).  

That�s odd; do you know under which conditions this can happen?

> May be the URB never really come to the HCD? 

Without an USB sniffer, we�ll probably never know.

> Does the completion handler reads only its own URB or also 
> other URBs?

Only it�s own. It supplies two circular linked URBs at open(), and removes
them only when the device is closed.

> What does the webcam driver expect from the ->next pointer stuff? 

Nothing; the isoc handler doesn�t use them. Since this is an ISOC transfer
I rely on the automatic re-submit procedure by the HCD.

> Do you use start frame numbers or ASAP flag in the URBs.

ASAP.

The whole code of the webcam driver can be found at my website in the patch;
however, since the driver works on a lot of machines, I don�t think the
problem is in my code itself, but rather a combination of the OHCI driver
and Preinig�s hardware,

-----------------------------------------------------------------------------
Try SorceryNet!   One of the best IRC-networks around!   irc.sorcery.net:9000
URL: never        IRC: nemosoft      IscaBBS (bbs.isca.uiowa.edu): Nemosoft
                        >> Never mind the daylight << 

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to