|
@@ -212,15 +212,25 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata,
|
|
|
|
|
|
sband = local->hw.wiphy->bands[wk->chan->band];
|
|
|
|
|
|
- /*
|
|
|
- * Get all rates supported by the device and the AP as
|
|
|
- * some APs don't like getting a superset of their rates
|
|
|
- * in the association request (e.g. D-Link DAP 1353 in
|
|
|
- * b-only mode)...
|
|
|
- */
|
|
|
- rates_len = ieee80211_compatible_rates(wk->assoc.supp_rates,
|
|
|
- wk->assoc.supp_rates_len,
|
|
|
- sband, &rates);
|
|
|
+ if (wk->assoc.supp_rates_len) {
|
|
|
+ /*
|
|
|
+ * Get all rates supported by the device and the AP as
|
|
|
+ * some APs don't like getting a superset of their rates
|
|
|
+ * in the association request (e.g. D-Link DAP 1353 in
|
|
|
+ * b-only mode)...
|
|
|
+ */
|
|
|
+ rates_len = ieee80211_compatible_rates(wk->assoc.supp_rates,
|
|
|
+ wk->assoc.supp_rates_len,
|
|
|
+ sband, &rates);
|
|
|
+ } else {
|
|
|
+ /*
|
|
|
+ * In case AP not provide any supported rates information
|
|
|
+ * before association, we send information element(s) with
|
|
|
+ * all rates that we support.
|
|
|
+ */
|
|
|
+ rates = ~0;
|
|
|
+ rates_len = sband->n_bitrates;
|
|
|
+ }
|
|
|
|
|
|
skb = alloc_skb(local->hw.extra_tx_headroom +
|
|
|
sizeof(*mgmt) + /* bit too much but doesn't matter */
|