TrbStart->TrbCtrSetup.IOC = 1;\r
TrbStart->TrbCtrSetup.IDT = 1;\r
TrbStart->TrbCtrSetup.Type = TRB_TYPE_SETUP_STAGE;\r
- if (Urb->Ep.Direction == EfiUsbDataIn) {\r
- TrbStart->TrbCtrSetup.TRT = 3;\r
- } else if (Urb->Ep.Direction == EfiUsbDataOut) {\r
- TrbStart->TrbCtrSetup.TRT = 2;\r
+ if (Urb->DataLen > 0) {\r
+ if (Urb->Ep.Direction == EfiUsbDataIn) {\r
+ TrbStart->TrbCtrSetup.TRT = 3;\r
+ } else if (Urb->Ep.Direction == EfiUsbDataOut) {\r
+ TrbStart->TrbCtrSetup.TRT = 2;\r
+ } else {\r
+ DEBUG ((DEBUG_ERROR, "XhcCreateTransferTrb: Direction sholud be IN or OUT when Data exists!\n"));\r
+ ASSERT (FALSE);\r
+ }\r
} else {\r
TrbStart->TrbCtrSetup.TRT = 0;\r
}\r