Skip to content
  • Felix Fietkau's avatar
    ath9k: fix retry count for A-MPDU rate control status reports · 78c4653a
    Felix Fietkau authored
    
    
    The 'bf_retries' field of the ath_buf structure was used for both
    software retries (AMPDU subframes) and hardware retries (legacy
    frames). This led to a wrong retry count being reported for the A-MPDU
    rate control stats.
    This patch changes the code to no longer use bf_retries for reporting
    retry counts, but instead always using the real on-chip retry count
    from the ath_tx_status.
    Additionally, if the first subframe of an A-MPDU was not acked, the tx
    status report is submitted along with the first acked subframe, which
    may not contain the correct rates in the tx info.
    This is easily corrected by saving the tx rate info before looping over
    subframes, and then copying it back once the A-MPDU status report is
    submitted.
    In my tests this change improves throughput visibly.
    
    Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
    Reported-by: default avatarBjörn Smedman <bjorn.smedman@venatech.se>
    Cc: stable@kernel.org
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    78c4653a