• Frank Li's avatar
    usb: cdns3: fix NCM gadget RX speed 20x slow than expection at iMX8QM · dbe678f6
    Frank Li authored
    At iMX8QM platform, enable NCM gadget and run 'iperf3 -s'.
    At host, run 'iperf3 -V -c fe80::6863:98ff:feef:3e0%enxc6e147509498'
    
    [  5]   0.00-1.00   sec  1.55 MBytes  13.0 Mbits/sec   90   4.18 KBytes
    [  5]   1.00-2.00   sec  1.44 MBytes  12.0 Mbits/sec   75   4.18 KBytes
    [  5]   2.00-3.00   sec  1.48 MBytes  12.4 Mbits/sec   75   4.18 KBytes
    
    Expected speed should be bigger than 300Mbits/sec.
    
    The root cause of this performance drop was found to be data corruption
    happening at 4K borders in some Ethernet packets, leading to TCP
    checksum errors. This corruption occurs from the position
    (4K - (address & 0x7F)) to 4K. The u_ether function's allocation of
    skb_buff reserves 64B, meaning all RX addresses resemble 0xXXXX0040.
    
    Force trb_burst_size to 16 can fix this problem.
    
    Cc: stable@vger.kernel.org
    Fixes: 7733f6c3 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Signed-off-by: default avatarFrank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20230518154946.3666662-1-Frank.Li@nxp.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    dbe678f6
cdns3-gadget.c 90.6 KB