|
@@ -1845,6 +1845,20 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
|
|
if (ath9k_modparam_nohwcrypt)
|
|
if (ath9k_modparam_nohwcrypt)
|
|
return -ENOSPC;
|
|
return -ENOSPC;
|
|
|
|
|
|
|
|
+ if (vif->type == NL80211_IFTYPE_ADHOC &&
|
|
|
|
+ (key->cipher == WLAN_CIPHER_SUITE_TKIP ||
|
|
|
|
+ key->cipher == WLAN_CIPHER_SUITE_CCMP) &&
|
|
|
|
+ !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) {
|
|
|
|
+ /*
|
|
|
|
+ * For now, disable hw crypto for the RSN IBSS group keys. This
|
|
|
|
+ * could be optimized in the future to use a modified key cache
|
|
|
|
+ * design to support per-STA RX GTK, but until that gets
|
|
|
|
+ * implemented, use of software crypto for group addressed
|
|
|
|
+ * frames is a acceptable to allow RSN IBSS to be used.
|
|
|
|
+ */
|
|
|
|
+ return -EOPNOTSUPP;
|
|
|
|
+ }
|
|
|
|
+
|
|
mutex_lock(&sc->mutex);
|
|
mutex_lock(&sc->mutex);
|
|
ath9k_ps_wakeup(sc);
|
|
ath9k_ps_wakeup(sc);
|
|
ath_dbg(common, ATH_DBG_CONFIG, "Set HW Key\n");
|
|
ath_dbg(common, ATH_DBG_CONFIG, "Set HW Key\n");
|