diff options
Diffstat (limited to 'net/ieee80211/softmac/ieee80211softmac_module.c')
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_module.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c b/net/ieee80211/softmac/ieee80211softmac_module.c index c275646b2269..addea1cf73ae 100644 --- a/net/ieee80211/softmac/ieee80211softmac_module.c +++ b/net/ieee80211/softmac/ieee80211softmac_module.c | |||
@@ -179,21 +179,14 @@ int ieee80211softmac_ratesinfo_rate_supported(struct ieee80211softmac_ratesinfo | |||
179 | return 0; | 179 | return 0; |
180 | } | 180 | } |
181 | 181 | ||
182 | /* Finds the highest rate which is: | 182 | u8 ieee80211softmac_highest_supported_rate(struct ieee80211softmac_device *mac, |
183 | * 1. Present in ri (optionally a basic rate) | ||
184 | * 2. Supported by the device | ||
185 | * 3. Less than or equal to the user-defined rate | ||
186 | */ | ||
187 | static u8 highest_supported_rate(struct ieee80211softmac_device *mac, | ||
188 | struct ieee80211softmac_ratesinfo *ri, int basic_only) | 183 | struct ieee80211softmac_ratesinfo *ri, int basic_only) |
189 | { | 184 | { |
190 | u8 user_rate = mac->txrates.user_rate; | 185 | u8 user_rate = mac->txrates.user_rate; |
191 | int i; | 186 | int i; |
192 | 187 | ||
193 | if (ri->count == 0) { | 188 | if (ri->count == 0) |
194 | dprintk(KERN_ERR PFX "empty ratesinfo?\n"); | ||
195 | return IEEE80211_CCK_RATE_1MB; | 189 | return IEEE80211_CCK_RATE_1MB; |
196 | } | ||
197 | 190 | ||
198 | for (i = ri->count - 1; i >= 0; i--) { | 191 | for (i = ri->count - 1; i >= 0; i--) { |
199 | u8 rate = ri->rates[i]; | 192 | u8 rate = ri->rates[i]; |
@@ -209,6 +202,7 @@ static u8 highest_supported_rate(struct ieee80211softmac_device *mac, | |||
209 | /* If we haven't found a suitable rate by now, just trust the user */ | 202 | /* If we haven't found a suitable rate by now, just trust the user */ |
210 | return user_rate; | 203 | return user_rate; |
211 | } | 204 | } |
205 | EXPORT_SYMBOL_GPL(ieee80211softmac_highest_supported_rate); | ||
212 | 206 | ||
213 | void ieee80211softmac_process_erp(struct ieee80211softmac_device *mac, | 207 | void ieee80211softmac_process_erp(struct ieee80211softmac_device *mac, |
214 | u8 erp_value) | 208 | u8 erp_value) |
@@ -244,13 +238,13 @@ void ieee80211softmac_recalc_txrates(struct ieee80211softmac_device *mac) | |||
244 | u32 change = 0; | 238 | u32 change = 0; |
245 | 239 | ||
246 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; | 240 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; |
247 | txrates->default_rate = highest_supported_rate(mac, &mac->bssinfo.supported_rates, 0); | 241 | txrates->default_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 0); |
248 | 242 | ||
249 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; | 243 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; |
250 | txrates->default_fallback = lower_rate(mac, txrates->default_rate); | 244 | txrates->default_fallback = lower_rate(mac, txrates->default_rate); |
251 | 245 | ||
252 | change |= IEEE80211SOFTMAC_TXRATECHG_MCAST; | 246 | change |= IEEE80211SOFTMAC_TXRATECHG_MCAST; |
253 | txrates->mcast_rate = highest_supported_rate(mac, &mac->bssinfo.supported_rates, 1); | 247 | txrates->mcast_rate = ieee80211softmac_highest_supported_rate(mac, &mac->bssinfo.supported_rates, 1); |
254 | 248 | ||
255 | if (mac->txrates_change) | 249 | if (mac->txrates_change) |
256 | mac->txrates_change(mac->dev, change); | 250 | mac->txrates_change(mac->dev, change); |