From owner-svn-src-projects@FreeBSD.ORG Tue Apr 21 15:56:14 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1AC341065674; Tue, 21 Apr 2009 15:56:14 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0A69E8FC18; Tue, 21 Apr 2009 15:56:14 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n3LFuDuW015097; Tue, 21 Apr 2009 15:56:13 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n3LFuDaX015094; Tue, 21 Apr 2009 15:56:13 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200904211556.n3LFuDaX015094@svn.freebsd.org> From: Rui Paulo Date: Tue, 21 Apr 2009 15:56:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r191359 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Apr 2009 15:56:14 -0000 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);