iwlwifi: mvm: use the PROBE_RESP_QUEUE to send deauth to unknown station
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 28 Dec 2016 08:43:02 +0000 (10:43 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 8 Feb 2017 10:55:32 +0000 (12:55 +0200)
When we send a deauth to a station we don't know about, we
need to use the PROBE_RESP queue. This can happen when we
send a deauth to a station that is not associated to us.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 1d147599cca9a3c0cb03f6926a585da1095baedd..dd2b4a30081993823634e18752187c576a656b79 100644 (file)
@@ -506,15 +506,17 @@ static int iwl_mvm_get_ctrl_vif_queue(struct iwl_mvm *mvm,
        switch (info->control.vif->type) {
        case NL80211_IFTYPE_AP:
                /*
-                * handle legacy hostapd as well, where station may be added
-                * only after assoc.
+                * Handle legacy hostapd as well, where station may be added
+                * only after assoc. Take care of the case where we send a
+                * deauth to a station that we don't have.
                 */
-               if (ieee80211_is_probe_resp(fc) || ieee80211_is_auth(fc))
+               if (ieee80211_is_probe_resp(fc) || ieee80211_is_auth(fc) ||
+                   ieee80211_is_deauth(fc))
                        return IWL_MVM_DQA_AP_PROBE_RESP_QUEUE;
                if (info->hw_queue == info->control.vif->cab_queue)
                        return info->hw_queue;
 
-               WARN_ON_ONCE(1);
+               WARN_ONCE(1, "fc=0x%02x", le16_to_cpu(fc));
                return IWL_MVM_DQA_AP_PROBE_RESP_QUEUE;
        case NL80211_IFTYPE_P2P_DEVICE:
                if (ieee80211_is_mgmt(fc))