aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/util.c
diff options
context:
space:
mode:
authorAshok Nagarajan <ashok@cozybit.com>2012-04-03 00:21:21 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-04-11 16:23:47 -0400
commit9ebb61a23d90703344fc609fbee8da67b1e7456c (patch)
tree021483e65ed424166b539d9a26d92d415c842d86 /net/mac80211/util.c
parent657c3e0c4147bb3d3fdd338e32b83b968b0f9d02 (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.c16
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
1110u32 ieee80211_sta_get_rates(struct ieee80211_local *local, 1110u32 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}