lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 180/408] usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well
    Date
    From: Lorenzo Colitti <lorenzo@google.com>

    [ Upstream commit 4eea21dc67b0c6ba15ae41b1defa113a680a858e ]

    The u_ether driver has a qmult setting that multiplies the
    transmit queue length (which by default is 2).

    The intent is that it should be enabled at high/super speed, but
    because the code does not explicitly check for USB_SUPER_PLUS,
    it is disabled at that speed.

    Fix this by ensuring that the queue multiplier is enabled for any
    wired link at high speed or above. Using >= for USB_SPEED_*
    constants seems correct because it is what the gadget_is_xxxspeed
    functions do.

    The queue multiplier substantially helps performance at higher
    speeds. On a direct SuperSpeed Plus link to a Linux laptop,
    iperf3 single TCP stream:

    Before (qmult=1): 1.3 Gbps
    After (qmult=5): 3.2 Gbps

    Fixes: 04617db7aa68 ("usb: gadget: add SS descriptors to Ethernet gadget")
    Reviewed-by: Maciej Żenczykowski <maze@google.com>
    Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/gadget/function/u_ether.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c
    index fbe96ef1ac7a4..891e9f7f40d59 100644
    --- a/drivers/usb/gadget/function/u_ether.c
    +++ b/drivers/usb/gadget/function/u_ether.c
    @@ -93,7 +93,7 @@ struct eth_dev {
    static inline int qlen(struct usb_gadget *gadget, unsigned qmult)
    {
    if (gadget_is_dualspeed(gadget) && (gadget->speed == USB_SPEED_HIGH ||
    - gadget->speed == USB_SPEED_SUPER))
    + gadget->speed >= USB_SPEED_SUPER))
    return qmult * DEFAULT_QLEN;
    else
    return DEFAULT_QLEN;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 15:38    [W:2.367 / U:0.388 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site