• T
    usb: dwc3: gadget: Support Multi-Stream Transfer · 666f3de7
    Thinh Nguyen 提交于
    Synopsys introduced a new enhancement to DWC_usb32 called Multi-Stream
    Transfer (MST) to improve bulk streams performance for SuperSpeed and
    SuperSpeed Plus. This enhancement allows the controller to look ahead
    and process multiple bulk streams.
    
    Previously, to initiate a bulk stream transfer, the driver has to issue
    Start Transfer command and wait for the stream to complete before
    initiating a new stream. As a result, the controller does not process
    TRBs beyond a single stream. With the enhancement, as long as there are
    new requests, the dwc3 driver can keep preparing new TRBs and the
    controller can keep caching and processing them without waiting for the
    transfer completion.
    
    The programming flow is similar to regular bulk endpoint with a few
    additional rules:
    
    1) Chained TRBs of the same stream must have a matching stream ID
    2) The last TRB of a stream must have CHN=0
    3) All the TRBs with LST=0 must have CSP=1
    
    Depends on the application and usage, internal tests show significant
    performance improvement in UASP transfers with this enhancement.
    Signed-off-by: NThinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/cd9c7a8bf11f790983ac546222dd114893f16b3a.1638242424.git.Thinh.Nguyen@synopsys.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    666f3de7
core.h 51.5 KB