VirtualBox

Ignore:
Timestamp:
Nov 6, 2012 5:44:17 PM (12 years ago)
Author:
vboxsync
Message:

HostDrivers/solaris/USB: Passthrough short packets bit.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSB-solaris.c

    r41700 r43816  
    250250    VUSBDIRECTION           enmDir;          /* Xfer direction */
    251251    VUSBSTATUS              enmStatus;       /* URB status */
     252    bool                    fShortOk;        /* Whether receiving less data than requested is acceptable. */
    252253    RTR3PTR                 pvDataR3;        /* Userspace address of the original data buffer */
    253254    size_t                  cbDataR3;        /* Size of the data buffer */
     
    31053106         * Initialize callbacks and timeouts.
    31063107         */
     3108        usb_req_attrs_t fAttributes = USB_ATTRS_AUTOCLEARING;
     3109        if (   pUrb->enmDir == VUSBDIRECTION_IN
     3110            && pUrb->fShortOk)
     3111        {
     3112            fAttributes |= USB_ATTRS_SHORT_XFER_OK;
     3113        }
    31073114        pReq->ctrl_cb             = vboxUSBSolarisCtrlXferCompleted;
    31083115        pReq->ctrl_exc_cb         = vboxUSBSolarisCtrlXferCompleted;
    31093116        pReq->ctrl_timeout        = VBOXUSB_CTRL_XFER_TIMEOUT;
    3110         pReq->ctrl_attributes     = USB_ATTRS_AUTOCLEARING | (pUrb->enmDir == VUSBDIRECTION_IN ? USB_ATTRS_SHORT_XFER_OK : 0);
     3117        pReq->ctrl_attributes     = fAttributes;
    31113118
    31123119        pReq->ctrl_client_private = (usb_opaque_t)pUrb;
     
    32343241         * Initialize Bulk Xfer, callbacks and timeouts.
    32353242         */
     3243        usb_req_attrs_t fAttributes = USB_ATTRS_AUTOCLEARING;
    32363244        if (pUrb->enmDir == VUSBDIRECTION_OUT)
    32373245            pReq->bulk_data = pUrb->pMsg;
     3246        else if (   pUrb->enmDir == VUSBDIRECTION_IN
     3247                 && pUrb->fShortOk)
     3248        {
     3249            fAttributes |= USB_ATTRS_SHORT_XFER_OK;
     3250        }
    32383251
    32393252        pReq->bulk_len            = pUrb->cbDataR3;
     
    32413254        pReq->bulk_exc_cb         = vboxUSBSolarisBulkXferCompleted;
    32423255        pReq->bulk_timeout        = VBOXUSB_BULK_XFER_TIMEOUT;
    3243         pReq->bulk_attributes     = USB_ATTRS_AUTOCLEARING | (pUrb->enmDir == VUSBDIRECTION_IN ? USB_ATTRS_SHORT_XFER_OK : 0);
     3256        pReq->bulk_attributes     = fAttributes;
    32443257        pReq->bulk_client_private = (usb_opaque_t)pUrb;
    32453258
     
    33583371        else
    33593372        {
     3373            Assert(pUrb->enmDir == VUSBDIRECTION_IN);
    33603374            pReq->intr_data       = NULL;
    3361             pReq->intr_attributes = USB_ATTRS_AUTOCLEARING | USB_ATTRS_ONE_XFER | USB_ATTRS_SHORT_XFER_OK;
     3375            pReq->intr_attributes = USB_ATTRS_AUTOCLEARING | USB_ATTRS_ONE_XFER | (pUrb->fShortOk ? USB_ATTRS_SHORT_XFER_OK : 0);
    33623376        }
    33633377
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette