Thread (45 messages) flat view 45 messages, 8 authors, 2012-08-29

Re: [PATCH 02/19] Input: Improve the events-per-packet estimate

From: Ping Cheng <hidden>
Date: 2012-08-14 19:32:24
Also in: lkml

On Sun, Aug 12, 2012 at 2:42 PM, Henrik Rydberg [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Many MT devices send a number of keys along with the mt information.
This patch makes sure that there is room for them in the packet
buffer.

Signed-off-by: Henrik Rydberg <redacted>
---
 drivers/input/input.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 6e90705..8ebf116 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -1777,6 +1777,9 @@ static unsigned int input_estimate_events_per_packet(struct input_dev *dev)
                if (test_bit(i, dev->relbit))
                        events++;

+       /* Make room for KEY and MSC events */
+       events += 7;
Hi Henrik,

It is nice to get rid of the redundant pieces and to incorporate
common functions. Thank you.

I have a question about the code above though.  Why do we use 7
instead of going through the keys like:

	for (i = 0; i < KEY_MAX; i++)
		if (test_bit(i, dev->keybit))
			events++;

Ping
quoted hunk ↗ jump to hunk
+
        return events;
 }
@@ -1815,6 +1818,7 @@ int input_register_device(struct input_dev *dev)
 {
        static atomic_t input_no = ATOMIC_INIT(0);
        struct input_handler *handler;
+       unsigned int packet_size;
        const char *path;
        int error;
@@ -1827,9 +1831,9 @@ int input_register_device(struct input_dev *dev)
        /* Make sure that bitmasks not mentioned in dev->evbit are clean. */
        input_cleanse_bitmasks(dev);

-       if (!dev->hint_events_per_packet)
-               dev->hint_events_per_packet =
-                               input_estimate_events_per_packet(dev);
+       packet_size = input_estimate_events_per_packet(dev);
+       if (dev->hint_events_per_packet < packet_size)
+               dev->hint_events_per_packet = packet_size;

        /*
         * If delay and period are pre-set by the driver, then autorepeating
--
1.7.11.4

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help