iwlwifi: mvm: use the PROBE_RESP_QUEUE to send deauth to unknown station
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sat, 7 Oct 2017 22:36:51 +0000 (22:36 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Nov 2017 09:08:35 +0000 (10:08 +0100)
[ Upstream commit d45cb20e123c5d7d6cd56301bc98f0bfd725cd77 ]

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>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 0556d13..092ae00 100644 (file)
@@ -499,15 +499,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))