aboutsummaryrefslogtreecommitdiff
path: root/sys/net80211
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2013-10-31 02:04:53 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2013-10-31 02:04:53 +0000
commit7f0660a04b4661e977c9c499388a67ab80c8ceee (patch)
tree547f491f2b20fe0b39ef797b9834702fd073404f /sys/net80211
parent30dfa9794485694bf921fec6ce4c9d5a837d5c04 (diff)
downloadsrc-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.c8
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));
}