aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965-rs.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965-rs.c53
1 files changed, 27 insertions, 26 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
index 4b46226ff350..7d7ce7489ab5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
@@ -39,6 +39,7 @@
39#include "../net/mac80211/ieee80211_rate.h" 39#include "../net/mac80211/ieee80211_rate.h"
40 40
41#include "iwl-4965.h" 41#include "iwl-4965.h"
42#include "iwl-core.h"
42#include "iwl-helpers.h" 43#include "iwl-helpers.h"
43 44
44#define RS_NAME "iwl-4965-rs" 45#define RS_NAME "iwl-4965-rs"
@@ -162,11 +163,11 @@ struct iwl4965_lq_sta {
162 struct dentry *rs_sta_dbgfs_tx_agg_tid_en_file; 163 struct dentry *rs_sta_dbgfs_tx_agg_tid_en_file;
163#endif 164#endif
164 struct iwl4965_rate dbg_fixed; 165 struct iwl4965_rate dbg_fixed;
165 struct iwl4965_priv *drv; 166 struct iwl_priv *drv;
166#endif 167#endif
167}; 168};
168 169
169static void rs_rate_scale_perform(struct iwl4965_priv *priv, 170static void rs_rate_scale_perform(struct iwl_priv *priv,
170 struct net_device *dev, 171 struct net_device *dev,
171 struct ieee80211_hdr *hdr, 172 struct ieee80211_hdr *hdr,
172 struct sta_info *sta); 173 struct sta_info *sta);
@@ -229,8 +230,8 @@ static s32 expected_tpt_mimo40MHzSGI[IWL_RATE_COUNT] = {
229 0, 0, 0, 0, 131, 131, 191, 222, 242, 270, 284, 289, 293 230 0, 0, 0, 0, 131, 131, 191, 222, 242, 270, 284, 289, 293
230}; 231};
231 232
232static int iwl4965_lq_sync_callback(struct iwl4965_priv *priv, 233static int iwl4965_lq_sync_callback(struct iwl_priv *priv,
233 struct iwl4965_cmd *cmd, struct sk_buff *skb) 234 struct iwl_cmd *cmd, struct sk_buff *skb)
234{ 235{
235 /*We didn't cache the SKB; let the caller free it */ 236 /*We didn't cache the SKB; let the caller free it */
236 return 1; 237 return 1;
@@ -241,13 +242,13 @@ static inline u8 iwl4965_rate_get_rate(u32 rate_n_flags)
241 return (u8)(rate_n_flags & 0xFF); 242 return (u8)(rate_n_flags & 0xFF);
242} 243}
243 244
244static int rs_send_lq_cmd(struct iwl4965_priv *priv, 245static int rs_send_lq_cmd(struct iwl_priv *priv,
245 struct iwl4965_link_quality_cmd *lq, u8 flags) 246 struct iwl4965_link_quality_cmd *lq, u8 flags)
246{ 247{
247#ifdef CONFIG_IWL4965_DEBUG 248#ifdef CONFIG_IWLWIFI_DEBUG
248 int i; 249 int i;
249#endif 250#endif
250 struct iwl4965_host_cmd cmd = { 251 struct iwl_host_cmd cmd = {
251 .id = REPLY_TX_LINK_QUALITY_CMD, 252 .id = REPLY_TX_LINK_QUALITY_CMD,
252 .len = sizeof(struct iwl4965_link_quality_cmd), 253 .len = sizeof(struct iwl4965_link_quality_cmd),
253 .meta.flags = flags, 254 .meta.flags = flags,
@@ -265,7 +266,7 @@ static int rs_send_lq_cmd(struct iwl4965_priv *priv,
265 IWL_DEBUG_RATE("lq dta 0x%X 0x%X\n", 266 IWL_DEBUG_RATE("lq dta 0x%X 0x%X\n",
266 lq->general_params.single_stream_ant_msk, 267 lq->general_params.single_stream_ant_msk,
267 lq->general_params.dual_stream_ant_msk); 268 lq->general_params.dual_stream_ant_msk);
268#ifdef CONFIG_IWL4965_DEBUG 269#ifdef CONFIG_IWLWIFI_DEBUG
269 for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++) 270 for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++)
270 IWL_DEBUG_RATE("lq index %d 0x%X\n", 271 IWL_DEBUG_RATE("lq index %d 0x%X\n",
271 i, lq->rs_table[i].rate_n_flags); 272 i, lq->rs_table[i].rate_n_flags);
@@ -276,7 +277,7 @@ static int rs_send_lq_cmd(struct iwl4965_priv *priv,
276 277
277 if (iwl4965_is_associated(priv) && priv->assoc_station_added && 278 if (iwl4965_is_associated(priv) && priv->assoc_station_added &&
278 priv->lq_mngr.lq_ready) 279 priv->lq_mngr.lq_ready)
279 return iwl4965_send_cmd(priv, &cmd); 280 return iwl_send_cmd(priv, &cmd);
280 281
281 return 0; 282 return 0;
282} 283}
@@ -388,7 +389,7 @@ static u32 rs_tl_get_load(struct iwl4965_lq_sta *lq_data, u8 tid)
388 return tl->total; 389 return tl->total;
389} 390}
390 391
391static void rs_tl_turn_on_agg_for_tid(struct iwl4965_priv *priv, 392static void rs_tl_turn_on_agg_for_tid(struct iwl_priv *priv,
392 struct iwl4965_lq_sta *lq_data, u8 tid, 393 struct iwl4965_lq_sta *lq_data, u8 tid,
393 struct sta_info *sta) 394 struct sta_info *sta)
394{ 395{
@@ -407,7 +408,7 @@ static void rs_tl_turn_on_agg_for_tid(struct iwl4965_priv *priv,
407 } 408 }
408} 409}
409 410
410static void rs_tl_turn_on_agg(struct iwl4965_priv *priv, u8 tid, 411static void rs_tl_turn_on_agg(struct iwl_priv *priv, u8 tid,
411 struct iwl4965_lq_sta *lq_data, 412 struct iwl4965_lq_sta *lq_data,
412 struct sta_info *sta) 413 struct sta_info *sta)
413{ 414{
@@ -658,7 +659,7 @@ static inline void rs_toggle_antenna(struct iwl4965_rate *new_rate,
658 } 659 }
659} 660}
660 661
661static inline u8 rs_use_green(struct iwl4965_priv *priv, 662static inline u8 rs_use_green(struct iwl_priv *priv,
662 struct ieee80211_conf *conf) 663 struct ieee80211_conf *conf)
663{ 664{
664#ifdef CONFIG_IWL4965_HT 665#ifdef CONFIG_IWL4965_HT
@@ -821,7 +822,7 @@ static void rs_tx_status(void *priv_rate, struct net_device *dev,
821 struct iwl4965_link_quality_cmd *table; 822 struct iwl4965_link_quality_cmd *table;
822 struct sta_info *sta; 823 struct sta_info *sta;
823 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; 824 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
824 struct iwl4965_priv *priv = (struct iwl4965_priv *)priv_rate; 825 struct iwl_priv *priv = (struct iwl_priv *)priv_rate;
825 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); 826 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
826 struct ieee80211_hw *hw = local_to_hw(local); 827 struct ieee80211_hw *hw = local_to_hw(local);
827 struct iwl4965_rate_scale_data *window = NULL; 828 struct iwl4965_rate_scale_data *window = NULL;
@@ -1128,7 +1129,7 @@ static void rs_get_expected_tpt_table(struct iwl4965_lq_sta *lq_sta,
1128 * to decrease to match "active" throughput. When moving from MIMO to SISO, 1129 * to decrease to match "active" throughput. When moving from MIMO to SISO,
1129 * bit rate will typically need to increase, but not if performance was bad. 1130 * bit rate will typically need to increase, but not if performance was bad.
1130 */ 1131 */
1131static s32 rs_get_best_rate(struct iwl4965_priv *priv, 1132static s32 rs_get_best_rate(struct iwl_priv *priv,
1132 struct iwl4965_lq_sta *lq_sta, 1133 struct iwl4965_lq_sta *lq_sta,
1133 struct iwl4965_scale_tbl_info *tbl, /* "search" */ 1134 struct iwl4965_scale_tbl_info *tbl, /* "search" */
1134 u16 rate_mask, s8 index, s8 rate) 1135 u16 rate_mask, s8 index, s8 rate)
@@ -1226,7 +1227,7 @@ static inline u8 rs_is_both_ant_supp(u8 valid_antenna)
1226/* 1227/*
1227 * Set up search table for MIMO 1228 * Set up search table for MIMO
1228 */ 1229 */
1229static int rs_switch_to_mimo(struct iwl4965_priv *priv, 1230static int rs_switch_to_mimo(struct iwl_priv *priv,
1230 struct iwl4965_lq_sta *lq_sta, 1231 struct iwl4965_lq_sta *lq_sta,
1231 struct ieee80211_conf *conf, 1232 struct ieee80211_conf *conf,
1232 struct sta_info *sta, 1233 struct sta_info *sta,
@@ -1291,7 +1292,7 @@ static int rs_switch_to_mimo(struct iwl4965_priv *priv,
1291/* 1292/*
1292 * Set up search table for SISO 1293 * Set up search table for SISO
1293 */ 1294 */
1294static int rs_switch_to_siso(struct iwl4965_priv *priv, 1295static int rs_switch_to_siso(struct iwl_priv *priv,
1295 struct iwl4965_lq_sta *lq_sta, 1296 struct iwl4965_lq_sta *lq_sta,
1296 struct ieee80211_conf *conf, 1297 struct ieee80211_conf *conf,
1297 struct sta_info *sta, 1298 struct sta_info *sta,
@@ -1354,7 +1355,7 @@ static int rs_switch_to_siso(struct iwl4965_priv *priv,
1354/* 1355/*
1355 * Try to switch to new modulation mode from legacy 1356 * Try to switch to new modulation mode from legacy
1356 */ 1357 */
1357static int rs_move_legacy_other(struct iwl4965_priv *priv, 1358static int rs_move_legacy_other(struct iwl_priv *priv,
1358 struct iwl4965_lq_sta *lq_sta, 1359 struct iwl4965_lq_sta *lq_sta,
1359 struct ieee80211_conf *conf, 1360 struct ieee80211_conf *conf,
1360 struct sta_info *sta, 1361 struct sta_info *sta,
@@ -1452,7 +1453,7 @@ static int rs_move_legacy_other(struct iwl4965_priv *priv,
1452/* 1453/*
1453 * Try to switch to new modulation mode from SISO 1454 * Try to switch to new modulation mode from SISO
1454 */ 1455 */
1455static int rs_move_siso_to_other(struct iwl4965_priv *priv, 1456static int rs_move_siso_to_other(struct iwl_priv *priv,
1456 struct iwl4965_lq_sta *lq_sta, 1457 struct iwl4965_lq_sta *lq_sta,
1457 struct ieee80211_conf *conf, 1458 struct ieee80211_conf *conf,
1458 struct sta_info *sta, 1459 struct sta_info *sta,
@@ -1548,7 +1549,7 @@ static int rs_move_siso_to_other(struct iwl4965_priv *priv,
1548/* 1549/*
1549 * Try to switch to new modulation mode from MIMO 1550 * Try to switch to new modulation mode from MIMO
1550 */ 1551 */
1551static int rs_move_mimo_to_other(struct iwl4965_priv *priv, 1552static int rs_move_mimo_to_other(struct iwl_priv *priv,
1552 struct iwl4965_lq_sta *lq_sta, 1553 struct iwl4965_lq_sta *lq_sta,
1553 struct ieee80211_conf *conf, 1554 struct ieee80211_conf *conf,
1554 struct sta_info *sta, 1555 struct sta_info *sta,
@@ -1728,7 +1729,7 @@ static void rs_stay_in_table(struct iwl4965_lq_sta *lq_sta)
1728/* 1729/*
1729 * Do rate scaling and search for new modulation mode. 1730 * Do rate scaling and search for new modulation mode.
1730 */ 1731 */
1731static void rs_rate_scale_perform(struct iwl4965_priv *priv, 1732static void rs_rate_scale_perform(struct iwl_priv *priv,
1732 struct net_device *dev, 1733 struct net_device *dev,
1733 struct ieee80211_hdr *hdr, 1734 struct ieee80211_hdr *hdr,
1734 struct sta_info *sta) 1735 struct sta_info *sta)
@@ -2148,7 +2149,7 @@ out:
2148} 2149}
2149 2150
2150 2151
2151static void rs_initialize_lq(struct iwl4965_priv *priv, 2152static void rs_initialize_lq(struct iwl_priv *priv,
2152 struct ieee80211_conf *conf, 2153 struct ieee80211_conf *conf,
2153 struct sta_info *sta) 2154 struct sta_info *sta)
2154{ 2155{
@@ -2213,7 +2214,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev,
2213 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; 2214 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
2214 struct sta_info *sta; 2215 struct sta_info *sta;
2215 u16 fc; 2216 u16 fc;
2216 struct iwl4965_priv *priv = (struct iwl4965_priv *)priv_rate; 2217 struct iwl_priv *priv = (struct iwl_priv *)priv_rate;
2217 struct iwl4965_lq_sta *lq_sta; 2218 struct iwl4965_lq_sta *lq_sta;
2218 2219
2219 IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n"); 2220 IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n");
@@ -2294,7 +2295,7 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
2294 int i, j; 2295 int i, j;
2295 struct ieee80211_conf *conf = &local->hw.conf; 2296 struct ieee80211_conf *conf = &local->hw.conf;
2296 struct ieee80211_supported_band *sband; 2297 struct ieee80211_supported_band *sband;
2297 struct iwl4965_priv *priv = (struct iwl4965_priv *)priv_rate; 2298 struct iwl_priv *priv = (struct iwl_priv *)priv_rate;
2298 struct iwl4965_lq_sta *lq_sta = priv_sta; 2299 struct iwl4965_lq_sta *lq_sta = priv_sta;
2299 2300
2300 sband = local->hw.wiphy->bands[local->hw.conf.channel->band]; 2301 sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
@@ -2516,7 +2517,7 @@ static void rs_free(void *priv_rate)
2516 2517
2517static void rs_clear(void *priv_rate) 2518static void rs_clear(void *priv_rate)
2518{ 2519{
2519 struct iwl4965_priv *priv = (struct iwl4965_priv *) priv_rate; 2520 struct iwl_priv *priv = (struct iwl_priv *) priv_rate;
2520 2521
2521 IWL_DEBUG_RATE("enter\n"); 2522 IWL_DEBUG_RATE("enter\n");
2522 2523
@@ -2726,7 +2727,7 @@ static struct rate_control_ops rs_ops = {
2726int iwl4965_fill_rs_info(struct ieee80211_hw *hw, char *buf, u8 sta_id) 2727int iwl4965_fill_rs_info(struct ieee80211_hw *hw, char *buf, u8 sta_id)
2727{ 2728{
2728 struct ieee80211_local *local = hw_to_local(hw); 2729 struct ieee80211_local *local = hw_to_local(hw);
2729 struct iwl4965_priv *priv = hw->priv; 2730 struct iwl_priv *priv = hw->priv;
2730 struct iwl4965_lq_sta *lq_sta; 2731 struct iwl4965_lq_sta *lq_sta;
2731 struct sta_info *sta; 2732 struct sta_info *sta;
2732 int cnt = 0, i; 2733 int cnt = 0, i;
@@ -2816,7 +2817,7 @@ int iwl4965_fill_rs_info(struct ieee80211_hw *hw, char *buf, u8 sta_id)
2816 2817
2817void iwl4965_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id) 2818void iwl4965_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)
2818{ 2819{
2819 struct iwl4965_priv *priv = hw->priv; 2820 struct iwl_priv *priv = hw->priv;
2820 2821
2821 priv->lq_mngr.lq_ready = 1; 2822 priv->lq_mngr.lq_ready = 1;
2822} 2823}