aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2008-06-09 15:54:35 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-06-14 12:18:01 -0400
commit4f85f5b39208e755a93f63296ec1224d14121b6c (patch)
tree6a60946481b392c973ca40b0088e7a1c97870150
parenta19d7292dc7f1c7d8704a353f51c7f1529de953b (diff)
iwlwifi: removing IWL4965_HT config
This patch removes CONFIG_IWL4965_HT #ifdefs for iwl 4965 and 5000. 11n feature is stable in those drivers and its mode of operation is determined in mac80211, so this dependency is not needed any more. Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/Kconfig8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965-rs.c46
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c62
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c44
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c18
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-debugfs.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h14
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c23
11 files changed, 43 insertions, 200 deletions
diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig
index 5f3e849043f7..b992428ab4db 100644
--- a/drivers/net/wireless/iwlwifi/Kconfig
+++ b/drivers/net/wireless/iwlwifi/Kconfig
@@ -54,14 +54,6 @@ config IWL4965
54 say M here and read <file:Documentation/kbuild/modules.txt>. The 54 say M here and read <file:Documentation/kbuild/modules.txt>. The
55 module will be called iwl4965.ko. 55 module will be called iwl4965.ko.
56 56
57config IWL4965_HT
58 bool "Enable 802.11n HT features in iwl4965 driver"
59 depends on EXPERIMENTAL
60 depends on IWL4965
61 ---help---
62 This option enables IEEE 802.11n High Throughput features
63 for the iwl4965 driver.
64
65config IWL4965_LEDS 57config IWL4965_LEDS
66 bool "Enable LEDS features in iwl4965 driver" 58 bool "Enable LEDS features in iwl4965 driver"
67 depends on IWL4965 59 depends on IWL4965
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
index d8f2b4d33fd9..7f9178bf602e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
@@ -105,8 +105,6 @@ struct iwl4965_scale_tbl_info {
105 struct iwl4965_rate_scale_data win[IWL_RATE_COUNT]; /* rate histories */ 105 struct iwl4965_rate_scale_data win[IWL_RATE_COUNT]; /* rate histories */
106}; 106};
107 107
108#ifdef CONFIG_IWL4965_HT
109
110struct iwl4965_traffic_load { 108struct iwl4965_traffic_load {
111 unsigned long time_stamp; /* age of the oldest statistics */ 109 unsigned long time_stamp; /* age of the oldest statistics */
112 u32 packet_count[TID_QUEUE_MAX_SIZE]; /* packet count in this time 110 u32 packet_count[TID_QUEUE_MAX_SIZE]; /* packet count in this time
@@ -118,8 +116,6 @@ struct iwl4965_traffic_load {
118 u8 head; /* start of the circular buffer */ 116 u8 head; /* start of the circular buffer */
119}; 117};
120 118
121#endif /* CONFIG_IWL4965_HT */
122
123/** 119/**
124 * struct iwl4965_lq_sta -- driver's rate scaling private structure 120 * struct iwl4965_lq_sta -- driver's rate scaling private structure
125 * 121 *
@@ -157,16 +153,12 @@ struct iwl4965_lq_sta {
157 153
158 struct iwl_link_quality_cmd lq; 154 struct iwl_link_quality_cmd lq;
159 struct iwl4965_scale_tbl_info lq_info[LQ_SIZE]; /* "active", "search" */ 155 struct iwl4965_scale_tbl_info lq_info[LQ_SIZE]; /* "active", "search" */
160#ifdef CONFIG_IWL4965_HT
161 struct iwl4965_traffic_load load[TID_MAX_LOAD_COUNT]; 156 struct iwl4965_traffic_load load[TID_MAX_LOAD_COUNT];
162 u8 tx_agg_tid_en; 157 u8 tx_agg_tid_en;
163#endif
164#ifdef CONFIG_MAC80211_DEBUGFS 158#ifdef CONFIG_MAC80211_DEBUGFS
165 struct dentry *rs_sta_dbgfs_scale_table_file; 159 struct dentry *rs_sta_dbgfs_scale_table_file;
166 struct dentry *rs_sta_dbgfs_stats_table_file; 160 struct dentry *rs_sta_dbgfs_stats_table_file;
167#ifdef CONFIG_IWL4965_HT
168 struct dentry *rs_sta_dbgfs_tx_agg_tid_en_file; 161 struct dentry *rs_sta_dbgfs_tx_agg_tid_en_file;
169#endif
170 u32 dbg_fixed_rate; 162 u32 dbg_fixed_rate;
171#endif 163#endif
172 struct iwl_priv *drv; 164 struct iwl_priv *drv;
@@ -256,7 +248,6 @@ static inline u8 rs_is_valid_ant(u8 valid_antenna, u8 ant_type)
256 return ((ant_type & valid_antenna) == ant_type); 248 return ((ant_type & valid_antenna) == ant_type);
257} 249}
258 250
259#ifdef CONFIG_IWL4965_HT
260/* 251/*
261 * removes the old data from the statistics. All data that is older than 252 * removes the old data from the statistics. All data that is older than
262 * TID_MAX_TIME_DIFF, will be deleted. 253 * TID_MAX_TIME_DIFF, will be deleted.
@@ -389,8 +380,6 @@ static void rs_tl_turn_on_agg(struct iwl_priv *priv, u8 tid,
389 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta); 380 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta);
390} 381}
391 382
392#endif /* CONFIG_IWLWIFI_HT */
393
394static inline int get_num_of_ant_from_rate(u32 rate_n_flags) 383static inline int get_num_of_ant_from_rate(u32 rate_n_flags)
395{ 384{
396 return (!!(rate_n_flags & RATE_MCS_ANT_A_MSK) + 385 return (!!(rate_n_flags & RATE_MCS_ANT_A_MSK) +
@@ -626,7 +615,6 @@ static int rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags,
626 615
627/* FIXME:RS: in 4965 we don't use greenfield at all */ 616/* FIXME:RS: in 4965 we don't use greenfield at all */
628/* FIXME:RS: don't use greenfield for now in TX */ 617/* FIXME:RS: don't use greenfield for now in TX */
629/* #ifdef CONFIG_IWL4965_HT */
630#if 0 618#if 0
631static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf) 619static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf)
632{ 620{
@@ -634,12 +622,11 @@ static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf
634 priv->current_ht_config.is_green_field && 622 priv->current_ht_config.is_green_field &&
635 !priv->current_ht_config.non_GF_STA_present); 623 !priv->current_ht_config.non_GF_STA_present);
636} 624}
637#else 625#endif
638static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf) 626static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf)
639{ 627{
640 return 0; 628 return 0;
641} 629}
642#endif /* CONFIG_IWL4965_HT */
643 630
644/** 631/**
645 * rs_get_supported_rates - get the available rates 632 * rs_get_supported_rates - get the available rates
@@ -1050,7 +1037,6 @@ static void rs_set_expected_tpt_table(struct iwl4965_lq_sta *lq_sta,
1050 tbl->expected_tpt = expected_tpt_G; 1037 tbl->expected_tpt = expected_tpt_G;
1051} 1038}
1052 1039
1053#ifdef CONFIG_IWL4965_HT
1054/* 1040/*
1055 * Find starting rate for new "search" high-throughput mode of modulation. 1041 * Find starting rate for new "search" high-throughput mode of modulation.
1056 * Goal is to find lowest expected rate (under perfect conditions) that is 1042 * Goal is to find lowest expected rate (under perfect conditions) that is
@@ -1152,12 +1138,10 @@ static s32 rs_get_best_rate(struct iwl_priv *priv,
1152 1138
1153 return new_rate; 1139 return new_rate;
1154} 1140}
1155#endif /* CONFIG_IWL4965_HT */
1156 1141
1157/* 1142/*
1158 * Set up search table for MIMO 1143 * Set up search table for MIMO
1159 */ 1144 */
1160#ifdef CONFIG_IWL4965_HT
1161static int rs_switch_to_mimo2(struct iwl_priv *priv, 1145static int rs_switch_to_mimo2(struct iwl_priv *priv,
1162 struct iwl4965_lq_sta *lq_sta, 1146 struct iwl4965_lq_sta *lq_sta,
1163 struct ieee80211_conf *conf, 1147 struct ieee80211_conf *conf,
@@ -1221,16 +1205,6 @@ static int rs_switch_to_mimo2(struct iwl_priv *priv,
1221 tbl->current_rate, is_green); 1205 tbl->current_rate, is_green);
1222 return 0; 1206 return 0;
1223} 1207}
1224#else
1225static int rs_switch_to_mimo2(struct iwl_priv *priv,
1226 struct iwl4965_lq_sta *lq_sta,
1227 struct ieee80211_conf *conf,
1228 struct sta_info *sta,
1229 struct iwl4965_scale_tbl_info *tbl, int index)
1230{
1231 return -1;
1232}
1233#endif /*CONFIG_IWL4965_HT */
1234 1208
1235/* 1209/*
1236 * Set up search table for SISO 1210 * Set up search table for SISO
@@ -1241,7 +1215,6 @@ static int rs_switch_to_siso(struct iwl_priv *priv,
1241 struct sta_info *sta, 1215 struct sta_info *sta,
1242 struct iwl4965_scale_tbl_info *tbl, int index) 1216 struct iwl4965_scale_tbl_info *tbl, int index)
1243{ 1217{
1244#ifdef CONFIG_IWL4965_HT
1245 u16 rate_mask; 1218 u16 rate_mask;
1246 u8 is_green = lq_sta->is_green; 1219 u8 is_green = lq_sta->is_green;
1247 s32 rate; 1220 s32 rate;
@@ -1291,9 +1264,6 @@ static int rs_switch_to_siso(struct iwl_priv *priv,
1291 IWL_DEBUG_RATE("LQ: Switch to new mcs %X index is green %X\n", 1264 IWL_DEBUG_RATE("LQ: Switch to new mcs %X index is green %X\n",
1292 tbl->current_rate, is_green); 1265 tbl->current_rate, is_green);
1293 return 0; 1266 return 0;
1294#else
1295 return -1;
1296#endif /*CONFIG_IWL4965_HT */
1297} 1267}
1298 1268
1299/* 1269/*
@@ -1689,9 +1659,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
1689 u8 done_search = 0; 1659 u8 done_search = 0;
1690 u16 high_low; 1660 u16 high_low;
1691 s32 sr; 1661 s32 sr;
1692#ifdef CONFIG_IWL4965_HT
1693 u8 tid = MAX_TID_COUNT; 1662 u8 tid = MAX_TID_COUNT;
1694#endif
1695 1663
1696 IWL_DEBUG_RATE("rate scale calculate new rate for skb\n"); 1664 IWL_DEBUG_RATE("rate scale calculate new rate for skb\n");
1697 1665
@@ -1712,9 +1680,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
1712 } 1680 }
1713 lq_sta = (struct iwl4965_lq_sta *)sta->rate_ctrl_priv; 1681 lq_sta = (struct iwl4965_lq_sta *)sta->rate_ctrl_priv;
1714 1682
1715#ifdef CONFIG_IWL4965_HT
1716 rs_tl_add_packet(lq_sta, hdr); 1683 rs_tl_add_packet(lq_sta, hdr);
1717#endif
1718 /* 1684 /*
1719 * Select rate-scale / modulation-mode table to work with in 1685 * Select rate-scale / modulation-mode table to work with in
1720 * the rest of this function: "search" if searching for better 1686 * the rest of this function: "search" if searching for better
@@ -2013,9 +1979,7 @@ lq_update:
2013 * before next round of mode comparisons. */ 1979 * before next round of mode comparisons. */
2014 tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]); 1980 tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]);
2015 if (is_legacy(tbl1->lq_type) && 1981 if (is_legacy(tbl1->lq_type) &&
2016#ifdef CONFIG_IWL4965_HT
2017 (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE)) && 1982 (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE)) &&
2018#endif
2019 (lq_sta->action_counter >= 1)) { 1983 (lq_sta->action_counter >= 1)) {
2020 lq_sta->action_counter = 0; 1984 lq_sta->action_counter = 0;
2021 IWL_DEBUG_RATE("LQ: STAY in legacy table\n"); 1985 IWL_DEBUG_RATE("LQ: STAY in legacy table\n");
@@ -2027,14 +1991,12 @@ lq_update:
2027 * mode for a while before next round of mode comparisons. */ 1991 * mode for a while before next round of mode comparisons. */
2028 if (lq_sta->enable_counter && 1992 if (lq_sta->enable_counter &&
2029 (lq_sta->action_counter >= IWL_ACTION_LIMIT)) { 1993 (lq_sta->action_counter >= IWL_ACTION_LIMIT)) {
2030#ifdef CONFIG_IWL4965_HT
2031 if ((lq_sta->last_tpt > IWL_AGG_TPT_THREHOLD) && 1994 if ((lq_sta->last_tpt > IWL_AGG_TPT_THREHOLD) &&
2032 (lq_sta->tx_agg_tid_en & (1 << tid)) && 1995 (lq_sta->tx_agg_tid_en & (1 << tid)) &&
2033 (tid != MAX_TID_COUNT)) { 1996 (tid != MAX_TID_COUNT)) {
2034 IWL_DEBUG_RATE("try to aggregate tid %d\n", tid); 1997 IWL_DEBUG_RATE("try to aggregate tid %d\n", tid);
2035 rs_tl_turn_on_agg(priv, tid, lq_sta, sta); 1998 rs_tl_turn_on_agg(priv, tid, lq_sta, sta);
2036 } 1999 }
2037#endif /*CONFIG_IWL4965_HT */
2038 lq_sta->action_counter = 0; 2000 lq_sta->action_counter = 0;
2039 rs_set_stay_in_table(priv, 0, lq_sta); 2001 rs_set_stay_in_table(priv, 0, lq_sta);
2040 } 2002 }
@@ -2279,7 +2241,6 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
2279 lq_sta->active_legacy_rate = priv->active_rate & ~(0x1000); 2241 lq_sta->active_legacy_rate = priv->active_rate & ~(0x1000);
2280 lq_sta->active_rate_basic = priv->active_rate_basic; 2242 lq_sta->active_rate_basic = priv->active_rate_basic;
2281 lq_sta->band = priv->band; 2243 lq_sta->band = priv->band;
2282#ifdef CONFIG_IWL4965_HT
2283 /* 2244 /*
2284 * active_siso_rate mask includes 9 MBits (bit 5), and CCK (bits 0-3), 2245 * active_siso_rate mask includes 9 MBits (bit 5), and CCK (bits 0-3),
2285 * supp_rates[] does not; shift to convert format, force 9 MBits off. 2246 * supp_rates[] does not; shift to convert format, force 9 MBits off.
@@ -2317,7 +2278,6 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
2317 2278
2318 /* as default allow aggregation for all tids */ 2279 /* as default allow aggregation for all tids */
2319 lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID; 2280 lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID;
2320#endif /*CONFIG_IWL4965_HT*/
2321#ifdef CONFIG_MAC80211_DEBUGFS 2281#ifdef CONFIG_MAC80211_DEBUGFS
2322 lq_sta->drv = priv; 2282 lq_sta->drv = priv;
2323#endif 2283#endif
@@ -2635,11 +2595,9 @@ static void rs_add_debugfs(void *priv, void *priv_sta,
2635 lq_sta->rs_sta_dbgfs_stats_table_file = 2595 lq_sta->rs_sta_dbgfs_stats_table_file =
2636 debugfs_create_file("rate_stats_table", 0600, dir, 2596 debugfs_create_file("rate_stats_table", 0600, dir,
2637 lq_sta, &rs_sta_dbgfs_stats_table_ops); 2597 lq_sta, &rs_sta_dbgfs_stats_table_ops);
2638#ifdef CONFIG_IWL4965_HT
2639 lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file = 2598 lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file =
2640 debugfs_create_u8("tx_agg_tid_enable", 0600, dir, 2599 debugfs_create_u8("tx_agg_tid_enable", 0600, dir,
2641 &lq_sta->tx_agg_tid_en); 2600 &lq_sta->tx_agg_tid_en);
2642#endif
2643 2601
2644} 2602}
2645 2603
@@ -2648,9 +2606,7 @@ static void rs_remove_debugfs(void *priv, void *priv_sta)
2648 struct iwl4965_lq_sta *lq_sta = priv_sta; 2606 struct iwl4965_lq_sta *lq_sta = priv_sta;
2649 debugfs_remove(lq_sta->rs_sta_dbgfs_scale_table_file); 2607 debugfs_remove(lq_sta->rs_sta_dbgfs_scale_table_file);
2650 debugfs_remove(lq_sta->rs_sta_dbgfs_stats_table_file); 2608 debugfs_remove(lq_sta->rs_sta_dbgfs_stats_table_file);
2651#ifdef CONFIG_IWL4965_HT
2652 debugfs_remove(lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file); 2609 debugfs_remove(lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file);
2653#endif
2654} 2610}
2655#endif 2611#endif
2656 2612
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index aee7014bcb94..84414da0bdeb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2819,7 +2819,6 @@ void iwl4965_rx_reply_rx(struct iwl_priv *priv,
2819 break; 2819 break;
2820 2820
2821 case IEEE80211_FTYPE_CTL: 2821 case IEEE80211_FTYPE_CTL:
2822#ifdef CONFIG_IWL4965_HT
2823 switch (fc & IEEE80211_FCTL_STYPE) { 2822 switch (fc & IEEE80211_FCTL_STYPE) {
2824 case IEEE80211_STYPE_BACK_REQ: 2823 case IEEE80211_STYPE_BACK_REQ:
2825 IWL_DEBUG_HT("IEEE80211_STYPE_BACK_REQ arrived\n"); 2824 IWL_DEBUG_HT("IEEE80211_STYPE_BACK_REQ arrived\n");
@@ -2829,7 +2828,6 @@ void iwl4965_rx_reply_rx(struct iwl_priv *priv,
2829 default: 2828 default:
2830 break; 2829 break;
2831 } 2830 }
2832#endif
2833 break; 2831 break;
2834 2832
2835 case IEEE80211_FTYPE_DATA: { 2833 case IEEE80211_FTYPE_DATA: {
@@ -2863,8 +2861,6 @@ void iwl4965_rx_reply_rx(struct iwl_priv *priv,
2863 } 2861 }
2864} 2862}
2865 2863
2866#ifdef CONFIG_IWL4965_HT
2867
2868/** 2864/**
2869 * iwl4965_tx_status_reply_compressed_ba - Update tx status from block-ack 2865 * iwl4965_tx_status_reply_compressed_ba - Update tx status from block-ack
2870 * 2866 *
@@ -3154,10 +3150,6 @@ static int iwl4965_txq_agg_enable(struct iwl_priv *priv, int txq_id,
3154 return 0; 3150 return 0;
3155} 3151}
3156 3152
3157#endif /* CONFIG_IWL4965_HT */
3158
3159
3160#ifdef CONFIG_IWL4965_HT
3161static int iwl4965_rx_agg_start(struct iwl_priv *priv, 3153static int iwl4965_rx_agg_start(struct iwl_priv *priv,
3162 const u8 *addr, int tid, u16 ssn) 3154 const u8 *addr, int tid, u16 ssn)
3163{ 3155{
@@ -3231,8 +3223,6 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
3231 } 3223 }
3232 return 0; 3224 return 0;
3233} 3225}
3234#endif /* CONFIG_IWL4965_HT */
3235
3236 3226
3237static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len) 3227static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len)
3238{ 3228{
@@ -3262,7 +3252,6 @@ static u16 iwl4965_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd, u8 *data)
3262 return (u16)sizeof(struct iwl4965_addsta_cmd); 3252 return (u16)sizeof(struct iwl4965_addsta_cmd);
3263} 3253}
3264 3254
3265#ifdef CONFIG_IWL4965_HT
3266static inline u32 iwl4965_get_scd_ssn(struct iwl4965_tx_resp *tx_resp) 3255static inline u32 iwl4965_get_scd_ssn(struct iwl4965_tx_resp *tx_resp)
3267{ 3256{
3268 __le32 *scd_ssn = (__le32 *)((u32 *)&tx_resp->status + 3257 __le32 *scd_ssn = (__le32 *)((u32 *)&tx_resp->status +
@@ -3388,7 +3377,6 @@ static int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
3388 } 3377 }
3389 return 0; 3378 return 0;
3390} 3379}
3391#endif
3392 3380
3393/** 3381/**
3394 * iwl4965_rx_reply_tx - Handle standard (non-aggregation) Tx response 3382 * iwl4965_rx_reply_tx - Handle standard (non-aggregation) Tx response
@@ -3404,12 +3392,10 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
3404 struct ieee80211_tx_info *info; 3392 struct ieee80211_tx_info *info;
3405 struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0]; 3393 struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0];
3406 u32 status = le32_to_cpu(tx_resp->status); 3394 u32 status = le32_to_cpu(tx_resp->status);
3407#ifdef CONFIG_IWL4965_HT
3408 int tid = MAX_TID_COUNT, sta_id = IWL_INVALID_STATION; 3395 int tid = MAX_TID_COUNT, sta_id = IWL_INVALID_STATION;
3409 u16 fc; 3396 u16 fc;
3410 struct ieee80211_hdr *hdr; 3397 struct ieee80211_hdr *hdr;
3411 u8 *qc = NULL; 3398 u8 *qc = NULL;
3412#endif
3413 3399
3414 if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) { 3400 if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) {
3415 IWL_ERROR("Read index for DMA queue txq_id (%d) index %d " 3401 IWL_ERROR("Read index for DMA queue txq_id (%d) index %d "
@@ -3422,7 +3408,6 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
3422 info = IEEE80211_SKB_CB(txq->txb[txq->q.read_ptr].skb[0]); 3408 info = IEEE80211_SKB_CB(txq->txb[txq->q.read_ptr].skb[0]);
3423 memset(&info->status, 0, sizeof(info->status)); 3409 memset(&info->status, 0, sizeof(info->status));
3424 3410
3425#ifdef CONFIG_IWL4965_HT
3426 hdr = iwl_tx_queue_get_hdr(priv, txq_id, index); 3411 hdr = iwl_tx_queue_get_hdr(priv, txq_id, index);
3427 fc = le16_to_cpu(hdr->frame_control); 3412 fc = le16_to_cpu(hdr->frame_control);
3428 if (ieee80211_is_qos_data(fc)) { 3413 if (ieee80211_is_qos_data(fc)) {
@@ -3474,32 +3459,31 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
3474 iwl_txq_check_empty(priv, sta_id, tid, txq_id); 3459 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
3475 } 3460 }
3476 } else { 3461 } else {
3477#endif /* CONFIG_IWL4965_HT */ 3462 info->status.retry_count = tx_resp->failure_frame;
3478 3463 info->flags |=
3479 info->status.retry_count = tx_resp->failure_frame; 3464 iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0;
3480 info->flags |= iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0; 3465 iwl4965_hwrate_to_tx_control(priv,
3481 iwl4965_hwrate_to_tx_control(priv, le32_to_cpu(tx_resp->rate_n_flags), 3466 le32_to_cpu(tx_resp->rate_n_flags),
3482 info); 3467 info);
3483 3468
3484 IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) rate_n_flags 0x%x " 3469 IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) rate_n_flags "
3485 "retries %d\n", txq_id, iwl_get_tx_fail_reason(status), 3470 "0x%x retries %d\n", txq_id,
3486 status, le32_to_cpu(tx_resp->rate_n_flags), 3471 iwl_get_tx_fail_reason(status),
3487 tx_resp->failure_frame); 3472 status, le32_to_cpu(tx_resp->rate_n_flags),
3488 3473 tx_resp->failure_frame);
3489 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index); 3474
3490#ifdef CONFIG_IWL4965_HT 3475 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
3491 if (index != -1) { 3476 if (index != -1) {
3492 int freed = iwl_tx_queue_reclaim(priv, txq_id, index); 3477 int freed = iwl_tx_queue_reclaim(priv, txq_id, index);
3493 if (tid != MAX_TID_COUNT) 3478 if (tid != MAX_TID_COUNT)
3494 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 3479 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
3495 if (iwl_queue_space(&txq->q) > txq->q.low_mark && 3480 if (iwl_queue_space(&txq->q) > txq->q.low_mark &&
3496 (txq_id >= 0) && priv->mac80211_registered) 3481 (txq_id >= 0) && priv->mac80211_registered)
3497 ieee80211_wake_queue(priv->hw, txq_id); 3482 ieee80211_wake_queue(priv->hw, txq_id);
3498 if (tid != MAX_TID_COUNT) 3483 if (tid != MAX_TID_COUNT)
3499 iwl_txq_check_empty(priv, sta_id, tid, txq_id); 3484 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
3485 }
3500 } 3486 }
3501 }
3502#endif /* CONFIG_IWL4965_HT */
3503 3487
3504 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) 3488 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK))
3505 IWL_ERROR("TODO: Implement Tx ABORT REQUIRED!!!\n"); 3489 IWL_ERROR("TODO: Implement Tx ABORT REQUIRED!!!\n");
@@ -3513,10 +3497,8 @@ static void iwl4965_rx_handler_setup(struct iwl_priv *priv)
3513 priv->rx_handlers[REPLY_RX] = iwl4965_rx_reply_rx; 3497 priv->rx_handlers[REPLY_RX] = iwl4965_rx_reply_rx;
3514 /* Tx response */ 3498 /* Tx response */
3515 priv->rx_handlers[REPLY_TX] = iwl4965_rx_reply_tx; 3499 priv->rx_handlers[REPLY_TX] = iwl4965_rx_reply_tx;
3516 3500 /* block ack */
3517#ifdef CONFIG_IWL4965_HT
3518 priv->rx_handlers[REPLY_COMPRESSED_BA] = iwl4965_rx_reply_compressed_ba; 3501 priv->rx_handlers[REPLY_COMPRESSED_BA] = iwl4965_rx_reply_compressed_ba;
3519#endif /* CONFIG_IWL4965_HT */
3520} 3502}
3521 3503
3522void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv) 3504void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv)
@@ -3558,10 +3540,8 @@ static struct iwl_lib_ops iwl4965_lib = {
3558 .shared_mem_rx_idx = iwl4965_shared_mem_rx_idx, 3540 .shared_mem_rx_idx = iwl4965_shared_mem_rx_idx,
3559 .txq_update_byte_cnt_tbl = iwl4965_txq_update_byte_cnt_tbl, 3541 .txq_update_byte_cnt_tbl = iwl4965_txq_update_byte_cnt_tbl,
3560 .txq_set_sched = iwl4965_txq_set_sched, 3542 .txq_set_sched = iwl4965_txq_set_sched,
3561#ifdef CONFIG_IWL4965_HT
3562 .txq_agg_enable = iwl4965_txq_agg_enable, 3543 .txq_agg_enable = iwl4965_txq_agg_enable,
3563 .txq_agg_disable = iwl4965_txq_agg_disable, 3544 .txq_agg_disable = iwl4965_txq_agg_disable,
3564#endif
3565 .rx_handler_setup = iwl4965_rx_handler_setup, 3545 .rx_handler_setup = iwl4965_rx_handler_setup,
3566 .is_valid_rtc_data_addr = iwl4965_hw_valid_rtc_data_addr, 3546 .is_valid_rtc_data_addr = iwl4965_hw_valid_rtc_data_addr,
3567 .alive_notify = iwl4965_alive_notify, 3547 .alive_notify = iwl4965_alive_notify,
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 7e525ad45135..65484779bd3d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -1136,12 +1136,10 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1136 struct ieee80211_tx_info *info; 1136 struct ieee80211_tx_info *info;
1137 struct iwl5000_tx_resp *tx_resp = (void *)&pkt->u.raw[0]; 1137 struct iwl5000_tx_resp *tx_resp = (void *)&pkt->u.raw[0];
1138 u32 status = le16_to_cpu(tx_resp->status.status); 1138 u32 status = le16_to_cpu(tx_resp->status.status);
1139#ifdef CONFIG_IWL4965_HT
1140 int tid = MAX_TID_COUNT, sta_id = IWL_INVALID_STATION; 1139 int tid = MAX_TID_COUNT, sta_id = IWL_INVALID_STATION;
1141 u16 fc; 1140 u16 fc;
1142 struct ieee80211_hdr *hdr; 1141 struct ieee80211_hdr *hdr;
1143 u8 *qc = NULL; 1142 u8 *qc = NULL;
1144#endif
1145 1143
1146 if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) { 1144 if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) {
1147 IWL_ERROR("Read index for DMA queue txq_id (%d) index %d " 1145 IWL_ERROR("Read index for DMA queue txq_id (%d) index %d "
@@ -1154,7 +1152,6 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1154 info = IEEE80211_SKB_CB(txq->txb[txq->q.read_ptr].skb[0]); 1152 info = IEEE80211_SKB_CB(txq->txb[txq->q.read_ptr].skb[0]);
1155 memset(&info->status, 0, sizeof(info->status)); 1153 memset(&info->status, 0, sizeof(info->status));
1156 1154
1157#ifdef CONFIG_IWL4965_HT
1158 hdr = iwl_tx_queue_get_hdr(priv, txq_id, index); 1155 hdr = iwl_tx_queue_get_hdr(priv, txq_id, index);
1159 fc = le16_to_cpu(hdr->frame_control); 1156 fc = le16_to_cpu(hdr->frame_control);
1160 if (ieee80211_is_qos_data(fc)) { 1157 if (ieee80211_is_qos_data(fc)) {
@@ -1205,32 +1202,31 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1205 iwl_txq_check_empty(priv, sta_id, tid, txq_id); 1202 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
1206 } 1203 }
1207 } else { 1204 } else {
1208#endif /* CONFIG_IWL4965_HT */ 1205 info->status.retry_count = tx_resp->failure_frame;
1209 1206 info->flags =
1210 info->status.retry_count = tx_resp->failure_frame; 1207 iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0;
1211 info->flags = iwl_is_tx_success(status) ? IEEE80211_TX_STAT_ACK : 0; 1208 iwl4965_hwrate_to_tx_control(priv,
1212 iwl4965_hwrate_to_tx_control(priv, le32_to_cpu(tx_resp->rate_n_flags), 1209 le32_to_cpu(tx_resp->rate_n_flags),
1213 info); 1210 info);
1214 1211
1215 IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) rate_n_flags 0x%x " 1212 IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) rate_n_flags "
1216 "retries %d\n", txq_id, iwl_get_tx_fail_reason(status), 1213 "0x%x retries %d\n", txq_id,
1217 status, le32_to_cpu(tx_resp->rate_n_flags), 1214 iwl_get_tx_fail_reason(status),
1218 tx_resp->failure_frame); 1215 status, le32_to_cpu(tx_resp->rate_n_flags),
1219 1216 tx_resp->failure_frame);
1220 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index); 1217
1221#ifdef CONFIG_IWL4965_HT 1218 IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
1222 if (index != -1) { 1219 if (index != -1) {
1223 int freed = iwl_tx_queue_reclaim(priv, txq_id, index); 1220 int freed = iwl_tx_queue_reclaim(priv, txq_id, index);
1224 if (tid != MAX_TID_COUNT) 1221 if (tid != MAX_TID_COUNT)
1225 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1222 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
1226 if (iwl_queue_space(&txq->q) > txq->q.low_mark && 1223 if (iwl_queue_space(&txq->q) > txq->q.low_mark &&
1227 (txq_id >= 0) && priv->mac80211_registered) 1224 (txq_id >= 0) && priv->mac80211_registered)
1228 ieee80211_wake_queue(priv->hw, txq_id); 1225 ieee80211_wake_queue(priv->hw, txq_id);
1229 if (tid != MAX_TID_COUNT) 1226 if (tid != MAX_TID_COUNT)
1230 iwl_txq_check_empty(priv, sta_id, tid, txq_id); 1227 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
1228 }
1231 } 1229 }
1232 }
1233#endif /* CONFIG_IWL4965_HT */
1234 1230
1235 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) 1231 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK))
1236 IWL_ERROR("TODO: Implement Tx ABORT REQUIRED!!!\n"); 1232 IWL_ERROR("TODO: Implement Tx ABORT REQUIRED!!!\n");
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 61716ba90427..6c7617c1bb91 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -321,7 +321,6 @@ void iwl_reset_qos(struct iwl_priv *priv)
321} 321}
322EXPORT_SYMBOL(iwl_reset_qos); 322EXPORT_SYMBOL(iwl_reset_qos);
323 323
324#ifdef CONFIG_IWL4965_HT
325#define MAX_BIT_RATE_40_MHZ 0x96; /* 150 Mbps */ 324#define MAX_BIT_RATE_40_MHZ 0x96; /* 150 Mbps */
326#define MAX_BIT_RATE_20_MHZ 0x48; /* 72 Mbps */ 325#define MAX_BIT_RATE_20_MHZ 0x48; /* 72 Mbps */
327static void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv, 326static void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv,
@@ -374,13 +373,6 @@ static void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv,
374 ht_info->supp_mcs_set[12] |= ((tx_chains_num - 1) << 2); 373 ht_info->supp_mcs_set[12] |= ((tx_chains_num - 1) << 2);
375 } 374 }
376} 375}
377#else
378static inline void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv,
379 struct ieee80211_ht_info *ht_info,
380 enum ieee80211_band band)
381{
382}
383#endif /* CONFIG_IWL4965_HT */
384 376
385static void iwlcore_init_hw_rates(struct iwl_priv *priv, 377static void iwlcore_init_hw_rates(struct iwl_priv *priv,
386 struct ieee80211_rate *rates) 378 struct ieee80211_rate *rates)
@@ -553,7 +545,6 @@ static void iwlcore_free_geos(struct iwl_priv *priv)
553 clear_bit(STATUS_GEO_CONFIGURED, &priv->status); 545 clear_bit(STATUS_GEO_CONFIGURED, &priv->status);
554} 546}
555 547
556#ifdef CONFIG_IWL4965_HT
557static u8 is_single_rx_stream(struct iwl_priv *priv) 548static u8 is_single_rx_stream(struct iwl_priv *priv)
558{ 549{
559 return !priv->current_ht_config.is_ht || 550 return !priv->current_ht_config.is_ht ||
@@ -660,13 +651,6 @@ void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_info *ht_info)
660} 651}
661EXPORT_SYMBOL(iwl_set_rxon_ht); 652EXPORT_SYMBOL(iwl_set_rxon_ht);
662 653
663#else
664static inline u8 is_single_rx_stream(struct iwl_priv *priv)
665{
666 return 1;
667}
668#endif /*CONFIG_IWL4965_HT */
669
670/* 654/*
671 * Determine how many receiver/antenna chains to use. 655 * Determine how many receiver/antenna chains to use.
672 * More provides better reception via diversity. Fewer saves power. 656 * More provides better reception via diversity. Fewer saves power.
@@ -791,10 +775,8 @@ int iwl_setup_mac(struct iwl_priv *priv)
791 IEEE80211_HW_NOISE_DBM; 775 IEEE80211_HW_NOISE_DBM;
792 /* Default value; 4 EDCA QOS priorities */ 776 /* Default value; 4 EDCA QOS priorities */
793 hw->queues = 4; 777 hw->queues = 4;
794#ifdef CONFIG_IWL4965_HT
795 /* Enhanced value; more queues, to support 11n aggregation */ 778 /* Enhanced value; more queues, to support 11n aggregation */
796 hw->ampdu_queues = 12; 779 hw->ampdu_queues = 12;
797#endif /* CONFIG_IWL4965_HT */
798 780
799 hw->conf.beacon_int = 100; 781 hw->conf.beacon_int = 100;
800 782
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 6b5af7afbb25..d9c5bd13e781 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -111,13 +111,11 @@ struct iwl_lib_ops {
111 void (*txq_inval_byte_cnt_tbl)(struct iwl_priv *priv, 111 void (*txq_inval_byte_cnt_tbl)(struct iwl_priv *priv,
112 struct iwl_tx_queue *txq); 112 struct iwl_tx_queue *txq);
113 void (*txq_set_sched)(struct iwl_priv *priv, u32 mask); 113 void (*txq_set_sched)(struct iwl_priv *priv, u32 mask);
114#ifdef CONFIG_IWL4965_HT
115 /* aggregations */ 114 /* aggregations */
116 int (*txq_agg_enable)(struct iwl_priv *priv, int txq_id, int tx_fifo, 115 int (*txq_agg_enable)(struct iwl_priv *priv, int txq_id, int tx_fifo,
117 int sta_id, int tid, u16 ssn_idx); 116 int sta_id, int tid, u16 ssn_idx);
118 int (*txq_agg_disable)(struct iwl_priv *priv, u16 txq_id, u16 ssn_idx, 117 int (*txq_agg_disable)(struct iwl_priv *priv, u16 txq_id, u16 ssn_idx,
119 u8 tx_fifo); 118 u8 tx_fifo);
120#endif /* CONFIG_IWL4965_HT */
121 /* setup Rx handler */ 119 /* setup Rx handler */
122 void (*rx_handler_setup)(struct iwl_priv *priv); 120 void (*rx_handler_setup)(struct iwl_priv *priv);
123 /* alive notification after init uCode load */ 121 /* alive notification after init uCode load */
@@ -233,11 +231,9 @@ void iwl_hw_txq_ctx_free(struct iwl_priv *priv);
233int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *tfd, 231int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *tfd,
234 dma_addr_t addr, u16 len); 232 dma_addr_t addr, u16 len);
235int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq); 233int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq);
236#ifdef CONFIG_IWL4965_HT
237int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn); 234int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn);
238int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid); 235int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid);
239int iwl_txq_check_empty(struct iwl_priv *priv, int sta_id, u8 tid, int txq_id); 236int iwl_txq_check_empty(struct iwl_priv *priv, int sta_id, u8 tid, int txq_id);
240#endif
241 237
242/***************************************************** 238/*****************************************************
243 * S e n d i n g H o s t C o m m a n d s * 239 * S e n d i n g H o s t C o m m a n d s *
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index 29e16ba69cdb..d5f9df176bab 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -255,21 +255,18 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
255 pos += scnprintf(buf + pos, bufsz - pos, "tid data:\n"); 255 pos += scnprintf(buf + pos, bufsz - pos, "tid data:\n");
256 pos += scnprintf(buf + pos, bufsz - pos, 256 pos += scnprintf(buf + pos, bufsz - pos,
257 "seq_num\t\ttxq_id"); 257 "seq_num\t\ttxq_id");
258#ifdef CONFIG_IWL4965_HT
259 pos += scnprintf(buf + pos, bufsz - pos, 258 pos += scnprintf(buf + pos, bufsz - pos,
260 "\tframe_count\twait_for_ba\t"); 259 "\tframe_count\twait_for_ba\t");
261 pos += scnprintf(buf + pos, bufsz - pos, 260 pos += scnprintf(buf + pos, bufsz - pos,
262 "start_idx\tbitmap0\t"); 261 "start_idx\tbitmap0\t");
263 pos += scnprintf(buf + pos, bufsz - pos, 262 pos += scnprintf(buf + pos, bufsz - pos,
264 "bitmap1\trate_n_flags"); 263 "bitmap1\trate_n_flags");
265#endif
266 pos += scnprintf(buf + pos, bufsz - pos, "\n"); 264 pos += scnprintf(buf + pos, bufsz - pos, "\n");
267 265
268 for (j = 0; j < MAX_TID_COUNT; j++) { 266 for (j = 0; j < MAX_TID_COUNT; j++) {
269 pos += scnprintf(buf + pos, bufsz - pos, 267 pos += scnprintf(buf + pos, bufsz - pos,
270 "[%d]:\t\t%u", j, 268 "[%d]:\t\t%u", j,
271 station->tid[j].seq_number); 269 station->tid[j].seq_number);
272#ifdef CONFIG_IWL4965_HT
273 pos += scnprintf(buf + pos, bufsz - pos, 270 pos += scnprintf(buf + pos, bufsz - pos,
274 "\t%u\t\t%u\t\t%u\t\t", 271 "\t%u\t\t%u\t\t%u\t\t",
275 station->tid[j].agg.txq_id, 272 station->tid[j].agg.txq_id,
@@ -280,7 +277,6 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
280 station->tid[j].agg.start_idx, 277 station->tid[j].agg.start_idx,
281 (unsigned long long)station->tid[j].agg.bitmap, 278 (unsigned long long)station->tid[j].agg.bitmap,
282 station->tid[j].agg.rate_n_flags); 279 station->tid[j].agg.rate_n_flags);
283#endif
284 pos += scnprintf(buf + pos, bufsz - pos, "\n"); 280 pos += scnprintf(buf + pos, bufsz - pos, "\n");
285 } 281 }
286 pos += scnprintf(buf + pos, bufsz - pos, "\n"); 282 pos += scnprintf(buf + pos, bufsz - pos, "\n");
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 802f1a12b1aa..59a6960f41b3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -401,7 +401,6 @@ struct iwl_rx_queue {
401#define IWL_INVALID_RATE 0xFF 401#define IWL_INVALID_RATE 0xFF
402#define IWL_INVALID_VALUE -1 402#define IWL_INVALID_VALUE -1
403 403
404#ifdef CONFIG_IWL4965_HT
405/** 404/**
406 * struct iwl_ht_agg -- aggregation status while waiting for block-ack 405 * struct iwl_ht_agg -- aggregation status while waiting for block-ack
407 * @txq_id: Tx queue used for Tx attempt 406 * @txq_id: Tx queue used for Tx attempt
@@ -430,14 +429,11 @@ struct iwl_ht_agg {
430 u8 state; 429 u8 state;
431}; 430};
432 431
433#endif /* CONFIG_IWL4965_HT */
434 432
435struct iwl_tid_data { 433struct iwl_tid_data {
436 u16 seq_number; 434 u16 seq_number;
437 u16 tfds_in_queue; 435 u16 tfds_in_queue;
438#ifdef CONFIG_IWL4965_HT
439 struct iwl_ht_agg agg; 436 struct iwl_ht_agg agg;
440#endif /* CONFIG_IWL4965_HT */
441}; 437};
442 438
443struct iwl_hw_key { 439struct iwl_hw_key {
@@ -752,7 +748,6 @@ extern void iwl4965_hwrate_to_tx_control(struct iwl_priv *priv,
752 u32 rate_n_flags, 748 u32 rate_n_flags,
753 struct ieee80211_tx_info *info); 749 struct ieee80211_tx_info *info);
754 750
755#ifdef CONFIG_IWL4965_HT
756extern void iwl4965_init_ht_hw_capab(const struct iwl_priv *priv, 751extern void iwl4965_init_ht_hw_capab(const struct iwl_priv *priv,
757 struct ieee80211_ht_info *ht_info, 752 struct ieee80211_ht_info *ht_info,
758 enum ieee80211_band band); 753 enum ieee80211_band band);
@@ -763,12 +758,7 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
763 const u8 *addr, u16 tid, u16 *ssn); 758 const u8 *addr, u16 tid, u16 *ssn);
764int iwl4965_check_empty_hw_queue(struct iwl_priv *priv, int sta_id, 759int iwl4965_check_empty_hw_queue(struct iwl_priv *priv, int sta_id,
765 u8 tid, int txq_id); 760 u8 tid, int txq_id);
766#else
767static inline void iwl4965_init_ht_hw_capab(const struct iwl_priv *priv,
768 struct ieee80211_ht_info *ht_info,
769 enum ieee80211_band band) {}
770 761
771#endif /*CONFIG_IWL4965_HT */
772/* Structures, enum, and defines specific to the 4965 */ 762/* Structures, enum, and defines specific to the 4965 */
773 763
774#define IWL_KW_SIZE 0x1000 /*4k */ 764#define IWL_KW_SIZE 0x1000 /*4k */
@@ -1073,9 +1063,7 @@ struct iwl_priv {
1073 __le16 sensitivity_tbl[HD_TABLE_SIZE]; 1063 __le16 sensitivity_tbl[HD_TABLE_SIZE];
1074#endif /*CONFIG_IWLWIFI_RUN_TIME_CALIB*/ 1064#endif /*CONFIG_IWLWIFI_RUN_TIME_CALIB*/
1075 1065
1076#ifdef CONFIG_IWL4965_HT
1077 struct iwl_ht_info current_ht_config; 1066 struct iwl_ht_info current_ht_config;
1078#endif
1079 u8 last_phy_res[100]; 1067 u8 last_phy_res[100];
1080 1068
1081 /* Rate scaling data */ 1069 /* Rate scaling data */
@@ -1250,7 +1238,6 @@ static inline const char *iwl_get_tx_fail_reason(u32 status) { return ""; }
1250#endif 1238#endif
1251 1239
1252 1240
1253#ifdef CONFIG_IWL4965_HT
1254static inline int iwl_get_ra_sta_id(struct iwl_priv *priv, 1241static inline int iwl_get_ra_sta_id(struct iwl_priv *priv,
1255 struct ieee80211_hdr *hdr) 1242 struct ieee80211_hdr *hdr)
1256{ 1243{
@@ -1270,7 +1257,6 @@ static inline struct ieee80211_hdr *iwl_tx_queue_get_hdr(struct iwl_priv *priv,
1270 txb[idx].skb[0]->data; 1257 txb[idx].skb[0]->data;
1271 return NULL; 1258 return NULL;
1272} 1259}
1273#endif
1274 1260
1275 1261
1276static inline int iwl_is_associated(struct iwl_priv *priv) 1262static inline int iwl_is_associated(struct iwl_priv *priv)
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 983f10760fb0..b3caed487f03 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -156,8 +156,6 @@ int iwl_send_add_sta(struct iwl_priv *priv,
156} 156}
157EXPORT_SYMBOL(iwl_send_add_sta); 157EXPORT_SYMBOL(iwl_send_add_sta);
158 158
159#ifdef CONFIG_IWL4965_HT
160
161static void iwl_set_ht_add_station(struct iwl_priv *priv, u8 index, 159static void iwl_set_ht_add_station(struct iwl_priv *priv, u8 index,
162 struct ieee80211_ht_info *sta_ht_inf) 160 struct ieee80211_ht_info *sta_ht_inf)
163{ 161{
@@ -202,12 +200,6 @@ static void iwl_set_ht_add_station(struct iwl_priv *priv, u8 index,
202 done: 200 done:
203 return; 201 return;
204} 202}
205#else
206static inline void iwl_set_ht_add_station(struct iwl_priv *priv, u8 index,
207 struct ieee80211_ht_info *sta_ht_info)
208{
209}
210#endif
211 203
212/** 204/**
213 * iwl_add_station_flags - Add station to tables in driver and device 205 * iwl_add_station_flags - Add station to tables in driver and device
@@ -842,7 +834,6 @@ int iwl_rxon_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
842 u8 sta_id; 834 u8 sta_id;
843 835
844 /* Add station to device's station table */ 836 /* Add station to device's station table */
845#ifdef CONFIG_IWL4965_HT
846 struct ieee80211_conf *conf = &priv->hw->conf; 837 struct ieee80211_conf *conf = &priv->hw->conf;
847 struct ieee80211_ht_info *cur_ht_config = &conf->ht_conf; 838 struct ieee80211_ht_info *cur_ht_config = &conf->ht_conf;
848 839
@@ -852,7 +843,6 @@ int iwl_rxon_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
852 sta_id = iwl_add_station_flags(priv, addr, is_ap, 843 sta_id = iwl_add_station_flags(priv, addr, is_ap,
853 0, cur_ht_config); 844 0, cur_ht_config);
854 else 845 else
855#endif /* CONFIG_IWL4965_HT */
856 sta_id = iwl_add_station_flags(priv, addr, is_ap, 846 sta_id = iwl_add_station_flags(priv, addr, is_ap,
857 0, NULL); 847 0, NULL);
858 848
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index cfe6f4b233dd..1aa19f4a8bcb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -36,8 +36,6 @@
36#include "iwl-io.h" 36#include "iwl-io.h"
37#include "iwl-helpers.h" 37#include "iwl-helpers.h"
38 38
39#ifdef CONFIG_IWL4965_HT
40
41static const u16 default_tid_to_tx_fifo[] = { 39static const u16 default_tid_to_tx_fifo[] = {
42 IWL_TX_FIFO_AC1, 40 IWL_TX_FIFO_AC1,
43 IWL_TX_FIFO_AC0, 41 IWL_TX_FIFO_AC0,
@@ -58,9 +56,6 @@ static const u16 default_tid_to_tx_fifo[] = {
58 IWL_TX_FIFO_AC3 56 IWL_TX_FIFO_AC3
59}; 57};
60 58
61#endif /*CONFIG_IWL4965_HT */
62
63
64 59
65/** 60/**
66 * iwl_hw_txq_free_tfd - Free all chunks referenced by TFD [txq->q.read_ptr] 61 * iwl_hw_txq_free_tfd - Free all chunks referenced by TFD [txq->q.read_ptr]
@@ -848,12 +843,10 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
848 (hdr->seq_ctrl & 843 (hdr->seq_ctrl &
849 __constant_cpu_to_le16(IEEE80211_SCTL_FRAG)); 844 __constant_cpu_to_le16(IEEE80211_SCTL_FRAG));
850 seq_number += 0x10; 845 seq_number += 0x10;
851#ifdef CONFIG_IWL4965_HT
852 /* aggregation is on for this <sta,tid> */ 846 /* aggregation is on for this <sta,tid> */
853 if (info->flags & IEEE80211_TX_CTL_AMPDU) 847 if (info->flags & IEEE80211_TX_CTL_AMPDU)
854 txq_id = priv->stations[sta_id].tid[tid].agg.txq_id; 848 txq_id = priv->stations[sta_id].tid[tid].agg.txq_id;
855 priv->stations[sta_id].tid[tid].tfds_in_queue++; 849 priv->stations[sta_id].tid[tid].tfds_in_queue++;
856#endif /* CONFIG_IWL4965_HT */
857 } 850 }
858 851
859 /* Descriptor for chosen Tx queue */ 852 /* Descriptor for chosen Tx queue */
@@ -1196,8 +1189,6 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
1196} 1189}
1197EXPORT_SYMBOL(iwl_tx_cmd_complete); 1190EXPORT_SYMBOL(iwl_tx_cmd_complete);
1198 1191
1199
1200#ifdef CONFIG_IWL4965_HT
1201/* 1192/*
1202 * Find first available (lowest unused) Tx Queue, mark it "active". 1193 * Find first available (lowest unused) Tx Queue, mark it "active".
1203 * Called only when finding queue for aggregation. 1194 * Called only when finding queue for aggregation.
@@ -1359,7 +1350,6 @@ int iwl_txq_check_empty(struct iwl_priv *priv, int sta_id, u8 tid, int txq_id)
1359 return 0; 1350 return 0;
1360} 1351}
1361EXPORT_SYMBOL(iwl_txq_check_empty); 1352EXPORT_SYMBOL(iwl_txq_check_empty);
1362#endif /* CONFIG_IWL4965_HT */
1363 1353
1364#ifdef CONFIG_IWLWIF_DEBUG 1354#ifdef CONFIG_IWLWIF_DEBUG
1365#define TX_STATUS_ENTRY(x) case TX_STATUS_FAIL_ ## x: return #x 1355#define TX_STATUS_ENTRY(x) case TX_STATUS_FAIL_ ## x: return #x
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index c71daec8c746..88229e25837a 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -634,7 +634,6 @@ static u16 iwl4965_supported_rate_to_ie(u8 *ie, u16 supported_rate,
634 return ret_rates; 634 return ret_rates;
635} 635}
636 636
637#ifdef CONFIG_IWL4965_HT
638static void iwl4965_ht_conf(struct iwl_priv *priv, 637static void iwl4965_ht_conf(struct iwl_priv *priv,
639 struct ieee80211_bss_conf *bss_conf) 638 struct ieee80211_bss_conf *bss_conf)
640{ 639{
@@ -707,17 +706,6 @@ static void iwl_ht_cap_to_ie(const struct ieee80211_supported_band *sband,
707 IEEE80211_HT_CAP_AMPDU_DENSITY); 706 IEEE80211_HT_CAP_AMPDU_DENSITY);
708 *left -= sizeof(struct ieee80211_ht_cap); 707 *left -= sizeof(struct ieee80211_ht_cap);
709} 708}
710#else
711static inline void iwl4965_ht_conf(struct iwl_priv *priv,
712 struct ieee80211_bss_conf *bss_conf)
713{
714}
715static void iwl_ht_cap_to_ie(const struct ieee80211_supported_band *sband,
716 u8 *pos, int *left)
717{
718}
719#endif
720
721 709
722/** 710/**
723 * iwl4965_fill_probe_req - fill in all required fields and IE for probe request 711 * iwl4965_fill_probe_req - fill in all required fields and IE for probe request
@@ -862,10 +850,8 @@ static void iwl4965_activate_qos(struct iwl_priv *priv, u8 force)
862 priv->qos_data.def_qos_parm.qos_flags |= 850 priv->qos_data.def_qos_parm.qos_flags |=
863 QOS_PARAM_FLG_UPDATE_EDCA_MSK; 851 QOS_PARAM_FLG_UPDATE_EDCA_MSK;
864 852
865#ifdef CONFIG_IWL4965_HT
866 if (priv->current_ht_config.is_ht) 853 if (priv->current_ht_config.is_ht)
867 priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK; 854 priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK;
868#endif /* CONFIG_IWL4965_HT */
869 855
870 spin_unlock_irqrestore(&priv->lock, flags); 856 spin_unlock_irqrestore(&priv->lock, flags);
871 857
@@ -3515,10 +3501,9 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
3515 3501
3516 priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK; 3502 priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
3517 3503
3518#ifdef CONFIG_IWL4965_HT
3519 if (priv->current_ht_config.is_ht) 3504 if (priv->current_ht_config.is_ht)
3520 iwl_set_rxon_ht(priv, &priv->current_ht_config); 3505 iwl_set_rxon_ht(priv, &priv->current_ht_config);
3521#endif /* CONFIG_IWL4965_HT*/ 3506
3522 iwl_set_rxon_chain(priv); 3507 iwl_set_rxon_chain(priv);
3523 priv->staging_rxon.assoc_id = cpu_to_le16(priv->assoc_id); 3508 priv->staging_rxon.assoc_id = cpu_to_le16(priv->assoc_id);
3524 3509
@@ -3854,7 +3839,6 @@ static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co
3854 3839
3855 spin_lock_irqsave(&priv->lock, flags); 3840 spin_lock_irqsave(&priv->lock, flags);
3856 3841
3857#ifdef CONFIG_IWL4965_HT
3858 /* if we are switching from ht to 2.4 clear flags 3842 /* if we are switching from ht to 2.4 clear flags
3859 * from any ht related info since 2.4 does not 3843 * from any ht related info since 2.4 does not
3860 * support ht */ 3844 * support ht */
@@ -3864,7 +3848,6 @@ static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co
3864#endif 3848#endif
3865 ) 3849 )
3866 priv->staging_rxon.flags = 0; 3850 priv->staging_rxon.flags = 0;
3867#endif /* CONFIG_IWL4965_HT */
3868 3851
3869 iwl_set_rxon_channel(priv, conf->channel->band, channel); 3852 iwl_set_rxon_channel(priv, conf->channel->band, channel);
3870 3853
@@ -4489,11 +4472,9 @@ static void iwl4965_mac_reset_tsf(struct ieee80211_hw *hw)
4489 IWL_DEBUG_MAC80211("enter\n"); 4472 IWL_DEBUG_MAC80211("enter\n");
4490 4473
4491 priv->lq_mngr.lq_ready = 0; 4474 priv->lq_mngr.lq_ready = 0;
4492#ifdef CONFIG_IWL4965_HT
4493 spin_lock_irqsave(&priv->lock, flags); 4475 spin_lock_irqsave(&priv->lock, flags);
4494 memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_info)); 4476 memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_info));
4495 spin_unlock_irqrestore(&priv->lock, flags); 4477 spin_unlock_irqrestore(&priv->lock, flags);
4496#endif /* CONFIG_IWL4965_HT */
4497 4478
4498 iwl_reset_qos(priv); 4479 iwl_reset_qos(priv);
4499 4480
@@ -5100,9 +5081,7 @@ static struct ieee80211_ops iwl4965_hw_ops = {
5100 .reset_tsf = iwl4965_mac_reset_tsf, 5081 .reset_tsf = iwl4965_mac_reset_tsf,
5101 .beacon_update = iwl4965_mac_beacon_update, 5082 .beacon_update = iwl4965_mac_beacon_update,
5102 .bss_info_changed = iwl4965_bss_info_changed, 5083 .bss_info_changed = iwl4965_bss_info_changed,
5103#ifdef CONFIG_IWL4965_HT
5104 .ampdu_action = iwl4965_mac_ampdu_action, 5084 .ampdu_action = iwl4965_mac_ampdu_action,
5105#endif /* CONFIG_IWL4965_HT */
5106 .hw_scan = iwl4965_mac_hw_scan 5085 .hw_scan = iwl4965_mac_hw_scan
5107}; 5086};
5108 5087