Skip site navigation (1)Skip section navigation (2)
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>