usblp: continuously poll for status
The usblp in 2.6.18 polled for status regardless if we actually needed it. At some point I dropped it, to save the batteries if nothing else. As it turned out, printers exist (e.g. Canon BJC-3000) that need prodding this way or else they stop. This patch restores the old behaviour. If you want to save battery, don't leave jobs in the print queue. I tested this on my printers by printing and examining usbmon traces to make sure status is being requested and printers continue to print. Tuomas Jäntti verified the fix on BJC-3000. Signed-off-by: Pete Zaitcev <zaitcev@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
5c16034d73
commit
dd44be6b17
@ -880,16 +880,19 @@ static int usblp_wwait(struct usblp *usblp, int nonblock)
|
||||
if (rc <= 0)
|
||||
break;
|
||||
|
||||
if (usblp->flags & LP_ABORT) {
|
||||
if (schedule_timeout(msecs_to_jiffies(5000)) == 0) {
|
||||
if (schedule_timeout(msecs_to_jiffies(1500)) == 0) {
|
||||
if (usblp->flags & LP_ABORT) {
|
||||
err = usblp_check_status(usblp, err);
|
||||
if (err == 1) { /* Paper out */
|
||||
rc = -ENOSPC;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* Prod the printer, Gentoo#251237. */
|
||||
mutex_lock(&usblp->mut);
|
||||
usblp_read_status(usblp, usblp->statusbuf);
|
||||
mutex_unlock(&usblp->mut);
|
||||
}
|
||||
} else {
|
||||
schedule();
|
||||
}
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
|
Loading…
Reference in New Issue
Block a user