However, the performance of bulk transfer devices depends on how much bandwidth is allocated for devices that do periodic (isochronous and interrupt) transfers. The system does not allocate guaranteed bandwidth for bulk transfers, so bulk transfers are never the cause of enumeration failures. The system reserves allocated bandwidth until the driver that requested it closes its endpoint (by opening another endpoint), or the device for which the bandwidth was allocated is removed. But the most common case, by far, is that of a client driver that allocates too much bandwidth for an isochronous transfer, then fails to release the bandwidth in a timely fashion. Occasionally, a client driver will exhaust the available bandwidth with a high-speed interrupt transfer. Since it is usually not apparent why the enumeration failed, this can lead to a bad user experience. When this occurs, the system cannot configure the device and fails to enumerate it. If the first USB driver loaded requests all of the available bandwidth, a USB driver that loads at a later time will not obtain any bandwidth at all for its device. The system allocates bandwidth on a first-come-first-serve basis. The most serious strain on bandwidth resource usually comes from USB client drivers that monopolize bandwidth. But whether bandwidth is required for transaction translation depends on the kind of devices that are connected and the topology of the device tree. USB hubs that operate at high speed must sometimes translate transactions between high-speed upstream ports and low-speed devices downstream, and this translation process consumes bandwidth. The USB host controller requires a certain amount of bandwidth for its operations, but the amount required depends on whether the controller is high speed or not, so it will vary from system to system. This section includes the following topics: Why is my USB driver getting out of bandwidth errors?Ĭompetition for bandwidth on the USB bus comes from multiple sources, both hardware and software, so it is difficult to predict exactly how much bandwidth will be available for a USB client driver. It is the responsibility of every USB client driver to minimize the USB bandwidth it uses, and return unused bandwidth to the free bandwidth pool as promptly as possible. This section provides guidance concerning the careful management of USB bandwidth.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2022
Categories |