From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bk6Zh-0000eb-5f for qemu-devel@nongnu.org; Wed, 14 Sep 2016 05:33:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bk6Zb-0001tv-74 for qemu-devel@nongnu.org; Wed, 14 Sep 2016 05:33:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bk6Zb-0001tR-1C for qemu-devel@nongnu.org; Wed, 14 Sep 2016 05:33:43 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8D7B2C0799A3 for ; Wed, 14 Sep 2016 09:33:41 +0000 (UTC) From: Gerd Hoffmann Date: Wed, 14 Sep 2016 11:33:32 +0200 Message-Id: <1473845615-16982-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1473845615-16982-1-git-send-email-kraxel@redhat.com> References: <1473845615-16982-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PULL 2/5] usb-host: fix streams detection in usb_host_speed_compat List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann The companion descriptor is present on all usb3 devices, not only those with streams support. We need to check attributes to see whenever the device uses streams or not. Signed-off-by: Gerd Hoffmann Message-id: 1473406890-30164-1-git-send-email-kraxel@redhat.com --- hw/usb/host-libusb.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index e94672c..bd81d71 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -743,10 +743,13 @@ static void usb_host_speed_compat(USBHostDevice *s) rc = libusb_get_ss_endpoint_companion_descriptor (ctx, endp, &endp_ss_comp); if (rc == LIBUSB_SUCCESS) { + int streams = endp_ss_comp->bmAttributes & 0x1f; + if (streams) { + compat_full = false; + compat_high = false; + } libusb_free_ss_endpoint_companion_descriptor (endp_ss_comp); - compat_full = false; - compat_high = false; } #endif break; -- 1.8.3.1