[PATCH] HID: nintendo: Reduce JC_SUBCMD_RATE_MAX_ATTEMPTS

Willy Huang posted 1 patch 1 month, 2 weeks ago
drivers/hid/hid-nintendo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] HID: nintendo: Reduce JC_SUBCMD_RATE_MAX_ATTEMPTS
Posted by Willy Huang 1 month, 2 weeks ago
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>
---
 drivers/hid/hid-nintendo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
index c2849a541f65..342cd6893502 100644
--- a/drivers/hid/hid-nintendo.c
+++ b/drivers/hid/hid-nintendo.c
@@ -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)
-- 
2.51.1.851.g4ebd6896fd-goog
Re: [PATCH] HID: nintendo: Reduce JC_SUBCMD_RATE_MAX_ATTEMPTS
Posted by Jiri Kosina 1 month, 1 week ago
On Thu, 30 Oct 2025, Willy Huang wrote:

> 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>

Applied, thanks.

-- 
Jiri Kosina
SUSE Labs
Re: [PATCH] HID: nintendo: Reduce JC_SUBCMD_RATE_MAX_ATTEMPTS
Posted by Daniel Ogorchock 1 month, 2 weeks ago
Hi Willy,

On Thu, Oct 30, 2025 at 2:37 AM Willy Huang <willyhuang@google.com> wrote:
>
> 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>
> ---
>  drivers/hid/hid-nintendo.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
> index c2849a541f65..342cd6893502 100644
> --- a/drivers/hid/hid-nintendo.c
> +++ b/drivers/hid/hid-nintendo.c
> @@ -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)
> --
> 2.51.1.851.g4ebd6896fd-goog
>

Thanks for the patch. Seems like a good change.

Reviewed-by: Daniel J. Ogorchock <djogorchock@gmail.com>

- Daniel