• Johannes Berg's avatar
    iwlwifi: mvm: remove DQA non-STA client mode special case · 6e464963
    Johannes Berg authored
    When we get a non-STA frame to transmit in client mode, we try to use
    the IWL_MVM_DQA_BSS_CLIENT_QUEUE queue (queue #4). However, at this
    point, the queue might not be allocated at all, causing warnings. The
    scenario on which this happened was a race condition between mac80211
    and our queue allocation work:
     * mac80211 sends auth
     * we stop mac80211 queues to allocate a hw queue
     * authentication is aborted
     * we allocate HW queue and start mac80211 queues
     * mac80211 removes station
     * mac80211 hands us the auth frame from the pending queue
    
    At this point, since mac80211 has already removed the station, we try
    to transmit the frame through this special non-station case on queue
    4 anyway.
    
    In order to really use it properly, we'd have to again go through the
    hw queue allocation work, and attach it to a station, etc. In this
    case that isn't possible (there's no station anymore), but if this
    special case were needed, then we'd have to do it this way.
    
    However, the special case is documented to exist for TDLS, but can't
    trigger there because the TDLS setup frames etc. are normal to-DS
    frames going to the peer through the AP. Testing also confirms that
    this code path isn't triggered in TDLS.
    
    Therefore, remove the code path to avoid using an unused queue. The
    erroneous frame described above will still be transmitted on the AUX
    queue, but arguably that's a mac80211 problem, which will eventually
    be fixed by moving everything there to TXQs.
    
    Fixes: e3118ad7 ("iwlwifi: mvm: support tdls in dqa mode")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    6e464963
tx.c 56.9 KB