Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .

Ticket #201: madwifi-suspend-initkeytable.2.diff

File madwifi-suspend-initkeytable.2.diff, 2.5 kB (added by dns@somacoma.net, 13 years ago)

signed off

  • ath/if_ath.c

    old new  
    123123 
    124124static int ath_stop_locked(struct net_device *); 
    125125static int ath_stop(struct net_device *); 
    126 #if 0 
    127126static void ath_initkeytable(struct ath_softc *); 
    128 #endif 
    129127static int ath_key_alloc(struct ieee80211vap *, const struct ieee80211_key *); 
    130128static int ath_key_delete(struct ieee80211vap *, const struct ieee80211_key *, 
    131129        struct ieee80211_node *); 
     
    13071305        struct ath_softc *sc = dev->priv; 
    13081306 
    13091307        DPRINTF(sc, ATH_DEBUG_ANY, "%s: flags %x\n", __func__, dev->flags); 
    1310         ath_stop(dev); 
     1308        /* ath_stop(dev); */ 
    13111309} 
    13121310 
    13131311void 
     
    13161314        struct ath_softc *sc = dev->priv; 
    13171315 
    13181316        DPRINTF(sc, ATH_DEBUG_ANY, "%s: flags %x\n", __func__, dev->flags); 
    1319         ath_init(dev); 
     1317        /* ath_init(dev); */ 
     1318        ath_reset(dev); 
     1319        ath_initkeytable(sc); 
    13201320} 
    13211321 
    13221322void 
     
    19171917         * in the frame output path; there's nothing to do 
    19181918         * here except setup the interrupt mask. 
    19191919         */ 
    1920 #if 0 
    1921         ath_initkeytable(sc);           /* XXX still needed? */ 
    1922 #endif 
     1920        ath_initkeytable(sc); 
     1921 
    19231922        if (ath_startrecv(sc) != 0) { 
    19241923                printk("%s: unable to start recv logic\n", dev->name); 
    19251924                error = -EIO; 
     
    19571956        return error; 
    19581957} 
    19591958 
     1959static void 
     1960ath_initkeytable(struct ath_softc *sc) 
     1961{ 
     1962        struct ieee80211com *ic = &sc->sc_ic; 
     1963        struct ieee80211vap *vap; 
     1964        struct ath_hal *ah = sc->sc_ah; 
     1965        int i; 
     1966 
     1967        TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { 
     1968                for (i = 0; i < IEEE80211_WEP_NKID; i++) { 
     1969                        struct ieee80211_key *k = &vap->iv_nw_keys[i]; 
     1970                
     1971                        if (k->wk_keylen == 0) 
     1972                                ath_hal_keyreset(ah, i); 
     1973                        else 
     1974                                ath_key_set(vap, k, vap->iv_bss->ni_macaddr); 
     1975                } 
     1976        } 
     1977} 
     1978 
    19601979/* Caller must lock ATH_LOCK  
    19611980 * 
    19621981 * Context: softIRQ