• Chris Chiu's avatar
    rtl8xxxu: Improve TX performance of RTL8723BU on rtl8xxxu driver · a9bb0b51
    Chris Chiu authored
    We have 3 laptops which connect the wifi by the same RTL8723BU.
    The PCI VID/PID of the wifi chip is 10EC:B720 which is supported.
    They have the same problem with the in-kernel rtl8xxxu driver, the
    iperf (as a client to an ethernet-connected server) gets ~1Mbps.
    Nevertheless, the signal strength is reported as around -40dBm,
    which is quite good. From the wireshark capture, the tx rate for each
    data and qos data packet is only 1Mbps. Compare to the Realtek driver
    at https://github.com/lwfinger/rtl8723bu, the same iperf test gets
    ~12Mbps or better. The signal strength is reported similarly around
    -40dBm. That's why we want to improve.
    
    After reading the source code of the rtl8xxxu driver and Realtek's, the
    major difference is that Realtek's driver has a watchdog which will keep
    monitoring the signal quality and updating the rate mask just like the
    rtl8xxxu_gen2_update_rate_mask() does if signal quality changes.
    And this kind of watchdog also exists in rtlwifi driver of some specific
    chips, ex rtl8192ee, rtl8188ee, rtl8723ae, rtl8821ae...etc. They have
    the same member function named dm_watchdog and will invoke the
    corresponding dm_refresh_rate_adaptive_mask to adjust the tx rate
    mask.
    
    With this commit, the tx rate of each data and qos data packet will
    be 39Mbps (MCS4) with the 0xF00000 as the tx rate mask. The 20th bit
    to 23th bit means MCS4 to MCS7. It means that the firmware still picks
    the lowest rate from the rate mask and explains why the tx rate of
    data and qos data is always lowest 1Mbps because the default rate mask
    passed is always 0xFFFFFFF ranges from the basic CCK rate, OFDM rate,
    and MCS rate. However, with Realtek's driver, the tx rate observed from
    wireshark under the same condition is almost 65Mbps or 72Mbps, which
    indicating that rtl8xxxu could still be further improved.
    Signed-off-by: default avatarChris Chiu <chiu@endlessm.com>
    Reviewed-by: default avatarDaniel Drake <drake@endlessm.com>
    Acked-by: default avatarJes Sorensen <Jes.Sorensen@gmail.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    a9bb0b51
rtl8xxxu.h 34.8 KB