| From 1269736fafb51379faf1323ea43d3ce1da039aae Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 29 Jan 2024 17:49:31 +0100 |
| Subject: HID: logitech-hidpp: Do not flood kernel log |
| |
| From: Oleksandr Natalenko <oleksandr@natalenko.name> |
| |
| [ Upstream commit 411a20db905b44e18cc9129b745f1d5deba4eae5 ] |
| |
| 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/3277085.44csPzL39Z@natalenko.name/ |
| Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name> |
| Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Jiri Kosina <jkosina@suse.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 |
| |