Loading drivers/usb/host/xhci-ring.c +6 −0 Original line number Diff line number Diff line Loading @@ -2056,6 +2056,8 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, /* Did we already see a short data * stage? */ *status = -EREMOTEIO; } else if (td->zlp_data) { td->zlp_data = false; } else { td->urb->actual_length = td->urb->transfer_buffer_length; Loading @@ -2065,6 +2067,10 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, td->urb->actual_length = td->urb->transfer_buffer_length - EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); if (td->urb->actual_length == 0) td->zlp_data = true; xhci_dbg(xhci, "Waiting for status " "stage event\n"); return 0; Loading drivers/usb/host/xhci.h +3 −0 Original line number Diff line number Diff line Loading @@ -1258,6 +1258,9 @@ struct xhci_td { struct xhci_segment *start_seg; union xhci_trb *first_trb; union xhci_trb *last_trb; /* ZLP received in data stage of a control transfer */ bool zlp_data; }; /* xHCI command default timeout value */ Loading Loading
drivers/usb/host/xhci-ring.c +6 −0 Original line number Diff line number Diff line Loading @@ -2056,6 +2056,8 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, /* Did we already see a short data * stage? */ *status = -EREMOTEIO; } else if (td->zlp_data) { td->zlp_data = false; } else { td->urb->actual_length = td->urb->transfer_buffer_length; Loading @@ -2065,6 +2067,10 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, td->urb->actual_length = td->urb->transfer_buffer_length - EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); if (td->urb->actual_length == 0) td->zlp_data = true; xhci_dbg(xhci, "Waiting for status " "stage event\n"); return 0; Loading
drivers/usb/host/xhci.h +3 −0 Original line number Diff line number Diff line Loading @@ -1258,6 +1258,9 @@ struct xhci_td { struct xhci_segment *start_seg; union xhci_trb *first_trb; union xhci_trb *last_trb; /* ZLP received in data stage of a control transfer */ bool zlp_data; }; /* xHCI command default timeout value */ Loading