diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-09-22 12:02:04 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-10-07 18:51:20 -0400 |
commit | 635b85b42796a6ab4e6a31cde78f1d9660c9c4a0 (patch) | |
tree | 24bc9771d3342a6c01cc6423ea836ca1e05aa8e6 /drivers/net/wireless/iwlwifi | |
parent | 57934dc1fb7ef65a8a0f5d7a1578536b36043c0a (diff) |
iwlwifi: remove agn rates info there
Code and data related to agn bitrates can be
part of the agn module rather than being in
the core module.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 68 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 70 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 2 |
6 files changed, 80 insertions, 84 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c index 4b3eb785dcb2..ba3ab04c1fba 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c | |||
@@ -87,6 +87,15 @@ const struct iwl3945_rate_info iwl3945_rates[IWL_RATE_COUNT_3945] = { | |||
87 | IWL_DECLARE_RATE_INFO(54, 48, INV, 48, INV, 48, INV),/* 54mbps */ | 87 | IWL_DECLARE_RATE_INFO(54, 48, INV, 48, INV, 48, INV),/* 54mbps */ |
88 | }; | 88 | }; |
89 | 89 | ||
90 | static inline u8 iwl3945_get_prev_ieee_rate(u8 rate_index) | ||
91 | { | ||
92 | u8 rate = iwl3945_rates[rate_index].prev_ieee; | ||
93 | |||
94 | if (rate == IWL_RATE_INVALID) | ||
95 | rate = rate_index; | ||
96 | return rate; | ||
97 | } | ||
98 | |||
90 | /* 1 = enable the iwl3945_disable_events() function */ | 99 | /* 1 = enable the iwl3945_disable_events() function */ |
91 | #define IWL_EVT_DISABLE (0) | 100 | #define IWL_EVT_DISABLE (0) |
92 | #define IWL_EVT_DISABLE_SIZE (1532/32) | 101 | #define IWL_EVT_DISABLE_SIZE (1532/32) |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.h b/drivers/net/wireless/iwlwifi/iwl-3945.h index 77e8e1970350..09391f0ee61f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945.h | |||
@@ -138,8 +138,6 @@ enum iwl3945_antenna { | |||
138 | #define DEFAULT_SHORT_RETRY_LIMIT 7U | 138 | #define DEFAULT_SHORT_RETRY_LIMIT 7U |
139 | #define DEFAULT_LONG_RETRY_LIMIT 4U | 139 | #define DEFAULT_LONG_RETRY_LIMIT 4U |
140 | 140 | ||
141 | #include "iwl-agn-rs.h" | ||
142 | |||
143 | #define IWL_TX_FIFO_AC0 0 | 141 | #define IWL_TX_FIFO_AC0 0 |
144 | #define IWL_TX_FIFO_AC1 1 | 142 | #define IWL_TX_FIFO_AC1 1 |
145 | #define IWL_TX_FIFO_AC2 2 | 143 | #define IWL_TX_FIFO_AC2 2 |
@@ -301,6 +299,9 @@ extern int iwl3945_rs_next_rate(struct iwl_priv *priv, int rate); | |||
301 | int iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif); | 299 | int iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif); |
302 | void iwl3945_post_scan(struct iwl_priv *priv); | 300 | void iwl3945_post_scan(struct iwl_priv *priv); |
303 | 301 | ||
302 | /* rates */ | ||
303 | extern const struct iwl3945_rate_info iwl3945_rates[IWL_RATE_COUNT_3945]; | ||
304 | |||
304 | /* Requires full declaration of iwl_priv before including */ | 305 | /* Requires full declaration of iwl_priv before including */ |
305 | #include "iwl-io.h" | 306 | #include "iwl-io.h" |
306 | 307 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index 7e5cf1a2b21e..5abe2e9ff0d2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | |||
@@ -77,6 +77,74 @@ static const u8 ant_toggle_lookup[] = { | |||
77 | /*ANT_ABC -> */ ANT_ABC, | 77 | /*ANT_ABC -> */ ANT_ABC, |
78 | }; | 78 | }; |
79 | 79 | ||
80 | #define IWL_DECLARE_RATE_INFO(r, s, ip, in, rp, rn, pp, np) \ | ||
81 | [IWL_RATE_##r##M_INDEX] = { IWL_RATE_##r##M_PLCP, \ | ||
82 | IWL_RATE_SISO_##s##M_PLCP, \ | ||
83 | IWL_RATE_MIMO2_##s##M_PLCP,\ | ||
84 | IWL_RATE_MIMO3_##s##M_PLCP,\ | ||
85 | IWL_RATE_##r##M_IEEE, \ | ||
86 | IWL_RATE_##ip##M_INDEX, \ | ||
87 | IWL_RATE_##in##M_INDEX, \ | ||
88 | IWL_RATE_##rp##M_INDEX, \ | ||
89 | IWL_RATE_##rn##M_INDEX, \ | ||
90 | IWL_RATE_##pp##M_INDEX, \ | ||
91 | IWL_RATE_##np##M_INDEX } | ||
92 | |||
93 | /* | ||
94 | * Parameter order: | ||
95 | * rate, ht rate, prev rate, next rate, prev tgg rate, next tgg rate | ||
96 | * | ||
97 | * If there isn't a valid next or previous rate then INV is used which | ||
98 | * maps to IWL_RATE_INVALID | ||
99 | * | ||
100 | */ | ||
101 | const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT] = { | ||
102 | IWL_DECLARE_RATE_INFO(1, INV, INV, 2, INV, 2, INV, 2), /* 1mbps */ | ||
103 | IWL_DECLARE_RATE_INFO(2, INV, 1, 5, 1, 5, 1, 5), /* 2mbps */ | ||
104 | IWL_DECLARE_RATE_INFO(5, INV, 2, 6, 2, 11, 2, 11), /*5.5mbps */ | ||
105 | IWL_DECLARE_RATE_INFO(11, INV, 9, 12, 9, 12, 5, 18), /* 11mbps */ | ||
106 | IWL_DECLARE_RATE_INFO(6, 6, 5, 9, 5, 11, 5, 11), /* 6mbps */ | ||
107 | IWL_DECLARE_RATE_INFO(9, 6, 6, 11, 6, 11, 5, 11), /* 9mbps */ | ||
108 | IWL_DECLARE_RATE_INFO(12, 12, 11, 18, 11, 18, 11, 18), /* 12mbps */ | ||
109 | IWL_DECLARE_RATE_INFO(18, 18, 12, 24, 12, 24, 11, 24), /* 18mbps */ | ||
110 | IWL_DECLARE_RATE_INFO(24, 24, 18, 36, 18, 36, 18, 36), /* 24mbps */ | ||
111 | IWL_DECLARE_RATE_INFO(36, 36, 24, 48, 24, 48, 24, 48), /* 36mbps */ | ||
112 | IWL_DECLARE_RATE_INFO(48, 48, 36, 54, 36, 54, 36, 54), /* 48mbps */ | ||
113 | IWL_DECLARE_RATE_INFO(54, 54, 48, INV, 48, INV, 48, INV),/* 54mbps */ | ||
114 | IWL_DECLARE_RATE_INFO(60, 60, 48, INV, 48, INV, 48, INV),/* 60mbps */ | ||
115 | /* FIXME:RS: ^^ should be INV (legacy) */ | ||
116 | }; | ||
117 | |||
118 | static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags) | ||
119 | { | ||
120 | int idx = 0; | ||
121 | |||
122 | /* HT rate format */ | ||
123 | if (rate_n_flags & RATE_MCS_HT_MSK) { | ||
124 | idx = (rate_n_flags & 0xff); | ||
125 | |||
126 | if (idx >= IWL_RATE_MIMO3_6M_PLCP) | ||
127 | idx = idx - IWL_RATE_MIMO3_6M_PLCP; | ||
128 | else if (idx >= IWL_RATE_MIMO2_6M_PLCP) | ||
129 | idx = idx - IWL_RATE_MIMO2_6M_PLCP; | ||
130 | |||
131 | idx += IWL_FIRST_OFDM_RATE; | ||
132 | /* skip 9M not supported in ht*/ | ||
133 | if (idx >= IWL_RATE_9M_INDEX) | ||
134 | idx += 1; | ||
135 | if ((idx >= IWL_FIRST_OFDM_RATE) && (idx <= IWL_LAST_OFDM_RATE)) | ||
136 | return idx; | ||
137 | |||
138 | /* legacy rate format, search for match in table */ | ||
139 | } else { | ||
140 | for (idx = 0; idx < ARRAY_SIZE(iwl_rates); idx++) | ||
141 | if (iwl_rates[idx].plcp == (rate_n_flags & 0xFF)) | ||
142 | return idx; | ||
143 | } | ||
144 | |||
145 | return -1; | ||
146 | } | ||
147 | |||
80 | static void rs_rate_scale_perform(struct iwl_priv *priv, | 148 | static void rs_rate_scale_perform(struct iwl_priv *priv, |
81 | struct sk_buff *skb, | 149 | struct sk_buff *skb, |
82 | struct ieee80211_sta *sta, | 150 | struct ieee80211_sta *sta, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h index 357cdb26f16d..75e50d33ecb3 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h | |||
@@ -299,7 +299,6 @@ enum { | |||
299 | #define TIME_WRAP_AROUND(x, y) (((y) > (x)) ? (y) - (x) : (0-(x)) + (y)) | 299 | #define TIME_WRAP_AROUND(x, y) (((y) > (x)) ? (y) - (x) : (0-(x)) + (y)) |
300 | 300 | ||
301 | extern const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT]; | 301 | extern const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT]; |
302 | extern const struct iwl3945_rate_info iwl3945_rates[IWL_RATE_COUNT_3945]; | ||
303 | 302 | ||
304 | enum iwl_table_type { | 303 | enum iwl_table_type { |
305 | LQ_NONE, | 304 | LQ_NONE, |
@@ -453,15 +452,6 @@ static inline u8 first_antenna(u8 mask) | |||
453 | } | 452 | } |
454 | 453 | ||
455 | 454 | ||
456 | static inline u8 iwl3945_get_prev_ieee_rate(u8 rate_index) | ||
457 | { | ||
458 | u8 rate = iwl3945_rates[rate_index].prev_ieee; | ||
459 | |||
460 | if (rate == IWL_RATE_INVALID) | ||
461 | rate = rate_index; | ||
462 | return rate; | ||
463 | } | ||
464 | |||
465 | /** | 455 | /** |
466 | * iwl3945_rate_scale_init - Initialize the rate scale table based on assoc info | 456 | * iwl3945_rate_scale_init - Initialize the rate scale table based on assoc info |
467 | * | 457 | * |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index eefcb2d1a738..295038450a01 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c | |||
@@ -69,79 +69,9 @@ EXPORT_SYMBOL_GPL(bt_coex_active); | |||
69 | module_param(bt_coex_active, bool, S_IRUGO); | 69 | module_param(bt_coex_active, bool, S_IRUGO); |
70 | MODULE_PARM_DESC(bt_coex_active, "enable wifi/bluetooth co-exist"); | 70 | MODULE_PARM_DESC(bt_coex_active, "enable wifi/bluetooth co-exist"); |
71 | 71 | ||
72 | #define IWL_DECLARE_RATE_INFO(r, s, ip, in, rp, rn, pp, np) \ | ||
73 | [IWL_RATE_##r##M_INDEX] = { IWL_RATE_##r##M_PLCP, \ | ||
74 | IWL_RATE_SISO_##s##M_PLCP, \ | ||
75 | IWL_RATE_MIMO2_##s##M_PLCP,\ | ||
76 | IWL_RATE_MIMO3_##s##M_PLCP,\ | ||
77 | IWL_RATE_##r##M_IEEE, \ | ||
78 | IWL_RATE_##ip##M_INDEX, \ | ||
79 | IWL_RATE_##in##M_INDEX, \ | ||
80 | IWL_RATE_##rp##M_INDEX, \ | ||
81 | IWL_RATE_##rn##M_INDEX, \ | ||
82 | IWL_RATE_##pp##M_INDEX, \ | ||
83 | IWL_RATE_##np##M_INDEX } | ||
84 | |||
85 | u32 iwl_debug_level; | 72 | u32 iwl_debug_level; |
86 | EXPORT_SYMBOL(iwl_debug_level); | 73 | EXPORT_SYMBOL(iwl_debug_level); |
87 | 74 | ||
88 | /* | ||
89 | * Parameter order: | ||
90 | * rate, ht rate, prev rate, next rate, prev tgg rate, next tgg rate | ||
91 | * | ||
92 | * If there isn't a valid next or previous rate then INV is used which | ||
93 | * maps to IWL_RATE_INVALID | ||
94 | * | ||
95 | */ | ||
96 | const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT] = { | ||
97 | IWL_DECLARE_RATE_INFO(1, INV, INV, 2, INV, 2, INV, 2), /* 1mbps */ | ||
98 | IWL_DECLARE_RATE_INFO(2, INV, 1, 5, 1, 5, 1, 5), /* 2mbps */ | ||
99 | IWL_DECLARE_RATE_INFO(5, INV, 2, 6, 2, 11, 2, 11), /*5.5mbps */ | ||
100 | IWL_DECLARE_RATE_INFO(11, INV, 9, 12, 9, 12, 5, 18), /* 11mbps */ | ||
101 | IWL_DECLARE_RATE_INFO(6, 6, 5, 9, 5, 11, 5, 11), /* 6mbps */ | ||
102 | IWL_DECLARE_RATE_INFO(9, 6, 6, 11, 6, 11, 5, 11), /* 9mbps */ | ||
103 | IWL_DECLARE_RATE_INFO(12, 12, 11, 18, 11, 18, 11, 18), /* 12mbps */ | ||
104 | IWL_DECLARE_RATE_INFO(18, 18, 12, 24, 12, 24, 11, 24), /* 18mbps */ | ||
105 | IWL_DECLARE_RATE_INFO(24, 24, 18, 36, 18, 36, 18, 36), /* 24mbps */ | ||
106 | IWL_DECLARE_RATE_INFO(36, 36, 24, 48, 24, 48, 24, 48), /* 36mbps */ | ||
107 | IWL_DECLARE_RATE_INFO(48, 48, 36, 54, 36, 54, 36, 54), /* 48mbps */ | ||
108 | IWL_DECLARE_RATE_INFO(54, 54, 48, INV, 48, INV, 48, INV),/* 54mbps */ | ||
109 | IWL_DECLARE_RATE_INFO(60, 60, 48, INV, 48, INV, 48, INV),/* 60mbps */ | ||
110 | /* FIXME:RS: ^^ should be INV (legacy) */ | ||
111 | }; | ||
112 | EXPORT_SYMBOL(iwl_rates); | ||
113 | |||
114 | int iwl_hwrate_to_plcp_idx(u32 rate_n_flags) | ||
115 | { | ||
116 | int idx = 0; | ||
117 | |||
118 | /* HT rate format */ | ||
119 | if (rate_n_flags & RATE_MCS_HT_MSK) { | ||
120 | idx = (rate_n_flags & 0xff); | ||
121 | |||
122 | if (idx >= IWL_RATE_MIMO3_6M_PLCP) | ||
123 | idx = idx - IWL_RATE_MIMO3_6M_PLCP; | ||
124 | else if (idx >= IWL_RATE_MIMO2_6M_PLCP) | ||
125 | idx = idx - IWL_RATE_MIMO2_6M_PLCP; | ||
126 | |||
127 | idx += IWL_FIRST_OFDM_RATE; | ||
128 | /* skip 9M not supported in ht*/ | ||
129 | if (idx >= IWL_RATE_9M_INDEX) | ||
130 | idx += 1; | ||
131 | if ((idx >= IWL_FIRST_OFDM_RATE) && (idx <= IWL_LAST_OFDM_RATE)) | ||
132 | return idx; | ||
133 | |||
134 | /* legacy rate format, search for match in table */ | ||
135 | } else { | ||
136 | for (idx = 0; idx < ARRAY_SIZE(iwl_rates); idx++) | ||
137 | if (iwl_rates[idx].plcp == (rate_n_flags & 0xFF)) | ||
138 | return idx; | ||
139 | } | ||
140 | |||
141 | return -1; | ||
142 | } | ||
143 | EXPORT_SYMBOL(iwl_hwrate_to_plcp_idx); | ||
144 | |||
145 | u8 iwl_toggle_tx_ant(struct iwl_priv *priv, u8 ant, u8 valid) | 75 | u8 iwl_toggle_tx_ant(struct iwl_priv *priv, u8 ant, u8 valid) |
146 | { | 76 | { |
147 | int i; | 77 | int i; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index 31ec9db58b26..56251de85100 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -547,8 +547,6 @@ int iwl_set_tx_power(struct iwl_priv *priv, s8 tx_power, bool force); | |||
547 | * Rate | 547 | * Rate |
548 | ******************************************************************************/ | 548 | ******************************************************************************/ |
549 | 549 | ||
550 | int iwl_hwrate_to_plcp_idx(u32 rate_n_flags); | ||
551 | |||
552 | u8 iwl_rate_get_lowest_plcp(struct iwl_priv *priv, | 550 | u8 iwl_rate_get_lowest_plcp(struct iwl_priv *priv, |
553 | struct iwl_rxon_context *ctx); | 551 | struct iwl_rxon_context *ctx); |
554 | 552 | ||