From: Zhengping Jiang <jiangzp@google.com>
To: Jiri Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Stephen Boyd <swboyd@chromium.org>,
Archie Pusaka <apusaka@google.com>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
Zhengping Jiang <jiangzp@google.com>
Subject: [PATCH] HID: vivaldi: avoid redundant feature report reads per usage
Date: Mon, 12 Oct 2026 21:29:02 +0000 [thread overview]
Message-ID: <20261012212902.3491839-1-jiangzp@google.com> (raw)
vivaldi_feature_mapping() is invoked by hidinput_configure_usages() in
ascending usage_index order for each usage in the top-row physical keymap
field. Because fetching the feature report at usage_index == 0 already
reads the entire report from hardware and populates field->value[] for all
usages in the field, calling hid_hw_raw_request() again for subsequent
usages redundantly reads the same report N times (e.g., 12 sequential BLE
GATT reads taking ~2s on Vivaldi BLE keyboards).
Only fetch the feature report from hardware on the first usage
(usage->usage_index == 0) and reuse field->value[usage->usage_index] for
subsequent usages in the field.
Fixes: 33bbe04a15f2 ("HID: google: extract Vivaldi hid feature mapping for use in hid-hammer")
Signed-off-by: Zhengping Jiang <jiangzp@google.com>
---
drivers/hid/hid-vivaldi-common.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/hid/hid-vivaldi-common.c b/drivers/hid/hid-vivaldi-common.c
index c3c9fe9e697b..cfee7be4d759 100644
--- a/drivers/hid/hid-vivaldi-common.c
+++ b/drivers/hid/hid-vivaldi-common.c
@@ -49,6 +49,12 @@ void vivaldi_feature_mapping(struct hid_device *hdev,
if (fn_key > data->num_function_row_keys)
data->num_function_row_keys = fn_key;
+ if (usage->usage_index) {
+ data->function_row_physmap[fn_key - MIN_FN_ROW_KEY] =
+ field->value[usage->usage_index];
+ return;
+ }
+
report_data = buf = hid_alloc_report_buf(report, GFP_KERNEL);
if (!report_data)
return;
--
2.56.0.385.gd3acb90ef8-goog
next reply other threads:[~2026-10-12 21:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 21:29 Zhengping Jiang [this message]
2026-10-12 21:37 ` [PATCH] HID: vivaldi: avoid redundant feature report reads per usage sashiko-bot
2026-10-12 22:02 ` [PATCH v2] " Zhengping Jiang
2026-10-13 19:23 ` [PATCH v3] " Zhengping Jiang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261012212902.3491839-1-jiangzp@google.com \
--to=jiangzp@google.com \
--cc=apusaka@google.com \
--cc=bentiss@kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.