lkml.org 
[lkml]   [2014]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 185/259] ath9k: fix aggregation session lockup
    Date
    3.13.11.6 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Felix Fietkau <nbd@openwrt.org>

    commit c01fac1c77a00227f706a1654317023e3f4ac7f0 upstream.

    If an aggregation session fails, frames still end up in the driver queue
    with IEEE80211_TX_CTL_AMPDU set.
    This causes tx for the affected station/tid to stall, since
    ath_tx_get_tid_subframe returning packets to send.

    Fix this by clearing IEEE80211_TX_CTL_AMPDU as long as no aggregation
    session is running.

    Reported-by: Antonio Quartulli <antonio@open-mesh.com>
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/net/wireless/ath/ath9k/xmit.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
    index 6fa2d35..62744cb 100644
    --- a/drivers/net/wireless/ath/ath9k/xmit.c
    +++ b/drivers/net/wireless/ath/ath9k/xmit.c
    @@ -904,6 +904,15 @@ ath_tx_get_tid_subframe(struct ath_softc *sc, struct ath_txq *txq,

    tx_info = IEEE80211_SKB_CB(skb);
    tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT;
    +
    + /*
    + * No aggregation session is running, but there may be frames
    + * from a previous session or a failed attempt in the queue.
    + * Send them out as normal data frames
    + */
    + if (!tid->active)
    + tx_info->flags &= ~IEEE80211_TX_CTL_AMPDU;
    +
    if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
    bf->bf_state.bf_type = 0;
    return bf;
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-08-08 23:21    [W:2.970 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site