Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Apr 2009 15:56:13 +0000 (UTC)
From:      Rui Paulo <rpaulo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r191359 - projects/mesh11s/sys/net80211
Message-ID:  <200904211556.n3LFuDaX015094@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rpaulo
Date: Tue Apr 21 15:56:13 2009
New Revision: 191359
URL: http://svn.freebsd.org/changeset/base/191359

Log:
  Move the ioctl processing code from ieee80211_ioctl.c to ieee80211_mesh.c
  because we are now using linker sets.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/mesh11s/sys/net80211/ieee80211_ioctl.c
  projects/mesh11s/sys/net80211/ieee80211_ioctl.h
  projects/mesh11s/sys/net80211/ieee80211_mesh.c

Modified: projects/mesh11s/sys/net80211/ieee80211_ioctl.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_ioctl.c	Tue Apr 21 15:54:17 2009	(r191358)
+++ projects/mesh11s/sys/net80211/ieee80211_ioctl.c	Tue Apr 21 15:56:13 2009	(r191359)
@@ -1110,14 +1110,6 @@ ieee80211_ioctl_get80211(struct ieee8021
 			ireq->i_val =
 			    (vap->iv_flags_ext & IEEE80211_FEXT_RIFS) != 0;
 		break;
-	case IEEE80211_IOC_MESHID:
-		if (vap->iv_opmode != IEEE80211_M_MBSS)
-			return EINVAL;
-
-		ireq->i_len = vap->iv_meshidlen;
-		memcpy(tmpssid, vap->iv_meshid, ireq->i_len);
-		error = copyout(tmpssid, ireq->i_data, ireq->i_len);
-		break;
 	default:
 		error = ieee80211_ioctl_getdefault(vap, ireq);
 		break;
@@ -3145,17 +3137,6 @@ ieee80211_ioctl_set80211(struct ieee8021
 		if (isvapht(vap))
 			error = ERESTART;
 		break;
-	case IEEE80211_IOC_MESHID:
-		if (ireq->i_val != 0 ||
-		    ireq->i_len > IEEE80211_NWID_LEN)
-			return EINVAL;
-		error = copyin(ireq->i_data, tmpssid, ireq->i_len);
-		if (error)
-			break;
-		memset(vap->iv_meshid, 0, IEEE80211_NWID_LEN);
-		vap->iv_meshidlen = ireq->i_len;
-		memcpy(vap->iv_meshid, tmpssid, ireq->i_len);
-		break;
 	default:
 		error = ieee80211_ioctl_setdefault(vap, ireq);
 		break;

Modified: projects/mesh11s/sys/net80211/ieee80211_ioctl.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_ioctl.h	Tue Apr 21 15:54:17 2009	(r191358)
+++ projects/mesh11s/sys/net80211/ieee80211_ioctl.h	Tue Apr 21 15:56:13 2009	(r191359)
@@ -628,7 +628,8 @@ struct ieee80211req {
 #define	IEEE80211_IOC_STA_VLAN		109	/* per-station vlan tag */
 #define	IEEE80211_IOC_SMPS		110	/* MIMO power save */
 #define	IEEE80211_IOC_RIFS		111	/* RIFS config (on, off) */
-#define	IEEE80211_IOC_MESHID		112	/* Mesh identifier */
+
+#define	IEEE80211_IOC_MESH_ID		190	/* Mesh identifier */
 
 #define	IEEE80211_IOC_TDMA_SLOT		201	/* TDMA: assigned slot */
 #define	IEEE80211_IOC_TDMA_SLOTCNT	202	/* TDMA: slots in bss */

Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.c	Tue Apr 21 15:54:17 2009	(r191358)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c	Tue Apr 21 15:56:13 2009	(r191359)
@@ -111,9 +111,20 @@ mesh_newstate(struct ieee80211vap *vap, 
         vap->iv_state = nstate;                 /* state transition */
         if (ostate != IEEE80211_S_SCAN)
                 ieee80211_cancel_scan(vap);     /* background scan */
-        switch (nstate) {
+	ni = vap->iv_bss;			/* NB: no reference held */
+	switch (nstate) {
 	case IEEE80211_S_INIT:
+		if (ostate == IEEE80211_S_SCAN)
+			ieee80211_cancel_scan(vap);
+		if (ostate != IEEE80211_S_INIT) {
+			/* NB: optimize INIT -> INIT case */
+			ieee80211_reset_bss(vap);
+		}
+		break;
 	case IEEE80211_S_SCAN:
+		switch (ostate) {
+		case IEEE80211_S_INIT:
+		}
 	case IEEE80211_S_AUTH:
 	case IEEE80211_S_ASSOC:
 	case IEEE80211_S_CAC:
@@ -164,3 +175,53 @@ mesh_recv_mgmt(struct ieee80211_node *ni
 	}
 
 }
+
+
+static int
+mesh_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
+{
+	int error;
+	uint8_t tmpmeshid[IEEE80211_NWID_LEN];
+
+	error = 0;
+	switch (ireq->i_type) {
+	case IEEE80211_IOC_MESH_ID:
+		if (vap->iv_opmode != IEEE80211_M_MBSS)
+			return EINVAL;
+		ireq->i_len = vap->iv_meshidlen;
+		memcpy(meshid, vap->iv_meshid, ireq->i_len);
+		error = copyout(tmpmeshid, ireq->i_data, ireq->i_len);
+		break;
+	default:
+		return ENOSYS;
+	}
+
+	return error;
+}
+IEEE80211_IOCTL_GET(mesh, mesh_ioctl_get80211);
+
+static int
+mesh_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
+{
+	int error;
+	uint8_t tmpmeshid[IEEE80211_NWID_LEN];
+
+	error = 0;
+	switch (ireq->i_type) {
+	case IEEE80211_IOC_MESH_ID:
+		if (ireq->i_val != 0 || ireq->i_len > IEEE80211_NWID_LEN)
+			return EINVAL;
+		error = copyin(ireq->i_data, tmpmeshid, ireq->i_len);
+		if (error)
+			break;
+		memset(vap->iv_meshid, 0, IEEE80211_NWID_LEN);
+		vap->iv_meshidlen = ireq->i_len;
+		memcpy(vap->iv_meshid, tmpmeshid, ireq->i_len);
+		break;
+	default:
+		return ENOSYS;
+	}
+
+	return error;
+}
+IEEE80211_IOCTL_SET(mesh, mesh_ioctl_set80211);



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