Commit 1c818740 authored by Bob Copeland's avatar Bob Copeland Committed by John W. Linville

ath5k: add hardware CCMP encyption support

Recent ath5k hardware is capable of doing CCMP acceleration.
Enable it for the cards that support it.
Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 1c5256bb
...@@ -1037,6 +1037,7 @@ struct ath5k_hw { ...@@ -1037,6 +1037,7 @@ struct ath5k_hw {
bool ah_turbo; bool ah_turbo;
bool ah_calibration; bool ah_calibration;
bool ah_single_chip; bool ah_single_chip;
bool ah_aes_support;
bool ah_combined_mic; bool ah_combined_mic;
enum ath5k_version ah_version; enum ath5k_version ah_version;
......
...@@ -106,6 +106,7 @@ struct ath5k_hw *ath5k_hw_attach(struct ath5k_softc *sc, u8 mac_version) ...@@ -106,6 +106,7 @@ struct ath5k_hw *ath5k_hw_attach(struct ath5k_softc *sc, u8 mac_version)
{ {
struct ath5k_hw *ah; struct ath5k_hw *ah;
struct pci_dev *pdev = sc->pdev; struct pci_dev *pdev = sc->pdev;
struct ath5k_eeprom_info *ee;
int ret; int ret;
u32 srev; u32 srev;
...@@ -315,6 +316,15 @@ struct ath5k_hw *ath5k_hw_attach(struct ath5k_softc *sc, u8 mac_version) ...@@ -315,6 +316,15 @@ struct ath5k_hw *ath5k_hw_attach(struct ath5k_softc *sc, u8 mac_version)
goto err_free; goto err_free;
} }
/* Crypto settings */
ee = &ah->ah_capabilities.cap_eeprom;
ah->ah_aes_support =
(ee->ee_version >= AR5K_EEPROM_VERSION_5_0 &&
!AR5K_EEPROM_AES_DIS(ee->ee_misc5) &&
(ah->ah_mac_version > (AR5K_SREV_AR5212 >> 4) ||
(ah->ah_mac_version == (AR5K_SREV_AR5212 >> 4) &&
ah->ah_mac_revision >= (AR5K_SREV_AR5211 >> 4))));
if (srev >= AR5K_SREV_AR2414) { if (srev >= AR5K_SREV_AR2414) {
ah->ah_combined_mic = true; ah->ah_combined_mic = true;
AR5K_REG_ENABLE_BITS(ah, AR5K_MISC_MODE, AR5K_REG_ENABLE_BITS(ah, AR5K_MISC_MODE,
......
...@@ -3022,6 +3022,9 @@ ath5k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, ...@@ -3022,6 +3022,9 @@ ath5k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
case ALG_TKIP: case ALG_TKIP:
break; break;
case ALG_CCMP: case ALG_CCMP:
if (sc->ah->ah_aes_support)
break;
return -EOPNOTSUPP; return -EOPNOTSUPP;
default: default:
WARN_ON(1); WARN_ON(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment