• Sebastian Andrzej Siewior's avatar
    usb: gadget: dummy_hcd: complete stream support · a54c979f
    Sebastian Andrzej Siewior authored
    dummy_hcd provides (alloc|free)_stream() callbacks but there are not
    doing anything. The transfer side also lacks matching of streams. This
    patch changes this and implements stream allocation / de-allocation
    support and proper urb <=> req matching.
    The UDC side exposes a limit of 16 streams. DWC3, the only USB3 UDC has
    no limitations in this regard except that it _needs_ to know that
    streams will be used at the ep_enable time. At the host side, there is
    no real limit either: XHCI can allocate any number of streams as long as
    it does not run out of memory. The UAS gadget currently requests 16
    streams and the UAS host side fallbacks from the requested 256 down to
    16 which is fine.
    From the UASP point of view (the only specified user), the number of
    used streams does not really matter. The only limitation is that the
    host may not use a higher stream than the gadget requested and can deal
    with.
    
    The dummy stream support has been modelled after current UAS + XHCI +
    DWC3 + UASP usage which helps me testing:
    - the device announces that each ep supports 16 streams (even it could
      more than that).
    - the device side looks into Companion descriptor at ep_enable time and
      enables them according to it.
    - the host side tries to enable the requested number of streams but the
      upper limit is the Comanion descriptor. None (zero streams) is an
      error condition, less is okay.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    a54c979f
dummy_hcd.c 66.6 KB