|
@@ -126,6 +126,11 @@ int PIPEnsControlOut(struct vnt_private *pDevice, u8 byRequest, u16 wValue,
|
|
|
if (pDevice->Flags & fMP_CONTROL_WRITES)
|
|
|
return STATUS_FAILURE;
|
|
|
|
|
|
+ if (pDevice->Flags & fMP_CONTROL_READS)
|
|
|
+ return STATUS_FAILURE;
|
|
|
+
|
|
|
+ MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES);
|
|
|
+
|
|
|
pDevice->sUsbCtlRequest.bRequestType = 0x40;
|
|
|
pDevice->sUsbCtlRequest.bRequest = byRequest;
|
|
|
pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue);
|
|
@@ -140,12 +145,13 @@ int PIPEnsControlOut(struct vnt_private *pDevice, u8 byRequest, u16 wValue,
|
|
|
|
|
|
ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC);
|
|
|
if (ntStatus != 0) {
|
|
|
- DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control send request submission failed: %d\n", ntStatus);
|
|
|
+ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO
|
|
|
+ "control send request submission failed: %d\n",
|
|
|
+ ntStatus);
|
|
|
+ MP_CLEAR_FLAG(pDevice, fMP_CONTROL_WRITES);
|
|
|
return STATUS_FAILURE;
|
|
|
}
|
|
|
- else {
|
|
|
- MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES);
|
|
|
- }
|
|
|
+
|
|
|
spin_unlock_irq(&pDevice->lock);
|
|
|
for (ii = 0; ii <= USB_CTL_WAIT; ii ++) {
|
|
|
|
|
@@ -179,6 +185,11 @@ int PIPEnsControlIn(struct vnt_private *pDevice, u8 byRequest, u16 wValue,
|
|
|
if (pDevice->Flags & fMP_CONTROL_READS)
|
|
|
return STATUS_FAILURE;
|
|
|
|
|
|
+ if (pDevice->Flags & fMP_CONTROL_WRITES)
|
|
|
+ return STATUS_FAILURE;
|
|
|
+
|
|
|
+ MP_SET_FLAG(pDevice, fMP_CONTROL_READS);
|
|
|
+
|
|
|
pDevice->sUsbCtlRequest.bRequestType = 0xC0;
|
|
|
pDevice->sUsbCtlRequest.bRequest = byRequest;
|
|
|
pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue);
|
|
@@ -192,10 +203,11 @@ int PIPEnsControlIn(struct vnt_private *pDevice, u8 byRequest, u16 wValue,
|
|
|
|
|
|
ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC);
|
|
|
if (ntStatus != 0) {
|
|
|
- DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control request submission failed: %d\n", ntStatus);
|
|
|
- }else {
|
|
|
- MP_SET_FLAG(pDevice, fMP_CONTROL_READS);
|
|
|
- }
|
|
|
+ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO
|
|
|
+ "control request submission failed: %d\n", ntStatus);
|
|
|
+ MP_CLEAR_FLAG(pDevice, fMP_CONTROL_READS);
|
|
|
+ return STATUS_FAILURE;
|
|
|
+ }
|
|
|
|
|
|
spin_unlock_irq(&pDevice->lock);
|
|
|
for (ii = 0; ii <= USB_CTL_WAIT; ii ++) {
|