Hi,
The error handling in usblp_write is broken. If I use blocking IO and
any error happens which makes writeurb_status nonzero the usblp driver
will end up in an endless loop sending status requests to the printer.
The only way to leave this loop is to unplug the printer because this
sets usblp->present to zero.
This is no wonder because the error handler simply continues the loop
without trying again to send data over the USB. The writeurb status will
never change.

Here a simplified version of my problem:

while(writecount < count) {
        ...
        if (usblp->writeurb->status != 0) {
                err = usblp_check_status(usblp, err);
                continue;
        }
        ...
        err = usb_submit_urb(usblp->writeurb, GFP_KERNEL);
        ...
}

How is the intended error behaviour ? Should usblp_write simply retry
forever or should the system call return with an error ? Should there be
a retry limit ?

Jochen



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to