iwlwifi: mvm: remove sta key on wep ap
authorLiad Kaufman <liad.kaufman@intel.com>
Thu, 1 Nov 2018 14:30:15 +0000 (16:30 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 29 Jan 2019 14:10:30 +0000 (16:10 +0200)
If WEP is used, no one removes the STA key upon STA
removal, leading to a situation where after 16
connect/disconnects - the AP could no longer decrypt
incoming data frames since iwl_mvm_set_fw_key_idx()
called from iwl_mvm_set_sta_key() during association
returns STA_KEY_IDX_INVALID, thus not setting the key
for that connecting STA.

Fix this by removing the key in the driver when the
STA is removed.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 78b35c9595a311b81d5edcaf4d411492f1aa0c73..b4a55349336fdb5ee4d717a42dc6c0d8b19c7400 100644 (file)
@@ -3091,6 +3091,16 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
                        iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr,
                                                   NL80211_TDLS_DISABLE_LINK);
                }
+
+               /* Remove STA key if this is an AP using WEP */
+               if (vif->type == NL80211_IFTYPE_AP && mvmvif->ap_wep_key) {
+                       int rm_ret = iwl_mvm_remove_sta_key(mvm, vif, sta,
+                                                           mvmvif->ap_wep_key);
+
+                       if (!ret)
+                               ret = rm_ret;
+               }
+
        } else {
                ret = -EIO;
        }