mirror of https://github.com/xqemu/xqemu.git
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
|
@ -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…
Reference in New Issue