summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2015-03-09 16:24:17 +0300
committerKalle Valo <kvalo@qca.qualcomm.com>2015-03-12 15:35:51 +0300
commit7cc4573e85cd7f7179fdfe0b7d3114a4fbdd6f2a (patch)
treeb33929df5f32ef20c398225ea64b37d49d5f8f17
parentbff414c3d2cb327d4fff22277ac89b8e00d70164 (diff)
downloadlinux-7cc4573e85cd7f7179fdfe0b7d3114a4fbdd6f2a.tar.xz
ath10k: fix WPA crypto
Commit 370e567363e6 ("ath10k: fix broken traffic for 802.1x in client mode") introduced a regression on WPA crypto. All keys were treated as if they were WEP which resulted in WPA being incorrectly installed to fw/hw and subsequently no traffic. Reported-by: Marek Puzyniak <marek.puzyniak@tieto.com> Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 1f3d393b3877..da4e7a0a758c 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -4029,6 +4029,11 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
}
}
+ if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE)
+ flags |= WMI_KEY_PAIRWISE;
+ else
+ flags |= WMI_KEY_GROUP;
+
if (is_wep) {
if (cmd == SET_KEY)
arvif->wep_keys[key->keyidx] = key;
@@ -4054,29 +4059,24 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
*/
if (cmd == SET_KEY && arvif->def_wep_key_idx == -1)
flags |= WMI_KEY_TX_USAGE;
- }
- if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE)
- flags |= WMI_KEY_PAIRWISE;
- else
- flags |= WMI_KEY_GROUP;
-
- /* mac80211 uploads static WEP keys as groupwise while fw/hw requires
- * pairwise keys for non-self peers, i.e. BSSID in STA mode and
- * associated stations in AP/IBSS.
- *
- * Static WEP keys for peer_addr=vif->addr and 802.1X WEP keys work
- * fine when mapped directly from mac80211.
- *
- * Note: When installing first static WEP groupwise key (which should
- * be pairwise) def_wep_key_idx isn't known yet (it's equal to -1).
- * Since .set_default_unicast_key is called only for static WEP it's
- * used to re-upload the key as pairwise.
- */
- if (arvif->def_wep_key_idx >= 0 &&
- memcmp(peer_addr, arvif->vif->addr, ETH_ALEN)) {
- flags &= ~WMI_KEY_GROUP;
- flags |= WMI_KEY_PAIRWISE;
+ /* mac80211 uploads static WEP keys as groupwise while fw/hw
+ * requires pairwise keys for non-self peers, i.e. BSSID in STA
+ * mode and associated stations in AP/IBSS.
+ *
+ * Static WEP keys for peer_addr=vif->addr and 802.1X WEP keys
+ * work fine when mapped directly from mac80211.
+ *
+ * Note: When installing first static WEP groupwise key (which
+ * should be pairwise) def_wep_key_idx isn't known yet (it's
+ * equal to -1). Since .set_default_unicast_key is called only
+ * for static WEP it's used to re-upload the key as pairwise.
+ */
+ if (arvif->def_wep_key_idx >= 0 &&
+ memcmp(peer_addr, arvif->vif->addr, ETH_ALEN)) {
+ flags &= ~WMI_KEY_GROUP;
+ flags |= WMI_KEY_PAIRWISE;
+ }
}
ret = ath10k_install_key(arvif, key, cmd, peer_addr, flags);