summaryrefslogtreecommitdiffstats
path: root/sys/net80211
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-10-31 02:04:53 +0000
committeradrian <adrian@FreeBSD.org>2013-10-31 02:04:53 +0000
commit54f6325afa0f304c12e3e6550fb8e6f5a0f68973 (patch)
tree547f491f2b20fe0b39ef797b9834702fd073404f /sys/net80211
parent15dfb2f27961b2aa0b3843b514a4642512be9d67 (diff)
downloadFreeBSD-src-54f6325afa0f304c12e3e6550fb8e6f5a0f68973.zip
FreeBSD-src-54f6325afa0f304c12e3e6550fb8e6f5a0f68973.tar.gz
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
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 e34de96..be2668d 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));
}
OpenPOWER on IntegriCloud