svn commit: r219599 - head/sys/net80211
Bernhard Schmidt
bschmidt at FreeBSD.org
Sun Mar 13 11:47:44 UTC 2011
Author: bschmidt
Date: Sun Mar 13 11:47:43 2011
New Revision: 219599
URL: http://svn.freebsd.org/changeset/base/219599
Log:
While determining the maxrate for ieee80211_media_setup() honor
the device capabilities.
Modified:
head/sys/net80211/ieee80211.c
Modified: head/sys/net80211/ieee80211.c
==============================================================================
--- head/sys/net80211/ieee80211.c Sun Mar 13 11:45:58 2011 (r219598)
+++ head/sys/net80211/ieee80211.c Sun Mar 13 11:47:43 2011 (r219599)
@@ -1076,10 +1076,18 @@ ieee80211_media_setup(struct ieee80211co
isset(ic->ic_modecaps, IEEE80211_MODE_11NG)) {
addmedia(media, caps, addsta,
IEEE80211_MODE_AUTO, IFM_IEEE80211_MCS);
- /* XXX could walk htrates */
- /* XXX known array size */
- if (ieee80211_htrates[15].ht40_rate_400ns > maxrate)
- maxrate = ieee80211_htrates[15].ht40_rate_400ns;
+ i = ic->ic_txstream * 8 - 1;
+ if ((ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40) &&
+ (ic->ic_htcaps & IEEE80211_HTCAP_SHORTGI40))
+ rate = ieee80211_htrates[i].ht40_rate_400ns;
+ else if ((ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40))
+ rate = ieee80211_htrates[i].ht40_rate_800ns;
+ else if ((ic->ic_htcaps & IEEE80211_HTCAP_SHORTGI20))
+ rate = ieee80211_htrates[i].ht20_rate_400ns;
+ else
+ rate = ieee80211_htrates[i].ht20_rate_800ns;
+ if (rate > maxrate)
+ maxrate = rate;
}
return maxrate;
}
More information about the svn-src-all
mailing list