OSDN Git Service

HID: logitech-hidpp: Use 'atomic_inc_return' instead of hand-writing it
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Fri, 23 Jul 2021 15:41:52 +0000 (17:41 +0200)
committerJiri Kosina <jkosina@suse.cz>
Fri, 20 Aug 2021 12:20:34 +0000 (14:20 +0200)
This function logs a warning if the workqueue gets too big.
In order to save a few cycles, use 'atomic_inc_return()' instead of an
'atomic_inc()/atomic_read()' sequence.

This axes a line of code and saves a 'atomic_read()' call.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-logitech-hidpp.c

index 61635e6..a7fa352 100644 (file)
@@ -2240,11 +2240,10 @@ static int hidpp_ff_queue_work(struct hidpp_ff_private_data *data, int effect_id
        wd->size = size;
        memcpy(wd->params, params, size);
 
-       atomic_inc(&data->workqueue_size);
+       s = atomic_inc_return(&data->workqueue_size);
        queue_work(data->wq, &wd->work);
 
        /* warn about excessive queue size */
-       s = atomic_read(&data->workqueue_size);
        if (s >= 20 && s % 20 == 0)
                hid_warn(data->hidpp->hid_dev, "Force feedback command queue contains %d commands, causing substantial delays!", s);