aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/ieee80211softmac.h8
-rw-r--r--net/ieee80211/softmac/ieee80211softmac_module.c16
2 files changed, 13 insertions, 11 deletions
diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h
index c27d03433c21..425b3a57ac74 100644
--- a/include/net/ieee80211softmac.h
+++ b/include/net/ieee80211softmac.h
@@ -279,6 +279,14 @@ extern void ieee80211softmac_fragment_lost(struct net_device *dev,
279 * Note that the rates need to be sorted. */ 279 * Note that the rates need to be sorted. */
280extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates); 280extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates);
281 281
282/* Finds the highest rate which is:
283 * 1. Present in ri (optionally a basic rate)
284 * 2. Supported by the device
285 * 3. Less than or equal to the user-defined rate
286 */
287extern u8 ieee80211softmac_highest_supported_rate(struct ieee80211softmac_device *mac,
288 struct ieee80211softmac_ratesinfo *ri, int basic_only);
289
282/* Helper function which advises you the rate at which a frame should be 290/* Helper function which advises you the rate at which a frame should be
283 * transmitted at. */ 291 * transmitted at. */
284static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device *mac, 292static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device *mac,
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: 182u8 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 */
187static 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}
205EXPORT_SYMBOL_GPL(ieee80211softmac_highest_supported_rate);
212 206
213void ieee80211softmac_process_erp(struct ieee80211softmac_device *mac, 207void 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);