Commit bc7e1be7 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath9k: Move txpower limit to channel context

parent fbbcd146
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -36,10 +36,6 @@ extern int ath9k_modparam_nohwcrypt;
extern int led_blink;
extern bool is_ath9k_unloaded;

struct ath_config {
	u16 txpowlimit;
};

/*************************/
/* Descriptor Management */
/*************************/
@@ -328,6 +324,7 @@ struct ath_rx {
struct ath_chanctx {
	struct cfg80211_chan_def chandef;
	struct list_head vifs;
	u16 txpower;
	bool offchannel;
};

@@ -753,7 +750,6 @@ struct ath_softc {
	short nvifs;
	unsigned long ps_usecount;

	struct ath_config config;
	struct ath_rx rx;
	struct ath_tx tx;
	struct ath_beacon beacon;
+1 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ void ath_chanctx_init(struct ath_softc *sc)
		ctx = &sc->chanctx[i];
		cfg80211_chandef_create(&ctx->chandef, chan, NL80211_CHAN_HT20);
		INIT_LIST_HEAD(&ctx->vifs);
		ctx->txpower = ATH_TXPOWER_MAX;
	}
	sc->cur_chan = &sc->chanctx[0];
}
+2 −3
Original line number Diff line number Diff line
@@ -169,9 +169,9 @@ static void ath9k_reg_notifier(struct wiphy *wiphy,

	/* Set tx power */
	if (ah->curchan) {
		sc->config.txpowlimit = 2 * ah->curchan->chan->max_power;
		sc->cur_chan->txpower = 2 * ah->curchan->chan->max_power;
		ath9k_ps_wakeup(sc);
		ath9k_hw_set_txpowerlimit(ah, sc->config.txpowlimit, false);
		ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false);
		sc->curtxpow = ath9k_hw_regulatory(ah)->power_limit;
		/* synchronize DFS detector if regulatory domain changed */
		if (sc->dfs_detector != NULL)
@@ -335,7 +335,6 @@ static void ath9k_init_misc(struct ath_softc *sc)
	setup_timer(&common->ani.timer, ath_ani_calibrate, (unsigned long)sc);

	common->last_rssi = ATH_RSSI_DUMMY_MARKER;
	sc->config.txpowlimit = ATH_TXPOWER_MAX;
	memcpy(common->bssidmask, ath_bcast_mac, ETH_ALEN);
	sc->beacon.slottime = ATH9K_SLOT_TIME_9;

+3 −3
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
	}

	ath9k_cmn_update_txpow(ah, sc->curtxpow,
			       sc->config.txpowlimit, &sc->curtxpow);
			       sc->cur_chan->txpower, &sc->curtxpow);

	clear_bit(ATH_OP_HW_RESET, &common->op_flags);
	ath9k_hw_set_interrupts(ah);
@@ -1315,9 +1315,9 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)

	if (changed & IEEE80211_CONF_CHANGE_POWER) {
		ath_dbg(common, CONFIG, "Set power: %d\n", conf->power_level);
		sc->config.txpowlimit = 2 * conf->power_level;
		sc->cur_chan->txpower = 2 * conf->power_level;
		ath9k_cmn_update_txpow(ah, sc->curtxpow,
				       sc->config.txpowlimit, &sc->curtxpow);
				       sc->cur_chan->txpower, &sc->curtxpow);
	}

	mutex_unlock(&sc->mutex);
+1 −1
Original line number Diff line number Diff line
@@ -720,7 +720,7 @@ void ath9k_mci_set_txpower(struct ath_softc *sc, bool setchannel,
		mci_hw->concur_tx = concur_tx;

	if (old_concur_tx != mci_hw->concur_tx)
		ath9k_hw_set_txpowerlimit(ah, sc->config.txpowlimit, false);
		ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false);
}

static void ath9k_mci_stomp_audio(struct ath_softc *sc)