• Sara Sharon's avatar
    iwlwifi: mvm: fix references to first_agg_queue in DQA mode · c56108b5
    Sara Sharon authored
    In DQA mode, first_agg_queue is initialized to
    IWL_MVM_DQA_MIN_DATA_QUEUE. This causes two bugs in the tx response
    flow:
    
    1. When TX fails, we set IEEE80211_TX_STAT_AMPDU_NO_BACK regardless
       if we actually have aggregation open on the queue. This causes
       mac80211 to send a BAR frame even though there is no aggregation
       open.
       Fix that by simply checking the AMPDU flag that is set on by
       mac80211 for AMPDU packets.
    
    2. When reclaiming frames in aggregation mode, we reclaim based on
       scheduler ssn and not the SN.
       The reason is that scheduler ssn may be ahead of SN due to a hole
       in the BA window that was filled.
       However, if we have aggregations open on IWL_MVM_DQA_BSS_CLIENT_QUEUE
       the reclaim flow will still go to the code of non-aggregation
       instead of the aggregation code since IWL_MVM_DQA_BSS_CLIENT_QUEUE
       is smaller than IWL_MVM_DQA_MIN_DATA_QUEUE, although it is a valid
       aggregation queue.
       Fix that by always using the aggregation reclaim code by default in
       DQA mode (currently it is implicitly used by default for all queues
       except the reserved BSS queue).
    
    Fixes: cf961e16 ("iwlwifi: mvm: support dqa-mode agg on non-shared queue")
    Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    c56108b5
tx.c 52.7 KB