diff options
| author | Christian Lamparter <chunkeey@web.de> | 2008-09-06 08:25:53 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2008-09-11 15:53:32 -0400 |
| commit | 09adf284039f896401df8ea219ee1d13e80333a8 (patch) | |
| tree | 3d9aa675915304ad6c2c23d33bde475d93e9bd2c | |
| parent | cc6de669f648bc8820f1cf93ee311eb4eaab9fc5 (diff) | |
p54: control output power levels
I hope this patch is enough to cover at least the basic requirements of IEEE 802.11h's TPC.
Signed-off-by: Christian Lamparter <chunkeey@web.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | drivers/net/wireless/p54/p54.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54common.c | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h index 370202f6de2c..1d0704fe146f 100644 --- a/drivers/net/wireless/p54/p54.h +++ b/drivers/net/wireless/p54/p54.h | |||
| @@ -88,6 +88,7 @@ struct p54_common { | |||
| 88 | void *cached_vdcf; | 88 | void *cached_vdcf; |
| 89 | unsigned int fw_var; | 89 | unsigned int fw_var; |
| 90 | unsigned int fw_interface; | 90 | unsigned int fw_interface; |
| 91 | unsigned int output_power; | ||
| 91 | u32 tsf_low32; | 92 | u32 tsf_low32; |
| 92 | u32 tsf_high32; | 93 | u32 tsf_high32; |
| 93 | struct ieee80211_tx_queue_stats tx_stats[8]; | 94 | struct ieee80211_tx_queue_stats tx_stats[8]; |
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 670d7ad4120b..7ec695ca9ea4 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
| @@ -800,7 +800,7 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
| 800 | txhdr->hw_queue = skb_get_queue_mapping(skb) + 4; | 800 | txhdr->hw_queue = skb_get_queue_mapping(skb) + 4; |
| 801 | txhdr->tx_antenna = (info->antenna_sel_tx == 0) ? | 801 | txhdr->tx_antenna = (info->antenna_sel_tx == 0) ? |
| 802 | 2 : info->antenna_sel_tx - 1; | 802 | 2 : info->antenna_sel_tx - 1; |
| 803 | txhdr->output_power = 0x7f; // HW Maximum | 803 | txhdr->output_power = priv->output_power; |
| 804 | txhdr->cts_rate = (info->flags & IEEE80211_TX_CTL_NO_ACK) ? | 804 | txhdr->cts_rate = (info->flags & IEEE80211_TX_CTL_NO_ACK) ? |
| 805 | 0 : cts_rate; | 805 | 0 : cts_rate; |
| 806 | if (padding) | 806 | if (padding) |
| @@ -1154,6 +1154,7 @@ static int p54_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | |||
| 1154 | mutex_lock(&priv->conf_mutex); | 1154 | mutex_lock(&priv->conf_mutex); |
| 1155 | priv->rx_antenna = (conf->antenna_sel_rx == 0) ? | 1155 | priv->rx_antenna = (conf->antenna_sel_rx == 0) ? |
| 1156 | 2 : conf->antenna_sel_tx - 1; | 1156 | 2 : conf->antenna_sel_tx - 1; |
| 1157 | priv->output_power = conf->power_level << 2; | ||
| 1157 | ret = p54_set_freq(dev, cpu_to_le16(conf->channel->center_freq)); | 1158 | ret = p54_set_freq(dev, cpu_to_le16(conf->channel->center_freq)); |
| 1158 | p54_set_vdcf(dev); | 1159 | p54_set_vdcf(dev); |
| 1159 | mutex_unlock(&priv->conf_mutex); | 1160 | mutex_unlock(&priv->conf_mutex); |
