* [PATCH] usb: gadget: composite: fix OS descriptors w_value logic
[not found] <AS8PR05MB84857AB3DC49395AEC7C235990932@AS8PR05MB8485.eurprd05.prod.outlook.com>
@ 2024-09-03 11:14 ` Vrastil, Michal
2024-09-03 11:23 ` Greg KH
2024-09-04 15:01 ` [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value Vrastil, Michal
1 sibling, 1 reply; 9+ messages in thread
From: Vrastil, Michal @ 2024-09-03 11:14 UTC (permalink / raw)
To: linux-usb@vger.kernel.org
From 118f8c8b72d633c0daa65e564e48cbf4964977ab Mon Sep 17 00:00:00 2001
From: Michal Vrastil <michal.vrastil@hidglobal.com>
Date: Tue, 3 Sep 2024 10:55:15 +0200
Subject: [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
logic"
This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
Fix install of WinUSB dsriver using OS descriptors. Without the fix the drivers are not installed correctly
and the property 'DeviceInterfaceGUID' is missing on host side.
The original change was based on assumption that the interface number is in the high byte of wValue but it is in the low byte, instead.
Unfortunately, the fix is based on MS documentation which is also wrong.
The actual USB request for OS descriptors (using USB analyzer) looks like:
Offset 0 1 2 3 4 5 6 7
0x000 C1 A1 02 00 05 00 0A 00
C1: bmRequestType (device to host, vendor, interface)
A1: nas magic number
0002: wValue (2: nas interface)
0005: wIndex (5: get extended property i.e. nas interface GUID)
008E: wLength (142)
The fix was tested on Windows 10 and Windows 11.
Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
---
drivers/usb/gadget/composite.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 17ae3b394469..a3106b179562 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -1925,7 +1925,7 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
buf[5] = 0x01;
switch (ctrl->bRequestType & USB_RECIP_MASK) {
case USB_RECIP_DEVICE:
- if (w_index != 0x4 || (w_value & 0xff))
+ if (w_index != 0x4 || (w_value >> 8))
break;
buf[6] = w_index;
/* Number of ext compat interfaces */
@@ -1941,9 +1941,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
}
break;
case USB_RECIP_INTERFACE:
- if (w_index != 0x5 || (w_value & 0xff))
+ if (w_index != 0x5 || (w_value >> 8))
break;
- interface = w_value >> 8;
+ interface = w_value & 0xFF;
if (interface >= MAX_CONFIG_INTERFACES ||
!os_desc_cfg->interface[interface])
break;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH] usb: gadget: composite: fix OS descriptors w_value logic
2024-09-03 11:14 ` [PATCH] usb: gadget: composite: fix OS descriptors w_value logic Vrastil, Michal
@ 2024-09-03 11:23 ` Greg KH
0 siblings, 0 replies; 9+ messages in thread
From: Greg KH @ 2024-09-03 11:23 UTC (permalink / raw)
To: Vrastil, Michal; +Cc: linux-usb@vger.kernel.org
On Tue, Sep 03, 2024 at 11:14:39AM +0000, Vrastil, Michal wrote:
> >From 118f8c8b72d633c0daa65e564e48cbf4964977ab Mon Sep 17 00:00:00 2001
> From: Michal Vrastil <michal.vrastil@hidglobal.com>
> Date: Tue, 3 Sep 2024 10:55:15 +0200
> Subject: [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
> logic"
This looks odd, did you mean to put the whole commit in the mail?
Also, all tabs are gone, meaning you probably did a cut/paste thing,
please read the kernel documentation for how to use 'git send-email' to
make this simpler?
>
> This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
>
> Fix install of WinUSB dsriver using OS descriptors. Without the fix the drivers are not installed correctly
> and the property 'DeviceInterfaceGUID' is missing on host side.
>
> The original change was based on assumption that the interface number is in the high byte of wValue but it is in the low byte, instead.
> Unfortunately, the fix is based on MS documentation which is also wrong.
Please wrap your changelog text at 72 columns like your editor tried to
get you to do :)
>
> The actual USB request for OS descriptors (using USB analyzer) looks like:
>
> Offset 0 1 2 3 4 5 6 7
> 0x000 C1 A1 02 00 05 00 0A 00
>
> C1: bmRequestType (device to host, vendor, interface)
> A1: nas magic number
> 0002: wValue (2: nas interface)
> 0005: wIndex (5: get extended property i.e. nas interface GUID)
> 008E: wLength (142)
>
> The fix was tested on Windows 10 and Windows 11.
>
> Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
What commit id does this fix?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
[not found] <AS8PR05MB84857AB3DC49395AEC7C235990932@AS8PR05MB8485.eurprd05.prod.outlook.com>
2024-09-03 11:14 ` [PATCH] usb: gadget: composite: fix OS descriptors w_value logic Vrastil, Michal
@ 2024-09-04 15:01 ` Vrastil, Michal
2024-09-04 17:18 ` Greg KH
` (2 more replies)
1 sibling, 3 replies; 9+ messages in thread
From: Vrastil, Michal @ 2024-09-04 15:01 UTC (permalink / raw)
To: stable@kernel.org, balbi@kernel.org, linux-usb@vger.kernel.org
This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
Fix install of WinUSB dsriver using OS descriptors.
Without the fix the drivers is not installed correctly
and the property 'DeviceInterfaceGUID' is missing on host side.
The original change was based on assumption that the interface number
is in the high byte of wValue but it is in the low byte, instead.
Unfortunately, the fix is based on MS documentation which is also wrong.
The actual USB request for OS descriptors (using USB analyzer) looks
like:
Offset 0 1 2 3 4 5 6 7
0x000 C1 A1 02 00 05 00 0A 00
C1: bmRequestType (device to host, vendor, interface)
A1: nas magic number
0002: wValue (2: nas interface)
0005: wIndex (5: get extended property i.e. nas interface GUID)
008E: wLength (142)
The fix was tested on Windows 10 and Windows 11.
Fixes: ec6ce70 ("usb: gadget: composite: fix OS descriptors w_value logic")
Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
---
drivers/usb/gadget/composite.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 17ae3b394469..a3106b179562 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -1925,7 +1925,7 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
buf[5] = 0x01;
switch (ctrl->bRequestType & USB_RECIP_MASK) {
case USB_RECIP_DEVICE:
- if (w_index != 0x4 || (w_value & 0xff))
+ if (w_index != 0x4 || (w_value >> 8))
break;
buf[6] = w_index;
/* Number of ext compat interfaces */
@@ -1941,9 +1941,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
}
break;
case USB_RECIP_INTERFACE:
- if (w_index != 0x5 || (w_value & 0xff))
+ if (w_index != 0x5 || (w_value >> 8))
break;
- interface = w_value >> 8;
+ interface = w_value & 0xFF;
if (interface >= MAX_CONFIG_INTERFACES ||
!os_desc_cfg->interface[interface])
break;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
2024-09-04 15:01 ` [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value Vrastil, Michal
@ 2024-09-04 17:18 ` Greg KH
2024-09-04 17:31 ` Sergei Shtylyov
2024-09-04 18:19 ` Peter Korsgaard
2 siblings, 0 replies; 9+ messages in thread
From: Greg KH @ 2024-09-04 17:18 UTC (permalink / raw)
To: Vrastil, Michal
Cc: stable@kernel.org, balbi@kernel.org, linux-usb@vger.kernel.org
On Wed, Sep 04, 2024 at 03:01:39PM +0000, Vrastil, Michal wrote:
> This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
>
> Fix install of WinUSB dsriver using OS descriptors.
> Without the fix the drivers is not installed correctly
> and the property 'DeviceInterfaceGUID' is missing on host side.
>
> The original change was based on assumption that the interface number
> is in the high byte of wValue but it is in the low byte, instead.
> Unfortunately, the fix is based on MS documentation which is also wrong.
>
> The actual USB request for OS descriptors (using USB analyzer) looks
> like:
>
> Offset 0 1 2 3 4 5 6 7
> 0x000 C1 A1 02 00 05 00 0A 00
>
> C1: bmRequestType (device to host, vendor, interface)
> A1: nas magic number
> 0002: wValue (2: nas interface)
> 0005: wIndex (5: get extended property i.e. nas interface GUID)
> 008E: wLength (142)
>
> The fix was tested on Windows 10 and Windows 11.
>
> Fixes: ec6ce70 ("usb: gadget: composite: fix OS descriptors w_value logic")
> Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
> ---
> drivers/usb/gadget/composite.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- You have marked a patch with a "Fixes:" tag for a commit that is in an
older released kernel, yet you do not have a cc: stable line in the
signed-off-by area at all, which means that the patch will not be
applied to any older kernel releases. To properly fix this, please
follow the documented rules in the
Documentation/process/stable-kernel-rules.rst file for how to resolve
this.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
2024-09-04 15:01 ` [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value Vrastil, Michal
2024-09-04 17:18 ` Greg KH
@ 2024-09-04 17:31 ` Sergei Shtylyov
2024-09-04 18:19 ` Peter Korsgaard
2 siblings, 0 replies; 9+ messages in thread
From: Sergei Shtylyov @ 2024-09-04 17:31 UTC (permalink / raw)
To: Vrastil, Michal, stable@kernel.org, balbi@kernel.org,
linux-usb@vger.kernel.org
On 9/4/24 6:01 PM, Vrastil, Michal wrote:
> This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
>
> Fix install of WinUSB dsriver using OS descriptors.
Installation. And driver. :-)
> Without the fix the drivers is not installed correctly
> and the property 'DeviceInterfaceGUID' is missing on host side.
>
> The original change was based on assumption that the interface number
> is in the high byte of wValue but it is in the low byte, instead.
> Unfortunately, the fix is based on MS documentation which is also wrong.
>
> The actual USB request for OS descriptors (using USB analyzer) looks
> like:
>
> Offset 0 1 2 3 4 5 6 7
> 0x000 C1 A1 02 00 05 00 0A 00
>
> C1: bmRequestType (device to host, vendor, interface)
> A1: nas magic number
> 0002: wValue (2: nas interface)
> 0005: wIndex (5: get extended property i.e. nas interface GUID)
> 008E: wLength (142)
>
> The fix was tested on Windows 10 and Windows 11.
>
> Fixes: ec6ce70 ("usb: gadget: composite: fix OS descriptors w_value logic")
12 hex digits should be specified here...
> Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
[...]
MBR, Sergey
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value
2024-09-04 15:01 ` [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value Vrastil, Michal
2024-09-04 17:18 ` Greg KH
2024-09-04 17:31 ` Sergei Shtylyov
@ 2024-09-04 18:19 ` Peter Korsgaard
2 siblings, 0 replies; 9+ messages in thread
From: Peter Korsgaard @ 2024-09-04 18:19 UTC (permalink / raw)
To: Vrastil, Michal
Cc: stable@kernel.org, balbi@kernel.org, linux-usb@vger.kernel.org
>>>>> "Vrastil," == Vrastil, Michal <michal.vrastil@hidglobal.com> writes:
> This reverts commit ec6ce7075ef879b91a8710829016005dc8170f17.
> Fix install of WinUSB dsriver using OS descriptors.
> Without the fix the drivers is not installed correctly
> and the property 'DeviceInterfaceGUID' is missing on host side.
> The original change was based on assumption that the interface number
> is in the high byte of wValue but it is in the low byte, instead.
> Unfortunately, the fix is based on MS documentation which is also wrong.
> The actual USB request for OS descriptors (using USB analyzer) looks
> like:
> Offset 0 1 2 3 4 5 6 7
> 0x000 C1 A1 02 00 05 00 0A 00
> C1: bmRequestType (device to host, vendor, interface)
> A1: nas magic number
> 0002: wValue (2: nas interface)
> 0005: wIndex (5: get extended property i.e. nas interface GUID)
> 008E: wLength (142)
> The fix was tested on Windows 10 and Windows 11.
Hmm, very odd. How are you testing this on the host side? Could it be
that you are running into the WinUSB bug described here:
https://github.com/pbatard/libwdi/wiki/WCID-Devices#defining-a-device-interface-guid-or-other-device-specific-properties
IMPORTANT NOTE 1: There is a bug/limitation in WinUSB that will force
the wIndex of any Interface Request to the interface num ber. This means
that, if you are using WinUSB to verify the content of your Extended
Properties Feature Descriptor, you won't be able to retrieve it (unless
it is only defined for interface #5). If you use WinUSB on Windows to
validate your descriptors, our advice then is to have your device
firmware answer both Device and Interface requests when the Extended
Properties Feature Descriptor is queried, so that you can use a Device
Request rather than an Interface Request to validate that your
descriptor is set properly.
For reference, the latest xusb sample application from libusb has a -w
switch that will force the wIndex = 0x0005 to use the Device mode.
> Fixes: ec6ce70 ("usb: gadget: composite: fix OS descriptors w_value logic")
> Signed-off-by: Michal Vrastil <michal.vrastil@hidglobal.com>
> ---
> drivers/usb/gadget/composite.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
> index 17ae3b394469..a3106b179562 100644
> --- a/drivers/usb/gadget/composite.c
> +++ b/drivers/usb/gadget/composite.c
> @@ -1925,7 +1925,7 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
> buf[5] = 0x01;
> switch (ctrl->bRequestType & USB_RECIP_MASK) {
> case USB_RECIP_DEVICE:
> - if (w_index != 0x4 || (w_value & 0xff))
> + if (w_index != 0x4 || (w_value >> 8))
> break;
> buf[6] = w_index;
> /* Number of ext compat interfaces */
> @@ -1941,9 +1941,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
> }
> break;
> case USB_RECIP_INTERFACE:
> - if (w_index != 0x5 || (w_value & 0xff))
> + if (w_index != 0x5 || (w_value >> 8))
> break;
> - interface = w_value >> 8;
> + interface = w_value & 0xFF;
> if (interface >= MAX_CONFIG_INTERFACES ||
> !os_desc_cfg->interface[interface])
> break;
> --
> 2.43.0
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] usb: gadget: composite: fix OS descriptors w_value logic
@ 2024-04-04 10:06 Peter Korsgaard
2024-04-22 19:09 ` Andrzej Pietrasiewicz
0 siblings, 1 reply; 9+ messages in thread
From: Peter Korsgaard @ 2024-04-04 10:06 UTC (permalink / raw)
To: linux-usb, Greg Kroah-Hartman, Andrzej Pietrasiewicz; +Cc: Peter Korsgaard
The OS descriptors logic had the high/low byte of w_value inverted, causing
the extended properties to not be accessible for interface != 0.
From the Microsoft documentation:
https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-os-1-0-descriptors-specification
OS_Desc_CompatID.doc (w_index = 0x4):
- wValue:
High Byte = InterfaceNumber. InterfaceNumber is set to the number of the
interface or function that is associated with the descriptor, typically
0x00. Because a device can have only one extended compat ID descriptor,
it should ignore InterfaceNumber, regardless of the value, and simply
return the descriptor.
Low Byte = 0. PageNumber is used to retrieve descriptors that are larger
than 64 KB. The header section is 16 bytes, so PageNumber is set to 0 for
this request.
We currently do not support >64KB compat ID descriptors, so verify that the
low byte is 0.
OS_Desc_Ext_Prop.doc (w_index = 0x5):
- wValue:
High byte = InterfaceNumber. The high byte of wValue is set to the number
of the interface or function that is associated with the descriptor.
Low byte = PageNumber. The low byte of wValue is used to retrieve
descriptors that are larger than 64 KB. The header section is 10 bytes, so
PageNumber is set to 0 for this request.
We also don't support >64KB extended properties, so verify that the low byte
is 0 and use the high byte for the interface number.
Fixes: 37a3a533429e ("usb: gadget: OS Feature Descriptors support")
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
drivers/usb/gadget/composite.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 0ace45b66a31..0e151b54aae8 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -2112,7 +2112,7 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
buf[5] = 0x01;
switch (ctrl->bRequestType & USB_RECIP_MASK) {
case USB_RECIP_DEVICE:
- if (w_index != 0x4 || (w_value >> 8))
+ if (w_index != 0x4 || (w_value & 0xff))
break;
buf[6] = w_index;
/* Number of ext compat interfaces */
@@ -2128,9 +2128,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
}
break;
case USB_RECIP_INTERFACE:
- if (w_index != 0x5 || (w_value >> 8))
+ if (w_index != 0x5 || (w_value & 0xff))
break;
- interface = w_value & 0xFF;
+ interface = w_value >> 8;
if (interface >= MAX_CONFIG_INTERFACES ||
!os_desc_cfg->interface[interface])
break;
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH] usb: gadget: composite: fix OS descriptors w_value logic
2024-04-04 10:06 [PATCH] usb: gadget: composite: fix OS descriptors w_value logic Peter Korsgaard
@ 2024-04-22 19:09 ` Andrzej Pietrasiewicz
2024-04-23 6:50 ` Peter Korsgaard
0 siblings, 1 reply; 9+ messages in thread
From: Andrzej Pietrasiewicz @ 2024-04-22 19:09 UTC (permalink / raw)
To: Peter Korsgaard, linux-usb, Greg Kroah-Hartman
Hi Peter,
W dniu 4.04.2024 o 12:06, Peter Korsgaard pisze:
> The OS descriptors logic had the high/low byte of w_value inverted, causing
> the extended properties to not be accessible for interface != 0.
Out of curiosity - did you run into problems running some USB gadget,
and if yes, what was it? Or is this patch a result of a code and documentation
review without actually running a gadget?
>
> From the Microsoft documentation:
> https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-os-1-0-descriptors-specification
>
> OS_Desc_CompatID.doc (w_index = 0x4):
>
> - wValue:
>
> High Byte = InterfaceNumber. InterfaceNumber is set to the number of the
> interface or function that is associated with the descriptor, typically
> 0x00. Because a device can have only one extended compat ID descriptor,
> it should ignore InterfaceNumber, regardless of the value, and simply
> return the descriptor.
>
> Low Byte = 0. PageNumber is used to retrieve descriptors that are larger
> than 64 KB. The header section is 16 bytes, so PageNumber is set to 0 for
> this request.
>
> We currently do not support >64KB compat ID descriptors, so verify that the
> low byte is 0.
>
> OS_Desc_Ext_Prop.doc (w_index = 0x5):
>
> - wValue:
>
> High byte = InterfaceNumber. The high byte of wValue is set to the number
> of the interface or function that is associated with the descriptor.
>
> Low byte = PageNumber. The low byte of wValue is used to retrieve
> descriptors that are larger than 64 KB. The header section is 10 bytes, so
> PageNumber is set to 0 for this request.
>
FWIW w_value is:
u16 w_value = le16_to_cpu(ctrl->wValue);
Regards,
Andrzej
> We also don't support >64KB extended properties, so verify that the low byte
> is 0 and use the high byte for the interface number.
>
> Fixes: 37a3a533429e ("usb: gadget: OS Feature Descriptors support")
>
> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
> ---
> drivers/usb/gadget/composite.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
> index 0ace45b66a31..0e151b54aae8 100644
> --- a/drivers/usb/gadget/composite.c
> +++ b/drivers/usb/gadget/composite.c
> @@ -2112,7 +2112,7 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
> buf[5] = 0x01;
> switch (ctrl->bRequestType & USB_RECIP_MASK) {
> case USB_RECIP_DEVICE:
> - if (w_index != 0x4 || (w_value >> 8))
> + if (w_index != 0x4 || (w_value & 0xff))
> break;
> buf[6] = w_index;
> /* Number of ext compat interfaces */
> @@ -2128,9 +2128,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
> }
> break;
> case USB_RECIP_INTERFACE:
> - if (w_index != 0x5 || (w_value >> 8))
> + if (w_index != 0x5 || (w_value & 0xff))
> break;
> - interface = w_value & 0xFF;
> + interface = w_value >> 8;
> if (interface >= MAX_CONFIG_INTERFACES ||
> !os_desc_cfg->interface[interface])
> break;
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] usb: gadget: composite: fix OS descriptors w_value logic
2024-04-22 19:09 ` Andrzej Pietrasiewicz
@ 2024-04-23 6:50 ` Peter Korsgaard
0 siblings, 0 replies; 9+ messages in thread
From: Peter Korsgaard @ 2024-04-23 6:50 UTC (permalink / raw)
To: Andrzej Pietrasiewicz; +Cc: linux-usb, Greg Kroah-Hartman
>>>>> "Andrzej" == Andrzej Pietrasiewicz <andrzej.p@collabora.com> writes:
> Hi Peter,
> W dniu 4.04.2024 o 12:06, Peter Korsgaard pisze:
>> The OS descriptors logic had the high/low byte of w_value inverted, causing
>> the extended properties to not be accessible for interface != 0.
> Out of curiosity - did you run into problems running some USB gadget,
> and if yes, what was it? Or is this patch a result of a code and documentation
> review without actually running a gadget?
I had issues with getting Windows to accept the OS descriptors when the
function I wanted to use with WinUSB was not the first (= interface 0)
function in a composite device together with HID and mass storage.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-09-04 18:19 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <AS8PR05MB84857AB3DC49395AEC7C235990932@AS8PR05MB8485.eurprd05.prod.outlook.com>
2024-09-03 11:14 ` [PATCH] usb: gadget: composite: fix OS descriptors w_value logic Vrastil, Michal
2024-09-03 11:23 ` Greg KH
2024-09-04 15:01 ` [PATCH] Revert "usb: gadget: composite: fix OS descriptors w_value Vrastil, Michal
2024-09-04 17:18 ` Greg KH
2024-09-04 17:31 ` Sergei Shtylyov
2024-09-04 18:19 ` Peter Korsgaard
2024-04-04 10:06 [PATCH] usb: gadget: composite: fix OS descriptors w_value logic Peter Korsgaard
2024-04-22 19:09 ` Andrzej Pietrasiewicz
2024-04-23 6:50 ` Peter Korsgaard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).