Deleted Added
full compact
ieee80211_ioctl.c (208699) ieee80211_ioctl.c (218092)
1/*-
2 * Copyright (c) 2001 Atsushi Onoe
3 * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 11 unchanged lines hidden (view full) ---

20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2001 Atsushi Onoe
3 * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 11 unchanged lines hidden (view full) ---

20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_ioctl.c 208699 2010-06-01 14:20:58Z rpaulo $");
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_ioctl.c 218092 2011-01-30 14:05:21Z bschmidt $");
29
30/*
31 * IEEE 802.11 ioctl support (FreeBSD-specific)
32 */
33
34#include "opt_inet.h"
35#include "opt_ipx.h"
36#include "opt_wlan.h"

--- 2342 unchanged lines hidden (view full) ---

2379{
2380#define IEEE80211_IOC_SCAN_FLAGS \
2381 (IEEE80211_IOC_SCAN_NOPICK | IEEE80211_IOC_SCAN_ACTIVE | \
2382 IEEE80211_IOC_SCAN_PICK1ST | IEEE80211_IOC_SCAN_BGSCAN | \
2383 IEEE80211_IOC_SCAN_ONCE | IEEE80211_IOC_SCAN_NOBCAST | \
2384 IEEE80211_IOC_SCAN_NOJOIN | IEEE80211_IOC_SCAN_FLUSH | \
2385 IEEE80211_IOC_SCAN_CHECK)
2386 struct ieee80211com *ic = vap->iv_ic;
29
30/*
31 * IEEE 802.11 ioctl support (FreeBSD-specific)
32 */
33
34#include "opt_inet.h"
35#include "opt_ipx.h"
36#include "opt_wlan.h"

--- 2342 unchanged lines hidden (view full) ---

2379{
2380#define IEEE80211_IOC_SCAN_FLAGS \
2381 (IEEE80211_IOC_SCAN_NOPICK | IEEE80211_IOC_SCAN_ACTIVE | \
2382 IEEE80211_IOC_SCAN_PICK1ST | IEEE80211_IOC_SCAN_BGSCAN | \
2383 IEEE80211_IOC_SCAN_ONCE | IEEE80211_IOC_SCAN_NOBCAST | \
2384 IEEE80211_IOC_SCAN_NOJOIN | IEEE80211_IOC_SCAN_FLUSH | \
2385 IEEE80211_IOC_SCAN_CHECK)
2386 struct ieee80211com *ic = vap->iv_ic;
2387 int i;
2387 int error, i;
2388
2389 /* convert duration */
2390 if (sr->sr_duration == IEEE80211_IOC_SCAN_FOREVER)
2391 sr->sr_duration = IEEE80211_SCAN_FOREVER;
2392 else {
2393 if (sr->sr_duration < IEEE80211_IOC_SCAN_DURATION_MIN ||
2394 sr->sr_duration > IEEE80211_IOC_SCAN_DURATION_MAX)
2395 return EINVAL;

--- 57 unchanged lines hidden (view full) ---

2453 sr->sr_ssid[i].ssid, sr->sr_ssid[i].len);
2454 }
2455 vap->iv_flags_ext |= IEEE80211_FEXT_SCANREQ;
2456 IEEE80211_UNLOCK(ic);
2457 ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
2458 } else {
2459 vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
2460 IEEE80211_UNLOCK(ic);
2388
2389 /* convert duration */
2390 if (sr->sr_duration == IEEE80211_IOC_SCAN_FOREVER)
2391 sr->sr_duration = IEEE80211_SCAN_FOREVER;
2392 else {
2393 if (sr->sr_duration < IEEE80211_IOC_SCAN_DURATION_MIN ||
2394 sr->sr_duration > IEEE80211_IOC_SCAN_DURATION_MAX)
2395 return EINVAL;

--- 57 unchanged lines hidden (view full) ---

2453 sr->sr_ssid[i].ssid, sr->sr_ssid[i].len);
2454 }
2455 vap->iv_flags_ext |= IEEE80211_FEXT_SCANREQ;
2456 IEEE80211_UNLOCK(ic);
2457 ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
2458 } else {
2459 vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
2460 IEEE80211_UNLOCK(ic);
2461 /* XXX neeed error return codes */
2462 if (sr->sr_flags & IEEE80211_IOC_SCAN_CHECK) {
2461 if (sr->sr_flags & IEEE80211_IOC_SCAN_CHECK) {
2463 (void) ieee80211_check_scan(vap, sr->sr_flags,
2462 error = ieee80211_check_scan(vap, sr->sr_flags,
2464 sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
2465 sr->sr_nssid,
2466 /* NB: cheat, we assume structures are compatible */
2467 (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
2468 } else {
2463 sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
2464 sr->sr_nssid,
2465 /* NB: cheat, we assume structures are compatible */
2466 (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
2467 } else {
2469 (void) ieee80211_start_scan(vap, sr->sr_flags,
2468 error = ieee80211_start_scan(vap, sr->sr_flags,
2470 sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
2471 sr->sr_nssid,
2472 /* NB: cheat, we assume structures are compatible */
2473 (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
2474 }
2469 sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
2470 sr->sr_nssid,
2471 /* NB: cheat, we assume structures are compatible */
2472 (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
2473 }
2474 if (error == 0)
2475 return EINPROGRESS;
2475 }
2476 return 0;
2477#undef IEEE80211_IOC_SCAN_FLAGS
2478}
2479
2480static __noinline int
2481ieee80211_ioctl_scanreq(struct ieee80211vap *vap, struct ieee80211req *ireq)
2482{

--- 912 unchanged lines hidden ---
2476 }
2477 return 0;
2478#undef IEEE80211_IOC_SCAN_FLAGS
2479}
2480
2481static __noinline int
2482ieee80211_ioctl_scanreq(struct ieee80211vap *vap, struct ieee80211req *ireq)
2483{

--- 912 unchanged lines hidden ---