The patch titled

     hiddev: output reports are dropped when HIDIOCSREPORT is called in short 
succession

has been added to the -mm tree.  Its filename is

     hiddev-output-reports-are-dropped-when-hidiocsreport-is.patch

Patches currently in -mm which might be from [EMAIL PROTECTED] are

hiddev-output-reports-are-dropped-when-hidiocsreport-is.patch



From: Stefan Nickl <[EMAIL PROTECTED]>

When trying to make the hiddev driver issue several Set_Report control
transfers to a custom device with 2.6.13-rc6, only the first transfer in a
row is carried out, while others immediately following it are silently
dropped.

This happens where hid_submit_report() (in hid-core.c) tests for
HID_CTRL_RUNNING, which seems to be still set because the first transfer is
not finished yet.

As a workaround, inserting a delay between the two calls to
ioctl(HIDIOCSREPORT) in userspace "solves" the problem.  The
straightforward fix is to add a call to hid_wait_io() to the implementation
of HIDIOCSREPORT (in hiddev.c), just like for HIDIOCGREPORT.  Works fine
for me.

Apparently, this issue has some history:
http://marc.theaimsgroup.com/?l=linux-usb-users&m=111100670105558&w=2

Signed-off-by: Stefan Nickl <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/usb/input/hiddev.c |    1 +
 1 files changed, 1 insertion(+)

diff -puN 
drivers/usb/input/hiddev.c~hiddev-output-reports-are-dropped-when-hidiocsreport-is
 drivers/usb/input/hiddev.c
--- 
devel/drivers/usb/input/hiddev.c~hiddev-output-reports-are-dropped-when-hidiocsreport-is
    2005-08-22 21:52:01.000000000 -0700
+++ devel-akpm/drivers/usb/input/hiddev.c       2005-08-22 21:52:01.000000000 
-0700
@@ -507,6 +507,7 @@ static int hiddev_ioctl(struct inode *in
                        return -EINVAL;
 
                hid_submit_report(hid, report, USB_DIR_OUT);
+               hid_wait_io(hid);
 
                return 0;
 
_
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to