]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
HID: nintendo: Reduce JC_SUBCMD_RATE_MAX_ATTEMPTS
authorWilly Huang <willyhuang@google.com>
Thu, 30 Oct 2025 06:37:04 +0000 (14:37 +0800)
committerJiri Kosina <jkosina@suse.com>
Fri, 31 Oct 2025 09:11:58 +0000 (10:11 +0100)
The JC_SUBCMD_RATE_MAX_ATTEMPTS constant is currently set to 500.
In a worst-case scenario where all attempts consistently fail, this could
cause the loop to block for up to 60000 ms (500 * 60ms * 2, including the
additional retry after a timeout).

This change lowers the maximum potential blocking time to 3000 ms
(25 * 60ms * 2), improving system responsiveness and efficiency.

Signed-off-by: Willy Huang <willyhuang@google.com>
Reviewed-by: Daniel J. Ogorchock <djogorchock@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-nintendo.c

index c2849a541f65a19eab04a068a69f6e97e98dd9d9..342cd6893502ad664bb6a33234be1948a4c4ddf1 100644 (file)
@@ -819,7 +819,7 @@ static void joycon_wait_for_input_report(struct joycon_ctlr *ctlr)
 #define JC_INPUT_REPORT_MAX_DELTA      17
 #define JC_SUBCMD_TX_OFFSET_MS         4
 #define JC_SUBCMD_VALID_DELTA_REQ      3
-#define JC_SUBCMD_RATE_MAX_ATTEMPTS    500
+#define JC_SUBCMD_RATE_MAX_ATTEMPTS    25
 #define JC_SUBCMD_RATE_LIMITER_USB_MS  20
 #define JC_SUBCMD_RATE_LIMITER_BT_MS   60
 #define JC_SUBCMD_RATE_LIMITER_MS(ctlr)        ((ctlr)->hdev->bus == BUS_USB ? JC_SUBCMD_RATE_LIMITER_USB_MS : JC_SUBCMD_RATE_LIMITER_BT_MS)