Hi,

Patch is also attached.

--HPS

 Fix remainder field for TR_SETUP completion event. Previously
 the code would incorrectly report the remainder as 8 bytes. A remainder of 0
 bytes should be reported when the SETUP packet is successfully transferred.
 Found using FreeBSD's XHCI driver.

Signed-off-by: Hans Petter Selasky <h...@selasky.org>
---
 hw/usb/hcd-xhci.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 188f954..d996d7e 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -1753,6 +1753,11 @@ static void xhci_xfer_report(XHCITransfer *xfer)
         unsigned int chunk = 0;

         switch (TRB_TYPE(*trb)) {
+        case TR_SETUP:
+            chunk = trb->status & 0x1ffff;
+            if (chunk > 8)
+                chunk = 8;
+            break;
         case TR_DATA:
         case TR_NORMAL:
         case TR_ISOCH:
--
2.8.1

>From 4771b0788a6f055a8830cb3b6f7bf922574bfe0d Mon Sep 17 00:00:00 2001
From: Hans Petter Selasky <h...@selasky.org>
Date: Tue, 23 Aug 2016 13:39:49 +0200
Subject: [PATCH] Fix remainder field for TR_SETUP completion event. Previously
 the code would incorrectly report the remainder as 8 bytes. A remainder of 0
 bytes should be reported when the SETUP packet is successfully transferred.
 Found using FreeBSD's XHCI driver.

Signed-off-by: Hans Petter Selasky <h...@selasky.org>
---
 hw/usb/hcd-xhci.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 188f954..d996d7e 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -1753,6 +1753,11 @@ static void xhci_xfer_report(XHCITransfer *xfer)
         unsigned int chunk = 0;
 
         switch (TRB_TYPE(*trb)) {
+        case TR_SETUP:
+            chunk = trb->status & 0x1ffff;
+            if (chunk > 8)
+                chunk = 8;
+            break;
         case TR_DATA:
         case TR_NORMAL:
         case TR_ISOCH:
-- 
2.8.1

Reply via email to