Date: Mon, 2 May 2011 13:44:05 +0800 From: Adrian Chadd <adrian@freebsd.org> To: freebsd-wireless@freebsd.org Subject: [net80211] patch: make aggressive mode a compile time option Message-ID: <BANLkTikyjJXtWDaUN2rHzyM=yCTsUh=JPA@mail.gmail.com>
index | next in thread | raw e-mail
[-- Attachment #1 --]
Right now aggressive mode is enabled by default. This twiddles the WME
parameters for the bulk data queue to allow bursting if there's no
data on the higher priority queues.
This patch disables it by default and adds a new compile time option
that restores the previous behaviour.
I'd like to suggest this be disabled by default as it differs from the
"specification" 802.11e behaviour and I'm not yet entirely convinced
it's working correctly. Specifically, I've seen hostap setups set the
wme beacon field to the aggressive mode parameters but not update the
wlan interface with them; making the AP wlan interface nconsistent
with th erest of the stations.
I'm open to making it on by default but still make it easy to disable
as a build-time option.
Thanks,
Adrian
[-- Attachment #2 --]
Index: sys/conf/options
===================================================================
--- sys/conf/options (revision 221312)
+++ sys/conf/options (working copy)
@@ -839,6 +839,7 @@
IEEE80211_SUPPORT_SUPERG opt_wlan.h
IEEE80211_SUPPORT_TDMA opt_wlan.h
IEEE80211_ALQ opt_wlan.h
+IEEE80211_SUPPORT_AGGRMODE opt_wlan.h
# 802.11 TDMA support
TDMA_SLOTLEN_DEFAULT opt_tdma.h
Index: sys/net80211/ieee80211_output.c
===================================================================
--- sys/net80211/ieee80211_output.c (revision 220911)
+++ sys/net80211/ieee80211_output.c (working copy)
@@ -2820,6 +2820,7 @@
if (vap->iv_flags & IEEE80211_F_WME) {
struct ieee80211_wme_state *wme = &ic->ic_wme;
+#ifdef IEEE80211_SUPPORT_AGGRMODE
/*
* Check for agressive mode change. When there is
* significant high priority traffic in the BSS
@@ -2852,6 +2853,8 @@
wme->wme_hipri_traffic =
wme->wme_hipri_switch_hysteresis;
}
+#endif /* IEEE80211_SUPPORT_AGGRMODE */
+
if (isset(bo->bo_flags, IEEE80211_BEACON_WME)) {
(void) ieee80211_add_wme_param(bo->bo_wme, wme);
clrbit(bo->bo_flags, IEEE80211_BEACON_WME);
Index: sys/net80211/ieee80211_proto.c
===================================================================
--- sys/net80211/ieee80211_proto.c (revision 220911)
+++ sys/net80211/ieee80211_proto.c (working copy)
@@ -974,6 +974,7 @@
void
ieee80211_wme_updateparams_locked(struct ieee80211vap *vap)
{
+#ifdef IEEE80211_SUPPORT_AGGRMODE
static const paramType aggrParam[IEEE80211_MODE_MAX] = {
[IEEE80211_MODE_AUTO] = { 2, 4, 10, 64, 0 },
[IEEE80211_MODE_11A] = { 2, 4, 10, 64, 0 },
@@ -988,10 +989,14 @@
[IEEE80211_MODE_11NA] = { 2, 4, 10, 64, 0 }, /* XXXcheck*/
[IEEE80211_MODE_11NG] = { 2, 4, 10, 64, 0 }, /* XXXcheck*/
};
+ struct wmeParams *bssp;
+
+#endif /* IEEE80211_SUPPORT_AGGRMODE */
+
struct ieee80211com *ic = vap->iv_ic;
struct ieee80211_wme_state *wme = &ic->ic_wme;
const struct wmeParams *wmep;
- struct wmeParams *chanp, *bssp;
+ struct wmeParams *chanp;
enum ieee80211_phymode mode;
int i;
@@ -1026,6 +1031,7 @@
else
mode = IEEE80211_MODE_AUTO;
+#ifdef IEEE80211_SUPPORT_AGGRMODE
/*
* This implements agressive mode as found in certain
* vendors' AP's. When there is significant high
@@ -1081,6 +1087,8 @@
"update %s (chan+bss) logcwmin %u\n",
ieee80211_wme_acnames[WME_AC_BE], chanp->wmep_logcwmin);
}
+#endif /* IEEE80211_SUPPORT_AGGRMODE */
+
if (vap->iv_opmode == IEEE80211_M_HOSTAP) { /* XXX ibss? */
/*
* Arrange for a beacon update and bump the parameter
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTikyjJXtWDaUN2rHzyM=yCTsUh=JPA>
