Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
[pandora-kernel.git] / drivers / net / wireless / ath / ath5k / attach.c
index b32e28c..fbe8aca 100644 (file)
@@ -118,9 +118,6 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        ah->ah_turbo = false;
        ah->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
        ah->ah_imr = 0;
-       ah->ah_atim_window = 0;
-       ah->ah_aifs = AR5K_TUNE_AIFS;
-       ah->ah_cw_min = AR5K_TUNE_CWMIN;
        ah->ah_limit_tx_retries = AR5K_INIT_TX_RETRY;
        ah->ah_software_retry = false;
        ah->ah_ant_mode = AR5K_ANTMODE_DEFAULT;
@@ -139,15 +136,15 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        else
                ah->ah_version = AR5K_AR5212;
 
-       /*Fill the ath5k_hw struct with the needed functions*/
+       /* Fill the ath5k_hw struct with the needed functions */
        ret = ath5k_hw_init_desc_functions(ah);
        if (ret)
-               goto err_free;
+               goto err;
 
-       /* Bring device out of sleep and reset it's units */
+       /* Bring device out of sleep and reset its units */
        ret = ath5k_hw_nic_wakeup(ah, 0, true);
        if (ret)
-               goto err_free;
+               goto err;
 
        /* Get MAC, PHY and RADIO revisions */
        ah->ah_mac_srev = srev;
@@ -158,7 +155,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
                        CHANNEL_5GHZ);
        ah->ah_phy = AR5K_PHY(0);
 
-       /* Try to identify radio chip based on it's srev */
+       /* Try to identify radio chip based on its srev */
        switch (ah->ah_radio_5ghz_revision & 0xf0) {
        case AR5K_SREV_RAD_5111:
                ah->ah_radio = AR5K_RF5111;
@@ -237,7 +234,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
                } else {
                        ATH5K_ERR(sc, "Couldn't identify radio revision.\n");
                        ret = -ENODEV;
-                       goto err_free;
+                       goto err;
                }
        }
 
@@ -247,7 +244,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        (srev < AR5K_SREV_AR2425)) {
                ATH5K_ERR(sc, "Device not yet supported.\n");
                ret = -ENODEV;
-               goto err_free;
+               goto err;
        }
 
        /*
@@ -255,7 +252,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
         */
        ret = ath5k_hw_post(ah);
        if (ret)
-               goto err_free;
+               goto err;
 
        /* Enable pci core retry fix on Hainan (5213A) and later chips */
        if (srev >= AR5K_SREV_AR5213A)
@@ -268,7 +265,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        ret = ath5k_eeprom_init(ah);
        if (ret) {
                ATH5K_ERR(sc, "unable to init EEPROM\n");
-               goto err_free;
+               goto err;
        }
 
        ee = &ah->ah_capabilities.cap_eeprom;
@@ -310,16 +307,20 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        if (ret) {
                ATH5K_ERR(sc, "unable to get device capabilities: 0x%04x\n",
                        sc->pdev->device);
-               goto err_free;
+               goto err;
        }
 
        /* Crypto settings */
-       ah->ah_aes_support = srev >= AR5K_SREV_AR5212_V4 &&
-               (ee->ee_version >= AR5K_EEPROM_VERSION_5_0 &&
-                !AR5K_EEPROM_AES_DIS(ee->ee_misc5));
+       common->keymax = (sc->ah->ah_version == AR5K_AR5210 ?
+                         AR5K_KEYTABLE_SIZE_5210 : AR5K_KEYTABLE_SIZE_5211);
+
+       if (srev >= AR5K_SREV_AR5212_V4 &&
+           (ee->ee_version >= AR5K_EEPROM_VERSION_5_0 &&
+           !AR5K_EEPROM_AES_DIS(ee->ee_misc5)))
+               common->crypt_caps |= ATH_CRYPT_CAP_CIPHER_AESCCM;
 
        if (srev >= AR5K_SREV_AR2414) {
-               ah->ah_combined_mic = true;
+               common->crypt_caps |= ATH_CRYPT_CAP_MIC_COMBINED;
                AR5K_REG_ENABLE_BITS(ah, AR5K_MISC_MODE,
                        AR5K_MISC_MODE_COMBINED_MIC);
        }
@@ -329,7 +330,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
 
        /* Set BSSID to bcast address: ff:ff:ff:ff:ff:ff for now */
        memcpy(common->curbssid, ath_bcast_mac, ETH_ALEN);
-       ath5k_hw_set_associd(ah);
+       ath5k_hw_set_bssid(ah);
        ath5k_hw_set_opmode(ah, sc->opmode);
 
        ath5k_hw_rfgain_opt_init(ah);
@@ -340,8 +341,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        ath5k_hw_set_ledstate(ah, AR5K_LED_INIT);
 
        return 0;
-err_free:
-       kfree(ah);
+err:
        return ret;
 }