diff options
author | Hans de Goede <hdegoede@redhat.com> | 2012-11-17 12:47:17 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2012-12-04 14:41:54 +0100 |
commit | 8082624099bce56a3139e6b9f72016c00fd10227 (patch) | |
tree | 09b3245dee39323e0b5d8d288fe63d89535f86b1 /hw/usb/hcd-ehci.h | |
parent | 386ab487ebc25d780ddfc4a9aea0b21c4a9aaa94 (diff) | |
download | qemu-8082624099bce56a3139e6b9f72016c00fd10227.zip qemu-8082624099bce56a3139e6b9f72016c00fd10227.tar.gz qemu-8082624099bce56a3139e6b9f72016c00fd10227.tar.bz2 |
ehci: Lower timer freq when the periodic schedule is idle
Lower the timer freq if no iso schedule packets complete for 64 frames in
a row.
We can safely do this, without adding latency, because:
1) If there is isoc traffic this will never trigger
2) For async handled interrupt packets (only usb-host), the completion handler
will immediately schedule the frame_timer from a bh
3) All devices using NAK to signal no data for interrupt endpoints now use
wakeup, which will immediately schedule the frame_timer from a bh
The advantage of this is that when we only have interrupt packets in the
periodic schedule, async_stepdown can do its work and significantly lower
the frequency at which the frame_timer runs.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/usb/hcd-ehci.h')
-rw-r--r-- | hw/usb/hcd-ehci.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index d8078f4..772870b 100644 --- a/hw/usb/hcd-ehci.h +++ b/hw/usb/hcd-ehci.h @@ -311,6 +311,7 @@ struct EHCIState { uint64_t last_run_ns; uint32_t async_stepdown; + uint32_t periodic_sched_active; bool int_req_by_async; }; |