ath10k: use IEEE80211_HW_SW_CRYPTO_CONTROL
The ath10k driver only supports HW crypto (except for management frames or so - CMAC needs to be done in software). Make it use the new IEEE80211_HW_SW_CRYPTO_CONTROL flag to ensure mac80211 doesn't erroneously attempt to use software crypto. Taking through my tree after Kalle's ACK to avoid breaking the ath10k driver with the next crypto patches. Acked-by: Kalle Valo <kvalo@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
9120d94e8f
commit
3cb10943fc
|
@ -74,6 +74,9 @@ static int ath10k_send_key(struct ath10k_vif *arvif,
|
|||
if (memcmp(macaddr, arvif->vif->addr, ETH_ALEN))
|
||||
arg.key_flags = WMI_KEY_PAIRWISE;
|
||||
break;
|
||||
case WLAN_CIPHER_SUITE_AES_CMAC:
|
||||
/* this one needs to be done in software */
|
||||
return 1;
|
||||
default:
|
||||
ath10k_warn(ar, "cipher %d is not supported\n", key->cipher);
|
||||
return -EOPNOTSUPP;
|
||||
|
@ -4958,6 +4961,13 @@ struct ath10k_vif *ath10k_get_arvif(struct ath10k *ar, u32 vdev_id)
|
|||
|
||||
int ath10k_mac_register(struct ath10k *ar)
|
||||
{
|
||||
static const u32 cipher_suites[] = {
|
||||
WLAN_CIPHER_SUITE_WEP40,
|
||||
WLAN_CIPHER_SUITE_WEP104,
|
||||
WLAN_CIPHER_SUITE_TKIP,
|
||||
WLAN_CIPHER_SUITE_CCMP,
|
||||
WLAN_CIPHER_SUITE_AES_CMAC,
|
||||
};
|
||||
struct ieee80211_supported_band *band;
|
||||
struct ieee80211_sta_vht_cap vht_cap;
|
||||
struct ieee80211_sta_ht_cap ht_cap;
|
||||
|
@ -5030,7 +5040,8 @@ int ath10k_mac_register(struct ath10k *ar)
|
|||
IEEE80211_HW_REPORTS_TX_ACK_STATUS |
|
||||
IEEE80211_HW_HAS_RATE_CONTROL |
|
||||
IEEE80211_HW_AP_LINK_PS |
|
||||
IEEE80211_HW_SPECTRUM_MGMT;
|
||||
IEEE80211_HW_SPECTRUM_MGMT |
|
||||
IEEE80211_HW_SW_CRYPTO_CONTROL;
|
||||
|
||||
ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
|
||||
|
||||
|
@ -5094,6 +5105,9 @@ int ath10k_mac_register(struct ath10k *ar)
|
|||
goto err_free;
|
||||
}
|
||||
|
||||
ar->hw->wiphy->cipher_suites = cipher_suites;
|
||||
ar->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
||||
|
||||
ret = ieee80211_register_hw(ar->hw);
|
||||
if (ret) {
|
||||
ath10k_err(ar, "failed to register ieee80211: %d\n", ret);
|
||||
|
|
Loading…
Reference in New Issue