• Ilan Peer's avatar
    mac80211: Fix Tx aggregation session tear down with ITXQs · a5a24445
    Ilan Peer authored
    [ Upstream commit 6157ca0d ]
    
    When mac80211 requests the low level driver to stop an ongoing
    Tx aggregation, the low level driver is expected to call
    ieee80211_stop_tx_ba_cb_irqsafe() to indicate that it is ready
    to stop the session. The callback in turn schedules a worker
    to complete the session tear down, which in turn also handles
    the relevant state for the intermediate Tx queue.
    
    However, as this flow in asynchronous, the intermediate queue
    should be stopped and not continue servicing frames, as in
    such a case frames that are dequeued would be marked as part
    of an aggregation, although the aggregation is already been
    stopped.
    
    Fix this by stopping the intermediate Tx queue, before
    calling the low level driver to stop the Tx aggregation.
    Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    a5a24445
agg-tx.c 28.6 KB