From: Vojtech Pavlik <vojtech@suse.cz>
To: torvalds@osdl.org, vojtech@ucw.cz, linux-kernel@vger.kernel.org
Subject: [PATCH 2/6] Handle -EILSEQ return code in the HID driver
Date: Thu, 27 Jan 2005 18:13:58 +0100 [thread overview]
Message-ID: <11068460381254@twilight.ucw.cz> (raw)
In-Reply-To: <1106846038373@twilight.ucw.cz>
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/for-linus
===================================================================
ChangeSet@1.1972, 2005-01-13 13:32:43+01:00, vojtech@suse.cz
input: Handle -EILSEQ return code in the HID driver completion
handlers as unplug.
Flush request queue on unplug, too.
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
hid-core.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
===================================================================
diff -Nru a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
--- a/drivers/usb/input/hid-core.c 2005-01-27 17:48:07 +01:00
+++ b/drivers/usb/input/hid-core.c 2005-01-27 17:48:07 +01:00
@@ -925,8 +925,9 @@
break;
case -ECONNRESET: /* unlink */
case -ENOENT:
- case -ESHUTDOWN:
case -EPERM:
+ case -ESHUTDOWN: /* unplug */
+ case -EILSEQ: /* unplug timeout on uhci */
return;
case -ETIMEDOUT: /* NAK */
break;
@@ -1136,12 +1137,15 @@
{
struct hid_device *hid = urb->context;
unsigned long flags;
+ int unplug = 0;
switch (urb->status) {
case 0: /* success */
+ case -ESHUTDOWN: /* unplug */
+ case -EILSEQ: /* unplug timeout on uhci */
+ unplug = 1;
case -ECONNRESET: /* unlink */
case -ENOENT:
- case -ESHUTDOWN:
break;
default: /* error */
warn("output irq status %d received", urb->status);
@@ -1149,7 +1153,10 @@
spin_lock_irqsave(&hid->outlock, flags);
- hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1);
+ if (unplug)
+ hid->outtail = hid->outhead;
+ else
+ hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1);
if (hid->outhead != hid->outtail) {
if (hid_submit_out(hid)) {
@@ -1173,6 +1180,7 @@
{
struct hid_device *hid = urb->context;
unsigned long flags;
+ int unplug = 0;
spin_lock_irqsave(&hid->ctrllock, flags);
@@ -1180,16 +1188,21 @@
case 0: /* success */
if (hid->ctrl[hid->ctrltail].dir == USB_DIR_IN)
hid_input_report(hid->ctrl[hid->ctrltail].report->type, urb, regs);
+ case -ESHUTDOWN: /* unplug */
+ case -EILSEQ: /* unplug timectrl on uhci */
+ unplug = 1;
case -ECONNRESET: /* unlink */
case -ENOENT:
- case -ESHUTDOWN:
case -EPIPE: /* report not available */
break;
default: /* error */
warn("ctrl urb status %d received", urb->status);
}
- hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1);
+ if (unplug)
+ hid->ctrltail = hid->ctrlhead;
+ else
+ hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1);
if (hid->ctrlhead != hid->ctrltail) {
if (hid_submit_ctrl(hid)) {
next prev parent reply other threads:[~2005-01-27 17:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-27 16:59 [bk patches] Input update for 2.6.11 [0/6] Vojtech Pavlik
2005-01-27 17:13 ` [PATCH 1/6] Add support for H-Wheel on Microsoft Explorer and Logitech MX mice Vojtech Pavlik
2005-01-27 17:13 ` Vojtech Pavlik [this message]
2005-01-27 17:13 ` [PATCH 3/6] Always bring the i8042 multiplexer out of multiplexing mode Vojtech Pavlik
2005-01-27 17:13 ` [PATCH 4/6] Enable scancode event generation in the HID driver Vojtech Pavlik
2005-01-27 17:13 ` [PATCH 5/6] Add missing input_sync() calls to atkbd.c Vojtech Pavlik
2005-01-27 17:13 ` [PATCH 6/6] Fix ACK/NAK handling in libps2.c - don't ignore bytes before ACK Vojtech Pavlik
2005-01-28 11:26 ` [PATCH 1/1] One more: Fix libps2 timeout handling Vojtech Pavlik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11068460381254@twilight.ucw.cz \
--to=vojtech@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
--cc=vojtech@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox