mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
usb: fix endpoint descriptor ordering
Fix the ordering of the endpoint descriptors for superspeed endpoints: The superspeed companion must come first, possible additional descriptors for the endpoint after that. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
6ef3ccd18f
commit
2e5df36df8
1 changed files with 5 additions and 4 deletions
|
@ -225,12 +225,9 @@ int usb_desc_endpoint(const USBDescEndpoint *ep, int flags,
|
|||
d->u.endpoint.bRefresh = ep->bRefresh;
|
||||
d->u.endpoint.bSynchAddress = ep->bSynchAddress;
|
||||
}
|
||||
if (ep->extra) {
|
||||
memcpy(dest + bLength, ep->extra, extralen);
|
||||
}
|
||||
|
||||
if (superlen) {
|
||||
USBDescriptor *d = (void *)(dest + bLength + extralen);
|
||||
USBDescriptor *d = (void *)(dest + bLength);
|
||||
|
||||
d->bLength = 0x06;
|
||||
d->bDescriptorType = USB_DT_ENDPOINT_COMPANION;
|
||||
|
@ -243,6 +240,10 @@ int usb_desc_endpoint(const USBDescEndpoint *ep, int flags,
|
|||
usb_hi(ep->wBytesPerInterval);
|
||||
}
|
||||
|
||||
if (ep->extra) {
|
||||
memcpy(dest + bLength + superlen, ep->extra, extralen);
|
||||
}
|
||||
|
||||
return bLength + extralen + superlen;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue