[USBSTOR]
[reactos.git] / drivers / usb / usbstor / scsi.c
index bd03f50..68b7aac 100644 (file)
@@ -31,7 +31,7 @@ USBSTOR_BuildCBW(
     Control->Signature = CBW_SIGNATURE;
     Control->Tag = Tag;
     Control->DataTransferLength = DataTransferLength;
-    Control->Flags = 0x80;
+    Control->Flags = (CommandBlock[0] != SCSIOP_WRITE) ? 0x80 : 0x00;
     Control->LUN = (LUN & MAX_LUN);
     Control->CommandBlockLength = CommandBlockLength;
 
@@ -447,7 +447,7 @@ USBSTOR_CBWCompletionRoutine(
                                                NULL,
                                                Context->TransferBufferMDL,
                                                Context->TransferDataLength,
-                                               USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK,
+                                               ((Code == SCSIOP_WRITE) ? USBD_TRANSFER_DIRECTION_OUT : (USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK)),
                                                NULL);
 
         //
@@ -551,7 +551,7 @@ USBSTOR_SendRequest(
                                            Context->cbw,
                                            NULL,
                                            sizeof(CBW),
-                                           USBD_TRANSFER_DIRECTION_OUT | USBD_SHORT_TRANSFER_OK,
+                                           USBD_TRANSFER_DIRECTION_OUT,
                                            NULL);
 
     //
@@ -1221,7 +1221,7 @@ USBSTOR_HandleExecuteSCSI(
     }
     else
     {
-        UNIMPLEMENTED;
+        DPRINT1("UNIMPLEMENTED Operation Code %x\n", pCDB->AsByte[0]);
         Request->SrbStatus = SRB_STATUS_ERROR;
         Status = STATUS_NOT_SUPPORTED;
         DbgBreakPoint();