• Björn Smedman's avatar
    ath9k: A-MPDU rate control info fix · ebd02287
    Björn Smedman authored
    This patch fixes the following problems with the rate control feedback
    generated by ath9k for A-MPDU frames:
    
    1. Rate control feedback is carried on the first frame of an aggregate
    that is either ACKed, or has execeeded the software retry count and is
    considered failed. However, ath9k would incorrectly assume the aggregate
    had the length 1 if one of these conditions did not apply to the first
    frame of the aggregate, but instead a later frame. This fix therefor
    copies the bf_nframes field of the buffer in the same manner as the rates
    field of the tx status.
    
    2. Sometimes the ampdu_len and ampdu_ack_len fields of the tx status was
    left uninitialized eventhough the IEEE80211_TX_STAT_AMPDU flag was set.
    This is now avoid by setting flag and fields in the same place.
    
    3. Even if a frame has been selected for aggregation by mac80211 and
    marked with the IEEE80211_TX_CTL_AMPDU flag it can sometimes happen that
    ath9k transmits the frame without aggregation. In these cases the
    ampdu_ack_len field could be incorrectly computed because the nbad
    parameter to ath_tx_rc_status was incorrect.
    
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarBjörn Smedman <bjorn.smedman@venatech.se>
    Acked-by: default avatarFelix Fietkau <nbd@openwrt.org>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    ebd02287
xmit.c 61.7 KB