2024-01-29 16:50:48

by Oleksandr Natalenko

[permalink] [raw]
Subject: [PATCH] HID: logitech-hidpp: Do not flood kernel log

Since commit 680ee411a98e ("HID: logitech-hidpp: Fix connect event race")
the following messages appear in the kernel log from time to time:

logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
logitech-hidpp-device 0003:046D:4051.0006: Disconnected
logitech-hidpp-device 0003:046D:408A.0005: Disconnected

As discussed, print the first per-device "device connected" message
at info level, demoting subsequent messages to debug level. Also,
demote the "Disconnected message" to debug level unconditionally.

Link: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by: Oleksandr Natalenko <[email protected]>
---
drivers/hid/hid-logitech-hidpp.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index 6ef0c88e3e60a..d2f3f234f29de 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -203,6 +203,8 @@ struct hidpp_device {
struct hidpp_scroll_counter vertical_wheel_counter;

u8 wireless_feature_index;
+
+ bool connected_once;
};

/* HID++ 1.0 error codes */
@@ -988,8 +990,13 @@ static int hidpp_root_get_protocol_version(struct hidpp_device *hidpp)
hidpp->protocol_minor = response.rap.params[1];

print_version:
- hid_info(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
- hidpp->protocol_major, hidpp->protocol_minor);
+ if (!hidpp->connected_once) {
+ hid_info(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
+ hidpp->protocol_major, hidpp->protocol_minor);
+ hidpp->connected_once = true;
+ } else
+ hid_dbg(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
+ hidpp->protocol_major, hidpp->protocol_minor);
return 0;
}

@@ -4184,7 +4191,7 @@ static void hidpp_connect_event(struct work_struct *work)
/* Get device version to check if it is connected */
ret = hidpp_root_get_protocol_version(hidpp);
if (ret) {
- hid_info(hidpp->hid_dev, "Disconnected\n");
+ hid_dbg(hidpp->hid_dev, "Disconnected\n");
if (hidpp->battery.ps) {
hidpp->battery.online = false;
hidpp->battery.status = POWER_SUPPLY_STATUS_UNKNOWN;
--
2.43.0



2024-01-29 16:54:52

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] HID: logitech-hidpp: Do not flood kernel log

Hi,

On 1/29/24 17:49, Oleksandr Natalenko wrote:
> Since commit 680ee411a98e ("HID: logitech-hidpp: Fix connect event race")
> the following messages appear in the kernel log from time to time:
>
> logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
> logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
> logitech-hidpp-device 0003:046D:4051.0006: Disconnected
> logitech-hidpp-device 0003:046D:408A.0005: Disconnected
>
> As discussed, print the first per-device "device connected" message
> at info level, demoting subsequent messages to debug level. Also,
> demote the "Disconnected message" to debug level unconditionally.
>
> Link: https://lore.kernel.org/lkml/[email protected]/
> Signed-off-by: Oleksandr Natalenko <[email protected]>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <[email protected]>

Regards,

Hans



> ---
> drivers/hid/hid-logitech-hidpp.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
> index 6ef0c88e3e60a..d2f3f234f29de 100644
> --- a/drivers/hid/hid-logitech-hidpp.c
> +++ b/drivers/hid/hid-logitech-hidpp.c
> @@ -203,6 +203,8 @@ struct hidpp_device {
> struct hidpp_scroll_counter vertical_wheel_counter;
>
> u8 wireless_feature_index;
> +
> + bool connected_once;
> };
>
> /* HID++ 1.0 error codes */
> @@ -988,8 +990,13 @@ static int hidpp_root_get_protocol_version(struct hidpp_device *hidpp)
> hidpp->protocol_minor = response.rap.params[1];
>
> print_version:
> - hid_info(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
> - hidpp->protocol_major, hidpp->protocol_minor);
> + if (!hidpp->connected_once) {
> + hid_info(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
> + hidpp->protocol_major, hidpp->protocol_minor);
> + hidpp->connected_once = true;
> + } else
> + hid_dbg(hidpp->hid_dev, "HID++ %u.%u device connected.\n",
> + hidpp->protocol_major, hidpp->protocol_minor);
> return 0;
> }
>
> @@ -4184,7 +4191,7 @@ static void hidpp_connect_event(struct work_struct *work)
> /* Get device version to check if it is connected */
> ret = hidpp_root_get_protocol_version(hidpp);
> if (ret) {
> - hid_info(hidpp->hid_dev, "Disconnected\n");
> + hid_dbg(hidpp->hid_dev, "Disconnected\n");
> if (hidpp->battery.ps) {
> hidpp->battery.online = false;
> hidpp->battery.status = POWER_SUPPLY_STATUS_UNKNOWN;


2024-02-06 15:17:04

by Jiri Kosina

[permalink] [raw]
Subject: Re: [PATCH] HID: logitech-hidpp: Do not flood kernel log

On Mon, 29 Jan 2024, Hans de Goede wrote:

> > Since commit 680ee411a98e ("HID: logitech-hidpp: Fix connect event race")
> > the following messages appear in the kernel log from time to time:
> >
> > logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
> > logitech-hidpp-device 0003:046D:408A.0005: HID++ 4.5 device connected.
> > logitech-hidpp-device 0003:046D:4051.0006: Disconnected
> > logitech-hidpp-device 0003:046D:408A.0005: Disconnected
> >
> > As discussed, print the first per-device "device connected" message
> > at info level, demoting subsequent messages to debug level. Also,
> > demote the "Disconnected message" to debug level unconditionally.
> >
> > Link: https://lore.kernel.org/lkml/[email protected]/
> > Signed-off-by: Oleksandr Natalenko <[email protected]>
>
> Thanks, patch looks good to me:
>
> Reviewed-by: Hans de Goede <[email protected]>

Applied to hid.git#for-6.8/upstream-fixes. Thanks,

--
Jiri Kosina
SUSE Labs