Re: [PATCH v3] usbcore: check usb device's state before sending a Set SEL control transfer

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

 



Hi Xenia,
  thank you. I tested this patch on 3.11 kernel and the messages don't appear anymore
upon LPM-capable device disconnect (tested with ASMedia AS2105 devices).
Not much to show here, there is just no error/warning related to LPM
while handling these devices.

Probably better test is with Prolific-based device for which I get during connect:
[  999.906164] usb 4-2.1: new SuperSpeed USB device number 20 using xhci_hcd
[  999.928475] usb 4-2.1: New USB device found, idVendor=067b, idProduct=2773
[  999.928488] usb 4-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  999.928495] usb 4-2.1: Product: USB-SATA Bridge
[  999.928501] usb 4-2.1: Manufacturer: Prolific Technology Inc.
[  999.928506] usb 4-2.1: SerialNumber: PROLIFICMP000000007
[  999.929633] usb 4-2.1: Set SEL for device-initiated U1 failed.
[  999.930008] usb 4-2.1: Set SEL for device-initiated U2 failed.
[  999.930114] usb-storage 4-2.1:1.0: USB Mass Storage device detected
[  999.930178] scsi22 : usb-storage 4-2.1:1.0
[  999.930804] usb 4-2.1: Set SEL for device-initiated U1 failed.
[  999.931681] usb 4-2.1: Set SEL for device-initiated U2 failed.

and during disconnect kernel is also quiet and doesn't complain anymore about the
LPM of already disconnected device:
[ 1582.039612] usb 4-2.1: USB disconnect, device number 20

  I think your patch works correctly and has shutdown the bogus/annoying message. ;-)
Thank you.
Martin


Xenia Ragiadakou wrote:
> Set SEL control urbs cannot be sent to a device in unconfigured state.
> This patch adds a check in usb_req_set_sel() to ensure the usb device's
> state is USB_STATE_CONFIGURED.
> 
> Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
> Reported-by: Martin MOKREJS <mmokrejs@xxxxxxxxx>
> Suggested-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx>
> ---
> 
> Differences from v2:
> 
> -push the check on device's state down to usb_req_set_sel()
> -check only that the device is in configured state
> -update commit title and changelog
> 
>  drivers/usb/core/hub.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index fe8d95d..cc468f8 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -3424,6 +3424,9 @@ static int usb_req_set_sel(struct usb_device *udev, enum usb3_link_state state)
>  	unsigned long long u2_pel;
>  	int ret;
>  
> +	if (udev->state != USB_STATE_CONFIGURED)
> +		return 0;
> +
>  	/* Convert SEL and PEL stored in ns to us */
>  	u1_sel = DIV_ROUND_UP(udev->u1_params.sel, 1000);
>  	u1_pel = DIV_ROUND_UP(udev->u1_params.pel, 1000);
--
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