diff options
author | Ashok Nagarajan <ashok@cozybit.com> | 2012-04-03 00:21:21 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-04-11 16:23:47 -0400 |
commit | 9ebb61a23d90703344fc609fbee8da67b1e7456c (patch) | |
tree | 021483e65ed424166b539d9a26d92d415c842d86 /net/mac80211/util.c | |
parent | 657c3e0c4147bb3d3fdd338e32b83b968b0f9d02 (diff) |
mac80211: Modify sta_get_rates to give basic rates
Signed-off-by: Ashok Nagarajan <ashok@cozybit.com>
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 468a18ea1f1b..a18b693042b2 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -1109,7 +1109,7 @@ void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, | |||
1109 | 1109 | ||
1110 | u32 ieee80211_sta_get_rates(struct ieee80211_local *local, | 1110 | u32 ieee80211_sta_get_rates(struct ieee80211_local *local, |
1111 | struct ieee802_11_elems *elems, | 1111 | struct ieee802_11_elems *elems, |
1112 | enum ieee80211_band band) | 1112 | enum ieee80211_band band, u32 *basic_rates) |
1113 | { | 1113 | { |
1114 | struct ieee80211_supported_band *sband; | 1114 | struct ieee80211_supported_band *sband; |
1115 | struct ieee80211_rate *bitrates; | 1115 | struct ieee80211_rate *bitrates; |
@@ -1130,15 +1130,25 @@ u32 ieee80211_sta_get_rates(struct ieee80211_local *local, | |||
1130 | elems->ext_supp_rates_len; i++) { | 1130 | elems->ext_supp_rates_len; i++) { |
1131 | u8 rate = 0; | 1131 | u8 rate = 0; |
1132 | int own_rate; | 1132 | int own_rate; |
1133 | bool is_basic; | ||
1133 | if (i < elems->supp_rates_len) | 1134 | if (i < elems->supp_rates_len) |
1134 | rate = elems->supp_rates[i]; | 1135 | rate = elems->supp_rates[i]; |
1135 | else if (elems->ext_supp_rates) | 1136 | else if (elems->ext_supp_rates) |
1136 | rate = elems->ext_supp_rates | 1137 | rate = elems->ext_supp_rates |
1137 | [i - elems->supp_rates_len]; | 1138 | [i - elems->supp_rates_len]; |
1138 | own_rate = 5 * (rate & 0x7f); | 1139 | own_rate = 5 * (rate & 0x7f); |
1139 | for (j = 0; j < num_rates; j++) | 1140 | is_basic = !!(rate & 0x80); |
1140 | if (bitrates[j].bitrate == own_rate) | 1141 | |
1142 | if (is_basic && (rate & 0x7f) == BSS_MEMBERSHIP_SELECTOR_HT_PHY) | ||
1143 | continue; | ||
1144 | |||
1145 | for (j = 0; j < num_rates; j++) { | ||
1146 | if (bitrates[j].bitrate == own_rate) { | ||
1141 | supp_rates |= BIT(j); | 1147 | supp_rates |= BIT(j); |
1148 | if (basic_rates && is_basic) | ||
1149 | *basic_rates |= BIT(j); | ||
1150 | } | ||
1151 | } | ||
1142 | } | 1152 | } |
1143 | return supp_rates; | 1153 | return supp_rates; |
1144 | } | 1154 | } |