Re: [PATCH] hid-core : optimize in case of hidraw

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 28 Jun 2012, Matthieu CASTET wrote:

> When using hidraw, hid buffer can be big and take lot's of
> time to process (interrupt) kernel context.
> Don't try to parse report if we are only interrested in hidraw.
> 
> Also don't prepare data for debug stuff if no debugfs file
> are opened.
> 
> Signed-off-by: Matthieu CASTET <matthieu.castet@xxxxxxxxxx>

Nice catch. Applied, thanks.

> ---
>  drivers/hid/hid-core.c    |   10 ++++++++--
>  drivers/hid/hid-picolcd.c |    2 +-
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 8e3a6b2..9f8f7c6 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1194,8 +1194,10 @@ int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
>  			goto out;
>  	}
>  
> -	for (a = 0; a < report->maxfield; a++)
> -		hid_input_field(hid, report->field[a], cdata, interrupt);
> +	if (hid->claimed != HID_CLAIMED_HIDRAW) {
> +		for (a = 0; a < report->maxfield; a++)
> +			hid_input_field(hid, report->field[a], cdata, interrupt);
> +	}
>  
>  	if (hid->claimed & HID_CLAIMED_INPUT)
>  		hidinput_report_event(hid, report);
> @@ -1243,6 +1245,10 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
>  		goto unlock;
>  	}
>  
> +	/* Avoid unnecessary overhead if debugfs is disabled */
> +	if (list_empty(&hid->debug_list))
> +		goto nomem;
> +
>  	buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE, GFP_ATOMIC);
>  
>  	if (!buf)
> diff --git a/drivers/hid/hid-picolcd.c b/drivers/hid/hid-picolcd.c
> index 45c3433..3e0a1e5 100644
> --- a/drivers/hid/hid-picolcd.c
> +++ b/drivers/hid/hid-picolcd.c
> @@ -1846,7 +1846,7 @@ static void picolcd_debug_out_report(struct picolcd_data *data,
>  #define BUFF_SZ 256
>  
>  	/* Avoid unnecessary overhead if debugfs is disabled */
> -	if (!hdev->debug_events)
> +	if (list_empty(&hdev->debug_list))
>  		return;
>  
>  	buff = kmalloc(BUFF_SZ, GFP_ATOMIC);
> -- 
> 1.7.10.4
> 

-- 
Jiri Kosina
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux