HID: Send Report ID when numbered reports are sent over the control endpoint.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Monday, July 12, 2010 - 4:59 pm

Gitweb:     http://git.kernel.org/linus/29129a98e6fc892d63bf7b8efcb458a258fe1683
Commit:     29129a98e6fc892d63bf7b8efcb458a258fe1683
Parent:     1f45e3249cd4720ab72c3bea82c27162a2d8b577
Author:     Alan Ott <alan@signal11.us>
AuthorDate: Wed Jun 30 09:50:36 2010 -0400
Committer:  Jiri Kosina <jkosina@suse.cz>
CommitDate: Sun Jul 11 23:13:15 2010 +0200

    HID: Send Report ID when numbered reports are sent over the control endpoint.
    
    The Report ID wasn't sent as part of the payload for reports which were sent
    over the control endpoint. This is required by section 8.1 of the HID spec.
    
    Signed-off-by: Alan Ott <alan@signal11.us>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
 drivers/hid/usbhid/hid-core.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 1ebd324..b729c02 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -827,14 +827,21 @@ static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t co
 				ret++;
 		}
 	} else {
+		int skipped_report_id = 0;
+		if (buf[0] == 0x0) {
+			/* Don't send the Report ID */
+			buf++;
+			count--;
+			skipped_report_id = 1;
+		}
 		ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
 			HID_REQ_SET_REPORT,
 			USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
 			((report_type + 1) << 8) | *buf,
-			interface->desc.bInterfaceNumber, buf + 1, count - 1,
+			interface->desc.bInterfaceNumber, buf, count,
 			USB_CTRL_SET_TIMEOUT);
-		/* count also the report id */
-		if (ret > 0)
+		/* count also the report id, if this was a numbered report. */
+		if (ret > 0 && skipped_report_id)
 			ret++;
 	}
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
HID: Send Report ID when numbered reports are sent over th ..., Linux Kernel Mailing ..., (Mon Jul 12, 4:59 pm)