Re: [PATCH] hw/usb: record async control completion for parameter transfers

Marc-André Lureau <[email protected]> Tue, 30 Jun 2026 18:14:39 +0400
Newsgroups org.nongnu.qemu-trivial,org.nongnu.qemu-devel
Message-ID <CAJ+F1CLq=FJhE+tBgySzVCfjDkEExWv14Pe_ib4FKY22Gm=4dQ@mail.gmail.com>
On Fri, Jun 26, 2026 at 4:05 PM Ziyi Fu <[email protected]> wrote:
>
> From: Ziyi Fu <[email protected]>
>
> Record the completion side of parameter-based control transfers when they
> complete asynchronously. This lets pcap captures include descriptor
> response data for requests such as GET_DESCRIPTOR from usb-host devices.
>
> The synchronous path already recorded the completion, but the async
> SETUP_STATE_PARAM path was missing it.
>
> Signed-off-by: Ziyi Fu <[email protected]>

Reviewed-by: Marc-André Lureau <[email protected]>

> ---
> Tested with a usb-host HID keyboard on qemu-xhci. Before this change, the
> generated pcap contained GET_DESCRIPTOR submissions but not the corresponding
> completion payloads. After this change, the pcap contains the descriptor
> payloads and Wireshark can associate endpoint 0x81 with the HID interface.
>
>  hw/usb/core.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/hw/usb/core.c b/hw/usb/core.c
> index 9572a870cc..d71204c5c8 100644
> --- a/hw/usb/core.c
> +++ b/hw/usb/core.c
> @@ -345,6 +345,7 @@ void usb_generic_async_ctrl_complete(USBDevice *s, USBPacket *p)
>              p->actual_length = 0;
>              usb_packet_copy(p, s->data_buf, s->setup_len);
>          }
> +        usb_pcap_ctrl(p, false);
>          break;
>
>      default:
> --
> 2.51.2
>


-- 
Marc-André Lureau