Changeset 65369473 in mainline


Ignore:
Timestamp:
2011-04-04T19:35:28Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b6049d7, df40775
Parents:
63dabb6
Message:

Check reserved bw

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/hc.c

    r63dabb6 r65369473  
    337337        if (batch->transfer_type == USB_TRANSFER_INTERRUPT ||
    338338            batch->transfer_type == USB_TRANSFER_ISOCHRONOUS) {
     339                size_t bw = bandwidth_count_usb11(batch->speed,
     340                    batch->transfer_type, batch->buffer_size,
     341                    batch->max_packet_size);
    339342                int ret =
    340343                    bandwidth_use(&instance->bandwidth, batch->target.address,
    341                     batch->target.endpoint, batch->direction);
     344                    batch->target.endpoint, batch->direction, bw);
    342345                if (ret != EOK) {
    343346                        usb_log_warning("Failed(%d) to use reserved bw: %s.\n",
  • uspace/lib/usb/include/usb/host/bandwidth.h

    r63dabb6 r65369473  
    7171
    7272int bandwidth_use(bandwidth_t *instance, usb_address_t address,
    73     usb_endpoint_t endpoint, usb_direction_t direction);
     73    usb_endpoint_t endpoint, usb_direction_t direction, size_t bw);
    7474
    7575int bandwidth_free(bandwidth_t *instance, usb_address_t address,
  • uspace/lib/usb/src/host/bandwidth.c

    r63dabb6 r65369473  
    221221/*----------------------------------------------------------------------------*/
    222222int bandwidth_use(bandwidth_t *instance, usb_address_t address,
    223     usb_endpoint_t endpoint, usb_direction_t direction)
     223    usb_endpoint_t endpoint, usb_direction_t direction, size_t bw)
    224224{
    225225        assert(instance);
     
    237237                    hash_table_get_instance(item, transfer_status_t, link);
    238238                assert(status);
    239                 if (status->used) {
    240                         ret = EINPROGRESS;
     239                if (status->required >= bw) {
     240                        if (status->used) {
     241                                ret = EINPROGRESS;
     242                        }
     243                        status->used = true;
     244                } else {
     245                        ret = ENOSPC;
    241246                }
    242                 status->used = true;
    243247        } else {
    244248                ret = EINVAL;
Note: See TracChangeset for help on using the changeset viewer.