lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 105/779] usb: dwc3: gadget: fix high speed multiplier setting
    Date
    From: Michael Grzeschik <m.grzeschik@pengutronix.de>

    commit 8affe37c525d800a2628c4ecfaed13b77dc5634a upstream.

    For High-Speed Transfers the prepare_one_trb function is calculating the
    multiplier setting for the trb based on the length parameter of the trb
    currently prepared. This assumption is wrong. For trbs with a sg list,
    the length of the actual request has to be taken instead.

    Fixes: 40d829fb2ec6 ("usb: dwc3: gadget: Correct ISOC DATA PIDs for short packets")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Link: https://lore.kernel.org/r/20220704141812.1532306-3-m.grzeschik@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/usb/dwc3/gadget.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/usb/dwc3/gadget.c
    +++ b/drivers/usb/dwc3/gadget.c
    @@ -1251,10 +1251,10 @@ static void dwc3_prepare_one_trb(struct
    unsigned int mult = 2;
    unsigned int maxp = usb_endpoint_maxp(ep->desc);

    - if (trb_length <= (2 * maxp))
    + if (req->request.length <= (2 * maxp))
    mult--;

    - if (trb_length <= maxp)
    + if (req->request.length <= maxp)
    mult--;

    trb->size |= DWC3_TRB_SIZE_PCM1(mult);

    \
     
     \ /
      Last update: 2022-08-15 20:28    [W:4.148 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site