aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2007-11-23 06:14:32 +0000
committerSam Leffler <sam@FreeBSD.org>2007-11-23 06:14:32 +0000
commit849b4d998c4de1c10e037621e69dcf5f6a8d7e84 (patch)
tree2eeb3f7b65a069881d686cdaf751f0085df93286
parentcb42c5bba6de15e7dcb9191deaa4cf2a1d9bc1dc (diff)
Notes
-rw-r--r--sys/net80211/ieee80211_ht.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c
index 1cca85c15e354..aa855a4cfeb23 100644
--- a/sys/net80211/ieee80211_ht.c
+++ b/sys/net80211/ieee80211_ht.c
@@ -1795,6 +1795,7 @@ ieee80211_add_htcap_body(uint8_t *frm, struct ieee80211_node *ni)
} while (0)
struct ieee80211com *ic = ni->ni_ic;
uint16_t caps;
+ int rxmax, density;
/* HT capabilities */
caps = ic->ic_htcaps & 0xffff;
@@ -1812,12 +1813,17 @@ ieee80211_add_htcap_body(uint8_t *frm, struct ieee80211_node *ni)
caps |= IEEE80211_HTCAP_CHWIDTH40;
else
caps &= ~IEEE80211_HTCAP_CHWIDTH40;
+ /* use advertised setting (XXX locally constraint) */
+ rxmax = MS(ni->ni_htparam, IEEE80211_HTCAP_MAXRXAMPDU);
+ density = MS(ni->ni_htparam, IEEE80211_HTCAP_MPDUDENSITY);
} else {
/* override 20/40 use based on current channel */
if (IEEE80211_IS_CHAN_HT40(ic->ic_bsschan))
caps |= IEEE80211_HTCAP_CHWIDTH40;
else
caps &= ~IEEE80211_HTCAP_CHWIDTH40;
+ rxmax = ic->ic_ampdu_rxmax;
+ density = ic->ic_ampdu_density;
}
/* adjust short GI based on channel and config */
if ((ic->ic_flags_ext & IEEE80211_FEXT_SHORTGI20) == 0)
@@ -1828,8 +1834,8 @@ ieee80211_add_htcap_body(uint8_t *frm, struct ieee80211_node *ni)
ADDSHORT(frm, caps);
/* HT parameters */
- *frm = SM(ic->ic_ampdu_rxmax, IEEE80211_HTCAP_MAXRXAMPDU)
- | SM(ic->ic_ampdu_density, IEEE80211_HTCAP_MPDUDENSITY)
+ *frm = SM(rxmax, IEEE80211_HTCAP_MAXRXAMPDU)
+ | SM(density, IEEE80211_HTCAP_MPDUDENSITY)
;
frm++;