source: branches/backfire/package/mac80211/patches/522-ath9k_tx_power_init.patch @ 23733

Last change on this file since 23733 was 23733, checked in by nbd, 6 years ago

merge mac80211, iw, hostapd from trunk to backfire

File size: 3.8 KB
  • drivers/net/wireless/ath/ath9k/init.c

    a b err_hw: 
    650650        return ret; 
    651651} 
    652652 
     653static void ath9k_init_band_txpower(struct ath_softc *sc, int band) 
     654{ 
     655        struct ieee80211_supported_band *sband; 
     656        struct ieee80211_channel *chan; 
     657        struct ath_hw *ah = sc->sc_ah; 
     658        struct ath_regulatory *reg = ath9k_hw_regulatory(ah); 
     659        int i; 
     660 
     661        sband = &sc->sbands[band]; 
     662        for (i = 0; i < sband->n_channels; i++) { 
     663                chan = &sband->channels[i]; 
     664                ah->curchan = &ah->channels[chan->hw_value]; 
     665                ath9k_cmn_update_ichannel(ah->curchan, chan, NL80211_CHAN_HT20); 
     666                ath9k_hw_set_txpowerlimit(ah, MAX_RATE_POWER, true); 
     667                chan->max_power = reg->max_power_level / 2; 
     668        } 
     669} 
     670 
     671static void ath9k_init_txpower_limits(struct ath_softc *sc) 
     672{ 
     673        struct ath_hw *ah = sc->sc_ah; 
     674        struct ath9k_channel *curchan = ah->curchan; 
     675 
     676        if (ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ) 
     677                ath9k_init_band_txpower(sc, IEEE80211_BAND_2GHZ); 
     678        if (ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ) 
     679                ath9k_init_band_txpower(sc, IEEE80211_BAND_5GHZ); 
     680 
     681        ah->curchan = curchan; 
     682} 
     683 
    653684void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw) 
    654685{ 
    655686        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
    int ath9k_init_device(u16 devid, struct  
    765796        if (error != 0) 
    766797                goto error_rx; 
    767798 
     799        ath9k_init_txpower_limits(sc); 
     800 
    768801        /* Register with mac80211 */ 
    769802        error = ieee80211_register_hw(hw); 
    770803        if (error) 
  • drivers/net/wireless/ath/ath9k/common.c

    a b static u32 ath9k_get_extchanmode(struct  
    107107/* 
    108108 * Update internal channel flags. 
    109109 */ 
    110 void ath9k_cmn_update_ichannel(struct ieee80211_hw *hw, 
    111                                struct ath9k_channel *ichan) 
     110void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, 
     111                               struct ieee80211_channel *chan, 
     112                               enum nl80211_channel_type channel_type) 
    112113{ 
    113         struct ieee80211_channel *chan = hw->conf.channel; 
    114         struct ieee80211_conf *conf = &hw->conf; 
    115  
    116114        ichan->channel = chan->center_freq; 
    117115        ichan->chan = chan; 
    118116 
    void ath9k_cmn_update_ichannel(struct ie 
    124122                ichan->channelFlags = CHANNEL_5GHZ | CHANNEL_OFDM; 
    125123        } 
    126124 
    127         if (conf_is_ht(conf)) 
    128                 ichan->chanmode = ath9k_get_extchanmode(chan, 
    129                                                         conf->channel_type); 
     125        if (channel_type != NL80211_CHAN_NO_HT) 
     126                ichan->chanmode = ath9k_get_extchanmode(chan, channel_type); 
    130127} 
    131128EXPORT_SYMBOL(ath9k_cmn_update_ichannel); 
    132129 
    struct ath9k_channel *ath9k_cmn_get_curc 
    142139 
    143140        chan_idx = curchan->hw_value; 
    144141        channel = &ah->channels[chan_idx]; 
    145         ath9k_cmn_update_ichannel(hw, channel); 
     142        ath9k_cmn_update_ichannel(channel, curchan, hw->conf.channel_type); 
    146143 
    147144        return channel; 
    148145} 
  • drivers/net/wireless/ath/ath9k/common.h

    a b enum ath_stomp_type { 
    6262 
    6363int ath9k_cmn_padpos(__le16 frame_control); 
    6464int ath9k_cmn_get_hw_crypto_keytype(struct sk_buff *skb); 
    65 void ath9k_cmn_update_ichannel(struct ieee80211_hw *hw, 
    66                                struct ath9k_channel *ichan); 
     65void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, 
     66                               struct ieee80211_channel *chan, 
     67                               enum nl80211_channel_type channel_type); 
    6768struct ath9k_channel *ath9k_cmn_get_curchannel(struct ieee80211_hw *hw, 
    6869                                               struct ath_hw *ah); 
    6970int ath9k_cmn_count_streams(unsigned int chainmask, int max); 
  • drivers/net/wireless/ath/ath9k/htc_drv_main.c

    a b static int ath9k_htc_config(struct ieee8 
    14051405                ath_print(common, ATH_DBG_CONFIG, "Set channel: %d MHz\n", 
    14061406                          curchan->center_freq); 
    14071407 
    1408                 ath9k_cmn_update_ichannel(hw, &priv->ah->channels[pos]); 
     1408                ath9k_cmn_update_ichannel(&priv->ah->channels[pos], 
     1409                                          hw->conf.channel, 
     1410                                          hw->conf.channel_type); 
    14091411 
    14101412                if (ath9k_htc_set_channel(priv, hw, &priv->ah->channels[pos]) < 0) { 
    14111413                        ath_print(common, ATH_DBG_FATAL, 
Note: See TracBrowser for help on using the repository browser.