summaryrefslogtreecommitdiffstats
path: root/sys/net80211
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net80211')
-rw-r--r--sys/net80211/ieee80211_proto.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c
index edac519..a0ddeb4 100644
--- a/sys/net80211/ieee80211_proto.c
+++ b/sys/net80211/ieee80211_proto.c
@@ -207,6 +207,21 @@ ieee80211_proto_vattach(struct ieee80211vap *vap)
const struct ieee80211_rateset *rs = &ic->ic_sup_rates[i];
vap->iv_txparms[i].ucastrate = IEEE80211_FIXED_RATE_NONE;
+
+ /*
+ * Setting the management rate to MCS 0 assumes that the
+ * BSS Basic rate set is empty and the BSS Basic MCS set
+ * is not.
+ *
+ * Since we're not checking this, default to the lowest
+ * defined rate for this mode.
+ *
+ * At least one 11n AP (DLINK DIR-825) is reported to drop
+ * some MCS management traffic (eg BA response frames.)
+ *
+ * See also: 9.6.0 of the 802.11n-2009 specification.
+ */
+#ifdef NOTYET
if (i == IEEE80211_MODE_11NA || i == IEEE80211_MODE_11NG) {
vap->iv_txparms[i].mgmtrate = 0 | IEEE80211_RATE_MCS;
vap->iv_txparms[i].mcastrate = 0 | IEEE80211_RATE_MCS;
@@ -216,6 +231,9 @@ ieee80211_proto_vattach(struct ieee80211vap *vap)
vap->iv_txparms[i].mcastrate =
rs->rs_rates[0] & IEEE80211_RATE_VAL;
}
+#endif
+ vap->iv_txparms[i].mgmtrate = rs->rs_rates[0] & IEEE80211_RATE_VAL;
+ vap->iv_txparms[i].mcastrate = rs->rs_rates[0] & IEEE80211_RATE_VAL;
vap->iv_txparms[i].maxretry = IEEE80211_TXMAX_DEFAULT;
}
vap->iv_roaming = IEEE80211_ROAMING_AUTO;
OpenPOWER on IntegriCloud