• Lorenzo Colitti's avatar
    usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well · 4eea21dc
    Lorenzo Colitti authored
    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: 04617db7 ("usb: gadget: add SS descriptors to Ethernet gadget")
    Reviewed-by: default avatarMaciej Żenczykowski <maze@google.com>
    Signed-off-by: default avatarLorenzo Colitti <lorenzo@google.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    4eea21dc
u_ether.c 28.7 KB