• Felipe Balbi's avatar
    usb: dwc3: ep0: fix Data Phase for transfer sizes aligned to wMaxPacketSize · 36f84ffb
    Felipe Balbi authored
    According to Section 8.5.3.2 of the USB 2.0 specification,
    a USB device must terminate a Data Phase with either a
    short packet or a ZLP (if the previous transfer was
    a multiple of wMaxPacketSize).
    
    For reference, here's what the USB 2.0 specification, section
    8.5.3.2 says:
    
    "
    8.5.3.2 Variable-length Data Stage
    
    A control pipe may have a variable-length data phase
    in which the host requests more data than is contained
    in the specified data structure. When all of the data
    structure is returned to the host, the function should
    indicate that the Data stage is ended by returning a
    packet that is shorter than the MaxPacketSize for the
    pipe. If the data structure is an exact multiple of
    wMaxPacketSize for the pipe, the function will return
    a zero-length packet to indicate the end of the Data
    stage.
    "
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    36f84ffb
ep0.c 25.7 KB