]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.git/commitdiff
Revert "usb-hub: report status changes only once"
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 27 Aug 2013 15:00:04 +0000 (17:00 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 2 Sep 2013 09:06:20 +0000 (11:06 +0200)
This reverts commit a309ee6e0a256f690760abfba44fceaa52a7c2f3.

This isn't in line with the usb specification and adds regressions,
win7 fails to drive the usb hub for example.

Was added because it "solved" the issue of hubs interacting badly
with the xhci host controller.  Now with the root cause being fixed
in xhci (commit <FIXME>) we can revert this one.

Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/dev-hub.c

index 54f63c0d47b8e780d148586bb4763ba5bb748b8a..58647b4859599d435876dd223018f4ab7923b1e3 100644 (file)
@@ -33,7 +33,6 @@ typedef struct USBHubPort {
     USBPort port;
     uint16_t wPortStatus;
     uint16_t wPortChange;
-    uint16_t wPortChange_reported;
 } USBHubPort;
 
 typedef struct USBHubState {
@@ -468,11 +467,8 @@ static void usb_hub_handle_data(USBDevice *dev, USBPacket *p)
             status = 0;
             for(i = 0; i < NUM_PORTS; i++) {
                 port = &s->ports[i];
-                if (port->wPortChange &&
-                    port->wPortChange_reported != port->wPortChange) {
+                if (port->wPortChange)
                     status |= (1 << (i + 1));
-                }
-                port->wPortChange_reported = port->wPortChange;
             }
             if (status != 0) {
                 trace_usb_hub_status_report(s->dev.addr, status);