- Timestamp:
- Apr 15, 2016 10:21:32 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/VUSBUrb.cpp
r59875 r60515 1145 1145 if ((pEndPtDesc->Core.bmAttributes & 0x3) != pUrb->enmType) 1146 1146 { 1147 Log(("%s: pDev=%p[%s]: SUBMIT: %s transfer requested for %#x endpoint on DstAddress=%i ep=%i dir=%s\n", 1148 pUrb->pszDesc, pDev, pDev->pUsbIns->pszName, vusbUrbTypeName(pUrb->enmType), pEndPtDesc->Core.bmAttributes, 1149 pUrb->DstAddress, pUrb->EndPt, vusbUrbDirName(pUrb->enmDir))); 1150 return vusbUrbSubmitHardError(pUrb); 1147 /* Bulk and interrupt transfers are identical on the bus level (the only difference 1148 * is in how they are scheduled by the HCD/HC) and need an exemption. 1149 * Atheros AR9271 is a known offender; its configuration descriptors include 1150 * interrupt endpoints, but drivers (Win7/8, Linux kernel pre-3.05) treat them 1151 * as bulk endpoints. 1152 */ 1153 if ( (pUrb->enmType == VUSBXFERTYPE_BULK && (pEndPtDesc->Core.bmAttributes & 0x3) == VUSBXFERTYPE_INTR) 1154 || (pUrb->enmType == VUSBXFERTYPE_INTR && (pEndPtDesc->Core.bmAttributes & 0x3) == VUSBXFERTYPE_BULK)) 1155 { 1156 Log2(("%s: pDev=%p[%s]: SUBMIT: mixing bulk/interrupt transfers on DstAddress=%i ep=%i dir=%s\n", 1157 pUrb->pszDesc, pDev, pDev->pUsbIns->pszName, 1158 pUrb->DstAddress, pUrb->EndPt, vusbUrbDirName(pUrb->enmDir))); 1159 } 1160 else 1161 { 1162 Log(("%s: pDev=%p[%s]: SUBMIT: %s transfer requested for %#x endpoint on DstAddress=%i ep=%i dir=%s\n", 1163 pUrb->pszDesc, pDev, pDev->pUsbIns->pszName, vusbUrbTypeName(pUrb->enmType), pEndPtDesc->Core.bmAttributes, 1164 pUrb->DstAddress, pUrb->EndPt, vusbUrbDirName(pUrb->enmDir))); 1165 return vusbUrbSubmitHardError(pUrb); 1166 } 1151 1167 } 1152 1168
Note:
See TracChangeset
for help on using the changeset viewer.