diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2013-10-31 02:04:53 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2013-10-31 02:04:53 +0000 |
commit | 7f0660a04b4661e977c9c499388a67ab80c8ceee (patch) | |
tree | 547f491f2b20fe0b39ef797b9834702fd073404f /sys/net80211 | |
parent | 30dfa9794485694bf921fec6ce4c9d5a837d5c04 (diff) | |
download | src-7f0660a04b4661e977c9c499388a67ab80c8ceee.tar.gz src-7f0660a04b4661e977c9c499388a67ab80c8ceee.zip |
Don't treat the node as an 11n node if 11n rates are disabled.
For now, the AMRR code only knows about _either_ MCS or non-MCS rates.
It doesn't know how to downgrade (ie, doing 11b CCK rates if MCS0 isn't
reliable.)
PR: kern/183428
Notes
Notes:
svn path=/head/; revision=257412
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_amrr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_amrr.c b/sys/net80211/ieee80211_amrr.c index e34de963a1c5..be2668ddf0b0 100644 --- a/sys/net80211/ieee80211_amrr.c +++ b/sys/net80211/ieee80211_amrr.c @@ -131,6 +131,12 @@ amrr_deinit(struct ieee80211vap *vap) free(vap->iv_rs, M_80211_RATECTL); } +/* + * Return whether 11n rates are possible. + * + * Some 11n devices may return HT information but no HT rates. + * Thus, we shouldn't treat them as an 11n node. + */ static int amrr_node_is_11n(struct ieee80211_node *ni) { @@ -139,6 +145,8 @@ amrr_node_is_11n(struct ieee80211_node *ni) return (0); if (ni->ni_chan == IEEE80211_CHAN_ANYC) return (0); + if (IEEE80211_IS_CHAN_HT(ni->ni_chan) && ni->ni_htrates.rs_nrates == 0) + return (0); return (IEEE80211_IS_CHAN_HT(ni->ni_chan)); } |