Skip to contentSkip to conversation

hid-core: Configurable USB HID Mouse Interrupt Polling Interval

PATCH In review Mikkel Krautz 5 participants 15 messages Dec 17, 2004 – Feb 6, 2005 USB

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 hid-core: Configurable USB HID Mouse Interrupt Polling Interval

Hi!

This patch adds the option "USB HID Mouse Interrupt Polling Interval" to drivers/usb/input/Kconfig, and a few lines of code to drivers/usb/input/hid-core.c, to make the config option function.

It allows people to change the interval, at which their USB HID mice are polled at. This is extremely useful for people who require high precision, or just likes the feeling of a very precise mouse. ;)

As the Kconfig help implies, setting a lower polling interval is known to work on several mice produced by Logitech and Microsoft. I only have a Logitech MX500 to test it on. My results have been positive, and so have many other people's.

Mikkel Krautz

---

drivers/usb/input/Kconfig +32 -0
@@ -24,6 +24,38 @@
 	  To compile this driver as a module, choose M here: the
 	  module will be called usbhid.
 
+config USB_HID_MOUSE_POLLING_INTERVAL
+	int "USB HID Mouse Interrupt Polling Interval"
+	default 10
+	depends on USB_HID
+	help
+	  The "USB HID Mouse Interrupt Polling Interval" is the interval, at
+	  which your USB HID mouse is to be polled at. The interval is
+	  specified in miliseconds.
+
+	  Decreasing the interval will, of course, give you a much more
+	  precise mouse.
+
+	  Generally speaking, a polling interval of 2 ms should be more than
+	  enough for most people, and is great for gaming and other things
+	  that require high precision.
+
+	  An interval lower than the default is not guaranteed work on your
+	  specific piece of hardware. If you want to play it safe, don't
+	  change this value.
+
+	  Now, if you indeed want to feel the joy of a precise mouse, the
+	  following mice are known to work without problems, when the interval
+	  is set to at least 2 ms:
+
+	    * Logitech's MX-family
+	    * Logitech Mouse Man Dual Optical
+	    * Logitech iFeel
+	    * Microsoft Intellimouse Explorer
+	    * Microsoft Intellimouse Optical 1.1
+
+	  If unsure, keep it at 10 ms.
+
 comment "Input core support is needed for USB HID input layer or HIDBP

support"
depends on USB_HID && INPUT=n

drivers/usb/input/hid-core.c +1 -1
@@ -37,7 +37,7 @@
  * Version Information
  */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"
 #define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
 #define DRIVER_DESC "USB HID core driver"
 #define DRIVER_LICENSE "GPL"
@@ -1663,6 +1663,12 @@
 		if ((endpoint->bmAttributes & 3) != 3)		/* Not an interrupt endpoint

*/
continue;

+ /* Set the interrupt polling interval of mice, to the one specified
in the config. */
+ if (hid->collection->usage == HID_GD_MOUSE
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL > 0
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL < 255)
+ endpoint->bInterval = CONFIG_USB_HID_MOUSE_POLLING_INTERVAL;
+
/* handle potential highspeed HID correctly */ interval = endpoint->bInterval;
if (dev->speed == USB_SPEED_HIGH)

#1 lore raw
Quoted 10 lines · Mikkel Krautz

Hi!

This patch adds the option "USB HID Mouse Interrupt Polling Interval" to drivers/usb/input/Kconfig, and a few lines of code to drivers/usb/input/hid-core.c, to make the config option function.

It allows people to change the interval, at which their USB HID mice are polled at. This is extremely useful for people who require high precision, or just likes the feeling of a very precise mouse. ;)

Quoted 7 lines

As the Kconfig help implies, setting a lower polling interval is known to work on several mice produced by Logitech and Microsoft. I only have a Logitech MX500 to test it on. My results have been positive, and so have many other people's.

Mikkel Krautz

Mikkel, could you please turn off the word wrap in your MTA's composer and repost this? I'd like to try it.

Quoted 10 lines

---

drivers/usb/input/Kconfig +0 -0
@@ -24,6 +24,38 @@
 	  To compile this driver as a module, choose M here: the
 	  module will be called usbhid.

[...]

Signature · 8 lines
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.30% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com attorneys please note, additions to this message
by Gene Heskett are:
Copyright 2004 by Maurice Eugene Heskett, all rights reserved.
#2 lore raw
In reply to Mikkel Krautz
Quoted 6 lines · Mikkel Krautz

Hi!

This patch adds the option "USB HID Mouse Interrupt Polling Interval" to drivers/usb/input/Kconfig, and a few lines of code to drivers/usb/input/hid-core.c, to make the config option function.

Quoted 8 lines

It allows people to change the interval, at which their USB HID mice are polled at. This is extremely useful for people who require high precision, or just likes the feeling of a very precise mouse. ;)

As the Kconfig help implies, setting a lower polling interval is known to work on several mice produced by Logitech and Microsoft. I only have a Logitech MX500 to test it on. My results have been positive, and so have many other people's.

Why not just make it a sysfs file, so you can tune it per device? That way you also don't have to make it a Kconfig option.

thanks,

greg k-h

#3 lore raw
Quoted 2 lines · Gene Heskett

Mikkel, could you please turn off the word wrap in your MTA's composer and repost this? I'd like to try it.

Sorry about that.
Here's a repost. Now even with a diffstat:

---

Kconfig | 32 ++++++++++++++++++++++++++++++++
hid-core.c | 8 +++++++-

2 files changed, 39 insertions(+), 1 deletion(-)
drivers/usb/input/Kconfig +0 -0
@@ -24,6 +24,38 @@

To compile this driver as a module, choose M here: the module will be called usbhid.

+config USB_HID_MOUSE_POLLING_INTERVAL
+ int "USB HID Mouse Interrupt Polling Interval"
+ default 10
+ depends on USB_HID
+ help
+ The "USB HID Mouse Interrupt Polling Interval" is the interval, at
+ which your USB HID mouse is to be polled at. The interval is
+ specified in miliseconds.
+
+ Decreasing the interval will, of course, give you a much more
+ precise mouse.
+
+ Generally speaking, a polling interval of 2 ms should be more than
+ enough for most people, and is great for gaming and other things
+ that require high precision.
+
+ An interval lower than the default is not guaranteed work on your
+ specific piece of hardware. If you want to play it safe, don't
+ change this value.
+
+ Now, if you indeed want to feel the joy of a precise mouse, the
+ following mice are known to work without problems, when the interval
+ is set to at least 2 ms:
+
+ * Logitech's MX-family
+ * Logitech Mouse Man Dual Optical
+ * Logitech iFeel
+ * Microsoft Intellimouse Explorer
+ * Microsoft Intellimouse Optical 1.1
+
+ If unsure, keep it at 10 ms.
+
comment "Input core support is needed for USB HID input layer or HIDBP support" depends on USB_HID && INPUT=n

drivers/usb/input/hid-core.c +0 -0
@@ -37,7 +37,7 @@

* Version Information
*/

-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"
#define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
#define DRIVER_DESC "USB HID core driver"
#define DRIVER_LICENSE "GPL"
@@ -1663,6 +1663,12 @@
if ((endpoint->bmAttributes & 3) != 3) /* Not an interrupt endpoint */ continue;

+ /* Set the interrupt polling interval of mice, to the one specified in the config. */
+ if (hid->collection->usage == HID_GD_MOUSE
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL > 0
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL < 255)
+ endpoint->bInterval = CONFIG_USB_HID_MOUSE_POLLING_INTERVAL;
+
/* handle potential highspeed HID correctly */
interval = endpoint->bInterval;
if (dev->speed == USB_SPEED_HIGH)

#5 lore raw
In reply to Greg KH
Quoted 20 lines · Greg KH
Quoted 6 lines · Mikkel Krautz

Hi!

This patch adds the option "USB HID Mouse Interrupt Polling Interval" to drivers/usb/input/Kconfig, and a few lines of code to drivers/usb/input/hid-core.c, to make the config option function.

Quoted 10 lines

It allows people to change the interval, at which their USB HID mice are polled at. This is extremely useful for people who require high precision, or just likes the feeling of a very precise mouse. ;)

As the Kconfig help implies, setting a lower polling interval is known to work on several mice produced by Logitech and Microsoft. I only have a Logitech MX500 to test it on. My results have been positive, and so have many other people's.

Quoted 9 lines

Why not just make it a sysfs file, so you can tune it per device? That way you also don't have to make it a Kconfig option.

thanks,

greg k-h

I'm not too familiar with sysfs, so I really don't know.

The interval is set when the device is configured - that's only once.

Therefore I think a static value in Kconfig is fine. Wouldn't a sysfs entry be a little overkill for this?

Mikkel Krautz

#7 lore raw
In reply to Greg KH

*Shrug*

Ugh stupid me. This just doesn't seem to be my day.

I apologise.

Let's hope this is the last time:

---

Kconfig | 32 ++++++++++++++++++++++++++++++++
hid-core.c | 8 +++++++-

2 files changed, 39 insertions(+), 1 deletion(-)
drivers/usb/input/Kconfig +32 -0
@@ -24,6 +24,38 @@
      To compile this driver as a module, choose M here: the
      module will be called usbhid.
 
+config USB_HID_MOUSE_POLLING_INTERVAL
+    int "USB HID Mouse Interrupt Polling Interval"
+    default 10
+    depends on USB_HID
+    help
+      The "USB HID Mouse Interrupt Polling Interval" is the interval, at
+      which your USB HID mouse is to be polled at. The interval is
+      specified in miliseconds.
+
+      Decreasing the interval will, of course, give you a much more
+      precise mouse.
+
+      Generally speaking, a polling interval of 2 ms should be more than
+      enough for most people, and is great for gaming and other things
+      that require high precision.
+
+      An interval lower than the default is not guaranteed work on your
+      specific piece of hardware. If you want to play it safe, don't
+      change this value.
+
+      Now, if you indeed want to feel the joy of a precise mouse, the
+      following mice are known to work without problems, when the interval
+      is set to at least 2 ms:
+
+        * Logitech's MX-family
+        * Logitech Mouse Man Dual Optical
+        * Logitech iFeel
+        * Microsoft Intellimouse Explorer
+        * Microsoft Intellimouse Optical 1.1
+
+      If unsure, keep it at 10 ms.
+

comment "Input core support is needed for USB HID input layer or HIDBP support"

    depends on USB_HID && INPUT=n
drivers/usb/input/hid-core.c +1 -1
@@ -37,7 +37,7 @@
 * Version Information
 */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"

#define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik" #define DRIVER_DESC "USB HID core driver" #define DRIVER_LICENSE "GPL"
@@ -1663,6 +1663,12 @@

        if ((endpoint->bmAttributes & 3) != 3)        /* Not an 
interrupt endpoint */
            continue;

+ /* Set the interrupt polling interval of mice, to the one specified in the config. */
+ if (hid->collection->usage == HID_GD_MOUSE
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL > 0
+ && CONFIG_USB_HID_MOUSE_POLLING_INTERVAL < 255)
+ endpoint->bInterval = CONFIG_USB_HID_MOUSE_POLLING_INTERVAL;
+

        /* handle potential highspeed HID correctly */
        interval = endpoint->bInterval;
        if (dev->speed == USB_SPEED_HIGH)
#6 lore raw
In reply to Mikkel Krautz
Quoted 16 lines · Mikkel Krautz
Quoted 15 lines · Greg KH
Quoted 13 lines · Mikkel Krautz

This patch adds the option "USB HID Mouse Interrupt Polling Interval" to drivers/usb/input/Kconfig, and a few lines of code to drivers/usb/input/hid-core.c, to make the config option function.

It allows people to change the interval, at which their USB HID mice are polled at. This is extremely useful for people who require high precision, or just likes the feeling of a very precise mouse. ;)

As the Kconfig help implies, setting a lower polling interval is known to work on several mice produced by Logitech and Microsoft. I only have a Logitech MX500 to test it on. My results have been positive, and so have many other people's.

Quoted 4 lines
Quoted 3 lines

Why not just make it a sysfs file, so you can tune it per device? That way you also don't have to make it a Kconfig option.

I'm not too familiar with sysfs, so I really don't know.

Poke around in it, I think it's the natural place for stuff like this.

Quoted 1 line

The interval is set when the device is configured - that's only once.

So it can never change? Why not add that feature at the same time?

Quoted 2 lines

Therefore I think a static value in Kconfig is fine. Wouldn't a sysfs entry be a little overkill for this?

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

Just trying to make things easier for users :)

thanks,

greg k-h

#4 lore raw
In reply to Mikkel Krautz
Quoted 9 lines · Mikkel Krautz

On Fri, 17 Dec 2004 19:43:23 -0500, Gene Heskett

Quoted 2 lines · <[email protected]> wrote:

Mikkel, could you please turn off the word wrap in your MTA's composer and repost this? I'd like to try it.

Sorry about that.
Here's a repost. Now even with a diffstat:

Looks good, saved it, thanks.

Signature · 8 lines
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.30% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com attorneys please note, additions to this message
by Gene Heskett are:
Copyright 2004 by Maurice Eugene Heskett, all rights reserved.
#8 lore raw
In reply to Greg KH
Quoted 3 lines · Greg KH

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

I really like the idea. I'm start to think that this is the ideal way to accomplish this.

Here's a new patch. Let's hope it doesn't wrap!

---

hid-core.c | 9 ++++++++-

1 files changed, 8 insertions(+), 1 deletion(-)
drivers/usb/input/hid-core.c +1 -1
@@ -37,11 +37,12 @@
 * Version Information
 */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"

#define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik" #define DRIVER_DESC "USB HID core driver" #define DRIVER_LICENSE "GPL"

+static unsigned int hid_mouse_polling_interval;
static char *hid_types[] = {"Device", "Pointer", "Mouse", "Device", "Joystick",

                "Gamepad", "Keyboard", "Keypad", "Multi-Axis Controller"};

@@ -1663,6 +1664,11 @@

        if ((endpoint->bmAttributes & 3) != 3)        /* Not an 
interrupt endpoint */
            continue;

+ /* Change the polling interval of mice. */
+ if (hid->collection->usage == HID_GD_MOUSE
+ && hid_mouse_polling_interval > 0)
+ endpoint->bInterval = hid_mouse_polling_interval;
+

        /* handle potential highspeed HID correctly */
        interval = endpoint->bInterval;
        if (dev->speed == USB_SPEED_HIGH)

@@ -1910,6 +1916,7 @@

module_init(hid_init); module_exit(hid_exit); +module_param(hid_mouse_polling_interval, int, 644);

MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);

#9 lore raw

Hi Mikkel,

Review line 1919

Quoted 5 lines
(quoted diff) +1 -0
@@ -1910,6 +1916,7 @@
 
 module_init(hid_init);
 module_exit(hid_exit);
+module_param(hid_mouse_polling_interval, int, 644);

I think the use of module_param_named() makes more sense here.

Regards

Marcel

#11 lore raw
In reply to Mikkel Krautz
Quoted 9 lines · Mikkel Krautz
Quoted 3 lines · Greg KH

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

I really like the idea. I'm start to think that this is the ideal way to accomplish this.

Here's a new patch. Let's hope it doesn't wrap!

It was eaten :(

Quoted 3 lines

module_init(hid_init); module_exit(hid_exit); +module_param(hid_mouse_polling_interval, int, 644);

0644, or use the proper #defines instead.

thanks,

greg k-h

#10 lore raw
In reply to Marcel Holtmann
Quoted 10 lines · Marcel Holtmann

Hi Mikkel,

Review line 1919

Quoted 5 lines
(quoted diff) +1 -0
@@ -1910,6 +1916,7 @@
 
 module_init(hid_init);
 module_exit(hid_exit);
+module_param(hid_mouse_polling_interval, int, 644);

I think the use of module_param_named() makes more sense here.

Quoted 5 lines

Regards

Marcel

Thanks, I'll change it. Do you think I should add a MODULE_PARM_DESC too?

Mikkel

#12 lore raw
In reply to Greg KH
Quoted 17 lines · Greg KH
Quoted 9 lines · Mikkel Krautz
Quoted 3 lines · Greg KH

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

I really like the idea. I'm start to think that this is the ideal way to accomplish this.

Here's a new patch. Let's hope it doesn't wrap!

It was eaten :(

Quoted 3 lines

module_init(hid_init); module_exit(hid_exit); +module_param(hid_mouse_polling_interval, int, 644);

Quoted 6 lines

0644, or use the proper #defines instead.

thanks,

greg k-h

Here's an updated version, with your and Marcel's suggestions:

---

 hid-core.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletion(-)
drviers/usb/input/hid-core.c renamed from drivers/usb/input/hid-core.c +8 -1
@@ -37,11 +37,12 @@
  * Version Information
  */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"
 #define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
 #define DRIVER_DESC "USB HID core driver"
 #define DRIVER_LICENSE "GPL"
 
+static unsigned int hid_mousepoll_interval;
 static char *hid_types[] = {"Device", "Pointer", "Mouse", "Device", "Joystick",
 				"Gamepad", "Keyboard", "Keypad", "Multi-Axis Controller"};
 
@@ -1663,6 +1664,11 @@
 		if ((endpoint->bmAttributes & 3) != 3)		/* Not an interrupt endpoint */
 			continue;
 
+		/* Change the polling interval of mice. */
+		if (hid->collection->usage == HID_GD_MOUSE
+				&& hid_mousepoll_interval > 0)
+			endpoint->bInterval = hid_mousepoll_interval;
+		
 		/* handle potential highspeed HID correctly */
 		interval = endpoint->bInterval;
 		if (dev->speed == USB_SPEED_HIGH)
@@ -1910,6 +1916,7 @@
 
 module_init(hid_init);
 module_exit(hid_exit);
+module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
#13 lore raw
Quoted 18 lines · Mikkel Krautz
Quoted 17 lines · Greg KH
Quoted 9 lines · Mikkel Krautz
Quoted 3 lines · Greg KH

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

I really like the idea. I'm start to think that this is the ideal way to accomplish this.

Here's a new patch. Let's hope it doesn't wrap!

It was eaten :(

Quoted 3 lines

module_init(hid_init); module_exit(hid_exit); +module_param(hid_mouse_polling_interval, int, 644);

Quoted 8 lines
Quoted 6 lines

0644, or use the proper #defines instead.

thanks,

greg k-h

Here's an updated version, with your and Marcel's suggestions:

Some more suggestions:

A MODULE_PARM_DESC() would be good, as well as a patch to kernel-parameters.txt.

Also, it'd be better instead of changing the bInterval in the endpoint descriptor to change the "interval" variable. This way one wouldn't need to think about whether the device is Full-speed or High-speed when setting the parameter. Also the endpoint descriptor should be considered read only.

Quoted 45 lines

---

 hid-core.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletion(-)
drviers/usb/input/hid-core.c renamed from drivers/usb/input/hid-core.c +8 -1
@@ -37,11 +37,12 @@
  * Version Information
  */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"
 #define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
 #define DRIVER_DESC "USB HID core driver"
 #define DRIVER_LICENSE "GPL"
 
+static unsigned int hid_mousepoll_interval;
 static char *hid_types[] = {"Device", "Pointer", "Mouse", "Device", "Joystick",
 				"Gamepad", "Keyboard", "Keypad", "Multi-Axis Controller"};
 
@@ -1663,6 +1664,11 @@
 		if ((endpoint->bmAttributes & 3) != 3)		/* Not an interrupt endpoint */
 			continue;
 
+		/* Change the polling interval of mice. */
+		if (hid->collection->usage == HID_GD_MOUSE
+				&& hid_mousepoll_interval > 0)
+			endpoint->bInterval = hid_mousepoll_interval;
+		
 		/* handle potential highspeed HID correctly */
 		interval = endpoint->bInterval;
 		if (dev->speed == USB_SPEED_HIGH)
@@ -1910,6 +1916,7 @@
 
 module_init(hid_init);
 module_exit(hid_exit);
+module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
Signature · 2 lines
Vojtech Pavlik
SuSE Labs, SuSE CR
#14 lore raw

Thanks for the suggestions. :)

I'm wondering if there perhaps is a more clean way to do this? Perhaps something that would give the user the possibility to change the polling interface per device, or something like that, perhaps exported to sysfs? Though, since you mentioned that the endpoint descriptor should be considered read only, I guess not.

And oh, would adding other parameters make sense? For instance for gamepads, joysticks etc.? Also, is there any chance of this getting into the driver? :)

Thanks,
Mikkel

Quoted 89 lines · Vojtech Pavlik
Quoted 18 lines · Mikkel Krautz
Quoted 17 lines · Greg KH
Quoted 9 lines · Mikkel Krautz
Quoted 3 lines · Greg KH

What about makeing it a module paramater then, that is exported to sysfs? That makes it easier to adjust on the fly (before the mouse is inserted), and doesn't require the kernel to be rebuilt.

I really like the idea. I'm start to think that this is the ideal way to accomplish this.

Here's a new patch. Let's hope it doesn't wrap!

It was eaten :(

Quoted 3 lines

module_init(hid_init); module_exit(hid_exit); +module_param(hid_mouse_polling_interval, int, 644);

Quoted 8 lines
Quoted 6 lines

0644, or use the proper #defines instead.

thanks,

greg k-h

Here's an updated version, with your and Marcel's suggestions:

Some more suggestions:

A MODULE_PARM_DESC() would be good, as well as a patch to kernel-parameters.txt.

Also, it'd be better instead of changing the bInterval in the endpoint descriptor to change the "interval" variable. This way one wouldn't need to think about whether the device is Full-speed or High-speed when setting the parameter. Also the endpoint descriptor should be considered read only.

Quoted 38 lines

---

 hid-core.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletion(-)
drviers/usb/input/hid-core.c renamed from drivers/usb/input/hid-core.c +7 -1
@@ -37,11 +37,12 @@
  * Version Information
  */
 
-#define DRIVER_VERSION "v2.0"
+#define DRIVER_VERSION "v2.01"
 #define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
 #define DRIVER_DESC "USB HID core driver"
 #define DRIVER_LICENSE "GPL"
 
+static unsigned int hid_mousepoll_interval;
 static char *hid_types[] = {"Device", "Pointer", "Mouse", "Device", "Joystick",
                              "Gamepad", "Keyboard", "Keypad", "Multi-Axis Controller"};
 
@@ -1663,6 +1664,11 @@
              if ((endpoint->bmAttributes & 3) != 3)          /* Not an interrupt endpoint */
                      continue;
 
+             /* Change the polling interval of mice. */
+             if (hid->collection->usage == HID_GD_MOUSE
+                             && hid_mousepoll_interval > 0)
+                     endpoint->bInterval = hid_mousepoll_interval;
+
              /* handle potential highspeed HID correctly */
              interval = endpoint->bInterval;
              if (dev->speed == USB_SPEED_HIGH)

drviers/usb/input/hid-core.c line 1922

Quoted 7 lines
drviers/usb/input/hid-core.c renamed from drivers/usb/input/hid-core.c +1 -0
@@ -1910,6 +1916,7 @@
 
 module_init(hid_init);
 module_exit(hid_exit);
+module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);

--
Vojtech Pavlik
SuSE Labs, SuSE CR