Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Dec 2004 00:20:45 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 66378 for review
Message-ID:  <200412040020.iB40KjJp006508@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=66378

Change 66378 by sam@sam_ebb on 2004/12/04 00:20:23

	o get/set beacon interval
	o disallow dtim period set in other than ap + ibss modes

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211.c#14 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#25 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#15 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_var.h#17 edit

Differences ...

==== //depot/projects/wifi/sys/net80211/ieee80211.c#14 (text+ko) ====

@@ -168,7 +168,7 @@
 	(void) ieee80211_setmode(ic, ic->ic_curmode);
 
 	if (ic->ic_lintval == 0)
-		ic->ic_lintval = 100;		/* default sleep */
+		ic->ic_lintval = IEEE80211_BINTVAL_DEFAULT;
 	ic->ic_bmisstimeout = 7*ic->ic_lintval;	/* default 7 beacons */
 	ic->ic_dtim_period = IEEE80211_DTIM_DEFAULT;
 	IEEE80211_BEACON_LOCK_INIT(ic, "beacon");

==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#25 (text+ko) ====

@@ -1438,6 +1438,10 @@
 	case IEEE80211_IOC_DTIM_PERIOD:
 		ireq->i_val = ic->ic_dtim_period;
 		break;
+	case IEEE80211_IOC_BEACON_INTERVAL:
+		/* NB: get from ic_bss for station mode */
+		ireq->i_val = ic->ic_bss->ni_intval;
+		break;
 	default:
 		error = EINVAL;
 		break;
@@ -2231,7 +2235,7 @@
 		error = ieee80211_ioctl_setchanlist(ic, ireq);
 		break;
 	case IEEE80211_IOC_SCAN_REQ:
-		if (ic->ic_opmode == IEEE80211_M_HOSTAP)
+		if (ic->ic_opmode == IEEE80211_M_HOSTAP)	/* XXX ignore */
 			break;
 		error = ieee80211_setupscan(ic, ic->ic_chan_avail);
 		if (error == 0)		/* XXX background scan */
@@ -2252,6 +2256,9 @@
 		error = ieee80211_ioctl_setwmeparam(ic, ireq);
 		break;
 	case IEEE80211_IOC_DTIM_PERIOD:
+		if (ic->ic_opmode != IEEE80211_M_HOSTAP &&
+		    ic->ic_opmode != IEEE80211_M_IBSS)
+			return EINVAL;
 		if (IEEE80211_DTIM_MIN <= ireq->i_val &&
 		    ireq->i_val <= IEEE80211_DTIM_MAX) {
 			IEEE80211_BEACON_LOCK(ic);
@@ -2260,6 +2267,17 @@
 		} else
 			error = EINVAL;
 		break;
+	case IEEE80211_IOC_BEACON_INTERVAL:
+		if (ic->ic_opmode != IEEE80211_M_HOSTAP &&
+		    ic->ic_opmode != IEEE80211_M_IBSS)
+			return EINVAL;
+		if (IEEE80211_BINTVAL_MIN <= ireq->i_val &&
+		    ireq->i_val <= IEEE80211_BINTVAL_MAX) {
+			ic->ic_lintval = ireq->i_val;
+			error = ENETRESET;		/* requires restart */
+		} else
+			error = EINVAL;
+		break;
 	default:
 		error = EINVAL;
 		break;

==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#15 (text+ko) ====

@@ -419,7 +419,8 @@
 #define	IEEE80211_IOC_WME_TXOPLIMIT	49	/* WME: txops limit */
 #define	IEEE80211_IOC_WME_ACM		50	/* WME: ACM (bss only) */
 #define	IEEE80211_IOC_WME_ACKPOLICY	51	/* WME: ACK policy (!bss only)*/
-#define	IEEE80211_IOC_DTIM_PERIOD	52	/* DTIM period */
+#define	IEEE80211_IOC_DTIM_PERIOD	52	/* DTIM period (beacons) */
+#define	IEEE80211_IOC_BEACON_INTERVAL	53	/* beacon interval (ms) */
 
 /*
  * Scan result data returned for IEEE80211_IOC_SCAN_RESULTS.

==== //depot/projects/wifi/sys/net80211/ieee80211_var.h#17 (text+ko) ====

@@ -65,6 +65,10 @@
 #define	IEEE80211_DTIM_MIN	1	/* min DTIM period */
 #define	IEEE80211_DTIM_DEFAULT	1	/* default DTIM period */
 
+#define	IEEE80211_BINTVAL_MAX	500	/* max beacon interval (ms) */
+#define	IEEE80211_BINTVAL_MIN	25	/* min beacon interval */
+#define	IEEE80211_BINTVAL_DEFAULT 100	/* default beacon interval */
+
 #define	IEEE80211_PS_SLEEP	0x1	/* STA is in power saving mode */
 #define	IEEE80211_PS_MAX_QUEUE	50	/* maximum saved packets */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412040020.iB40KjJp006508>