* [RFC 0/3] add TPC capability for AR9002 based chips
@ 2014-12-27 14:12 Lorenzo Bianconi
2014-12-27 14:12 ` [RFC 1/3] ath9k: add power per-rate tables for AR9002 chips Lorenzo Bianconi
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Lorenzo Bianconi @ 2014-12-27 14:12 UTC (permalink / raw)
To: linux-wireless; +Cc: nbd, thomas, adrian
This patchset adds TPC capability to ath9k for AR9002 based chips
*[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path
*[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables
*[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default
This pachset is based on Adrian Chadd's hints
(https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html)
Lorenzo Bianconi (3):
ath9k: add power per-rate tables for AR9002 chips
ath9k: add TPC to TX path for AR9002 based chips
ath9k: enable per-packet TPC on AR9002 based chips
drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath9k/debug.c | 5 --
drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++
drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++
drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++
drivers/net/wireless/ath/ath9k/hw.c | 3 +-
drivers/net/wireless/ath/ath9k/hw.h | 2 +
drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++----
8 files changed, 181 insertions(+), 18 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 10+ messages in thread* [RFC 1/3] ath9k: add power per-rate tables for AR9002 chips 2014-12-27 14:12 [RFC 0/3] add TPC capability for AR9002 based chips Lorenzo Bianconi @ 2014-12-27 14:12 ` Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 2/3] ath9k: add TPC to TX path for AR9002 based chips Lorenzo Bianconi ` (2 subsequent siblings) 3 siblings, 0 replies; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-27 14:12 UTC (permalink / raw) To: linux-wireless; +Cc: nbd, thomas, adrian Add TX power per-rate tables for MIMO/legacy modes for AR9002 based chips in order to cap the maximum TX power value per-rate in the TX descriptor path. Add TX power adjustments for HT40 mode, open loop CCK rates and eeprom power bias for AR9280 and later chips Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> --- drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ drivers/net/wireless/ath/ath9k/hw.h | 2 + 5 files changed, 125 insertions(+) diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c index 5829074..f273427 100644 --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c @@ -22,6 +22,21 @@ /* All code below is for AR5008, AR9001, AR9002 */ +#define AR5008_OFDM_RATES 8 +#define AR5008_HT_SS_RATES 8 +#define AR5008_HT_DS_RATES 8 + +#define AR5008_HT20_SHIFT 16 +#define AR5008_HT40_SHIFT 24 + +#define AR5008_11NA_OFDM_SHIFT 0 +#define AR5008_11NA_HT_SS_SHIFT 8 +#define AR5008_11NA_HT_DS_SHIFT 16 + +#define AR5008_11NG_OFDM_SHIFT 4 +#define AR5008_11NG_HT_SS_SHIFT 12 +#define AR5008_11NG_HT_DS_SHIFT 20 + static const int firstep_table[] = /* level: 0 1 2 3 4 5 6 7 8 */ { -4, -2, 0, 2, 4, 6, 8, 10, 12 }; /* lvl 0-8, default 2 */ @@ -1235,6 +1250,71 @@ static void ar5008_hw_set_radar_conf(struct ath_hw *ah) conf->radar_inband = 8; } +static void ar5008_hw_init_txpower_cck(struct ath_hw *ah, int16_t *rate_array) +{ +#define CCK_DELTA(x) ((OLC_FOR_AR9280_20_LATER) ? max((x) - 2, 0) : (x)) + ah->tx_power[0] = CCK_DELTA(rate_array[rate1l]); + ah->tx_power[1] = CCK_DELTA(min(rate_array[rate2l], + rate_array[rate2s])); + ah->tx_power[2] = CCK_DELTA(min(rate_array[rate5_5l], + rate_array[rate5_5s])); + ah->tx_power[3] = CCK_DELTA(min(rate_array[rate11l], + rate_array[rate11s])); +#undef CCK_DELTA +} + +static void ar5008_hw_init_txpower_ofdm(struct ath_hw *ah, int16_t *rate_array, + int offset) +{ + int i, idx = 0; + + for (i = offset; i < offset + AR5008_OFDM_RATES; i++) { + ah->tx_power[i] = rate_array[idx]; + idx++; + } +} + +static void ar5008_hw_init_txpower_ht(struct ath_hw *ah, int16_t *rate_array, + int ss_offset, int ds_offset, + bool is_40, int ht40_delta) +{ + int i, mcs_idx = (is_40) ? AR5008_HT40_SHIFT : AR5008_HT20_SHIFT; + + for (i = ss_offset; i < ss_offset + AR5008_HT_SS_RATES; i++) { + ah->tx_power[i] = rate_array[mcs_idx] + ht40_delta; + mcs_idx++; + } + memcpy(&ah->tx_power[ds_offset], &ah->tx_power[ss_offset], + AR5008_HT_SS_RATES); +} + +void ar5008_hw_init_rate_txpower(struct ath_hw *ah, int16_t *rate_array, + struct ath9k_channel *chan, int ht40_delta) +{ + if (IS_CHAN_5GHZ(chan)) { + ar5008_hw_init_txpower_ofdm(ah, rate_array, + AR5008_11NA_OFDM_SHIFT); + if (IS_CHAN_HT20(chan) || IS_CHAN_HT40(chan)) { + ar5008_hw_init_txpower_ht(ah, rate_array, + AR5008_11NA_HT_SS_SHIFT, + AR5008_11NA_HT_DS_SHIFT, + IS_CHAN_HT40(chan), + ht40_delta); + } + } else { + ar5008_hw_init_txpower_cck(ah, rate_array); + ar5008_hw_init_txpower_ofdm(ah, rate_array, + AR5008_11NG_OFDM_SHIFT); + if (IS_CHAN_HT20(chan) || IS_CHAN_HT40(chan)) { + ar5008_hw_init_txpower_ht(ah, rate_array, + AR5008_11NG_HT_SS_SHIFT, + AR5008_11NG_HT_DS_SHIFT, + IS_CHAN_HT40(chan), + ht40_delta); + } + } +} + int ar5008_hw_attach_phy_ops(struct ath_hw *ah) { struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c index 07b806c..e5a78d4 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c @@ -748,6 +748,20 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah, | ATH9K_POW_SM(ratesArray[rateDupCck], 0)); } + /* TPC initializations */ + if (ah->tpc_enabled) { + int ht40_delta; + + ht40_delta = (IS_CHAN_HT40(chan)) ? ht40PowerIncForPdadc : 0; + ar5008_hw_init_rate_txpower(ah, ratesArray, chan, ht40_delta); + /* Enable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, + MAX_RATE_POWER | AR_PHY_POWER_TX_RATE_MAX_TPC_ENABLE); + } else { + /* Disable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, MAX_RATE_POWER); + } + REGWRITE_BUFFER_FLUSH(ah); } diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c index 5ba1385..6ca33df 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c @@ -886,6 +886,21 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah, | ATH9K_POW_SM(ratesArray[rateDupOfdm], 8) | ATH9K_POW_SM(ratesArray[rateDupCck], 0)); } + + /* TPC initializations */ + if (ah->tpc_enabled) { + int ht40_delta; + + ht40_delta = (IS_CHAN_HT40(chan)) ? ht40PowerIncForPdadc : 0; + ar5008_hw_init_rate_txpower(ah, ratesArray, chan, ht40_delta); + /* Enable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, + MAX_RATE_POWER | AR_PHY_POWER_TX_RATE_MAX_TPC_ENABLE); + } else { + /* Disable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, MAX_RATE_POWER); + } + REGWRITE_BUFFER_FLUSH(ah); } diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c index 122b846..0980590 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c @@ -1332,6 +1332,20 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah, ATH9K_POW_SM(pModal->pwrDecreaseFor3Chain, 6) | ATH9K_POW_SM(pModal->pwrDecreaseFor2Chain, 0)); + /* TPC initializations */ + if (ah->tpc_enabled) { + int ht40_delta; + + ht40_delta = (IS_CHAN_HT40(chan)) ? ht40PowerIncForPdadc : 0; + ar5008_hw_init_rate_txpower(ah, ratesArray, chan, ht40_delta); + /* Enable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, + MAX_RATE_POWER | AR_PHY_POWER_TX_RATE_MAX_TPC_ENABLE); + } else { + /* Disable TPC */ + REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, MAX_RATE_POWER); + } + REGWRITE_BUFFER_FLUSH(ah); } diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 1cbd335..69a1222 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h @@ -1086,6 +1086,8 @@ bool ar9003_is_paprd_enabled(struct ath_hw *ah); void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); void ar9003_hw_init_rate_txpower(struct ath_hw *ah, u8 *rate_array, struct ath9k_channel *chan); +void ar5008_hw_init_rate_txpower(struct ath_hw *ah, int16_t *rate_array, + struct ath9k_channel *chan, int ht40_delta); /* Hardware family op attach helpers */ int ar5008_hw_attach_phy_ops(struct ath_hw *ah); -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC 2/3] ath9k: add TPC to TX path for AR9002 based chips 2014-12-27 14:12 [RFC 0/3] add TPC capability for AR9002 based chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 1/3] ath9k: add power per-rate tables for AR9002 chips Lorenzo Bianconi @ 2014-12-27 14:12 ` Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 3/3] ath9k: enable per-packet TPC on " Lorenzo Bianconi 2014-12-28 12:46 ` [RFC 0/3] add TPC capability for " Oleksij Rempel 3 siblings, 0 replies; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-27 14:12 UTC (permalink / raw) To: linux-wireless; +Cc: nbd, thomas, adrian Add TPC capability to TX descriptor path for AR9002 based chips. Scale per-packet TX power according to eeprom power bias, power adjustments for HT40 mode and open loop CCK rates. Cap per-packet TX power according to TX power per-rate tables Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> --- drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 52d63de..1cfe5f8 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -1097,24 +1097,65 @@ void ath_update_max_aggr_framelen(struct ath_softc *sc, int queue, int txop) } static u8 ath_get_rate_txpower(struct ath_softc *sc, struct ath_buf *bf, - u8 rateidx) + u8 rateidx, bool is_40, bool is_cck) { u8 max_power; + struct sk_buff *skb; + struct ath_frame_info *fi; + struct ieee80211_tx_info *info; struct ath_hw *ah = sc->sc_ah; if (sc->tx99_state) return MAX_RATE_POWER; + skb = bf->bf_mpdu; + fi = get_frame_info(skb); + info = IEEE80211_SKB_CB(skb); + if (!AR_SREV_9300_20_OR_LATER(ah)) { - /* ar9002 does not support TPC for the moment */ - return MAX_RATE_POWER; - } + int txpower = fi->tx_power; - if (!bf->bf_state.bfs_paprd) { - struct sk_buff *skb = bf->bf_mpdu; - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ath_frame_info *fi = get_frame_info(skb); + if (is_40) { + u8 power_ht40delta; + struct ar5416_eeprom_def *eep = &ah->eeprom.def; + + if (AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_2) { + bool is_2ghz; + struct modal_eep_header *pmodal; + is_2ghz = info->band == IEEE80211_BAND_2GHZ; + pmodal = &eep->modalHeader[is_2ghz]; + power_ht40delta = pmodal->ht40PowerIncForPdadc; + } else { + power_ht40delta = 2; + } + txpower += power_ht40delta; + } + + if (AR_SREV_9287(ah) || AR_SREV_9285(ah) || + AR_SREV_9271(ah)) { + txpower -= 2 * AR9287_PWR_TABLE_OFFSET_DB; + } else if (AR_SREV_9280_20_OR_LATER(ah)) { + s8 power_offset; + + power_offset = ah->eep_ops->get_eeprom(ah, + EEP_PWR_TABLE_OFFSET); + txpower -= 2 * power_offset; + } + + if (OLC_FOR_AR9280_20_LATER && is_cck) + txpower -= 2; + + txpower = max(txpower, 0); + max_power = min_t(ah->tx_power[rateidx], (u8)txpower); + + /* XXX: clamp minimum TX power at 1 for AR9160 since if + * max_power is set to 0, frames are transmitted at max + * TX power + */ + if (!max_power && !AR_SREV_9280_20_OR_LATER(ah)) + max_power = 1; + } else if (!bf->bf_state.bfs_paprd) { if (rateidx < 8 && (info->flags & IEEE80211_TX_CTL_STBC)) max_power = min(ah->tx_power_stbc[rateidx], fi->tx_power); @@ -1152,7 +1193,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, info->rtscts_rate = fi->rtscts_rate; for (i = 0; i < ARRAY_SIZE(bf->rates); i++) { - bool is_40, is_sgi, is_sp; + bool is_40, is_sgi, is_sp, is_cck; int phy; if (!rates[i].count || (rates[i].idx < 0)) @@ -1198,7 +1239,8 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, if (rix < 8 && (tx_info->flags & IEEE80211_TX_CTL_STBC)) info->rates[i].RateFlags |= ATH9K_RATESERIES_STBC; - info->txpower[i] = ath_get_rate_txpower(sc, bf, rix); + info->txpower[i] = ath_get_rate_txpower(sc, bf, rix, + is_40, false); continue; } @@ -1227,7 +1269,9 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, info->rates[i].PktDuration = ath9k_hw_computetxtime(sc->sc_ah, phy, rate->bitrate * 100, len, rix, is_sp); - info->txpower[i] = ath_get_rate_txpower(sc, bf, rix); + is_cck = IS_CCK_RATE(info->rates[i].Rate); + info->txpower[i] = ath_get_rate_txpower(sc, bf, rix, false, + is_cck); } /* For AR5416 - RTS cannot be followed by a frame larger than 8K */ -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC 3/3] ath9k: enable per-packet TPC on AR9002 based chips 2014-12-27 14:12 [RFC 0/3] add TPC capability for AR9002 based chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 1/3] ath9k: add power per-rate tables for AR9002 chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 2/3] ath9k: add TPC to TX path for AR9002 based chips Lorenzo Bianconi @ 2014-12-27 14:12 ` Lorenzo Bianconi 2014-12-28 12:46 ` [RFC 0/3] add TPC capability for " Oleksij Rempel 3 siblings, 0 replies; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-27 14:12 UTC (permalink / raw) To: linux-wireless; +Cc: nbd, thomas, adrian Enable per-packet TPC on AR9002 based chips by default Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> --- drivers/net/wireless/ath/ath9k/debug.c | 5 ----- drivers/net/wireless/ath/ath9k/hw.c | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index c43e2ad..a52cbf13 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -1150,11 +1150,6 @@ static ssize_t write_file_tpc(struct file *file, const char __user *user_buf, ssize_t len; bool tpc_enabled; - if (!AR_SREV_9300_20_OR_LATER(ah)) { - /* ar9002 does not support TPC for the moment */ - return -EOPNOTSUPP; - } - len = min(count, sizeof(buf) - 1); if (copy_from_user(buf, user_buf, len)) return -EFAULT; diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 258c4d2..e2e4441 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -422,8 +422,7 @@ static void ath9k_hw_init_defaults(struct ath_hw *ah) ah->power_mode = ATH9K_PM_UNDEFINED; ah->htc_reset_init = true; - /* ar9002 does not support TPC for the moment */ - ah->tpc_enabled = !!AR_SREV_9300_20_OR_LATER(ah); + ah->tpc_enabled = true; ah->ani_function = ATH9K_ANI_ALL; if (!AR_SREV_9300_20_OR_LATER(ah)) -- 2.1.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-27 14:12 [RFC 0/3] add TPC capability for AR9002 based chips Lorenzo Bianconi ` (2 preceding siblings ...) 2014-12-27 14:12 ` [RFC 3/3] ath9k: enable per-packet TPC on " Lorenzo Bianconi @ 2014-12-28 12:46 ` Oleksij Rempel 2014-12-28 14:32 ` Lorenzo Bianconi 3 siblings, 1 reply; 10+ messages in thread From: Oleksij Rempel @ 2014-12-28 12:46 UTC (permalink / raw) To: Lorenzo Bianconi, linux-wireless; +Cc: nbd, thomas, adrian [-- Attachment #1: Type: text/plain, Size: 1344 bytes --] Hi, can you please describe some testcases for you patches. Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: > This patchset adds TPC capability to ath9k for AR9002 based chips > > *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path > *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables > *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default > > This pachset is based on Adrian Chadd's hints > (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) > > Lorenzo Bianconi (3): > ath9k: add power per-rate tables for AR9002 chips > ath9k: add TPC to TX path for AR9002 based chips > ath9k: enable per-packet TPC on AR9002 based chips > > drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ > drivers/net/wireless/ath/ath9k/debug.c | 5 -- > drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ > drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ > drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ > drivers/net/wireless/ath/ath9k/hw.c | 3 +- > drivers/net/wireless/ath/ath9k/hw.h | 2 + > drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- > 8 files changed, 181 insertions(+), 18 deletions(-) > -- Regards, Oleksij [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 213 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-28 12:46 ` [RFC 0/3] add TPC capability for " Oleksij Rempel @ 2014-12-28 14:32 ` Lorenzo Bianconi 2014-12-29 13:35 ` Oleksij Rempel 0 siblings, 1 reply; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-28 14:32 UTC (permalink / raw) To: Oleksij Rempel; +Cc: linux-wireless, Felix Fietkau, Thomas Hühn, adrian > Hi, can you please describe some testcases for you patches. > This patchset adds Transmission Power Control (TPC) for AR9002 based chips. IOW it enables the capability of correct TX power on per-packet basis. It is preparatory for upcoming Thomas's joint rate and power control algorithm. Regards, Lorenzo > Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: >> This patchset adds TPC capability to ath9k for AR9002 based chips >> >> *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path >> *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables >> *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default >> >> This pachset is based on Adrian Chadd's hints >> (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) >> >> Lorenzo Bianconi (3): >> ath9k: add power per-rate tables for AR9002 chips >> ath9k: add TPC to TX path for AR9002 based chips >> ath9k: enable per-packet TPC on AR9002 based chips >> >> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ >> drivers/net/wireless/ath/ath9k/debug.c | 5 -- >> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ >> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ >> drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ >> drivers/net/wireless/ath/ath9k/hw.c | 3 +- >> drivers/net/wireless/ath/ath9k/hw.h | 2 + >> drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- >> 8 files changed, 181 insertions(+), 18 deletions(-) >> > > > -- > Regards, > Oleksij > -- UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-28 14:32 ` Lorenzo Bianconi @ 2014-12-29 13:35 ` Oleksij Rempel 2014-12-29 14:18 ` Lorenzo Bianconi 0 siblings, 1 reply; 10+ messages in thread From: Oleksij Rempel @ 2014-12-29 13:35 UTC (permalink / raw) To: Lorenzo Bianconi; +Cc: linux-wireless, Felix Fietkau, Thomas Hühn, adrian [-- Attachment #1: Type: text/plain, Size: 1843 bytes --] Am 28.12.2014 um 15:32 schrieb Lorenzo Bianconi: >> Hi, can you please describe some testcases for you patches. >> > > This patchset adds Transmission Power Control (TPC) for AR9002 based > chips. IOW it enables the capability of correct TX power on per-packet > basis. It is preparatory for upcoming Thomas's joint rate and power > control > algorithm. Do you mean, right now there is no way to test your patches? > Regards, > Lorenzo > >> Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: >>> This patchset adds TPC capability to ath9k for AR9002 based chips >>> >>> *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path >>> *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables >>> *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default >>> >>> This pachset is based on Adrian Chadd's hints >>> (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) >>> >>> Lorenzo Bianconi (3): >>> ath9k: add power per-rate tables for AR9002 chips >>> ath9k: add TPC to TX path for AR9002 based chips >>> ath9k: enable per-packet TPC on AR9002 based chips >>> >>> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ >>> drivers/net/wireless/ath/ath9k/debug.c | 5 -- >>> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ >>> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ >>> drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ >>> drivers/net/wireless/ath/ath9k/hw.c | 3 +- >>> drivers/net/wireless/ath/ath9k/hw.h | 2 + >>> drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- >>> 8 files changed, 181 insertions(+), 18 deletions(-) >>> >> >> >> -- >> Regards, >> Oleksij >> > > > -- Regards, Oleksij [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 213 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-29 13:35 ` Oleksij Rempel @ 2014-12-29 14:18 ` Lorenzo Bianconi 2014-12-30 10:18 ` Oleksij Rempel 0 siblings, 1 reply; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-29 14:18 UTC (permalink / raw) To: Oleksij Rempel; +Cc: linux-wireless, Felix Fietkau, Thomas Hühn, adrian > Am 28.12.2014 um 15:32 schrieb Lorenzo Bianconi: >>> Hi, can you please describe some testcases for you patches. >>> >> >> This patchset adds Transmission Power Control (TPC) for AR9002 based >> chips. IOW it enables the capability of correct TX power on per-packet >> basis. It is preparatory for upcoming Thomas's joint rate and power >> control >> algorithm. > > Do you mean, right now there is no way to test your patches? > I have just added TPC support to ath9k. In order to exploit that hw feature we have to wait Thomas's algorithm :). However in order to test patches you can set tx_power field of ath_frame_info data structure in setup_frame_info() to a different value (for the moment it is set to MAX_RATE_POWER) and measure the RX power on the other end of the link (this is what I did). Regards, Lorenzo > >> Regards, >> Lorenzo >> >>> Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: >>>> This patchset adds TPC capability to ath9k for AR9002 based chips >>>> >>>> *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path >>>> *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables >>>> *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default >>>> >>>> This pachset is based on Adrian Chadd's hints >>>> (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) >>>> >>>> Lorenzo Bianconi (3): >>>> ath9k: add power per-rate tables for AR9002 chips >>>> ath9k: add TPC to TX path for AR9002 based chips >>>> ath9k: enable per-packet TPC on AR9002 based chips >>>> >>>> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ >>>> drivers/net/wireless/ath/ath9k/debug.c | 5 -- >>>> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ >>>> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ >>>> drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ >>>> drivers/net/wireless/ath/ath9k/hw.c | 3 +- >>>> drivers/net/wireless/ath/ath9k/hw.h | 2 + >>>> drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- >>>> 8 files changed, 181 insertions(+), 18 deletions(-) >>>> >>> >>> >>> -- >>> Regards, >>> Oleksij >>> >> >> >> > > > -- > Regards, > Oleksij > -- UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-29 14:18 ` Lorenzo Bianconi @ 2014-12-30 10:18 ` Oleksij Rempel 2014-12-30 11:00 ` Lorenzo Bianconi 0 siblings, 1 reply; 10+ messages in thread From: Oleksij Rempel @ 2014-12-30 10:18 UTC (permalink / raw) To: Lorenzo Bianconi; +Cc: linux-wireless, Felix Fietkau, Thomas Hühn, adrian [-- Attachment #1: Type: text/plain, Size: 2543 bytes --] Am 29.12.2014 um 15:18 schrieb Lorenzo Bianconi: >> Am 28.12.2014 um 15:32 schrieb Lorenzo Bianconi: >>>> Hi, can you please describe some testcases for you patches. >>>> >>> >>> This patchset adds Transmission Power Control (TPC) for AR9002 based >>> chips. IOW it enables the capability of correct TX power on per-packet >>> basis. It is preparatory for upcoming Thomas's joint rate and power >>> control >>> algorithm. >> >> Do you mean, right now there is no way to test your patches? >> > > I have just added TPC support to ath9k. In order to exploit that hw > feature we have to wait Thomas's algorithm :). > However in order to test patches you can set tx_power field of > ath_frame_info data structure in setup_frame_info() to a different > value (for the moment it is set to MAX_RATE_POWER) and measure the RX > power on the other end of the link (this is what I did). Ok, thank you. We will talk with Adrian how to mesure it at home. > > Regards, > Lorenzo > >> >>> Regards, >>> Lorenzo >>> >>>> Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: >>>>> This patchset adds TPC capability to ath9k for AR9002 based chips >>>>> >>>>> *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path >>>>> *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables >>>>> *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default >>>>> >>>>> This pachset is based on Adrian Chadd's hints >>>>> (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) >>>>> >>>>> Lorenzo Bianconi (3): >>>>> ath9k: add power per-rate tables for AR9002 chips >>>>> ath9k: add TPC to TX path for AR9002 based chips >>>>> ath9k: enable per-packet TPC on AR9002 based chips >>>>> >>>>> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ >>>>> drivers/net/wireless/ath/ath9k/debug.c | 5 -- >>>>> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ >>>>> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ >>>>> drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ >>>>> drivers/net/wireless/ath/ath9k/hw.c | 3 +- >>>>> drivers/net/wireless/ath/ath9k/hw.h | 2 + >>>>> drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- >>>>> 8 files changed, 181 insertions(+), 18 deletions(-) >>>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Oleksij >>>> >>> >>> >>> >> >> >> -- >> Regards, >> Oleksij >> > > > -- Regards, Oleksij [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 213 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 0/3] add TPC capability for AR9002 based chips 2014-12-30 10:18 ` Oleksij Rempel @ 2014-12-30 11:00 ` Lorenzo Bianconi 0 siblings, 0 replies; 10+ messages in thread From: Lorenzo Bianconi @ 2014-12-30 11:00 UTC (permalink / raw) To: Oleksij Rempel; +Cc: linux-wireless, Felix Fietkau, Thomas Hühn, adrian > Am 29.12.2014 um 15:18 schrieb Lorenzo Bianconi: >>> Am 28.12.2014 um 15:32 schrieb Lorenzo Bianconi: >>>>> Hi, can you please describe some testcases for you patches. >>>>> >>>> >>>> This patchset adds Transmission Power Control (TPC) for AR9002 based >>>> chips. IOW it enables the capability of correct TX power on per-packet >>>> basis. It is preparatory for upcoming Thomas's joint rate and power >>>> control >>>> algorithm. >>> >>> Do you mean, right now there is no way to test your patches? >>> >> >> I have just added TPC support to ath9k. In order to exploit that hw >> feature we have to wait Thomas's algorithm :). >> However in order to test patches you can set tx_power field of >> ath_frame_info data structure in setup_frame_info() to a different >> value (for the moment it is set to MAX_RATE_POWER) and measure the RX >> power on the other end of the link (this is what I did). > > Ok, thank you. > We will talk with Adrian how to mesure it at home. > You can get a raw measure of received signal strenght from radiotap header of sniffed frames on RX side. Regards, Lorenzo >> >> Regards, >> Lorenzo >> >>> >>>> Regards, >>>> Lorenzo >>>> >>>>> Am 27.12.2014 um 15:12 schrieb Lorenzo Bianconi: >>>>>> This patchset adds TPC capability to ath9k for AR9002 based chips >>>>>> >>>>>> *[RFC 1/3]: add TX power per-rate tables to cap TX power in TX descriptor path >>>>>> *[RFC 2/3]: cap per-packet TX power according to TX power per-rate tables >>>>>> *[RFC 3/3]: enable per-packet TPC on AR9002 based chips by default >>>>>> >>>>>> This pachset is based on Adrian Chadd's hints >>>>>> (https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg10396.html) >>>>>> >>>>>> Lorenzo Bianconi (3): >>>>>> ath9k: add power per-rate tables for AR9002 chips >>>>>> ath9k: add TPC to TX path for AR9002 based chips >>>>>> ath9k: enable per-packet TPC on AR9002 based chips >>>>>> >>>>>> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 80 ++++++++++++++++++++++++++++ >>>>>> drivers/net/wireless/ath/ath9k/debug.c | 5 -- >>>>>> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 14 +++++ >>>>>> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 15 ++++++ >>>>>> drivers/net/wireless/ath/ath9k/eeprom_def.c | 14 +++++ >>>>>> drivers/net/wireless/ath/ath9k/hw.c | 3 +- >>>>>> drivers/net/wireless/ath/ath9k/hw.h | 2 + >>>>>> drivers/net/wireless/ath/ath9k/xmit.c | 66 +++++++++++++++++++---- >>>>>> 8 files changed, 181 insertions(+), 18 deletions(-) >>>>>> >>>>> >>>>> >>>>> -- >>>>> Regards, >>>>> Oleksij >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Regards, >>> Oleksij >>> >> >> >> > > > -- > Regards, > Oleksij > -- UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-12-30 11:00 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-12-27 14:12 [RFC 0/3] add TPC capability for AR9002 based chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 1/3] ath9k: add power per-rate tables for AR9002 chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 2/3] ath9k: add TPC to TX path for AR9002 based chips Lorenzo Bianconi 2014-12-27 14:12 ` [RFC 3/3] ath9k: enable per-packet TPC on " Lorenzo Bianconi 2014-12-28 12:46 ` [RFC 0/3] add TPC capability for " Oleksij Rempel 2014-12-28 14:32 ` Lorenzo Bianconi 2014-12-29 13:35 ` Oleksij Rempel 2014-12-29 14:18 ` Lorenzo Bianconi 2014-12-30 10:18 ` Oleksij Rempel 2014-12-30 11:00 ` Lorenzo Bianconi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).