• Remi Pommarel's avatar
    ath9k: Handle txpower changes even when TPC is disabled · 968ae2ca
    Remi Pommarel authored
    When TPC is disabled IEEE80211_CONF_CHANGE_POWER event can be handled to
    reconfigure HW's maximum txpower.
    
    This fixes 0dBm txpower setting when user attaches to an interface for
    the first time with the following scenario:
    
    ieee80211_do_open()
        ath9k_add_interface()
            ath9k_set_txpower() /* Set TX power with not yet initialized
                                   sc->hw->conf.power_level */
    
        ieee80211_hw_config() /* Iniatilize sc->hw->conf.power_level and
                                 raise IEEE80211_CONF_CHANGE_POWER */
    
        ath9k_config() /* IEEE80211_CONF_CHANGE_POWER is ignored */
    
    This issue can be reproduced with the following:
    
      $ modprobe -r ath9k
      $ modprobe ath9k
      $ wpa_supplicant -i wlan0 -c /tmp/wpa.conf &
      $ iw dev /* Here TX power is either 0 or 3 depending on RF chain */
      $ killall wpa_supplicant
      $ iw dev /* TX power goes back to calibrated value and subsequent
                  calls will be fine */
    
    Fixes: 283dd119 ("ath9k: add per-vif TX power capability")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarRemi Pommarel <repk@triplefau.lt>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    968ae2ca
main.c 65.4 KB