diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/Kconfig | 8 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965-rs.c | 46 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 62 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 44 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-debugfs.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 14 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-sta.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-tx.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 23 |
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 | ||
57 | config 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 | |||
65 | config IWL4965_LEDS | 57 | config 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 | |||
110 | struct iwl4965_traffic_load { | 108 | struct 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 | |||
394 | static inline int get_num_of_ant_from_rate(u32 rate_n_flags) | 383 | static 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 |
631 | static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf) | 619 | static 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 |
638 | static inline u8 rs_use_green(struct iwl_priv *priv, struct ieee80211_conf *conf) | 626 | static 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 | ||
1161 | static int rs_switch_to_mimo2(struct iwl_priv *priv, | 1145 | static 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 | ||
1225 | static 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 | ||
3161 | static int iwl4965_rx_agg_start(struct iwl_priv *priv, | 3153 | static 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 | ||
3237 | static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len) | 3227 | static 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 | ||
3266 | static inline u32 iwl4965_get_scd_ssn(struct iwl4965_tx_resp *tx_resp) | 3255 | static 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 | ||
3522 | void iwl4965_hw_setup_deferred_work(struct iwl_priv *priv) | 3504 | void 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 | } |
322 | EXPORT_SYMBOL(iwl_reset_qos); | 322 | EXPORT_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 */ |
327 | static void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv, | 326 | static 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 | ||
378 | static 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 | ||
385 | static void iwlcore_init_hw_rates(struct iwl_priv *priv, | 377 | static 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 | ||
557 | static u8 is_single_rx_stream(struct iwl_priv *priv) | 548 | static 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 | } |
661 | EXPORT_SYMBOL(iwl_set_rxon_ht); | 652 | EXPORT_SYMBOL(iwl_set_rxon_ht); |
662 | 653 | ||
663 | #else | ||
664 | static 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); | |||
233 | int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *tfd, | 231 | int 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); |
235 | int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq); | 233 | int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq); |
236 | #ifdef CONFIG_IWL4965_HT | ||
237 | int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn); | 234 | int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn); |
238 | int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid); | 235 | int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid); |
239 | int iwl_txq_check_empty(struct iwl_priv *priv, int sta_id, u8 tid, int txq_id); | 236 | int 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 | ||
435 | struct iwl_tid_data { | 433 | struct 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 | ||
443 | struct iwl_hw_key { | 439 | struct 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 | ||
756 | extern void iwl4965_init_ht_hw_capab(const struct iwl_priv *priv, | 751 | extern 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); |
764 | int iwl4965_check_empty_hw_queue(struct iwl_priv *priv, int sta_id, | 759 | int 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 | ||
767 | static 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 | ||
1254 | static inline int iwl_get_ra_sta_id(struct iwl_priv *priv, | 1241 | static 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 | ||
1276 | static inline int iwl_is_associated(struct iwl_priv *priv) | 1262 | static 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 | } |
157 | EXPORT_SYMBOL(iwl_send_add_sta); | 157 | EXPORT_SYMBOL(iwl_send_add_sta); |
158 | 158 | ||
159 | #ifdef CONFIG_IWL4965_HT | ||
160 | |||
161 | static void iwl_set_ht_add_station(struct iwl_priv *priv, u8 index, | 159 | static 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 | ||
206 | static 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 | |||
41 | static const u16 default_tid_to_tx_fifo[] = { | 39 | static 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 | } |
1197 | EXPORT_SYMBOL(iwl_tx_cmd_complete); | 1190 | EXPORT_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 | } |
1361 | EXPORT_SYMBOL(iwl_txq_check_empty); | 1352 | EXPORT_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 | ||
638 | static void iwl4965_ht_conf(struct iwl_priv *priv, | 637 | static 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 | ||
711 | static inline void iwl4965_ht_conf(struct iwl_priv *priv, | ||
712 | struct ieee80211_bss_conf *bss_conf) | ||
713 | { | ||
714 | } | ||
715 | static 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 | ||