• Felix Fietkau's avatar
    mac80211: minstrel_ht: significantly redesign the rate probing strategy · 80d55154
    Felix Fietkau authored
    The biggest flaw in current minstrel_ht is the fact that it needs way too
    many probing packets to be able to quickly find the best rate.
    Depending on the wifi hardware and operating mode, this can significantly
    reduce throughput when not operating at the highest available data rate.
    
    In order to be able to significantly reduce the amount of rate sampling,
    we need a much smarter selection of probing rates.
    
    The new approach introduced by this patch maintains a limited set of
    available rates to be tested during a statistics window.
    
    They are split into distinct categories:
    - MINSTREL_SAMPLE_TYPE_INC - incremental rate upgrade:
      Pick the next rate group and find the first rate that is faster than
      the current max. throughput rate
    - MINSTREL_SAMPLE_TYPE_JUMP - random testing of higher rates:
      Pick a random rate from the next group that is faster than the current
      max throughput rate. This allows faster adaptation when the link changes
      significantly
    - MINSTREL_SAMPLE_TYPE_SLOW - test a rate between max_prob, max_tp2 and
      max_tp in order to reduce the gap between them
    
    In order to prioritize sampling, every 6 attempts are split into 3x INC,
    2x JUMP, 1x SLOW.
    
    Available rates are checked and refilled on every stats window update.
    
    With this approach, we finally get a very small delta in throughput when
    comparing setting the optimal data rate as a fixed rate vs normal rate
    control operation.
    Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
    Link: https://lore.kernel.org/r/20210127055735.78599-4-nbd@nbd.nameSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    80d55154
rc80211_minstrel_ht.c 52.4 KB