adds mesh and sae support to *-full variants for now.

madwifi was dropped upstream, can't find it anywhere in OpenWrt
either, thus finally burrying madwifi.
wasn't sure whether 350-nl80211_del_beacon_bss.patch is still needed,
all other patches were forward-ported to hostapd current git HEAD.

---
 package/network/services/hostapd/Makefile          |  10 +-
 .../services/hostapd/files/hostapd-full.config     |   8 +-
 .../services/hostapd/files/hostapd-mini.config     |   6 +-
 package/network/services/hostapd/files/netifd.sh   |  48 +-
 .../hostapd/files/wpa_supplicant-full.config       |   8 +-
 .../hostapd/files/wpa_supplicant-mini.config       |   6 -
 .../hostapd/files/wpa_supplicant-p2p.config        |   6 -
 .../services/hostapd/files/wpa_supplicant.sh       |   5 +
 .../services/hostapd/madwifi/include/compat.h      | 209 -----
 .../services/hostapd/madwifi/net80211/_ieee80211.h | 325 -------
 .../services/hostapd/madwifi/net80211/ieee80211.h  | 997 ---------------------
 .../hostapd/madwifi/net80211/ieee80211_crypto.h    | 207 -----
 .../hostapd/madwifi/net80211/ieee80211_ioctl.h     | 715 ---------------
 ...ort-new-station-assoc-event-for-the-corre.patch |  37 -
 .../hostapd/patches/100-madwifi_key_fixes.patch    |  34 -
 .../services/hostapd/patches/200-multicall.patch   | 114 ++-
 .../services/hostapd/patches/300-noscan.patch      |  38 +-
 .../hostapd/patches/330-nl80211_fix_set_freq.patch |  22 +-
 .../patches/350-nl80211_del_beacon_bss.patch       |  50 --
 .../hostapd/patches/360-ctrl_iface_reload.patch    |  20 +-
 .../services/hostapd/patches/450-scan_wait.patch   |  14 +-
 ...80211-use-new-parameters-during-ibss-join.patch |  24 +-
 .../patches/462-wpa_s-support-htmode-param.patch   |  48 +-
 .../hostapd/patches/600-ubus_support.patch         |  88 +-
 24 files changed, 258 insertions(+), 2781 deletions(-)
 delete mode 100644 package/network/services/hostapd/madwifi/include/compat.h
 delete mode 100644 
package/network/services/hostapd/madwifi/net80211/_ieee80211.h
 delete mode 100644 
package/network/services/hostapd/madwifi/net80211/ieee80211.h
 delete mode 100644 
package/network/services/hostapd/madwifi/net80211/ieee80211_crypto.h
 delete mode 100644 
package/network/services/hostapd/madwifi/net80211/ieee80211_ioctl.h
 delete mode 100644 
package/network/services/hostapd/patches/000-nl80211-Report-new-station-assoc-event-for-the-corre.patch
 delete mode 100644 
package/network/services/hostapd/patches/100-madwifi_key_fixes.patch
 delete mode 100644 
package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch

diff --git a/package/network/services/hostapd/Makefile 
b/package/network/services/hostapd/Makefile
index 6bdf534..e0b2a3f 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hostapd
-PKG_VERSION:=2014-10-25
+PKG_VERSION:=2015-02-01
 PKG_RELEASE:=1
-PKG_REV:=01e2231fdc4fbec61fbc382238e3606a1d2826e4
+PKG_REV:=99805a0ea1d911a4f0bb08552b7a4a7e3745ff71
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git
@@ -24,14 +24,10 @@ PKG_LICENSE:=BSD-3-Clause
 
 PKG_BUILD_PARALLEL:=1
 
-PKG_BUILD_DEPENDS:= \
-       PACKAGE_kmod-madwifi:madwifi \
-
 PKG_CONFIG_DEPENDS:= \
        CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK \
        CONFIG_PACKAGE_kmod-ath9k \
        CONFIG_PACKAGE_kmod-cfg80211 \
-       CONFIG_PACKAGE_kmod-madwifi \
        CONFIG_PACKAGE_hostapd \
        CONFIG_PACKAGE_hostapd-mini \
        CONFIG_PACKAGE_kmod-hostap \
@@ -66,7 +62,6 @@ endif
 
 DRIVER_MAKEOPTS= \
        CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
-       CONFIG_DRIVER_MADWIFI=$(CONFIG_PACKAGE_kmod-madwifi) \
        CONFIG_DRIVER_HOSTAP=$(CONFIG_PACKAGE_kmod-hostap) \
        CONFIG_IEEE80211N=$(HOSTAPD_IEEE80211N) \
        CONFIG_IEEE80211W=$(CONFIG_PACKAGE_kmod-ath9k) \
@@ -264,7 +259,6 @@ TARGET_CPPFLAGS := \
        -I$(STAGING_DIR)/usr/include/libnl-tiny \
        -I$(PKG_BUILD_DIR)/src/crypto \
        $(TARGET_CPPFLAGS) \
-       -I$(CURDIR)/madwifi \
        -DCONFIG_LIBNL20 \
        -D_GNU_SOURCE \
        $(if 
$(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
diff --git a/package/network/services/hostapd/files/hostapd-full.config 
b/package/network/services/hostapd/files/hostapd-full.config
index e021cd0..a9b7195 100644
--- a/package/network/services/hostapd/files/hostapd-full.config
+++ b/package/network/services/hostapd/files/hostapd-full.config
@@ -15,10 +15,6 @@ CONFIG_DRIVER_HOSTAP=y
 # Driver interface for wired authenticator
 CONFIG_DRIVER_WIRED=y
 
-# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../../madwifi # change to the madwifi source directory
-
 # Driver interface for Prism54 driver
 #CONFIG_DRIVER_PRISM54=y
 
@@ -133,7 +129,7 @@ CONFIG_IPV6=y
 CONFIG_IEEE80211R=y
 
 # Use the hostapd's IEEE 802.11 authentication (ACL), but without
-# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
+# the IEEE 802.11 Management capability (e.g. FreeBSD/net80211)
 #CONFIG_DRIVER_RADIUS_ACL=y
 
 # IEEE 802.11n (High Throughput) support
@@ -170,3 +166,5 @@ CONFIG_FULL_DYNAMIC_VLAN=y
 CONFIG_ACS=y
 
 CONFIG_UBUS=y
+
+CONFIG_SAE=y
diff --git a/package/network/services/hostapd/files/hostapd-mini.config 
b/package/network/services/hostapd/files/hostapd-mini.config
index 3675709..3924522 100644
--- a/package/network/services/hostapd/files/hostapd-mini.config
+++ b/package/network/services/hostapd/files/hostapd-mini.config
@@ -15,10 +15,6 @@ CONFIG_DRIVER_HOSTAP=y
 # Driver interface for wired authenticator
 CONFIG_DRIVER_WIRED=y
 
-# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../../madwifi # change to the madwifi source directory
-
 # Driver interface for Prism54 driver
 #CONFIG_DRIVER_PRISM54=y
 
@@ -132,7 +128,7 @@ CONFIG_PEERKEY=y
 #CONFIG_IEEE80211R=y
 
 # Use the hostapd's IEEE 802.11 authentication (ACL), but without
-# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
+# the IEEE 802.11 Management capability (e.g. FreeBSD/net80211)
 #CONFIG_DRIVER_RADIUS_ACL=y
 
 # IEEE 802.11n (High Throughput) support
diff --git a/package/network/services/hostapd/files/netifd.sh 
b/package/network/services/hostapd/files/netifd.sh
index 83fb129..c2abd3a 100644
--- a/package/network/services/hostapd/files/netifd.sh
+++ b/package/network/services/hostapd/files/netifd.sh
@@ -500,8 +500,9 @@ wpa_supplicant_add_network() {
        local network_data=
        local T="       "
 
+
        local wpa_key_mgmt="WPA-PSK"
-       local scan_ssid="1"
+       local scan_ssid="scan_ssid=1"
        local freq
 
        [[ "$_w_mode" = "adhoc" ]] && {
@@ -512,12 +513,22 @@ wpa_supplicant_add_network() {
                        append network_data "frequency=$freq" "$N$T"
                }
 
-               scan_ssid=0
+               scan_ssid="scan_ssid=0"
 
                [ "$_w_driver" = "nl80211" ] || wpa_key_mgmt="WPA-NONE"
        }
 
-       [[ "$_w_mode" = adhoc ]] && append network_data "$_w_modestr" "$N$T"
+       [[ "$_w_mode" = "mesh" ]] && {
+               append network_data "mode=5" "$N$T"
+               [ -n "$channel" ] && {
+                       freq="$(get_freq "$phy" "$channel")"
+                       append network_data "frequency=$freq" "$N$T"
+               }
+               wpa_key_mgmt="SAE"
+               scan_ssid=""
+       }
+
+       [[ "$_w_mode" = "adhoc" -o "$_w_mode" = "mesh" ]] && append 
network_data "$_w_modestr" "$N$T"
 
        case "$auth_type" in
                none) ;;
@@ -561,21 +572,22 @@ wpa_supplicant_add_network() {
                ;;
        esac
 
-       case "$wpa" in
-               1)
-                       append network_data "proto=WPA" "$N$T"
-               ;;
-               2)
-                       append network_data "proto=RSN" "$N$T"
-               ;;
-       esac
-
-       case "$ieee80211w" in
-               [012])
-                       [ "$wpa" -ge 2 ] && append network_data 
"ieee80211w=$ieee80211w" "$N$T"
-               ;;
-       esac
+       [ "$mode" = mesh ] || {
+               case "$wpa" in
+                       1)
+                               append network_data "proto=WPA" "$N$T"
+                       ;;
+                       2)
+                               append network_data "proto=RSN" "$N$T"
+                       ;;
+               esac
 
+               case "$ieee80211w" in
+                       [012])
+                               [ "$wpa" -ge 2 ] && append network_data 
"ieee80211w=$ieee80211w" "$N$T"
+                       ;;
+               esac
+       }
        local beacon_int brates mrate
        [ -n "$bssid" ] && append network_data "bssid=$bssid" "$N$T"
        [ -n "$beacon_int" ] && append network_data "beacon_int=$beacon_int" 
"$N$T"
@@ -601,7 +613,7 @@ wpa_supplicant_add_network() {
 
        cat >> "$_config" <<EOF
 network={
-       scan_ssid=$scan_ssid
+       $scan_ssid
        ssid="$ssid"
        key_mgmt=$key_mgmt
        $network_data
diff --git a/package/network/services/hostapd/files/wpa_supplicant-full.config 
b/package/network/services/hostapd/files/wpa_supplicant-full.config
index bbfaa73..9c687e3 100644
--- a/package/network/services/hostapd/files/wpa_supplicant-full.config
+++ b/package/network/services/hostapd/files/wpa_supplicant-full.config
@@ -49,12 +49,6 @@ CONFIG_DRIVER_HOSTAP=y
 #CFLAGS += -I../../hcf -I../../include -I../../include/hcf
 #CFLAGS += -I../../include/wireless
 
-# Driver interface for madwifi driver
-# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
-#CONFIG_DRIVER_MADWIFI=y
-# Set include directory to the madwifi source tree
-#CFLAGS += -I../../madwifi
-
 # Driver interface for ndiswrapper
 # Deprecated; use CONFIG_DRIVER_WEXT=y instead.
 #CONFIG_DRIVER_NDISWRAPPER=y
@@ -407,3 +401,5 @@ CONFIG_NO_RANDOM_POOL=y
 NEED_80211_COMMON=y
 
 CONFIG_IBSS_RSN=y
+CONFIG_MESH=y
+CONFIG_SAE=y
diff --git a/package/network/services/hostapd/files/wpa_supplicant-mini.config 
b/package/network/services/hostapd/files/wpa_supplicant-mini.config
index a33e6f0..a8d334d 100644
--- a/package/network/services/hostapd/files/wpa_supplicant-mini.config
+++ b/package/network/services/hostapd/files/wpa_supplicant-mini.config
@@ -49,12 +49,6 @@ CONFIG_DRIVER_HOSTAP=y
 #CFLAGS += -I../../hcf -I../../include -I../../include/hcf
 #CFLAGS += -I../../include/wireless
 
-# Driver interface for madwifi driver
-# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
-#CONFIG_DRIVER_MADWIFI=y
-# Set include directory to the madwifi source tree
-#CFLAGS += -I../../madwifi
-
 # Driver interface for ndiswrapper
 # Deprecated; use CONFIG_DRIVER_WEXT=y instead.
 #CONFIG_DRIVER_NDISWRAPPER=y
diff --git a/package/network/services/hostapd/files/wpa_supplicant-p2p.config 
b/package/network/services/hostapd/files/wpa_supplicant-p2p.config
index 82e0bf0..1c307d0 100644
--- a/package/network/services/hostapd/files/wpa_supplicant-p2p.config
+++ b/package/network/services/hostapd/files/wpa_supplicant-p2p.config
@@ -49,12 +49,6 @@ CONFIG_DRIVER_HOSTAP=y
 #CFLAGS += -I../../hcf -I../../include -I../../include/hcf
 #CFLAGS += -I../../include/wireless
 
-# Driver interface for madwifi driver
-# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
-#CONFIG_DRIVER_MADWIFI=y
-# Set include directory to the madwifi source tree
-#CFLAGS += -I../../madwifi
-
 # Driver interface for ndiswrapper
 # Deprecated; use CONFIG_DRIVER_WEXT=y instead.
 #CONFIG_DRIVER_NDISWRAPPER=y
diff --git a/package/network/services/hostapd/files/wpa_supplicant.sh 
b/package/network/services/hostapd/files/wpa_supplicant.sh
index b678484..855e0d4 100644
--- a/package/network/services/hostapd/files/wpa_supplicant.sh
+++ b/package/network/services/hostapd/files/wpa_supplicant.sh
@@ -34,6 +34,11 @@ wpa_supplicant_setup_vif() {
                ap_scan="ap_scan=2"
        }
 
+       [ "$mode" = "mesh" ] && {
+               modestr="mode=5"
+               scan_ssid="0"
+       }
+
        key_mgmt='NONE'
        case "$enc" in
                *none*) ;;
diff --git a/package/network/services/hostapd/madwifi/include/compat.h 
b/package/network/services/hostapd/madwifi/include/compat.h
deleted file mode 100644
index 09e6397..0000000
--- a/package/network/services/hostapd/madwifi/include/compat.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*-
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer,
- *    without modification.
- * 2. Redistributions in binary form must reproduce at minimum a disclaimer
- *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
- *    redistribution must be conditioned upon including a substantially
- *    similar Disclaimer requirement for further binary redistribution.
- * 3. Neither the names of the above-listed copyright holders nor the names
- *    of any contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * NO WARRANTY
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
- * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGES.
- *
- * $Id: compat.h 3310 2008-01-30 20:23:49Z mentor $
- */
-#ifndef _ATH_COMPAT_H_
-#define _ATH_COMPAT_H_
-
-/* Compatibility with older Linux kernels */
-#ifdef __KERNEL__
-#include <linux/types.h>
-#include <linux/time.h>
-#include <linux/netdevice.h>
-#endif
-
-#if !defined(__KERNEL__) || !defined (__bitwise)
-#define __le16 u_int16_t
-#define __le32 u_int32_t
-#define __le64 u_int64_t
-#define __be16 u_int16_t
-#define __be32 u_int32_t
-#define __be64 u_int64_t
-#define __force
-#endif
-
-#ifndef container_of
-#define container_of(ptr, type, member) ({                             \
-           const typeof( ((type *)0)->member ) *__mptr = (ptr);        \
-           (type *)( (char *)__mptr - offsetof(type,member) );})
-#endif
-
-#ifndef list_for_each_entry_reverse
-#define list_for_each_entry_reverse(pos, head, member)                 \
-       for (pos = list_entry((head)->prev, typeof(*pos), member);      \
-            prefetch(pos->member.prev), &pos->member != (head);        \
-            pos = list_entry(pos->member.prev, typeof(*pos), member))
-#endif
-
-#ifndef NETDEV_TX_OK
-#define NETDEV_TX_OK    0
-#define NETDEV_TX_BUSY  1
-#endif
-
-/*
- * BSD/Linux compatibility shims.  These are used mainly to
- * minimize differences when importing necesary BSD code.
- */
-#define        NBBY    8                       /* number of bits/byte */
-
-/* roundup() appears in Linux 2.6.18 */
-#include <linux/kernel.h>
-#ifndef roundup
-#define        roundup(x, y)   ((((x)+((y)-1))/(y))*(y))  /* to any y */
-#endif
-
-#define        howmany(x, y)   (((x)+((y)-1))/(y))
-
-/* Bit map related macros. */
-#define        setbit(a,i)     ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
-#define        clrbit(a,i)     ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
-#define        isset(a,i)      ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
-#define        isclr(a,i)      (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
-
-#ifndef __packed
-#define        __packed        __attribute__((__packed__))
-#endif
-
-#define        __offsetof(t,m) offsetof(t,m)
-
-#ifndef ALIGNED_POINTER
-/*
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits). 
- *
- */
-#define ALIGNED_POINTER(p,t)   1
-#endif
-
-#ifdef __KERNEL__
-#define        KASSERT(exp, msg) do {                  \
-       if (unlikely(!(exp))) {                 \
-               printk msg;                     \
-               BUG();                          \
-       }                                       \
-} while (0)
-#endif /* __KERNEL__ */
-
-/*
- * NetBSD/FreeBSD defines for file version.
- */
-#define        __FBSDID(_s)
-#define        __KERNEL_RCSID(_n,_s)
-
-/*
- * Fixes for Linux API changes
- */
-#ifdef __KERNEL__
-
-#include <linux/version.h>
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)
-#define AUTOCONF_INCLUDED 1
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-#define ATH_REGISTER_SYSCTL_TABLE(t) register_sysctl_table(t, 1)
-#else
-#define ATH_REGISTER_SYSCTL_TABLE(t) register_sysctl_table(t)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9)
-#define __user
-#define __kernel
-#define __iomem
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
-typedef int gfp_t;
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-static inline int timeval_compare(struct timeval *lhs, struct timeval *rhs)
-{
-       if (lhs->tv_sec < rhs->tv_sec)
-               return -1;
-       if (lhs->tv_sec > rhs->tv_sec)
-               return 1;
-       return lhs->tv_usec - rhs->tv_usec;
-}
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
-#define IRQF_SHARED SA_SHIRQ
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,27)
-#define netdev_priv(_netdev) ((_netdev)->priv)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-#define skb_end_pointer(_skb) ((_skb)->end)
-#define skb_tail_pointer(_skb) ((_skb)->tail)
-#define skb_set_network_header(_skb, _offset) \
-       do { (_skb)->nh.raw = (_skb)->data + (_offset); } while(0)
-#define skb_reset_network_header(_skb) \
-       do { (_skb)->nh.raw = (_skb)->data; } while(0)
-#define skb_mac_header(_skb) ((_skb)->mac.raw)
-#define skb_reset_mac_header(_skb) \
-       do { (_skb)->mac.raw = (_skb)->data; } while(0)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
-#define CTL_AUTO -2
-#define DEV_ATH 9
-#else
-#define CTL_AUTO CTL_UNNUMBERED
-#define DEV_ATH CTL_UNNUMBERED
-#endif
-
-/* __skb_append got a third parameter in 2.6.14 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
-#define __skb_queue_after(_list, _old, _new)   __skb_append(_old, _new)
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
-#define __skb_queue_after(_list, _old, _new)   __skb_append(_old, _new, _list)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-#define CTLNAME(x)     .ctl_name       = x,
-#else
-#define CTLNAME(x)
-#endif
-
-#endif /* __KERNEL__ */
-
-#endif /* _ATH_COMPAT_H_ */
diff --git a/package/network/services/hostapd/madwifi/net80211/_ieee80211.h 
b/package/network/services/hostapd/madwifi/net80211/_ieee80211.h
deleted file mode 100644
index 2d2a06f..0000000
--- a/package/network/services/hostapd/madwifi/net80211/_ieee80211.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/*-
- * Copyright (c) 2001 Atsushi Onoe
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: _ieee80211.h 3207 2008-01-18 21:25:05Z mtaylor $
- */
-#ifndef _NET80211__IEEE80211_H_
-#define _NET80211__IEEE80211_H_
-
-enum ieee80211_phytype {
-       IEEE80211_T_DS,                 /* direct sequence spread spectrum */
-       IEEE80211_T_FH,                 /* frequency hopping */
-       IEEE80211_T_OFDM,               /* frequency division multiplexing */
-       IEEE80211_T_TURBO,              /* high rate OFDM, aka turbo mode */
-};
-#define        IEEE80211_T_CCK IEEE80211_T_DS  /* more common nomenclature */
-
-/* XXX: not really a mode; there are really multiple PHYs */
-enum ieee80211_phymode {
-       IEEE80211_MODE_AUTO     = 0,    /* autoselect */
-       IEEE80211_MODE_11A      = 1,    /* 5GHz, OFDM */
-       IEEE80211_MODE_11B      = 2,    /* 2GHz, CCK */
-       IEEE80211_MODE_11G      = 3,    /* 2GHz, OFDM */
-       IEEE80211_MODE_FH       = 4,    /* 2GHz, GFSK */
-       IEEE80211_MODE_TURBO_A  = 5,    /* 5GHz, OFDM, 2x clock dynamic turbo */
-       IEEE80211_MODE_TURBO_G  = 6,    /* 2GHz, OFDM, 2x clock  dynamic turbo*/
-};
-#define        IEEE80211_MODE_MAX      (IEEE80211_MODE_TURBO_G+1)
-
-enum ieee80211_opmode {
-       IEEE80211_M_STA         = 1,    /* infrastructure station */
-       IEEE80211_M_IBSS        = 0,    /* IBSS (adhoc) station */
-       IEEE80211_M_AHDEMO      = 3,    /* Old lucent compatible adhoc demo */
-       IEEE80211_M_HOSTAP      = 6,    /* Software Access Point */
-       IEEE80211_M_MONITOR     = 8,    /* Monitor mode */
-       IEEE80211_M_WDS         = 2     /* WDS link */
-};
-
-/*
- * True if this mode will send beacon on a regular interval, like AP
- * or IBSS
- */
-#define IEEE80211_IS_MODE_BEACON(_opmode) \
-       ((_opmode == IEEE80211_M_IBSS) || \
-        (_opmode == IEEE80211_M_HOSTAP))
-
-/*
- * True if this mode must behave like a DFS master, ie do Channel
- * Check Availability and In Service Monitoring. We need to make sure
- * that all modes cannot send data without being authorized. Such
- * enforcement is not done in monitor mode however.
- */
-
-#define IEEE80211_IS_MODE_DFS_MASTER(_opmode) \
-       ((_opmode == IEEE80211_M_IBSS) || \
-        (_opmode == IEEE80211_M_AHDEMO) || \
-        (_opmode == IEEE80211_M_HOSTAP) || \
-        (_opmode == IEEE80211_M_WDS))
-
-/*
- * 802.11g protection mode.
- */
-enum ieee80211_protmode {
-       IEEE80211_PROT_NONE     = 0,    /* no protection */
-       IEEE80211_PROT_CTSONLY  = 1,    /* CTS to self */
-       IEEE80211_PROT_RTSCTS   = 2,    /* RTS-CTS */
-};
-
-/*
- * Authentication mode.
- */
-enum ieee80211_authmode {
-       IEEE80211_AUTH_NONE     = 0,
-       IEEE80211_AUTH_OPEN     = 1,    /* open */
-       IEEE80211_AUTH_SHARED   = 2,    /* shared-key */
-       IEEE80211_AUTH_8021X    = 3,    /* 802.1x */
-       IEEE80211_AUTH_AUTO     = 4,    /* auto-select/accept */
-       /* NB: these are used only for ioctls */
-       IEEE80211_AUTH_WPA      = 5,    /* WPA/RSN w/ 802.1x/PSK */
-};
-
-/*
- * Roaming mode is effectively who controls the operation
- * of the 802.11 state machine when operating as a station.
- * State transitions are controlled either by the driver
- * (typically when management frames are processed by the
- * hardware/firmware), the host (auto/normal operation of
- * the 802.11 layer), or explicitly through ioctl requests
- * when applications like wpa_supplicant want control.
- */
-enum ieee80211_roamingmode {
-       IEEE80211_ROAMING_DEVICE= 0,    /* driver/hardware control */
-       IEEE80211_ROAMING_AUTO  = 1,    /* 802.11 layer control */
-       IEEE80211_ROAMING_MANUAL= 2,    /* application control */
-};
-
-/*
- * Scanning mode controls station scanning work; this is
- * used only when roaming mode permits the host to select
- * the bss to join/channel to use.
- */
-enum ieee80211_scanmode {
-       IEEE80211_SCAN_DEVICE   = 0,    /* driver/hardware control */
-       IEEE80211_SCAN_BEST     = 1,    /* 802.11 layer selects best */
-       IEEE80211_SCAN_FIRST    = 2,    /* take first suitable candidate */
-};
-
-enum ieee80211_scanflags {
-       IEEE80211_NOSCAN_DEFAULT = (1 << 0),
-       IEEE80211_NOSCAN_SET     = (1 << 1),
-};
-
-/*
- * Channels are specified by frequency and attributes.
- */
-struct ieee80211_channel {
-       u_int16_t ic_freq;      /* setting in MHz */
-       u_int16_t ic_flags;     /* see below */
-       u_int8_t ic_ieee;       /* IEEE channel number */
-       int8_t ic_maxregpower;  /* maximum regulatory tx power in dBm */
-       int8_t ic_maxpower;     /* maximum tx power in dBm */
-       int8_t ic_minpower;     /* minimum tx power in dBm */
-       u_int8_t ic_scanflags;
-       u_int8_t ic_idletime; /* phy idle time in % */
-};
-
-#define        IEEE80211_CHAN_MAX      255
-#define        IEEE80211_CHAN_BYTES    32      /* howmany(IEEE80211_CHAN_MAX, 
NBBY) */
-#define        IEEE80211_CHAN_ANY      0xffff  /* token for ``any channel'' */
-#define        IEEE80211_CHAN_ANYC     ((struct ieee80211_channel *) 
IEEE80211_CHAN_ANY)
-
-#define        IEEE80211_RADAR_CHANCHANGE_TBTT_COUNT   0
-#define IEEE80211_DEFAULT_CHANCHANGE_TBTT_COUNT        3
-
-#define        IEEE80211_RADAR_TEST_MUTE_CHAN  36      /* Move to channel 36 
for mute test */
-
-/* bits 0-3 are for private use by drivers */
-/* channel attributes */
-#define        IEEE80211_CHAN_TURBO    0x0010  /* Turbo channel */
-#define        IEEE80211_CHAN_CCK      0x0020  /* CCK channel */
-#define        IEEE80211_CHAN_OFDM     0x0040  /* OFDM channel */
-#define        IEEE80211_CHAN_2GHZ     0x0080  /* 2 GHz spectrum channel. */
-#define        IEEE80211_CHAN_5GHZ     0x0100  /* 5 GHz spectrum channel */
-#define        IEEE80211_CHAN_PASSIVE  0x0200  /* Only passive scan allowed */
-#define        IEEE80211_CHAN_DYN      0x0400  /* Dynamic CCK-OFDM channel */
-#define        IEEE80211_CHAN_GFSK     0x0800  /* GFSK channel (FHSS PHY) */
-#define IEEE80211_CHAN_RADAR   0x1000  /* Radar found on channel */
-#define        IEEE80211_CHAN_STURBO   0x2000  /* 11a static turbo channel 
only */
-#define        IEEE80211_CHAN_HALF     0x4000  /* Half rate channel */
-#define        IEEE80211_CHAN_QUARTER  0x8000  /* Quarter rate channel */
-
-/*
- * Useful combinations of channel characteristics.
- */
-#define        IEEE80211_CHAN_FHSS \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_GFSK)
-#define        IEEE80211_CHAN_A \
-       (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM)
-#define        IEEE80211_CHAN_B \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK)
-#define        IEEE80211_CHAN_PUREG \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM)
-#define        IEEE80211_CHAN_G \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
-#define IEEE80211_CHAN_108A \
-       (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO)
-#define        IEEE80211_CHAN_108G \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO)
-#define        IEEE80211_CHAN_ST \
-       (IEEE80211_CHAN_108A | IEEE80211_CHAN_STURBO)
-
-#define        IEEE80211_CHAN_ALL \
-       (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_GFSK | \
-        IEEE80211_CHAN_CCK | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN)
-#define        IEEE80211_CHAN_ALLTURBO \
-       (IEEE80211_CHAN_ALL | IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO)
-
-#define        IEEE80211_IS_CHAN_FHSS(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS)
-#define        IEEE80211_IS_CHAN_A(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A)
-#define        IEEE80211_IS_CHAN_B(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B)
-#define        IEEE80211_IS_CHAN_PUREG(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG)
-#define        IEEE80211_IS_CHAN_G(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G)
-#define        IEEE80211_IS_CHAN_ANYG(_c) \
-       (IEEE80211_IS_CHAN_PUREG(_c) || IEEE80211_IS_CHAN_G(_c))
-#define        IEEE80211_IS_CHAN_ST(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_ST) == IEEE80211_CHAN_ST)
-#define        IEEE80211_IS_CHAN_108A(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_108A) == IEEE80211_CHAN_108A)
-#define        IEEE80211_IS_CHAN_108G(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_108G) == IEEE80211_CHAN_108G)
-
-#define        IEEE80211_IS_CHAN_2GHZ(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_2GHZ) != 0)
-#define        IEEE80211_IS_CHAN_5GHZ(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_5GHZ) != 0)
-#define        IEEE80211_IS_CHAN_OFDM(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_OFDM) != 0)
-#define        IEEE80211_IS_CHAN_CCK(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_CCK) != 0)
-#define        IEEE80211_IS_CHAN_GFSK(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_GFSK) != 0)
-#define        IEEE80211_IS_CHAN_TURBO(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_TURBO) != 0)
-#define        IEEE80211_IS_CHAN_STURBO(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_STURBO) != 0)
-#define        IEEE80211_IS_CHAN_DTURBO(_c) \
-       (((_c)->ic_flags & \
-       (IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO)) == IEEE80211_CHAN_TURBO)
-#define        IEEE80211_IS_CHAN_HALF(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_HALF) != 0)
-#define        IEEE80211_IS_CHAN_QUARTER(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_QUARTER) != 0)
-
-#define        IEEE80211_IS_CHAN_RADAR(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_RADAR) != 0)
-#define        IEEE80211_IS_CHAN_PASSIVE(_c) \
-       (((_c)->ic_flags & IEEE80211_CHAN_PASSIVE) != 0)
-#define        IEEE80211_ARE_CHANS_SAME_MODE(_a, _b) \
-       (((_a)->ic_flags & IEEE80211_CHAN_ALLTURBO) == ((_b)->ic_flags & 
IEEE80211_CHAN_ALLTURBO))
-
-/* ni_chan encoding for FH phy */
-#define        IEEE80211_FH_CHANMOD            80
-#define        IEEE80211_FH_CHAN(set,pat)      (((set) - 1) * 
IEEE80211_FH_CHANMOD + (pat))
-#define        IEEE80211_FH_CHANSET(chan)      ((chan) / IEEE80211_FH_CHANMOD 
+ 1)
-#define        IEEE80211_FH_CHANPAT(chan)      ((chan) % IEEE80211_FH_CHANMOD)
-
-/*
- * Spectrum Management (IEEE 802.11h-2003)
- */
-
-/* algorithm for (re)association based on supported channels
- * (the one mentioned in 11.6.1 as out of scope of .11h) */
-enum ieee80211_sc_algorithm {
-       IEEE80211_SC_NONE,
-       /*
-        * Do not disallow anyone from associating. When needed, channel will
-        * be switched to the most suitable channel, no matter client stations
-        * support it or not.
-        */
-
-       IEEE80211_SC_LOOSE,
-       /*
-        * Do not disallow anyone from associating. When needed, channel will
-        * be switched to a suitable channel, which will be chosen taking
-        * ni->ni_suppchans and ic->ic_sc_sldg under consideration.
-        */
-
-       IEEE80211_SC_TIGHT,
-       /*
-        * Allow to associate if there are at least ic->ic_mincom channels
-        * common to the associating station and all of the already associated
-        * stations. If the number of new common channels is less than
-        * required, consider disassociating some other STAs. Such a
-        * disassociation will be performed if (and only if) the association we
-        * are currently considering would be then possible and the count of
-        * the resultant set of common channels (ic_chan_nodes[i] ==
-        * ic_cn_total) would increase by some amount. Whether the number of
-        * the new channels that could be gained is enough to sacrifice a
-        * number of STAs is determined by the ic->ic_slcg parameter.
-        */
-
-       IEEE80211_SC_STRICT
-       /*
-        * Basically the same behavior as IEEE80211_SC_TIGHT, except that if a
-        * station does not specify Supported Channels, then it is denied to
-        * associate.
-        */
-};
-
-/*
- * 802.11 rate set.
- */
-#define        IEEE80211_RATE_SIZE     8               /* 802.11 standard */
-#define        IEEE80211_RATE_MAXSIZE  15              /* max rates we'll 
handle */
-#define        IEEE80211_SANITISE_RATESIZE(_rsz) \
-       ((_rsz > IEEE80211_RATE_MAXSIZE) ? IEEE80211_RATE_MAXSIZE : _rsz)
-
-struct ieee80211_rateset {
-       u_int8_t rs_nrates;
-       u_int8_t rs_rates[IEEE80211_RATE_MAXSIZE];
-};
-
-struct ieee80211_roam {
-       int8_t rssi11a;         /* rssi thresh for 11a bss */
-       int8_t rssi11b;         /* for 11g sta in 11b bss */
-       int8_t rssi11bOnly;     /* for 11b sta */
-       u_int8_t pad1;
-       u_int8_t rate11a;       /* rate thresh for 11a bss */
-       u_int8_t rate11b;       /* for 11g sta in 11b bss */
-       u_int8_t rate11bOnly;   /* for 11b sta */
-       u_int8_t pad2;
-};
-#endif /* _NET80211__IEEE80211_H_ */
diff --git a/package/network/services/hostapd/madwifi/net80211/ieee80211.h 
b/package/network/services/hostapd/madwifi/net80211/ieee80211.h
deleted file mode 100644
index a39d4b9..0000000
--- a/package/network/services/hostapd/madwifi/net80211/ieee80211.h
+++ /dev/null
@@ -1,997 +0,0 @@
-/*-
- * Copyright (c) 2001 Atsushi Onoe
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: ieee80211.h 3268 2008-01-26 20:48:11Z mtaylor $
- */
-#ifndef _NET80211_IEEE80211_H_
-#define _NET80211_IEEE80211_H_
-
-/*
- * 802.11 protocol definitions.
- */
-
-#define        IEEE80211_ADDR_LEN              6               /* size of 
802.11 address */
-/* is 802.11 address multicast/broadcast? */
-#define        IEEE80211_IS_MULTICAST(_a)      (*(_a) & 0x01)
-
-/* IEEE 802.11 PLCP header */
-struct ieee80211_plcp_hdr {
-       u_int16_t i_sfd;
-       u_int8_t i_signal;
-       u_int8_t i_service;
-       u_int16_t i_length;
-       u_int16_t i_crc;
-} __packed;
-
-#define IEEE80211_PLCP_SFD      0xF3A0
-#define IEEE80211_PLCP_SERVICE  0x00
-
-/*
- * generic definitions for IEEE 802.11 frames
- */
-struct ieee80211_frame {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr3[IEEE80211_ADDR_LEN];
-       u_int8_t i_seq[2];
-       /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
-       /* see below */
-} __packed;
-
-struct ieee80211_qosframe {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr3[IEEE80211_ADDR_LEN];
-       u_int8_t i_seq[2];
-       u_int8_t i_qos[2];
-       /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
-       /* see below */
-} __packed;
-
-struct ieee80211_qoscntl {
-       u_int8_t i_qos[2];
-};
-
-struct ieee80211_frame_addr4 {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr3[IEEE80211_ADDR_LEN];
-       u_int8_t i_seq[2];
-       u_int8_t i_addr4[IEEE80211_ADDR_LEN];
-} __packed;
-
-
-struct ieee80211_qosframe_addr4 {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr3[IEEE80211_ADDR_LEN];
-       u_int8_t i_seq[2];
-       u_int8_t i_addr4[IEEE80211_ADDR_LEN];
-       u_int8_t i_qos[2];
-} __packed;
-
-struct ieee80211_ctlframe_addr2 {
-       u_int8_t i_fc[2];
-       __le16 i_aidordur; /* AID or duration */
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-} __packed;
-
-#define        IEEE80211_FC0_VERSION_MASK              0x03
-#define        IEEE80211_FC0_VERSION_SHIFT             0
-#define        IEEE80211_FC0_VERSION_0                 0x00
-#define        IEEE80211_FC0_TYPE_MASK                 0x0c
-#define        IEEE80211_FC0_TYPE_SHIFT                2
-#define        IEEE80211_FC0_TYPE_MGT                  0x00
-#define        IEEE80211_FC0_TYPE_CTL                  0x04
-#define        IEEE80211_FC0_TYPE_DATA                 0x08
-
-#define        IEEE80211_FC0_SUBTYPE_MASK              0xf0
-#define        IEEE80211_FC0_SUBTYPE_SHIFT             4
-/* for TYPE_MGT */
-#define        IEEE80211_FC0_SUBTYPE_ASSOC_REQ         0x00
-#define        IEEE80211_FC0_SUBTYPE_ASSOC_RESP        0x10
-#define        IEEE80211_FC0_SUBTYPE_REASSOC_REQ       0x20
-#define        IEEE80211_FC0_SUBTYPE_REASSOC_RESP      0x30
-#define        IEEE80211_FC0_SUBTYPE_PROBE_REQ         0x40
-#define        IEEE80211_FC0_SUBTYPE_PROBE_RESP        0x50
-#define        IEEE80211_FC0_SUBTYPE_BEACON            0x80
-#define        IEEE80211_FC0_SUBTYPE_ATIM              0x90
-#define        IEEE80211_FC0_SUBTYPE_DISASSOC          0xa0
-#define        IEEE80211_FC0_SUBTYPE_AUTH              0xb0
-#define        IEEE80211_FC0_SUBTYPE_DEAUTH            0xc0
-#define IEEE80211_FC0_SUBTYPE_ACTION           0xd0
-/* for TYPE_CTL */
-#define        IEEE80211_FC0_SUBTYPE_PS_POLL           0xa0
-#define        IEEE80211_FC0_SUBTYPE_RTS               0xb0
-#define        IEEE80211_FC0_SUBTYPE_CTS               0xc0
-#define        IEEE80211_FC0_SUBTYPE_ACK               0xd0
-#define        IEEE80211_FC0_SUBTYPE_CF_END            0xe0
-#define        IEEE80211_FC0_SUBTYPE_CF_END_ACK        0xf0
-/* for TYPE_DATA (bit combination) */
-#define        IEEE80211_FC0_SUBTYPE_DATA              0x00
-#define        IEEE80211_FC0_SUBTYPE_CF_ACK            0x10
-#define        IEEE80211_FC0_SUBTYPE_CF_POLL           0x20
-#define        IEEE80211_FC0_SUBTYPE_CF_ACPL           0x30
-#define        IEEE80211_FC0_SUBTYPE_NODATA            0x40
-#define        IEEE80211_FC0_SUBTYPE_CFACK             0x50
-#define        IEEE80211_FC0_SUBTYPE_CFPOLL            0x60
-#define        IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK     0x70
-#define        IEEE80211_FC0_SUBTYPE_QOS               0x80
-#define        IEEE80211_FC0_SUBTYPE_QOS_NULL          0xc0
-
-#define        IEEE80211_FC1_DIR_MASK                  0x03
-#define        IEEE80211_FC1_DIR_NODS                  0x00    /* STA->STA */
-#define        IEEE80211_FC1_DIR_TODS                  0x01    /* STA->AP  */
-#define        IEEE80211_FC1_DIR_FROMDS                0x02    /* AP ->STA */
-#define        IEEE80211_FC1_DIR_DSTODS                0x03    /* AP ->AP  */
-
-#define        IEEE80211_FC1_MORE_FRAG                 0x04
-#define        IEEE80211_FC1_RETRY                     0x08
-#define        IEEE80211_FC1_PWR_MGT                   0x10
-#define        IEEE80211_FC1_MORE_DATA                 0x20
-#define        IEEE80211_FC1_PROT                      0x40
-#define        IEEE80211_FC1_ORDER                     0x80
-
-#define        IEEE80211_SEQ_FRAG_MASK                 0x000f
-#define        IEEE80211_SEQ_FRAG_SHIFT                0
-#define        IEEE80211_SEQ_SEQ_MASK                  0xfff0
-#define        IEEE80211_SEQ_SEQ_SHIFT                 4
-
-#define        IEEE80211_NWID_LEN                      32
-
-#define        IEEE80211_QOS_TXOP                      0x00ff
-/* bit 8 is reserved */
-#define        IEEE80211_QOS_ACKPOLICY                 0x60
-#define        IEEE80211_QOS_ACKPOLICY_S               5
-#define        IEEE80211_QOS_EOSP                      0x10
-#define        IEEE80211_QOS_EOSP_S                    4
-#define        IEEE80211_QOS_TID                       0x0f
-
-#define IEEE80211_FRM_HAS_BODY(_wh)                    \
-       (((_wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) !=  \
-                       IEEE80211_FC0_TYPE_CTL)
-
-/*
- * Country/Region Codes from MS WINNLS.H
- * Numbering from ISO 3166
- * XXX belongs elsewhere
- */
-enum CountryCode {
-       CTRY_ALBANIA              = 8,       /* Albania */
-       CTRY_ALGERIA              = 12,      /* Algeria */
-       CTRY_ARGENTINA            = 32,      /* Argentina */
-       CTRY_ARMENIA              = 51,      /* Armenia */
-       CTRY_AUSTRALIA            = 36,      /* Australia */
-       CTRY_AUSTRIA              = 40,      /* Austria */
-       CTRY_AZERBAIJAN           = 31,      /* Azerbaijan */
-       CTRY_BAHRAIN              = 48,      /* Bahrain */
-       CTRY_BELARUS              = 112,     /* Belarus */
-       CTRY_BELGIUM              = 56,      /* Belgium */
-       CTRY_BELIZE               = 84,      /* Belize */
-       CTRY_BOLIVIA              = 68,      /* Bolivia */
-       CTRY_BRAZIL               = 76,      /* Brazil */
-       CTRY_BRUNEI_DARUSSALAM    = 96,      /* Brunei Darussalam */
-       CTRY_BULGARIA             = 100,     /* Bulgaria */
-       CTRY_CANADA               = 124,     /* Canada */
-       CTRY_CHILE                = 152,     /* Chile */
-       CTRY_CHINA                = 156,     /* People's Republic of China */
-       CTRY_COLOMBIA             = 170,     /* Colombia */
-       CTRY_COSTA_RICA           = 188,     /* Costa Rica */
-       CTRY_CROATIA              = 191,     /* Croatia */
-       CTRY_CYPRUS               = 196,
-       CTRY_CZECH                = 203,     /* Czech Republic */
-       CTRY_DENMARK              = 208,     /* Denmark */
-       CTRY_DOMINICAN_REPUBLIC   = 214,     /* Dominican Republic */
-       CTRY_ECUADOR              = 218,     /* Ecuador */
-       CTRY_EGYPT                = 818,     /* Egypt */
-       CTRY_EL_SALVADOR          = 222,     /* El Salvador */
-       CTRY_ESTONIA              = 233,     /* Estonia */
-       CTRY_FAEROE_ISLANDS       = 234,     /* Faeroe Islands */
-       CTRY_FINLAND              = 246,     /* Finland */
-       CTRY_FRANCE               = 250,     /* France */
-       CTRY_FRANCE2              = 255,     /* France2 */
-       CTRY_GEORGIA              = 268,     /* Georgia */
-       CTRY_GERMANY              = 276,     /* Germany */
-       CTRY_GREECE               = 300,     /* Greece */
-       CTRY_GUATEMALA            = 320,     /* Guatemala */
-       CTRY_HONDURAS             = 340,     /* Honduras */
-       CTRY_HONG_KONG            = 344,     /* Hong Kong S.A.R., P.R.C. */
-       CTRY_HUNGARY              = 348,     /* Hungary */
-       CTRY_ICELAND              = 352,     /* Iceland */
-       CTRY_INDIA                = 356,     /* India */
-       CTRY_INDONESIA            = 360,     /* Indonesia */
-       CTRY_IRAN                 = 364,     /* Iran */
-       CTRY_IRAQ                 = 368,     /* Iraq */
-       CTRY_IRELAND              = 372,     /* Ireland */
-       CTRY_ISRAEL               = 376,     /* Israel */
-       CTRY_ITALY                = 380,     /* Italy */
-       CTRY_JAMAICA              = 388,     /* Jamaica */
-       CTRY_JAPAN                = 392,     /* Japan */
-       CTRY_JAPAN1               = 393,     /* Japan (JP1) */
-       CTRY_JAPAN2               = 394,     /* Japan (JP0) */
-       CTRY_JAPAN3               = 395,     /* Japan (JP1-1) */
-       CTRY_JAPAN4               = 396,     /* Japan (JE1) */
-       CTRY_JAPAN5               = 397,     /* Japan (JE2) */
-       CTRY_JAPAN6               = 399,         /* Japan (JP6) */
-       CTRY_JAPAN7               = 900,         /* Japan */
-       CTRY_JAPAN8               = 901,         /* Japan */
-       CTRY_JAPAN9               = 902,         /* Japan */
-       CTRY_JAPAN10          = 903,     /* Japan */
-       CTRY_JAPAN11          = 904,     /* Japan */
-       CTRY_JAPAN12          = 905,     /* Japan */
-       CTRY_JAPAN13          = 906,     /* Japan */
-       CTRY_JAPAN14          = 907,     /* Japan */
-       CTRY_JAPAN15          = 908,     /* Japan */
-       CTRY_JAPAN16          = 909,     /* Japan */
-       CTRY_JAPAN17          = 910,     /* Japan */
-       CTRY_JAPAN18          = 911,     /* Japan */
-       CTRY_JAPAN19          = 912,     /* Japan */
-       CTRY_JAPAN20          = 913,     /* Japan */
-       CTRY_JAPAN21          = 914,     /* Japan */
-       CTRY_JAPAN22          = 915,     /* Japan */
-       CTRY_JAPAN23          = 916,     /* Japan */
-       CTRY_JAPAN24          = 917,     /* Japan */
-       CTRY_JAPAN25          = 918,     /* Japan */
-       CTRY_JAPAN26          = 919,     /* Japan */
-       CTRY_JAPAN27          = 920,     /* Japan */
-       CTRY_JAPAN28          = 921,     /* Japan */
-       CTRY_JAPAN29          = 922,     /* Japan */
-       CTRY_JAPAN30          = 923,     /* Japan */
-       CTRY_JAPAN31          = 924,     /* Japan */
-       CTRY_JAPAN32          = 925,     /* Japan */
-       CTRY_JAPAN33          = 926,     /* Japan */
-       CTRY_JAPAN34          = 927,     /* Japan */
-       CTRY_JAPAN35          = 928,     /* Japan */
-       CTRY_JAPAN36          = 929,     /* Japan */
-       CTRY_JAPAN37          = 930,     /* Japan */
-       CTRY_JAPAN38          = 931,     /* Japan */
-       CTRY_JAPAN39          = 932,     /* Japan */
-       CTRY_JAPAN40          = 933,     /* Japan */
-       CTRY_JAPAN41          = 934,     /* Japan */
-       CTRY_JAPAN42          = 935,     /* Japan */
-       CTRY_JAPAN43          = 936,     /* Japan */
-       CTRY_JAPAN44          = 937,     /* Japan */
-       CTRY_JAPAN45          = 938,     /* Japan */
-       CTRY_JAPAN46          = 939,     /* Japan */
-       CTRY_JAPAN47          = 940,     /* Japan */
-       CTRY_JAPAN48          = 941,     /* Japan */
-       CTRY_JORDAN               = 400,     /* Jordan */
-       CTRY_KAZAKHSTAN           = 398,     /* Kazakhstan */
-       CTRY_KENYA                = 404,     /* Kenya */
-       CTRY_KOREA_NORTH          = 408,     /* North Korea */
-       CTRY_KOREA_ROC            = 410,     /* South Korea */
-       CTRY_KOREA_ROC2           = 411,     /* South Korea */
-       CTRY_KUWAIT               = 414,     /* Kuwait */
-       CTRY_LATVIA               = 428,     /* Latvia */
-       CTRY_LEBANON              = 422,     /* Lebanon */
-       CTRY_LIBYA                = 434,     /* Libya */
-       CTRY_LIECHTENSTEIN        = 438,     /* Liechtenstein */
-       CTRY_LITHUANIA            = 440,     /* Lithuania */
-       CTRY_LUXEMBOURG           = 442,     /* Luxembourg */
-       CTRY_MACAU                = 446,     /* Macau */
-       CTRY_MACEDONIA            = 807,     /* the Former Yugoslav Republic of 
Macedonia */
-       CTRY_MALAYSIA             = 458,     /* Malaysia */
-       CTRY_MEXICO               = 484,     /* Mexico */
-       CTRY_MONACO               = 492,     /* Principality of Monaco */
-       CTRY_MOROCCO              = 504,     /* Morocco */
-       CTRY_NETHERLANDS          = 528,     /* Netherlands */
-       CTRY_NEW_ZEALAND          = 554,     /* New Zealand */
-       CTRY_NICARAGUA            = 558,     /* Nicaragua */
-       CTRY_NORWAY               = 578,     /* Norway */
-       CTRY_OMAN                 = 512,     /* Oman */
-       CTRY_PAKISTAN             = 586,     /* Islamic Republic of Pakistan */
-       CTRY_PANAMA               = 591,     /* Panama */
-       CTRY_PARAGUAY             = 600,     /* Paraguay */
-       CTRY_PERU                 = 604,     /* Peru */
-       CTRY_PHILIPPINES          = 608,     /* Republic of the Philippines */
-       CTRY_POLAND               = 616,     /* Poland */
-       CTRY_PORTUGAL             = 620,     /* Portugal */
-       CTRY_PUERTO_RICO          = 630,     /* Puerto Rico */
-       CTRY_QATAR                = 634,     /* Qatar */
-       CTRY_ROMANIA              = 642,     /* Romania */
-       CTRY_RUSSIA               = 643,     /* Russia */
-       CTRY_SAUDI_ARABIA         = 682,     /* Saudi Arabia */
-       CTRY_SINGAPORE            = 702,     /* Singapore */
-       CTRY_SLOVAKIA             = 703,     /* Slovak Republic */
-       CTRY_SLOVENIA             = 705,     /* Slovenia */
-       CTRY_SOUTH_AFRICA         = 710,     /* South Africa */
-       CTRY_SPAIN                = 724,     /* Spain */
-       CTRY_SWEDEN               = 752,     /* Sweden */
-       CTRY_SWITZERLAND          = 756,     /* Switzerland */
-       CTRY_SYRIA                = 760,     /* Syria */
-       CTRY_TAIWAN               = 158,     /* Taiwan */
-       CTRY_THAILAND             = 764,     /* Thailand */
-       CTRY_TRINIDAD_Y_TOBAGO    = 780,     /* Trinidad y Tobago */
-       CTRY_TUNISIA              = 788,     /* Tunisia */
-       CTRY_TURKEY               = 792,     /* Turkey */
-       CTRY_UAE                  = 784,     /* U.A.E. */
-       CTRY_UKRAINE              = 804,     /* Ukraine */
-       CTRY_UNITED_KINGDOM       = 826,     /* United Kingdom */
-       CTRY_UNITED_STATES        = 840,     /* United States */
-       CTRY_UNITED_STATES_FCC49  = 842,     /* United States (Public Safety)*/
-       CTRY_URUGUAY              = 858,     /* Uruguay */
-       CTRY_UZBEKISTAN           = 860,     /* Uzbekistan */
-       CTRY_VENEZUELA            = 862,     /* Venezuela */
-       CTRY_VIET_NAM             = 704,     /* Viet Nam */
-       CTRY_YEMEN                = 887,     /* Yemen */
-       CTRY_ZIMBABWE             = 716      /* Zimbabwe */
-};
-
-/* 
- * Generic information element
- */
-struct ieee80211_ie {
-       u_int8_t id;
-       u_int8_t len;
-       u_int8_t info[0];
-} __packed;
-
-/* 
- * Country information element.
- */
-#define IEEE80211_COUNTRY_MAX_TRIPLETS (83)
-struct ieee80211_ie_country {
-       u_int8_t country_id;
-       u_int8_t country_len;
-       u_int8_t country_str[3];
-       u_int8_t country_triplet[IEEE80211_COUNTRY_MAX_TRIPLETS * 3];
-} __packed;
-
-/*
- * Power Constraint information element.
- */
-struct ieee80211_ie_pwrcnstr {
-       u_int8_t pc_id;                 /* IEEE80211_ELEMID_PWRCNSTR */
-       u_int8_t pc_len;                /* == 2 */
-       u_int8_t pc_lpc;                /* Local Power Constraint [dB] */
-} __packed;
-
-/*
- * Power Capability information element.
- */
-struct ieee80211_ie_pwrcap {
-       u_int8_t pc_id;                 /* IEEE80211_ELEMID_PWRCAP */
-       u_int8_t pc_len;                /* == 2 */
-       int8_t pc_mintxpow;             /* Minimum Transmit Power Capability 
[dBm] */
-       int8_t pc_maxtxpow;             /* Maximum Transmit Power Capability 
[dBm] */
-} __packed;
-
-/*
- * Supported Channels information element.
- */
-#define IEEE80211_SUPPCHAN_MAX_PAIRS (127)
-struct ieee80211_ie_sc {
-       u_int8_t sc_id;                 /* IEEE80211_ELEMID_SUPPCHAN */
-       u_int8_t sc_len;                /* == 2 * number of sc_subband elements 
*/
-       struct {
-               u_int8_t sc_first;      /* First Channel Number */
-               u_int8_t sc_number;     /* Number of Channels */
-       } __packed sc_subband[IEEE80211_SUPPCHAN_MAX_PAIRS];
-} __packed;
-
-/*
- * Channel Switch Announcement information element.
- */
-struct ieee80211_ie_csa {
-       u_int8_t csa_id;        /* IEEE80211_ELEMID_CHANSWITCHANN */
-       u_int8_t csa_len;       /* == 3 */
-       u_int8_t csa_mode;      /* Channel Switch Mode: 1 == stop transmission 
until CS */
-       u_int8_t csa_chan;      /* New Channel Number */
-       u_int8_t csa_count;     /* TBTTs until Channel Switch happens */
-} __packed;
-
-/* minimal Channel Switch Count in the initial announcement */
-#define IEEE80211_CSA_PROTECTION_PERIOD 3
-
-/* maximum allowed deviance of measurement of intervals between CSA in Beacons 
*/
-#define IEEE80211_CSA_SANITY_THRESHOLD 100
-
-
-/* does frame have QoS sequence control data */
-#define        IEEE80211_QOS_HAS_SEQ(wh) \
-       (((wh)->i_fc[0] & \
-         (IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_QOS)) == \
-         (IEEE80211_FC0_TYPE_DATA | IEEE80211_FC0_SUBTYPE_QOS))
-
-#define WME_QOSINFO_COUNT      0x0f  /* Mask for Param Set Count field */
-/*
- * WME/802.11e information element.
- */
-struct ieee80211_ie_wme {
-       u_int8_t wme_id;                /* IEEE80211_ELEMID_VENDOR */
-       u_int8_t wme_len;       /* length in bytes */
-       u_int8_t wme_oui[3];    /* 0x00, 0x50, 0xf2 */
-       u_int8_t wme_type;      /* OUI type */
-       u_int8_t wme_subtype;   /* OUI subtype */
-       u_int8_t wme_version;   /* spec revision */
-       u_int8_t wme_info;      /* QoS info */
-} __packed;
-
-/*
- * WME/802.11e Tspec Element
- */
-struct ieee80211_wme_tspec {
-       u_int8_t ts_id;
-       u_int8_t ts_len;
-       u_int8_t ts_oui[3];
-       u_int8_t ts_oui_type;
-       u_int8_t ts_oui_subtype;
-       u_int8_t ts_version;
-       u_int8_t ts_tsinfo[3];
-       u_int8_t ts_nom_msdu[2];
-       u_int8_t ts_max_msdu[2];
-       u_int8_t ts_min_svc[4];
-       u_int8_t ts_max_svc[4];
-       u_int8_t ts_inactv_intv[4];
-       u_int8_t ts_susp_intv[4];
-       u_int8_t ts_start_svc[4];
-       u_int8_t ts_min_rate[4];
-       u_int8_t ts_mean_rate[4];
-       u_int8_t ts_max_burst[4];
-       u_int8_t ts_min_phy[4];
-       u_int8_t ts_peak_rate[4];
-       u_int8_t ts_delay[4];
-       u_int8_t ts_surplus[2];
-       u_int8_t ts_medium_time[2];
-} __packed;
-
-/*
- * WME AC parameter field
- */
-
-struct ieee80211_wme_acparams {
-       u_int8_t acp_aci_aifsn;
-       u_int8_t acp_logcwminmax;
-       u_int16_t acp_txop;
-} __packed;
-
-#define IEEE80211_WME_PARAM_LEN 24
-#define WME_NUM_AC             4       /* 4 AC categories */
-
-#define WME_PARAM_ACI          0x60    /* Mask for ACI field */
-#define WME_PARAM_ACI_S                5       /* Shift for ACI field */
-#define WME_PARAM_ACM          0x10    /* Mask for ACM bit */
-#define WME_PARAM_ACM_S                4       /* Shift for ACM bit */
-#define WME_PARAM_AIFSN                0x0f    /* Mask for aifsn field */
-#define WME_PARAM_AIFSN_S      0       /* Shift for aifsn field */
-#define WME_PARAM_LOGCWMIN     0x0f    /* Mask for CwMin field (in log) */
-#define WME_PARAM_LOGCWMIN_S   0       /* Shift for CwMin field */
-#define WME_PARAM_LOGCWMAX     0xf0    /* Mask for CwMax field (in log) */
-#define WME_PARAM_LOGCWMAX_S   4       /* Shift for CwMax field */
-
-#define WME_AC_TO_TID(_ac) (       \
-       ((_ac) == WME_AC_VO) ? 6 : \
-       ((_ac) == WME_AC_VI) ? 5 : \
-       ((_ac) == WME_AC_BK) ? 1 : \
-       0)
-
-#define TID_TO_WME_AC(_tid) (      \
-       ((_tid) < 1) ? WME_AC_BE : \
-       ((_tid) < 3) ? WME_AC_BK : \
-       ((_tid) < 6) ? WME_AC_VI : \
-       WME_AC_VO)
-
-/*
- * WME Parameter Element
- */
-
-struct ieee80211_wme_param {
-       u_int8_t param_id;
-       u_int8_t param_len;
-       u_int8_t param_oui[3];
-       u_int8_t param_oui_type;
-       u_int8_t param_oui_sybtype;
-       u_int8_t param_version;
-       u_int8_t param_qosInfo;
-       u_int8_t param_reserved;
-       struct ieee80211_wme_acparams   params_acParams[WME_NUM_AC];
-} __packed;
-
-/*
- * WME U-APSD qos info field defines
- */
-#define WME_CAPINFO_UAPSD_EN                   0x00000080
-#define WME_CAPINFO_UAPSD_VO                   0x00000001
-#define WME_CAPINFO_UAPSD_VI                   0x00000002
-#define WME_CAPINFO_UAPSD_BK                   0x00000004
-#define WME_CAPINFO_UAPSD_BE                   0x00000008
-#define WME_CAPINFO_UAPSD_ACFLAGS_SHIFT                0
-#define WME_CAPINFO_UAPSD_ACFLAGS_MASK         0xF
-#define WME_CAPINFO_UAPSD_MAXSP_SHIFT          5
-#define WME_CAPINFO_UAPSD_MAXSP_MASK           0x3
-#define WME_CAPINFO_IE_OFFSET                  8
-#define WME_UAPSD_MAXSP(_qosinfo)                                      \
-               (((_qosinfo) >> WME_CAPINFO_UAPSD_MAXSP_SHIFT) &        \
-                WME_CAPINFO_UAPSD_MAXSP_MASK)
-#define WME_UAPSD_AC_ENABLED(_ac, _qosinfo)                            \
-               ((1 << (3 - (_ac))) & (                                 \
-                ((_qosinfo) >> WME_CAPINFO_UAPSD_ACFLAGS_SHIFT) &      \
-                WME_CAPINFO_UAPSD_ACFLAGS_MASK))
-
-/*
- * Atheros Advanced Capability information element.
- */
-struct ieee80211_ie_athAdvCap {
-       u_int8_t athAdvCap_id;          /* IEEE80211_ELEMID_VENDOR */
-       u_int8_t athAdvCap_len;         /* length in bytes */
-       u_int8_t athAdvCap_oui[3];      /* 0x00, 0x03, 0x7f */
-       u_int8_t athAdvCap_type;        /* OUI type */
-       u_int8_t athAdvCap_subtype;     /* OUI subtype */
-       u_int8_t athAdvCap_version;     /* spec revision */
-       u_int8_t athAdvCap_capability;  /* Capability info */
-       u_int16_t athAdvCap_defKeyIndex;
-} __packed;
-
-/*
- * Atheros XR information element.
- */
-struct ieee80211_xr_param {
-       u_int8_t param_id;
-       u_int8_t param_len;
-       u_int8_t param_oui[3];
-       u_int8_t param_oui_type;
-       u_int8_t param_oui_sybtype;
-       u_int8_t param_version;
-       u_int8_t param_Info;
-       u_int8_t param_base_bssid[IEEE80211_ADDR_LEN];
-       u_int8_t param_xr_bssid[IEEE80211_ADDR_LEN];
-       u_int16_t param_xr_beacon_interval;
-       u_int8_t param_base_ath_capability;
-       u_int8_t param_xr_ath_capability;
-} __packed;
-
-/* Atheros capabilities */
-#define IEEE80211_ATHC_TURBOP  0x0001          /* Turbo Prime */
-#define IEEE80211_ATHC_COMP    0x0002          /* Compression */
-#define IEEE80211_ATHC_FF      0x0004          /* Fast Frames */
-#define IEEE80211_ATHC_XR      0x0008          /* Xtended Range support */
-#define IEEE80211_ATHC_AR      0x0010          /* Advanced Radar support */
-#define IEEE80211_ATHC_BURST   0x0020          /* Bursting - not negotiated */
-#define IEEE80211_ATHC_WME     0x0040          /* CWMin tuning */
-#define IEEE80211_ATHC_BOOST   0x0080          /* Boost */
-
-/*
- * Management Notification Frame
- */
-struct ieee80211_mnf {
-       u_int8_t mnf_category;
-       u_int8_t mnf_action;
-       u_int8_t mnf_dialog;
-       u_int8_t mnf_status;
-} __packed;
-#define        MNF_SETUP_REQ   0
-#define        MNF_SETUP_RESP  1
-#define        MNF_TEARDOWN    2
-
-/*
- * Control frames.
- */
-struct ieee80211_frame_min {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_addr1[IEEE80211_ADDR_LEN];
-       u_int8_t i_addr2[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-struct ieee80211_frame_rts {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_ra[IEEE80211_ADDR_LEN];
-       u_int8_t i_ta[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-struct ieee80211_frame_cts {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_ra[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-struct ieee80211_frame_ack {
-       u_int8_t i_fc[2];
-       __le16 i_dur;
-       u_int8_t i_ra[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-struct ieee80211_frame_pspoll {
-       u_int8_t i_fc[2];
-       u_int8_t i_aid[2];
-       u_int8_t i_bssid[IEEE80211_ADDR_LEN];
-       u_int8_t i_ta[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-struct ieee80211_frame_cfend {         /* NB: also CF-End+CF-Ack */
-       u_int8_t i_fc[2];
-       __le16 i_dur;   /* should be zero */
-       u_int8_t i_ra[IEEE80211_ADDR_LEN];
-       u_int8_t i_bssid[IEEE80211_ADDR_LEN];
-       /* FCS */
-} __packed;
-
-/*
- * BEACON management packets
- *
- *     octet timestamp[8]
- *     octet beacon interval[2]
- *     octet capability information[2]
- *     information element
- *             octet elemid
- *             octet length
- *             octet information[length]
- */
-
-typedef u_int8_t *ieee80211_mgt_beacon_t;
-
-#define        IEEE80211_BEACON_INTERVAL(beacon) \
-       ((beacon)[8] | ((beacon)[9] << 8))
-#define        IEEE80211_BEACON_CAPABILITY(beacon) \
-       ((beacon)[10] | ((beacon)[11] << 8))
-
-#define        IEEE80211_CAPINFO_ESS                   0x0001
-#define        IEEE80211_CAPINFO_IBSS                  0x0002
-#define        IEEE80211_CAPINFO_CF_POLLABLE           0x0004
-#define        IEEE80211_CAPINFO_CF_POLLREQ            0x0008
-#define        IEEE80211_CAPINFO_PRIVACY               0x0010
-#define        IEEE80211_CAPINFO_SHORT_PREAMBLE        0x0020
-#define        IEEE80211_CAPINFO_PBCC                  0x0040
-#define        IEEE80211_CAPINFO_CHNL_AGILITY          0x0080
-/* bits 8-9 are reserved (8 now for spectrum management) */
-#define IEEE80211_CAPINFO_SPECTRUM_MGMT                0x0100
-#define        IEEE80211_CAPINFO_SHORT_SLOTTIME        0x0400
-#define        IEEE80211_CAPINFO_RSN                   0x0800
-/* bit 12 is reserved */
-#define        IEEE80211_CAPINFO_DSSSOFDM              0x2000
-/* bits 14-15 are reserved */
-
-/*
- * 802.11i/WPA information element (maximally sized).
- */
-struct ieee80211_ie_wpa {
-       u_int8_t wpa_id;                        /* IEEE80211_ELEMID_VENDOR */
-       u_int8_t wpa_len;               /* length in bytes */
-       u_int8_t wpa_oui[3];            /* 0x00, 0x50, 0xf2 */
-       u_int8_t wpa_type;              /* OUI type */
-       u_int16_t wpa_version;          /* spec revision */
-       u_int32_t wpa_mcipher[1];       /* multicast/group key cipher */
-       u_int16_t wpa_uciphercnt;       /* # pairwise key ciphers */
-       u_int32_t wpa_uciphers[8];      /* ciphers */
-       u_int16_t wpa_authselcnt;       /* authentication selector cnt*/
-       u_int32_t wpa_authsels[8];      /* selectors */
-       u_int16_t wpa_caps;             /* 802.11i capabilities */
-       u_int16_t wpa_pmkidcnt;         /* 802.11i pmkid count */
-       u_int16_t wpa_pmkids[8];        /* 802.11i pmkids */
-} __packed;
-
-/*
- * Management information element payloads.
- */
-
-enum {
-       IEEE80211_ELEMID_SSID           = 0,
-       IEEE80211_ELEMID_RATES          = 1,
-       IEEE80211_ELEMID_FHPARMS        = 2,
-       IEEE80211_ELEMID_DSPARMS        = 3,
-       IEEE80211_ELEMID_CFPARMS        = 4,
-       IEEE80211_ELEMID_TIM            = 5,
-       IEEE80211_ELEMID_IBSSPARMS      = 6,
-       IEEE80211_ELEMID_COUNTRY        = 7,
-       IEEE80211_ELEMID_HOPPATRNPARMS  = 8,
-       IEEE80211_ELEMID_HOPPATRNTABLE  = 9,
-       IEEE80211_ELEMID_REQINFO        = 10,
-       IEEE80211_ELEMID_QBSSLOAD       = 11,
-       IEEE80211_ELEMID_EDCAPARAM      = 12,
-       IEEE80211_ELEMID_TSPEC          = 13,
-       IEEE80211_ELEMID_TRAFCLASS      = 14,
-       IEEE80211_ELEMID_SCHEDULE       = 15,
-       IEEE80211_ELEMID_CHALLENGE      = 16,
-       /* 17-31 reserved for challenge text extension */
-       IEEE80211_ELEMID_PWRCNSTR       = 32,
-       IEEE80211_ELEMID_PWRCAP         = 33,
-       IEEE80211_ELEMID_TPCREQ         = 34,
-       IEEE80211_ELEMID_TPCREP         = 35,
-       IEEE80211_ELEMID_SUPPCHAN       = 36,
-       IEEE80211_ELEMID_CHANSWITCHANN  = 37,
-       IEEE80211_ELEMID_MEASREQ        = 38,
-       IEEE80211_ELEMID_MEASREP        = 39,
-       IEEE80211_ELEMID_QUIET          = 40,
-       IEEE80211_ELEMID_IBSSDFS        = 41,
-       IEEE80211_ELEMID_ERP            = 42,
-       IEEE80211_ELEMID_TSDELAY        = 43,
-       IEEE80211_ELEMID_TCLASSPROC     = 44,
-       IEEE80211_ELEMID_QOS            = 46,
-       IEEE80211_ELEMID_RSN            = 48,
-       /* 49 reserved */
-       IEEE80211_ELEMID_XRATES         = 50,
-       /* 128-129 proprietary elements used by Agere chipsets */
-       IEEE80211_ELEMID_AGERE1         = 128,
-       IEEE80211_ELEMID_AGERE2         = 129,
-       IEEE80211_ELEMID_TPC            = 150,
-       IEEE80211_ELEMID_CCKM           = 156,
-       IEEE80211_ELEMID_VENDOR         = 221,  /* vendor private */
-};
-
-#define IEEE80211_CHANSWITCHANN_BYTES  5
-#define BITCTL_BUFD_MCAST              1
-#define BITCTL_BUFD_UCAST_AID_MASK     ((u_int8_t)~(BITCTL_BUFD_MCAST))
-#define BITCTL_BUFD_UCAST_AID_SHIFT    1
-
-struct ieee80211_tim_ie {
-       u_int8_t        tim_ie;                 /* IEEE80211_ELEMID_TIM */
-       u_int8_t        tim_len;
-       u_int8_t        tim_count;              /* DTIM count */
-       u_int8_t        tim_period;             /* DTIM period */
-       u_int8_t        tim_bitctl;             /* bitmap control */
-       u_int8_t        tim_bitmap[1];          /* variable-length bitmap */
-} __packed;
-
-struct ieee80211_country_ie {
-       u_int8_t        ie;                     /* IEEE80211_ELEMID_COUNTRY */
-       u_int8_t        len;
-       u_int8_t        cc[3];                  /* ISO CC+(I)ndoor/(O)utdoor */
-       struct {
-               u_int8_t schan;                 /* starting channel */
-               u_int8_t nchan;                 /* number channels */
-               u_int8_t maxtxpwr;              /* tx power cap */
-       } __packed band[4];                     /* up to 4 sub bands */
-} __packed;
-
-#define IEEE80211_CHALLENGE_LEN                128
-
-#define IEEE80211_SUPPCHAN_LEN         26
-
-#define        IEEE80211_RATE_BASIC            0x80
-#define        IEEE80211_RATE_VAL              0x7f
-
-/* EPR information element flags */
-#define        IEEE80211_ERP_NON_ERP_PRESENT   0x01
-#define        IEEE80211_ERP_USE_PROTECTION    0x02
-#define        IEEE80211_ERP_LONG_PREAMBLE     0x04
-
-/* Atheros private advanced capabilities info */
-#define        ATHEROS_CAP_TURBO_PRIME         0x01
-#define        ATHEROS_CAP_COMPRESSION         0x02
-#define        ATHEROS_CAP_FAST_FRAME          0x04
-/* bits 3-6 reserved */
-#define        ATHEROS_CAP_BOOST               0x80
-
-#define        ATH_OUI                 0x7f0300                /* Atheros OUI 
*/
-#define        ATH_OUI_TYPE            0x01
-#define        ATH_OUI_SUBTYPE         0x01
-#define        ATH_OUI_VERSION         0x00
-#define        ATH_OUI_TYPE_XR         0x03
-#define        ATH_OUI_SUBTYPE_XR      0x01
-#define        ATH_OUI_VER_XR          0x00
-
-#define        WPA_OUI                 0xf25000
-#define        WPA_OUI_TYPE            0x01
-#define        WPA_VERSION             1               /* current supported 
version */
-
-#define        WPA_CSE_NULL            0x00
-#define        WPA_CSE_WEP40           0x01
-#define        WPA_CSE_TKIP            0x02
-#define        WPA_CSE_CCMP            0x04
-#define        WPA_CSE_WEP104          0x05
-
-#define        WPA_ASE_NONE            0x00
-#define        WPA_ASE_8021X_UNSPEC    0x01
-#define        WPA_ASE_8021X_PSK       0x02
-
-#define        RSN_OUI                 0xac0f00
-#define        RSN_VERSION             1               /* current supported 
version */
-
-#define        RSN_CSE_NULL            0x00
-#define        RSN_CSE_WEP40           0x01
-#define        RSN_CSE_TKIP            0x02
-#define        RSN_CSE_WRAP            0x03
-#define        RSN_CSE_CCMP            0x04
-#define        RSN_CSE_WEP104          0x05
-
-#define        RSN_ASE_NONE            0x00
-#define        RSN_ASE_8021X_UNSPEC    0x01
-#define        RSN_ASE_8021X_PSK       0x02
-
-#define        RSN_CAP_PREAUTH         0x01
-
-#define        WME_OUI                 0xf25000
-#define        WME_OUI_TYPE            0x02
-#define        WME_INFO_OUI_SUBTYPE    0x00
-#define        WME_PARAM_OUI_SUBTYPE   0x01
-#define        WME_VERSION             1
-
-/* WME stream classes */
-#define        WME_AC_BE       0               /* best effort */
-#define        WME_AC_BK       1               /* background */
-#define        WME_AC_VI       2               /* video */
-#define        WME_AC_VO       3               /* voice */
-
-/*
- * AUTH management packets
- *
- *     octet algo[2]
- *     octet seq[2]
- *     octet status[2]
- *     octet chal.id
- *     octet chal.length
- *     octet chal.text[253]
- */
-
-typedef u_int8_t *ieee80211_mgt_auth_t;
-
-#define        IEEE80211_AUTH_ALGORITHM(auth) \
-       ((auth)[0] | ((auth)[1] << 8))
-#define        IEEE80211_AUTH_TRANSACTION(auth) \
-       ((auth)[2] | ((auth)[3] << 8))
-#define        IEEE80211_AUTH_STATUS(auth) \
-       ((auth)[4] | ((auth)[5] << 8))
-
-#define        IEEE80211_AUTH_ALG_OPEN         0x0000
-#define        IEEE80211_AUTH_ALG_SHARED       0x0001
-#define        IEEE80211_AUTH_ALG_LEAP         0x0080
-
-enum {
-       IEEE80211_AUTH_OPEN_REQUEST             = 1,
-       IEEE80211_AUTH_OPEN_RESPONSE            = 2,
-};
-
-enum {
-       IEEE80211_AUTH_SHARED_REQUEST           = 1,
-       IEEE80211_AUTH_SHARED_CHALLENGE         = 2,
-       IEEE80211_AUTH_SHARED_RESPONSE          = 3,
-       IEEE80211_AUTH_SHARED_PASS              = 4,
-};
-
-/*
- * Reason codes
- *
- * Unlisted codes are reserved
- */
-
-enum {
-       IEEE80211_REASON_UNSPECIFIED            = 1,
-       IEEE80211_REASON_AUTH_EXPIRE            = 2,
-       IEEE80211_REASON_AUTH_LEAVE             = 3,
-       IEEE80211_REASON_ASSOC_EXPIRE           = 4,
-       IEEE80211_REASON_ASSOC_TOOMANY          = 5,
-       IEEE80211_REASON_NOT_AUTHED             = 6,
-       IEEE80211_REASON_NOT_ASSOCED            = 7,
-       IEEE80211_REASON_ASSOC_LEAVE            = 8,
-       IEEE80211_REASON_ASSOC_NOT_AUTHED       = 9,
-
-       IEEE80211_REASON_PWRCAP_UNACCEPTABLE    = 10,
-       IEEE80211_REASON_SUPPCHAN_UNACCEPTABLE  = 11,
-       IEEE80211_REASON_RSN_REQUIRED           = 11,
-       IEEE80211_REASON_RSN_INCONSISTENT       = 12,
-       IEEE80211_REASON_IE_INVALID             = 13,
-       IEEE80211_REASON_MIC_FAILURE            = 14,
-
-       IEEE80211_STATUS_SUCCESS                = 0,
-       IEEE80211_STATUS_UNSPECIFIED            = 1,
-       IEEE80211_STATUS_CAPINFO                = 10,
-       IEEE80211_STATUS_NOT_ASSOCED            = 11,
-       IEEE80211_STATUS_OTHER                  = 12,
-       IEEE80211_STATUS_ALG                    = 13,
-       IEEE80211_STATUS_SEQUENCE               = 14,
-       IEEE80211_STATUS_CHALLENGE              = 15,
-       IEEE80211_STATUS_TIMEOUT                = 16,
-       IEEE80211_STATUS_TOOMANY                = 17,
-       IEEE80211_STATUS_BASIC_RATE             = 18,
-       IEEE80211_STATUS_SP_REQUIRED            = 19,
-       IEEE80211_STATUS_PBCC_REQUIRED          = 20,
-       IEEE80211_STATUS_CA_REQUIRED            = 21,
-       IEEE80211_STATUS_SM_REQUIRED            = 22,
-       IEEE80211_STATUS_PWRCAP_UNACCEPTABLE    = 23,
-       IEEE80211_STATUS_SUPPCHAN_UNACCEPTABLE  = 24,
-       IEEE80211_STATUS_TOO_MANY_STATIONS      = 22,
-       IEEE80211_STATUS_RATES                  = 23,
-       IEEE80211_STATUS_SHORTSLOT_REQUIRED     = 25,
-       IEEE80211_STATUS_DSSSOFDM_REQUIRED      = 26,
-};
-
-#define        IEEE80211_WEP_KEYLEN            5       /* 40bit */
-#define        IEEE80211_WEP_IVLEN             3       /* 24bit */
-#define        IEEE80211_WEP_KIDLEN            1       /* 1 octet */
-#define        IEEE80211_WEP_CRCLEN            4       /* CRC-32 */
-#define        IEEE80211_WEP_NKID              4       /* number of key ids */
-
-/*
- * 802.11i defines an extended IV for use with non-WEP ciphers.
- * When the EXTIV bit is set in the key id byte an additional
- * 4 bytes immediately follow the IV for TKIP.  For CCMP the
- * EXTIV bit is likewise set but the 8 bytes represent the
- * CCMP header rather than IV+extended-IV.
- */
-#define        IEEE80211_WEP_EXTIV             0x20
-#define        IEEE80211_WEP_EXTIVLEN          4       /* extended IV length */
-#define        IEEE80211_WEP_MICLEN            8       /* trailing MIC */
-
-#define        IEEE80211_CRC_LEN               4
-
-/*
- * Maximum acceptable MTU is:
- *     IEEE80211_MAX_LEN - WEP overhead - CRC -
- *             QoS overhead - RSN/WPA overhead
- * Min is arbitrarily chosen > IEEE80211_MIN_LEN.  The default
- * mtu is Ethernet-compatible; it's set by ether_ifattach.
- */
-#define        IEEE80211_MTU_MAX               2290
-#define        IEEE80211_MTU_MIN               32
-
-#define        IEEE80211_MAX_LEN               (2300 + IEEE80211_CRC_LEN + \
-       (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN))
-#define        IEEE80211_ACK_LEN \
-       (sizeof(struct ieee80211_frame_ack) + IEEE80211_CRC_LEN)
-#define        IEEE80211_MIN_LEN \
-       (sizeof(struct ieee80211_frame_min) + IEEE80211_CRC_LEN)
-
-/*
- * The 802.11 spec says at most 2007 stations may be
- * associated at once.  For most APs this is way more
- * than is feasible so we use a default of 128.  This
- * number may be overridden by the driver and/or by
- * user configuration.
- */
-#define        IEEE80211_AID_MAX               2007
-#define        IEEE80211_AID_DEF               128
-
-#define        IEEE80211_AID(b)        ((b) &~ 0xc000)
-
-/* 
- * RTS frame length parameters.  The default is specified in
- * the 802.11 spec.  The max may be wrong for jumbo frames.
- */
-#define        IEEE80211_RTS_DEFAULT           512
-#define        IEEE80211_RTS_MIN               1
-#define        IEEE80211_RTS_MAX               2346
-
-/* 
- * Regulatory extension identifier for country IE.
- */
-#define IEEE80211_REG_EXT_ID           201
-
-/*
- * IEEE 802.11 timer synchronization function (TSF) timestamp length
- */
-#define IEEE80211_TSF_LEN              8
-
-#endif /* _NET80211_IEEE80211_H_ */
diff --git 
a/package/network/services/hostapd/madwifi/net80211/ieee80211_crypto.h 
b/package/network/services/hostapd/madwifi/net80211/ieee80211_crypto.h
deleted file mode 100644
index b34f359..0000000
--- a/package/network/services/hostapd/madwifi/net80211/ieee80211_crypto.h
+++ /dev/null
@@ -1,207 +0,0 @@
-/*-
- * Copyright (c) 2001 Atsushi Onoe
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: ieee80211_crypto.h 3068 2007-12-21 17:46:02Z mentor $
- */
-#ifndef _NET80211_IEEE80211_CRYPTO_H_
-#define _NET80211_IEEE80211_CRYPTO_H_
-
-/*
- * 802.11 protocol crypto-related definitions.
- */
-#define        IEEE80211_KEYBUF_SIZE   16
-#define        IEEE80211_MICBUF_SIZE   (8 + 8)         /* space for both TX & 
RX keys */
-#define IEEE80211_TID_SIZE     17              /* total number of TIDs */
-
-/*
- * Old WEP-style key.  Deprecated.
- */
-struct ieee80211_wepkey {
-       u_int wk_len;                           /* key length in bytes */
-       u_int8_t wk_key[IEEE80211_KEYBUF_SIZE];
-};
-
-struct ieee80211_cipher;
-
-/*
- * Crypto key state.  There is sufficient room for all supported
- * ciphers (see below).  The underlying ciphers are handled
- * separately through loadable cipher modules that register with
- * the generic crypto support.  A key has a reference to an instance
- * of the cipher; any per-key state is hung off wk_private by the
- * cipher when it is attached.  Ciphers are automatically called
- * to detach and cleanup any such state when the key is deleted.
- *
- * The generic crypto support handles encap/decap of cipher-related
- * frame contents for both hardware- and software-based implementations.
- * A key requiring software crypto support is automatically flagged and
- * the cipher is expected to honor this and do the necessary work.
- * Ciphers such as TKIP may also support mixed hardware/software
- * encrypt/decrypt and MIC processing.
- */
-
-typedef u_int16_t ieee80211_keyix_t;
-
-/* XXX pack better? */
-/* XXX 48-bit rsc/tsc */
-struct ieee80211_key {
-       u_int8_t wk_keylen;             /* key length in bytes */
-       u_int8_t wk_flags;
-#define        IEEE80211_KEY_XMIT      0x01    /* key used for xmit */
-#define        IEEE80211_KEY_RECV      0x02    /* key used for recv */
-#define        IEEE80211_KEY_GROUP     0x04    /* key used for WPA group 
operation */
-#define        IEEE80211_KEY_SWCRYPT   0x10    /* host-based encrypt/decrypt */
-#define        IEEE80211_KEY_SWMIC     0x20    /* host-based enmic/demic */
-       ieee80211_keyix_t wk_keyix;     /* key index */
-       u_int8_t wk_key[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
-#define        wk_txmic        wk_key+IEEE80211_KEYBUF_SIZE+0  /* XXX can't () 
right */
-#define        wk_rxmic        wk_key+IEEE80211_KEYBUF_SIZE+8  /* XXX can't () 
right */
-       u_int64_t wk_keyrsc[IEEE80211_TID_SIZE];        /* key receive sequence 
counter */
-       u_int64_t wk_keytsc;            /* key transmit sequence counter */
-       const struct ieee80211_cipher *wk_cipher;
-       void *wk_private;               /* private cipher state */
-};
-#define        IEEE80211_KEY_COMMON            /* common flags passed in by 
apps */\
-       (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV | IEEE80211_KEY_GROUP)
-
-/*
- * NB: these values are ordered carefully; there are lots of
- * of implications in any reordering.  In particular beware
- * that 4 is not used to avoid conflicting with IEEE80211_F_PRIVACY.
- */
-#define        IEEE80211_CIPHER_WEP            0
-#define        IEEE80211_CIPHER_TKIP           1
-#define        IEEE80211_CIPHER_AES_OCB        2
-#define        IEEE80211_CIPHER_AES_CCM        3
-#define        IEEE80211_CIPHER_CKIP           5
-#define        IEEE80211_CIPHER_NONE           6       /* pseudo value */
-
-#define        IEEE80211_CIPHER_MAX            (IEEE80211_CIPHER_NONE + 1)
-
-#define        IEEE80211_KEYIX_NONE    ((ieee80211_keyix_t)-1)
-
-#if defined(__KERNEL__) || defined(_KERNEL)
-
-struct ieee80211com;
-struct ieee80211vap;
-struct ieee80211_node;
-struct sk_buff;
-
-void ieee80211_crypto_attach(struct ieee80211com *);
-void ieee80211_crypto_detach(struct ieee80211com *);
-void ieee80211_crypto_vattach(struct ieee80211vap *);
-void ieee80211_crypto_vdetach(struct ieee80211vap *);
-int ieee80211_crypto_newkey(struct ieee80211vap *, int, int,
-       struct ieee80211_key *);
-int ieee80211_crypto_delkey(struct ieee80211vap *, struct ieee80211_key *,
-       struct ieee80211_node *);
-int ieee80211_crypto_setkey(struct ieee80211vap *, struct ieee80211_key *,
-       const u_int8_t macaddr[IEEE80211_ADDR_LEN], struct ieee80211_node *);
-void ieee80211_crypto_delglobalkeys(struct ieee80211vap *);
-
-/*
- * Template for a supported cipher.  Ciphers register with the
- * crypto code and are typically loaded as separate modules
- * (the null cipher is always present).
- * XXX may need refcnts
- */
-struct ieee80211_cipher {
-       const char *ic_name;            /* printable name */
-       u_int ic_cipher;                /* IEEE80211_CIPHER_* */
-       u_int ic_header;                /* size of privacy header (bytes) */
-       u_int ic_trailer;               /* size of privacy trailer (bytes) */
-       u_int ic_miclen;                /* size of mic trailer (bytes) */
-       void *(*ic_attach)(struct ieee80211vap *, struct ieee80211_key *);
-       void (*ic_detach)(struct ieee80211_key *);
-       int (*ic_setkey)(struct ieee80211_key *);
-       int (*ic_encap)(struct ieee80211_key *, struct sk_buff *, u_int8_t);
-       int (*ic_decap)(struct ieee80211_key *, struct sk_buff *, int);
-       int (*ic_enmic)(struct ieee80211_key *, struct sk_buff *, int);
-       int (*ic_demic)(struct ieee80211_key *, struct sk_buff *, int, int);
-};
-extern const struct ieee80211_cipher ieee80211_cipher_none;
-
-void ieee80211_crypto_register(const struct ieee80211_cipher *);
-void ieee80211_crypto_unregister(const struct ieee80211_cipher *);
-int ieee80211_crypto_available(struct ieee80211vap*, u_int);
-
-struct ieee80211_key *ieee80211_crypto_encap(struct ieee80211_node *,
-       struct sk_buff *);
-struct ieee80211_key *ieee80211_crypto_decap(struct ieee80211_node *,
-       struct sk_buff *, int);
-
-/*
- * Check and remove any MIC.
- */
-static __inline int
-ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k,
-       struct sk_buff *skb, int hdrlen, int force)
-{
-       const struct ieee80211_cipher *cip = k->wk_cipher;
-       return (cip->ic_miclen > 0 ? cip->ic_demic(k, skb, hdrlen, force) : 1);
-}
-
-/*
- * Add any MIC.
- */
-static __inline int
-ieee80211_crypto_enmic(struct ieee80211vap *vap, struct ieee80211_key *k,
-       struct sk_buff *skb, int force)
-{
-       const struct ieee80211_cipher *cip = k->wk_cipher;
-       return (cip->ic_miclen > 0 ? cip->ic_enmic(k, skb, force) : 1);
-}
-
-/* 
- * Reset key state to an unused state.  The crypto
- * key allocation mechanism ensures other state (e.g.
- * key data) is properly setup before a key is used.
- */
-static __inline void
-ieee80211_crypto_resetkey(struct ieee80211vap *vap, struct ieee80211_key *k,
-       ieee80211_keyix_t ix)
-{
-       k->wk_cipher = &ieee80211_cipher_none;;
-       k->wk_private = k->wk_cipher->ic_attach(vap, k);
-       k->wk_keyix = ix;
-       k->wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV;
-}
-
-/*
- * Crypto-related notification methods.
- */
-void ieee80211_notify_replay_failure(struct ieee80211vap *,
-       const struct ieee80211_frame *, const struct ieee80211_key *,
-       u_int64_t rsc);
-void ieee80211_notify_michael_failure(struct ieee80211vap *,
-       const struct ieee80211_frame *, ieee80211_keyix_t keyix);
-#endif /* defined(__KERNEL__) || defined(_KERNEL) */
-#endif /* _NET80211_IEEE80211_CRYPTO_H_ */
diff --git 
a/package/network/services/hostapd/madwifi/net80211/ieee80211_ioctl.h 
b/package/network/services/hostapd/madwifi/net80211/ieee80211_ioctl.h
deleted file mode 100644
index 204303b..0000000
--- a/package/network/services/hostapd/madwifi/net80211/ieee80211_ioctl.h
+++ /dev/null
@@ -1,715 +0,0 @@
-/*-
- * Copyright (c) 2001 Atsushi Onoe
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: ieee80211_ioctl.h 3314 2008-01-30 23:50:16Z mtaylor $
- */
-#ifndef _NET80211_IEEE80211_IOCTL_H_
-#define _NET80211_IEEE80211_IOCTL_H_
-
-/*
- * IEEE 802.11 ioctls.
- */
-#include <net80211/_ieee80211.h>
-#include <net80211/ieee80211.h>
-#include <net80211/ieee80211_crypto.h>
-
-/*
- * Per/node (station) statistics available when operating as an AP.
- */
-struct ieee80211_nodestats {
-       u_int32_t ns_rx_data;           /* rx data frames */
-       u_int32_t ns_rx_mgmt;           /* rx management frames */
-       u_int32_t ns_rx_ctrl;           /* rx control frames */
-       u_int32_t ns_rx_ucast;          /* rx unicast frames */
-       u_int32_t ns_rx_mcast;          /* rx multi/broadcast frames */
-       u_int64_t ns_rx_bytes;          /* rx data count (bytes) */
-       u_int64_t ns_rx_beacons;                /* rx beacon frames */
-       u_int32_t ns_rx_proberesp;      /* rx probe response frames */
-
-       u_int32_t ns_rx_dup;            /* rx discard because it's a dup */
-       u_int32_t ns_rx_noprivacy;      /* rx w/ wep but privacy off */
-       u_int32_t ns_rx_wepfail;                /* rx wep processing failed */
-       u_int32_t ns_rx_demicfail;      /* rx demic failed */
-       u_int32_t ns_rx_decap;          /* rx decapsulation failed */
-       u_int32_t ns_rx_defrag;         /* rx defragmentation failed */
-       u_int32_t ns_rx_disassoc;       /* rx disassociation */
-       u_int32_t ns_rx_deauth;         /* rx deauthentication */
-       u_int32_t ns_rx_decryptcrc;     /* rx decrypt failed on crc */
-       u_int32_t ns_rx_unauth;         /* rx on unauthorized port */
-       u_int32_t ns_rx_unencrypted;    /* rx unecrypted w/ privacy */
-
-       u_int32_t ns_tx_data;           /* tx data frames */
-       u_int32_t ns_tx_mgmt;           /* tx management frames */
-       u_int32_t ns_tx_ucast;          /* tx unicast frames */
-       u_int32_t ns_tx_mcast;          /* tx multi/broadcast frames */
-       u_int64_t ns_tx_bytes;          /* tx data count (bytes) */
-       u_int32_t ns_tx_probereq;       /* tx probe request frames */
-       u_int32_t ns_tx_uapsd;          /* tx on uapsd queue */
-
-       u_int32_t ns_tx_novlantag;      /* tx discard due to no tag */
-       u_int32_t ns_tx_vlanmismatch;   /* tx discard due to of bad tag */
-
-       u_int32_t ns_tx_eosplost;       /* uapsd EOSP retried out */
-
-       u_int32_t ns_ps_discard;                /* ps discard due to of age */
-
-       u_int32_t ns_uapsd_triggers;    /* uapsd triggers */
-
-       /* MIB-related state */
-       u_int32_t ns_tx_assoc;          /* [re]associations */
-       u_int32_t ns_tx_assoc_fail;     /* [re]association failures */
-       u_int32_t ns_tx_auth;           /* [re]authentications */
-       u_int32_t ns_tx_auth_fail;      /* [re]authentication failures*/
-       u_int32_t ns_tx_deauth;         /* deauthentications */
-       u_int32_t ns_tx_deauth_code;    /* last deauth reason */
-       u_int32_t ns_tx_disassoc;       /* disassociations */
-       u_int32_t ns_tx_disassoc_code;  /* last disassociation reason */
-       u_int32_t ns_psq_drops;         /* power save queue drops */
-};
-
-/*
- * Summary statistics.
- */
-struct ieee80211_stats {
-       u_int32_t is_rx_badversion;     /* rx frame with bad version */
-       u_int32_t is_rx_tooshort;       /* rx frame too short */
-       u_int32_t is_rx_wrongbss;       /* rx from wrong bssid */
-       u_int32_t is_rx_dup;            /* rx discard due to it's a dup */
-       u_int32_t is_rx_wrongdir;       /* rx w/ wrong direction */
-       u_int32_t is_rx_mcastecho;      /* rx discard due to of mcast echo */
-       u_int32_t is_rx_mcastdisabled;  /* rx discard due to of mcast disabled 
*/
-       u_int32_t is_rx_notassoc;       /* rx discard due to sta !assoc */
-       u_int32_t is_rx_noprivacy;      /* rx w/ wep but privacy off */
-       u_int32_t is_rx_unencrypted;    /* rx w/o wep and privacy on */
-       u_int32_t is_rx_wepfail;                /* rx wep processing failed */
-       u_int32_t is_rx_decap;          /* rx decapsulation failed */
-       u_int32_t is_rx_mgtdiscard;     /* rx discard mgt frames */
-       u_int32_t is_rx_ctl;            /* rx discard ctrl frames */
-       u_int32_t is_rx_beacon;         /* rx beacon frames */
-       u_int32_t is_rx_rstoobig;       /* rx rate set truncated */
-       u_int32_t is_rx_elem_missing;   /* rx required element missing*/
-       u_int32_t is_rx_elem_toobig;    /* rx element too big */
-       u_int32_t is_rx_elem_toosmall;  /* rx element too small */
-       u_int32_t is_rx_elem_unknown;   /* rx element unknown */
-       u_int32_t is_rx_badchan;                /* rx frame w/ invalid chan */
-       u_int32_t is_rx_chanmismatch;   /* rx frame chan mismatch */
-       u_int32_t is_rx_nodealloc;      /* rx frame dropped */
-       u_int32_t is_rx_ssidmismatch;   /* rx frame ssid mismatch  */
-       u_int32_t is_rx_auth_unsupported;/* rx w/ unsupported auth alg */
-       u_int32_t is_rx_auth_fail;      /* rx sta auth failure */
-       u_int32_t is_rx_auth_countermeasures;/* rx auth discard due to CM */
-       u_int32_t is_rx_assoc_bss;      /* rx assoc from wrong bssid */
-       u_int32_t is_rx_assoc_notauth;  /* rx assoc w/o auth */
-       u_int32_t is_rx_assoc_capmismatch;/* rx assoc w/ cap mismatch */
-       u_int32_t is_rx_assoc_norate;   /* rx assoc w/ no rate match */
-       u_int32_t is_rx_assoc_badwpaie; /* rx assoc w/ bad WPA IE */
-       u_int32_t is_rx_assoc_badscie;  /* rx assoc w/ bad SC IE */
-       u_int32_t is_rx_deauth;         /* rx deauthentication */
-       u_int32_t is_rx_disassoc;       /* rx disassociation */
-       u_int32_t is_rx_badsubtype;     /* rx frame w/ unknown subtype*/
-       u_int32_t is_rx_nobuf;          /* rx failed for lack of buf */
-       u_int32_t is_rx_decryptcrc;     /* rx decrypt failed on crc */
-       u_int32_t is_rx_ahdemo_mgt;     /* rx discard ahdemo mgt frame*/
-       u_int32_t is_rx_bad_auth;       /* rx bad auth request */
-       u_int32_t is_rx_unauth;         /* rx on unauthorized port */
-       u_int32_t is_rx_badkeyid;       /* rx w/ incorrect keyid */
-       u_int32_t is_rx_ccmpreplay;     /* rx seq# violation (CCMP) */
-       u_int32_t is_rx_ccmpformat;     /* rx format bad (CCMP) */
-       u_int32_t is_rx_ccmpmic;                /* rx MIC check failed (CCMP) */
-       u_int32_t is_rx_tkipreplay;     /* rx seq# violation (TKIP) */
-       u_int32_t is_rx_tkipformat;     /* rx format bad (TKIP) */
-       u_int32_t is_rx_tkipmic;                /* rx MIC check failed (TKIP) */
-       u_int32_t is_rx_tkipicv;                /* rx ICV check failed (TKIP) */
-       u_int32_t is_rx_badcipher;      /* rx failed due to of key type */
-       u_int32_t is_rx_nocipherctx;    /* rx failed due to key !setup */
-       u_int32_t is_rx_acl;            /* rx discard due to of acl policy */
-       u_int32_t is_rx_ffcnt;          /* rx fast frames */
-       u_int32_t is_rx_badathtnl;      /* driver key alloc failed */
-       u_int32_t is_tx_nobuf;          /* tx failed for lack of buf */
-       u_int32_t is_tx_nonode;         /* tx failed for no node */
-       u_int32_t is_tx_unknownmgt;     /* tx of unknown mgt frame */
-       u_int32_t is_tx_badcipher;      /* tx failed due to of key type */
-       u_int32_t is_tx_nodefkey;       /* tx failed due to no defkey */
-       u_int32_t is_tx_noheadroom;     /* tx failed due to no space */
-       u_int32_t is_tx_ffokcnt;                /* tx fast frames sent success 
*/
-       u_int32_t is_tx_fferrcnt;       /* tx fast frames sent success */
-       u_int32_t is_scan_active;       /* active scans started */
-       u_int32_t is_scan_passive;      /* passive scans started */
-       u_int32_t is_node_timeout;      /* nodes timed out inactivity */
-       u_int32_t is_node_fdisassoc;    /* forced node disassociation */
-       u_int32_t is_crypto_nomem;      /* no memory for crypto ctx */
-       u_int32_t is_crypto_tkip;       /* tkip crypto done in s/w */
-       u_int32_t is_crypto_tkipenmic;  /* tkip en-MIC done in s/w */
-       u_int32_t is_crypto_tkipdemic;  /* tkip de-MIC done in s/w */
-       u_int32_t is_crypto_tkipcm;     /* tkip counter measures */
-       u_int32_t is_crypto_ccmp;       /* ccmp crypto done in s/w */
-       u_int32_t is_crypto_wep;                /* wep crypto done in s/w */
-       u_int32_t is_crypto_setkey_cipher;/* cipher rejected key */
-       u_int32_t is_crypto_setkey_nokey;/* no key index for setkey */
-       u_int32_t is_crypto_delkey;     /* driver key delete failed */
-       u_int32_t is_crypto_badcipher;  /* unknown cipher */
-       u_int32_t is_crypto_nocipher;   /* cipher not available */
-       u_int32_t is_crypto_attachfail; /* cipher attach failed */
-       u_int32_t is_crypto_swfallback; /* cipher fallback to s/w */
-       u_int32_t is_crypto_keyfail;    /* driver key alloc failed */
-       u_int32_t is_crypto_enmicfail;  /* en-MIC failed */
-       u_int32_t is_ibss_capmismatch;  /* merge failed-cap mismatch */
-       u_int32_t is_ibss_norate;       /* merge failed-rate mismatch */
-       u_int32_t is_ps_unassoc;                /* ps-poll for unassoc. sta */
-       u_int32_t is_ps_badaid;         /* ps-poll w/ incorrect aid */
-       u_int32_t is_ps_qempty;         /* ps-poll w/ nothing to send */
-};
-
-/*
- * Max size of optional information elements.  We artificially
- * constrain this; it's limited only by the max frame size (and
- * the max parameter size of the wireless extensions).
- */
-#define        IEEE80211_MAX_OPT_IE    256
-
-/*
- * WPA/RSN get/set key request.  Specify the key/cipher
- * type and whether the key is to be used for sending and/or
- * receiving.  The key index should be set only when working
- * with global keys (use IEEE80211_KEYIX_NONE for ``no index'').
- * Otherwise a unicast/pairwise key is specified by the bssid
- * (on a station) or mac address (on an ap).  They key length
- * must include any MIC key data; otherwise it should be no
- more than IEEE80211_KEYBUF_SIZE.
- */
-struct ieee80211req_key {
-       u_int8_t ik_type;               /* key/cipher type */
-       u_int8_t ik_pad;
-       ieee80211_keyix_t ik_keyix;     /* key index */
-       u_int8_t ik_keylen;             /* key length in bytes */
-       u_int8_t ik_flags;
-/* NB: IEEE80211_KEY_XMIT and IEEE80211_KEY_RECV defined elsewhere */
-#define        IEEE80211_KEY_DEFAULT   0x80    /* default xmit key */
-       u_int8_t ik_macaddr[IEEE80211_ADDR_LEN];
-       u_int64_t ik_keyrsc;            /* key receive sequence counter */
-       u_int64_t ik_keytsc;            /* key transmit sequence counter */
-       u_int8_t ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
-};
-
-/*
- * Delete a key either by index or address.  Set the index
- * to IEEE80211_KEYIX_NONE when deleting a unicast key.
- */
-struct ieee80211req_del_key {
-       /* NB: This is different to ieee80211_keyix_t, but this is OK as 
-        * values are unique over the low order bits. */
-       u_int8_t idk_keyix;     /* key index */
-       u_int8_t idk_macaddr[IEEE80211_ADDR_LEN];
-};
-
-/*
- * MLME state manipulation request.  IEEE80211_MLME_ASSOC
- * only makes sense when operating as a station.  The other
- * requests can be used when operating as a station or an
- * ap (to effect a station).
- */
-struct ieee80211req_mlme {
-       u_int8_t im_op;                 /* operation to perform */
-#define        IEEE80211_MLME_ASSOC            1       /* associate station */
-#define        IEEE80211_MLME_DISASSOC         2       /* disassociate station 
*/
-#define        IEEE80211_MLME_DEAUTH           3       /* deauthenticate 
station */
-#define        IEEE80211_MLME_AUTHORIZE        4       /* authorize station */
-#define        IEEE80211_MLME_UNAUTHORIZE      5       /* unauthorize station 
*/
-#define IEEE80211_MLME_CLEAR_STATS     6       /* clear station statistic */
-       u_int8_t im_ssid_len;           /* length of optional ssid */
-       u_int16_t im_reason;            /* 802.11 reason code */
-       u_int8_t im_macaddr[IEEE80211_ADDR_LEN];
-       u_int8_t im_ssid[IEEE80211_NWID_LEN];
-};
-
-/* 
- * MAC ACL operations.
- */
-enum {
-       IEEE80211_MACCMD_POLICY_OPEN    = 0,    /* set policy: no ACLs */
-       IEEE80211_MACCMD_POLICY_ALLOW   = 1,    /* set policy: allow traffic */
-       IEEE80211_MACCMD_POLICY_DENY    = 2,    /* set policy: deny traffic */
-       IEEE80211_MACCMD_FLUSH          = 3,    /* flush ACL database */
-       IEEE80211_MACCMD_DETACH         = 4,    /* detach ACL policy */
-};
-
-/*
- * Set the active channel list.  Note this list is
- * intersected with the available channel list in
- * calculating the set of channels actually used in
- * scanning.
- */
-struct ieee80211req_chanlist {
-       u_int8_t ic_channels[IEEE80211_CHAN_BYTES];
-};
-
-/*
- * Get the active channel list info.
- */
-struct ieee80211req_chaninfo {
-       u_int ic_nchans;
-       struct ieee80211_channel ic_chans[IEEE80211_CHAN_MAX];
-};
-
-/*
- * Retrieve the WPA/RSN information element for an associated station.
- */
-struct ieee80211req_wpaie {
-       u_int8_t        wpa_macaddr[IEEE80211_ADDR_LEN];
-       u_int8_t        wpa_ie[IEEE80211_MAX_OPT_IE];
-       u_int8_t        rsn_ie[IEEE80211_MAX_OPT_IE];
-};
-
-/*
- * Retrieve per-node statistics.
- */
-struct ieee80211req_sta_stats {
-       union {
-               /* NB: explicitly force 64-bit alignment */
-               u_int8_t macaddr[IEEE80211_ADDR_LEN];
-               u_int64_t pad;
-       } is_u;
-       struct ieee80211_nodestats is_stats;
-};
-
-/*
- * Station information block; the mac address is used
- * to retrieve other data like stats, unicast key, etc.
- */
-struct ieee80211req_sta_info {
-       u_int16_t isi_len;              /* length (mult of 4) */
-       u_int16_t isi_freq;             /* MHz */
-       u_int16_t isi_flags;            /* channel flags */
-       u_int16_t isi_state;            /* state flags */
-       u_int8_t isi_authmode;          /* authentication algorithm */
-       u_int8_t isi_rssi;
-       int8_t isi_noise;
-       u_int16_t isi_capinfo;          /* capabilities */
-       u_int8_t isi_athflags;          /* Atheros capabilities */
-       u_int8_t isi_erp;               /* ERP element */
-       u_int8_t isi_macaddr[IEEE80211_ADDR_LEN];
-       u_int8_t isi_nrates;            /* negotiated rates */
-       u_int8_t isi_rates[IEEE80211_RATE_MAXSIZE];
-       u_int8_t isi_txrate;            /* index to isi_rates[] */
-       u_int16_t isi_ie_len;           /* IE length */
-       u_int16_t isi_associd;          /* assoc response */
-       u_int16_t isi_txpower;          /* current tx power */
-       u_int16_t isi_vlan;             /* vlan tag */
-       u_int16_t isi_txseqs[17];       /* seq to be transmitted */
-       u_int16_t isi_rxseqs[17];       /* seq previous for qos frames*/
-       u_int16_t isi_inact;            /* inactivity timer */
-       u_int8_t isi_uapsd;             /* UAPSD queues */
-       u_int8_t isi_opmode;            /* sta operating mode */
-
-       /* XXX frag state? */
-       /* variable length IE data */
-};
-
-enum {
-       IEEE80211_STA_OPMODE_NORMAL,
-       IEEE80211_STA_OPMODE_XR
-};
-
-/*
- * Retrieve per-station information; to retrieve all
- * specify a mac address of ff:ff:ff:ff:ff:ff.
- */
-struct ieee80211req_sta_req {
-       union {
-               /* NB: explicitly force 64-bit alignment */
-               u_int8_t macaddr[IEEE80211_ADDR_LEN];
-               u_int64_t pad;
-       } is_u;
-       struct ieee80211req_sta_info info[1];   /* variable length */
-};
-
-/*
- * Get/set per-station tx power cap.
- */
-struct ieee80211req_sta_txpow {
-       u_int8_t        it_macaddr[IEEE80211_ADDR_LEN];
-       u_int8_t        it_txpow;
-};
-
-/*
- * WME parameters are set and return using i_val and i_len.
- * i_val holds the value itself.  i_len specifies the AC
- * and, as appropriate, then high bit specifies whether the
- * operation is to be applied to the BSS or ourself.
- */
-#define        IEEE80211_WMEPARAM_SELF 0x0000          /* parameter applies to 
self */
-#define        IEEE80211_WMEPARAM_BSS  0x8000          /* parameter applies to 
BSS */
-#define        IEEE80211_WMEPARAM_VAL  0x7fff          /* parameter value */
-
-/*
- * Scan result data returned for IEEE80211_IOC_SCAN_RESULTS.
- */
-struct ieee80211req_scan_result {
-       u_int16_t isr_len;              /* length (mult of 4) */
-       u_int16_t isr_freq;             /* MHz */
-       u_int16_t isr_flags;            /* channel flags */
-       u_int8_t isr_noise;
-       u_int8_t isr_rssi;
-       u_int8_t isr_intval;            /* beacon interval */
-       u_int16_t isr_capinfo;          /* capabilities */
-       u_int8_t isr_erp;               /* ERP element */
-       u_int8_t isr_bssid[IEEE80211_ADDR_LEN];
-       u_int8_t isr_nrates;
-       u_int8_t isr_rates[IEEE80211_RATE_MAXSIZE];
-       u_int8_t isr_ssid_len;          /* SSID length */
-       u_int8_t isr_ie_len;            /* IE length */
-       u_int8_t isr_pad[5];
-       /* variable length SSID followed by IE data */
-};
-
-#ifdef __FreeBSD__
-/*
- * FreeBSD-style ioctls.
- */
-/* the first member must be matched with struct ifreq */
-struct ieee80211req {
-       char i_name[IFNAMSIZ];  /* if_name, e.g. "wi0" */
-       u_int16_t i_type;       /* req type */
-       int16_t         i_val;          /* Index or simple value */
-       int16_t         i_len;          /* Index or simple value */
-       void *i_data;           /* Extra data */
-};
-#define        SIOCS80211               _IOW('i', 234, struct ieee80211req)
-#define        SIOCG80211              _IOWR('i', 235, struct ieee80211req)
-#define        SIOCG80211STATS         _IOWR('i', 236, struct ifreq)
-#define        SIOC80211IFCREATE       _IOWR('i', 237, struct ifreq)
-#define        SIOC80211IFDESTROY       _IOW('i', 238, struct ifreq)
-
-#define IEEE80211_IOC_SSID             1
-#define IEEE80211_IOC_NUMSSIDS         2
-#define IEEE80211_IOC_WEP              3
-#define        IEEE80211_WEP_NOSUP             -1
-#define        IEEE80211_WEP_OFF               0
-#define        IEEE80211_WEP_ON                1
-#define        IEEE80211_WEP_MIXED             2
-#define IEEE80211_IOC_WEPKEY           4
-#define IEEE80211_IOC_NUMWEPKEYS       5
-#define IEEE80211_IOC_WEPTXKEY         6
-#define IEEE80211_IOC_AUTHMODE         7
-#define IEEE80211_IOC_STATIONNAME      8
-#define IEEE80211_IOC_CHANNEL          9
-#define IEEE80211_IOC_POWERSAVE                10
-#define        IEEE80211_POWERSAVE_NOSUP       -1
-#define        IEEE80211_POWERSAVE_OFF         0
-#define        IEEE80211_POWERSAVE_CAM         1
-#define        IEEE80211_POWERSAVE_PSP         2
-#define        IEEE80211_POWERSAVE_PSP_CAM     3
-#define        IEEE80211_POWERSAVE_ON          IEEE80211_POWERSAVE_CAM
-#define IEEE80211_IOC_POWERSAVESLEEP   11
-#define        IEEE80211_IOC_RTSTHRESHOLD      12
-#define IEEE80211_IOC_PROTMODE         13
-#define        IEEE80211_PROTMODE_OFF          0
-#define        IEEE80211_PROTMODE_CTS          1
-#define        IEEE80211_PROTMODE_RTSCTS       2
-#define        IEEE80211_IOC_TXPOWER           14      /* global tx power 
limit */
-#define        IEEE80211_IOC_BSSID             15
-#define        IEEE80211_IOC_ROAMING           16      /* roaming mode */
-#define        IEEE80211_IOC_PRIVACY           17      /* privacy invoked */
-#define        IEEE80211_IOC_DROPUNENCRYPTED   18      /* discard unencrypted 
frames */
-#define        IEEE80211_IOC_WPAKEY            19
-#define        IEEE80211_IOC_DELKEY            20
-#define        IEEE80211_IOC_MLME              21
-#define        IEEE80211_IOC_OPTIE             22      /* optional info. 
element */
-#define        IEEE80211_IOC_SCAN_REQ          23
-#define        IEEE80211_IOC_SCAN_RESULTS      24
-#define        IEEE80211_IOC_COUNTERMEASURES   25      /* WPA/TKIP 
countermeasures */
-#define        IEEE80211_IOC_WPA               26      /* WPA mode (0,1,2) */
-#define        IEEE80211_IOC_CHANLIST          27      /* channel list */
-#define        IEEE80211_IOC_WME               28      /* WME mode (on, off) */
-#define        IEEE80211_IOC_HIDESSID          29      /* hide SSID mode (on, 
off) */
-#define IEEE80211_IOC_APBRIDGE         30      /* AP inter-sta bridging */
-#define        IEEE80211_IOC_MCASTCIPHER       31      /* multicast/default 
cipher */
-#define        IEEE80211_IOC_MCASTKEYLEN       32      /* multicast key length 
*/
-#define        IEEE80211_IOC_UCASTCIPHERS      33      /* unicast cipher 
suites */
-#define        IEEE80211_IOC_UCASTCIPHER       34      /* unicast cipher */
-#define        IEEE80211_IOC_UCASTKEYLEN       35      /* unicast key length */
-#define        IEEE80211_IOC_DRIVER_CAPS       36      /* driver capabilities 
*/
-#define        IEEE80211_IOC_KEYMGTALGS        37      /* key management 
algorithms */
-#define        IEEE80211_IOC_RSNCAPS           38      /* RSN capabilities */
-#define        IEEE80211_IOC_WPAIE             39      /* WPA information 
element */
-#define        IEEE80211_IOC_STA_STATS         40      /* per-station 
statistics */
-#define        IEEE80211_IOC_MACCMD            41      /* MAC ACL operation */
-#define        IEEE80211_IOC_TXPOWMAX          43      /* max tx power for 
channel */
-#define        IEEE80211_IOC_STA_TXPOW         44      /* per-station tx power 
limit */
-#define        IEEE80211_IOC_STA_INFO          45      /* station/neighbor 
info */
-#define        IEEE80211_IOC_WME_CWMIN         46      /* WME: ECWmin */
-#define        IEEE80211_IOC_WME_CWMAX         47      /* WME: ECWmax */
-#define        IEEE80211_IOC_WME_AIFS          48      /* WME: AIFSN */
-#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 
(beacons) */
-#define        IEEE80211_IOC_BEACON_INTERVAL   53      /* beacon interval (ms) 
*/
-#define        IEEE80211_IOC_ADDMAC            54      /* add sta to MAC ACL 
table */
-#define        IEEE80211_IOC_SETMAC            55      /* set interface wds 
mac addr */
-#define        IEEE80211_IOC_FF                56      /* ATH fast frames (on, 
off) */
-#define        IEEE80211_IOC_TURBOP            57      /* ATH turbo' (on, off) 
*/
-#define        IEEE80211_IOC_APPIEBUF          58      /* IE in the management 
frame */
-#define        IEEE80211_IOC_FILTERFRAME       59      /* management frame 
filter */
-
-/*
- * Scan result data returned for IEEE80211_IOC_SCAN_RESULTS.
- */
-struct ieee80211req_scan_result {
-       u_int16_t isr_len;              /* length (mult of 4) */
-       u_int16_t isr_freq;             /* MHz */
-       u_int16_t isr_flags;            /* channel flags */
-       u_int8_t isr_noise;
-       u_int8_t isr_rssi;
-       u_int8_t isr_intval;            /* beacon interval */
-       u_int16_t isr_capinfo;          /* capabilities */
-       u_int8_t isr_erp;               /* ERP element */
-       u_int8_t isr_bssid[IEEE80211_ADDR_LEN];
-       u_int8_t isr_nrates;
-       u_int8_t isr_rates[IEEE80211_RATE_MAXSIZE];
-       u_int8_t isr_ssid_len;          /* SSID length */
-       u_int8_t isr_ie_len;            /* IE length */
-       u_int8_t isr_pad[5];
-       /* variable length SSID followed by IE data */
-};
-
-#endif /* __FreeBSD__ */
-
-#ifdef __linux__
-/*
- * Wireless Extensions API, private ioctl interfaces.
- *
- * NB: Even-numbered ioctl numbers have set semantics and are privileged!
- *     (regardless of the incorrect comment in wireless.h!)
- */
-#ifdef __KERNEL__
-#include <linux/if.h>
-#endif
-/* The maximum size of a iwpriv structure is IW_PRIV_SIZE_MASK, which was 
- * exceeded for some time by chaninfo ioctl.  These macros change the size 
- * encoding for anything larger than IW_PRIV_SIZE_MASK from bytes to 4-byte
- * multiples so that the padded size fits under IW_PRIV_SIZE_MASK. */
-#define IW_PRIV_BLOB_LENGTH_ENCODING(_SIZE) \
-       (((_SIZE) == ((_SIZE) & IW_PRIV_SIZE_MASK)) ? \
-               (_SIZE) : \
-               (((_SIZE) / sizeof(uint32_t)) + \
-                       (((_SIZE) == (((_SIZE) / sizeof(uint32_t)) * 
sizeof(int))) ? \
-                               0 : 1)))
-#define IW_PRIV_BLOB_TYPE_ENCODING(_SIZE) \
-       (((_SIZE) == ((_SIZE) & IW_PRIV_SIZE_MASK)) ? \
-               (IW_PRIV_TYPE_BYTE | (_SIZE)) : \
-               (IW_PRIV_TYPE_INT  | IW_PRIV_BLOB_LENGTH_ENCODING((_SIZE))))
-
-#define        IEEE80211_IOCTL_SETPARAM        (SIOCIWFIRSTPRIV+0)
-#define        IEEE80211_IOCTL_GETPARAM        (SIOCIWFIRSTPRIV+1)
-#define        IEEE80211_IOCTL_SETMODE         (SIOCIWFIRSTPRIV+2)
-#define        IEEE80211_IOCTL_GETMODE         (SIOCIWFIRSTPRIV+3)
-#define        IEEE80211_IOCTL_SETWMMPARAMS    (SIOCIWFIRSTPRIV+4)
-#define        IEEE80211_IOCTL_GETWMMPARAMS    (SIOCIWFIRSTPRIV+5)
-#define        IEEE80211_IOCTL_SETCHANLIST     (SIOCIWFIRSTPRIV+6)
-#define        IEEE80211_IOCTL_GETCHANLIST     (SIOCIWFIRSTPRIV+7)
-#define        IEEE80211_IOCTL_CHANSWITCH      (SIOCIWFIRSTPRIV+8)
-#define        IEEE80211_IOCTL_GET_APPIEBUF    (SIOCIWFIRSTPRIV+9)
-#define        IEEE80211_IOCTL_SET_APPIEBUF    (SIOCIWFIRSTPRIV+10)
-#define        IEEE80211_IOCTL_READREG         (SIOCIWFIRSTPRIV+11)
-#define        IEEE80211_IOCTL_FILTERFRAME     (SIOCIWFIRSTPRIV+12)
-#define        IEEE80211_IOCTL_GETCHANINFO     (SIOCIWFIRSTPRIV+13)
-#define        IEEE80211_IOCTL_SETOPTIE        (SIOCIWFIRSTPRIV+14)
-#define        IEEE80211_IOCTL_GETOPTIE        (SIOCIWFIRSTPRIV+15)
-#define        IEEE80211_IOCTL_SETMLME         (SIOCIWFIRSTPRIV+16)
-#define        IEEE80211_IOCTL_RADAR           (SIOCIWFIRSTPRIV+17)
-#define        IEEE80211_IOCTL_SETKEY          (SIOCIWFIRSTPRIV+18)
-#define        IEEE80211_IOCTL_WRITEREG        (SIOCIWFIRSTPRIV+19)
-#define        IEEE80211_IOCTL_DELKEY          (SIOCIWFIRSTPRIV+20)
-#define        IEEE80211_IOCTL_HALMAP          (SIOCIWFIRSTPRIV+21)
-#define        IEEE80211_IOCTL_ADDMAC          (SIOCIWFIRSTPRIV+22)
-#define        IEEE80211_IOCTL_DELMAC          (SIOCIWFIRSTPRIV+24)
-#define        IEEE80211_IOCTL_WDSADDMAC       (SIOCIWFIRSTPRIV+25)
-#define        IEEE80211_IOCTL_WDSSETMAC       (SIOCIWFIRSTPRIV+26)
-#define        IEEE80211_IOCTL_KICKMAC         (SIOCIWFIRSTPRIV+30)
-#define        IEEE80211_IOCTL_SETSCANLIST     (SIOCIWFIRSTPRIV+31)
-
-enum {
-       IEEE80211_WMMPARAMS_CWMIN       = 1,
-       IEEE80211_WMMPARAMS_CWMAX       = 2,
-       IEEE80211_WMMPARAMS_AIFS        = 3,
-       IEEE80211_WMMPARAMS_TXOPLIMIT   = 4,
-       IEEE80211_WMMPARAMS_ACM         = 5,
-       IEEE80211_WMMPARAMS_NOACKPOLICY = 6,
-};
-enum {
-       IEEE80211_PARAM_TURBO                   = 1,    /* turbo mode */
-       IEEE80211_PARAM_MODE                    = 2,    /* phy mode (11a, 11b, 
etc.) */
-       IEEE80211_PARAM_AUTHMODE                = 3,    /* authentication mode 
*/
-       IEEE80211_PARAM_PROTMODE                = 4,    /* 802.11g protection */
-       IEEE80211_PARAM_MCASTCIPHER             = 5,    /* multicast/default 
cipher */
-       IEEE80211_PARAM_MCASTKEYLEN             = 6,    /* multicast key length 
*/
-       IEEE80211_PARAM_UCASTCIPHERS            = 7,    /* unicast cipher 
suites */
-       IEEE80211_PARAM_UCASTCIPHER             = 8,    /* unicast cipher */
-       IEEE80211_PARAM_UCASTKEYLEN             = 9,    /* unicast key length */
-       IEEE80211_PARAM_WPA                     = 10,   /* WPA mode (0,1,2) */
-       IEEE80211_PARAM_ROAMING                 = 12,   /* roaming mode */
-       IEEE80211_PARAM_PRIVACY                 = 13,   /* privacy invoked */
-       IEEE80211_PARAM_COUNTERMEASURES         = 14,   /* WPA/TKIP 
countermeasures */
-       IEEE80211_PARAM_DROPUNENCRYPTED         = 15,   /* discard unencrypted 
frames */
-       IEEE80211_PARAM_DRIVER_CAPS             = 16,   /* driver capabilities 
*/
-       IEEE80211_PARAM_MACCMD                  = 17,   /* MAC ACL operation */
-       IEEE80211_PARAM_WMM                     = 18,   /* WMM mode (on, off) */
-       IEEE80211_PARAM_HIDESSID                = 19,   /* hide SSID mode (on, 
off) */
-       IEEE80211_PARAM_APBRIDGE                = 20,   /* AP inter-sta 
bridging */
-       IEEE80211_PARAM_KEYMGTALGS              = 21,   /* key management 
algorithms */
-       IEEE80211_PARAM_RSNCAPS                 = 22,   /* RSN capabilities */
-       IEEE80211_PARAM_INACT                   = 23,   /* station inactivity 
timeout */
-       IEEE80211_PARAM_INACT_AUTH              = 24,   /* station auth inact 
timeout */
-       IEEE80211_PARAM_INACT_INIT              = 25,   /* station init inact 
timeout */
-       IEEE80211_PARAM_ABOLT                   = 26,   /* Atheros Adv. 
Capabilities */
-       IEEE80211_PARAM_INACT_TICK              = 27,   /* station inactivity 
timer tick (seconds) */
-       IEEE80211_PARAM_DTIM_PERIOD             = 28,   /* DTIM period 
(beacons) */
-       IEEE80211_PARAM_BEACON_INTERVAL         = 29,   /* beacon interval (ms) 
*/
-       IEEE80211_PARAM_DOTH                    = 30,   /* 11.h is on/off */
-       IEEE80211_PARAM_PWRTARGET               = 31,   /* Current Channel Pwr 
Constraint */
-       IEEE80211_PARAM_GENREASSOC              = 32,   /* Generate a 
reassociation request */
-       IEEE80211_PARAM_COMPRESSION             = 33,   /* compression */
-       IEEE80211_PARAM_FF                      = 34,   /* fast frames support  
*/
-       IEEE80211_PARAM_XR                      = 35,   /* XR support */
-       IEEE80211_PARAM_BURST                   = 36,   /* burst mode */
-       IEEE80211_PARAM_PUREG                   = 37,   /* pure 11g (no 11b 
stations) */
-       IEEE80211_PARAM_AR                      = 38,   /* AR support */
-       IEEE80211_PARAM_WDS                     = 39,   /* Enable 4 address 
processing */
-       IEEE80211_PARAM_BGSCAN                  = 40,   /* bg scanning (on, 
off) */
-       IEEE80211_PARAM_BGSCAN_IDLE             = 41,   /* bg scan idle 
threshold */
-       IEEE80211_PARAM_BGSCAN_INTERVAL         = 42,   /* bg scan interval */
-       IEEE80211_PARAM_MCAST_RATE              = 43,   /* Multicast Tx Rate */
-       IEEE80211_PARAM_COVERAGE_CLASS          = 44,   /* coverage class */
-       IEEE80211_PARAM_COUNTRY_IE              = 45,   /* enable country IE */
-       IEEE80211_PARAM_SCANVALID               = 46,   /* scan cache valid 
threshold */
-       IEEE80211_PARAM_ROAM_RSSI_11A           = 47,   /* rssi threshold in 
11a */
-       IEEE80211_PARAM_ROAM_RSSI_11B           = 48,   /* rssi threshold in 
11b */
-       IEEE80211_PARAM_ROAM_RSSI_11G           = 49,   /* rssi threshold in 
11g */
-       IEEE80211_PARAM_ROAM_RATE_11A           = 50,   /* tx rate threshold in 
11a */
-       IEEE80211_PARAM_ROAM_RATE_11B           = 51,   /* tx rate threshold in 
11b */
-       IEEE80211_PARAM_ROAM_RATE_11G           = 52,   /* tx rate threshold in 
11g */
-       IEEE80211_PARAM_UAPSDINFO               = 53,   /* value for qos info 
field */
-       IEEE80211_PARAM_SLEEP                   = 54,   /* force sleep/wake */
-       IEEE80211_PARAM_QOSNULL                 = 55,   /* force sleep/wake */
-       IEEE80211_PARAM_PSPOLL                  = 56,   /* force ps-poll 
generation (sta only) */
-       IEEE80211_PARAM_EOSPDROP                = 57,   /* force uapsd EOSP 
drop (ap only) */
-       IEEE80211_PARAM_MARKDFS                 = 58,   /* mark a dfs 
interference channel when found */
-       IEEE80211_PARAM_REGCLASS                = 59,   /* enable regclass ids 
in country IE */
-       IEEE80211_PARAM_DROPUNENC_EAPOL         = 60,   /* drop unencrypted 
eapol frames */
-       IEEE80211_PARAM_SHPREAMBLE              = 61,   /* Short Preamble */
-       IEEE80211_PARAM_DUMPREGS                = 62,   /* Pretty printed dump 
of Atheros hardware registers */
-       IEEE80211_PARAM_DOTH_ALGORITHM          = 63,   /* spectrum management 
algorithm */
-       IEEE80211_PARAM_DOTH_MINCOM             = 64,   /* minimum number of 
common channels */
-       IEEE80211_PARAM_DOTH_SLCG               = 65,   /* permil of Stations 
Lost per Channel Gained */
-       IEEE80211_PARAM_DOTH_SLDG               = 66,   /* permil of Stations 
Lost per rssi Db Gained */
-       IEEE80211_PARAM_TXCONT                  = 67,   /* continuous transmit 
mode (boolean) */
-       IEEE80211_PARAM_TXCONT_RATE             = 68,   /* continuous transmit 
mode data rate (in mbit/sec) - will use closest match from current rate table */
-       IEEE80211_PARAM_TXCONT_POWER            = 69,   /* power level in units 
of 0.5dBm */
-       IEEE80211_PARAM_DFS_TESTMODE            = 70,   /* do not perform DFS 
actions (i.e. markng DFS and channel change on interference), just report them 
via debug. */
-       IEEE80211_PARAM_DFS_CACTIME             = 71,   /* how long do we wait 
for chan availability
-                                                          scans ?
-                                                          FCC requires 60s, so 
that is the default. */
-       IEEE80211_PARAM_DFS_EXCLPERIOD          = 72,   /* DFS no-occupancy 
limit - how long do we stay
-                                                          off a channel once 
radar is detected?
-                                                          FCC requires 30m, so 
that is the default. */
-       IEEE80211_PARAM_BEACON_MISS_THRESH      = 73,   /* Beacon miss 
threshold (in beacons) */
-       IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss 
threshold (in ms) */
-       IEEE80211_PARAM_MAXRATE                 = 75,   /* Maximum rate (by 
table index) */
-       IEEE80211_PARAM_MINRATE                 = 76,   /* Minimum rate (by 
table index) */
-       IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for 
enabling protection mode */
-       IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring 
protection mode */
-       IEEE80211_PARAM_BGSCAN_THRESH           = 79,   /* bg scan rssi 
threshold */
-       IEEE80211_PARAM_RSSI_DIS_THR    = 80,   /* rssi threshold for 
disconnection */
-       IEEE80211_PARAM_RSSI_DIS_COUNT  = 81,   /* counter for rssi threshold */
-       IEEE80211_PARAM_WDS_SEP                 = 82,   /* move wds stations 
into separate interfaces */
-       IEEE80211_PARAM_MAXASSOC                = 83,   /* maximum associated 
stations */
-       IEEE80211_PARAM_PROBEREQ                = 84,   /* enable handling of 
probe requests */
-       IEEE80211_PARAM_BEACON_TXP              = 85,   /* set beacon tx power 
*/
-};
-
-#define        SIOCG80211STATS                 (SIOCDEVPRIVATE+2)
-/* NB: require in+out parameters so cannot use wireless extensions, yech */
-#define        IEEE80211_IOCTL_GETKEY          (SIOCDEVPRIVATE+3)
-#define        IEEE80211_IOCTL_GETWPAIE        (SIOCDEVPRIVATE+4)
-#define        IEEE80211_IOCTL_STA_STATS       (SIOCDEVPRIVATE+5)
-#define        IEEE80211_IOCTL_STA_INFO        (SIOCDEVPRIVATE+6)
-#define        SIOC80211IFCREATE               (SIOCDEVPRIVATE+7)
-#define        SIOC80211IFDESTROY              (SIOCDEVPRIVATE+8)
-#define        IEEE80211_IOCTL_SCAN_RESULTS    (SIOCDEVPRIVATE+9)
-
-struct ieee80211_clone_params {
-       char icp_name[IFNAMSIZ];                /* device name */
-       u_int16_t icp_opmode;                   /* operating mode */
-       u_int16_t icp_flags;                    /* see below */
-#define        IEEE80211_CLONE_BSSID   0x0001          /* allocate unique 
mac/bssid */
-#define        IEEE80211_NO_STABEACONS 0x0002          /* Do not setup the 
station beacon timers */
-};
-
-/* APPIEBUF related definitions */
-
-/* Management frame type to which application IE is added */
-enum {
-       IEEE80211_APPIE_FRAME_BEACON            = 0,
-       IEEE80211_APPIE_FRAME_PROBE_REQ         = 1,
-       IEEE80211_APPIE_FRAME_PROBE_RESP        = 2,
-       IEEE80211_APPIE_FRAME_ASSOC_REQ         = 3,
-       IEEE80211_APPIE_FRAME_ASSOC_RESP        = 4,
-       IEEE80211_APPIE_NUM_OF_FRAME            = 5
-};
-
-struct ieee80211req_getset_appiebuf {
-       u_int32_t       app_frmtype;            /* management frame type for 
which buffer is added */
-       u_int32_t       app_buflen;             /* application-supplied buffer 
length */
-       u_int8_t        app_buf[0];             /* application-supplied IE(s) */
-};
-
-/* Flags ORed by application to set filter for receiving management frames */
-enum {
-       IEEE80211_FILTER_TYPE_BEACON            = 1<<0,
-       IEEE80211_FILTER_TYPE_PROBE_REQ         = 1<<1,
-       IEEE80211_FILTER_TYPE_PROBE_RESP        = 1<<2,
-       IEEE80211_FILTER_TYPE_ASSOC_REQ         = 1<<3,
-       IEEE80211_FILTER_TYPE_ASSOC_RESP        = 1<<4,
-       IEEE80211_FILTER_TYPE_AUTH              = 1<<5,
-       IEEE80211_FILTER_TYPE_DEAUTH            = 1<<6,
-       IEEE80211_FILTER_TYPE_DISASSOC          = 1<<7,
-       IEEE80211_FILTER_TYPE_ALL               = 0xFF  /* used to check the 
valid filter bits */
-};
-
-struct ieee80211req_set_filter {
-       u_int32_t app_filterype;                /* management frame filter type 
*/
-};
-
-
-#endif /* __linux__ */
-
-#endif /* _NET80211_IEEE80211_IOCTL_H_ */
diff --git 
a/package/network/services/hostapd/patches/000-nl80211-Report-new-station-assoc-event-for-the-corre.patch
 
b/package/network/services/hostapd/patches/000-nl80211-Report-new-station-assoc-event-for-the-corre.patch
deleted file mode 100644
index 8fe4a0e..0000000
--- 
a/package/network/services/hostapd/patches/000-nl80211-Report-new-station-assoc-event-for-the-corre.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -2640,6 +2640,7 @@ static void nl80211_new_peer_candidate(s
- 
- 
- static void nl80211_new_station_event(struct wpa_driver_nl80211_data *drv,
-+                                    struct i802_bss *bss,
-                                     struct nlattr **tb)
- {
-       u8 *addr;
-@@ -2658,7 +2659,7 @@ static void nl80211_new_station_event(st
-                       ies_len = nla_len(tb[NL80211_ATTR_IE]);
-               }
-               wpa_hexdump(MSG_DEBUG, "nl80211: Assoc Req IEs", ies, ies_len);
--              drv_event_assoc(drv->ctx, addr, ies, ies_len, 0);
-+              drv_event_assoc(bss->ctx, addr, ies, ies_len, 0);
-               return;
-       }
- 
-@@ -2667,7 +2668,7 @@ static void nl80211_new_station_event(st
- 
-       os_memset(&data, 0, sizeof(data));
-       os_memcpy(data.ibss_rsn_start.peer, addr, ETH_ALEN);
--      wpa_supplicant_event(drv->ctx, EVENT_IBSS_RSN_START, &data);
-+      wpa_supplicant_event(bss->ctx, EVENT_IBSS_RSN_START, &data);
- }
- 
- 
-@@ -3309,7 +3310,7 @@ static void do_process_drv_event(struct
-                                    &data);
-               break;
-       case NL80211_CMD_NEW_STATION:
--              nl80211_new_station_event(drv, tb);
-+              nl80211_new_station_event(drv, bss, tb);
-               break;
-       case NL80211_CMD_DEL_STATION:
-               nl80211_del_station_event(drv, tb);
diff --git 
a/package/network/services/hostapd/patches/100-madwifi_key_fixes.patch 
b/package/network/services/hostapd/patches/100-madwifi_key_fixes.patch
deleted file mode 100644
index a46943b..0000000
--- a/package/network/services/hostapd/patches/100-madwifi_key_fixes.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- a/src/drivers/driver_madwifi.c
-+++ b/src/drivers/driver_madwifi.c
-@@ -449,7 +449,9 @@ wpa_driver_madwifi_set_key(const char *i
- 
-       memset(&wk, 0, sizeof(wk));
-       wk.ik_type = cipher;
--      wk.ik_flags = IEEE80211_KEY_RECV | IEEE80211_KEY_XMIT;
-+      wk.ik_flags = IEEE80211_KEY_RECV;
-+      if (set_tx)
-+              wk.ik_flags |= IEEE80211_KEY_XMIT;
-       if (addr == NULL || is_broadcast_ether_addr(addr)) {
-               memset(wk.ik_macaddr, 0xff, IEEE80211_ADDR_LEN);
-               wk.ik_keyix = key_idx;
-@@ -461,6 +463,20 @@ wpa_driver_madwifi_set_key(const char *i
-       wk.ik_keylen = key_len;
-       memcpy(wk.ik_keydata, key, key_len);
- 
-+#ifdef WORDS_BIGENDIAN
-+#define WPA_KEY_RSC_LEN 8
-+      {
-+              size_t i;
-+              u8 tmp[WPA_KEY_RSC_LEN];
-+              os_memset(tmp, 0, sizeof(tmp));
-+              for (i = 0; i < seq_len; i++)
-+                      tmp[WPA_KEY_RSC_LEN - i - 1] = seq[i];
-+              os_memcpy(&wk.ik_keyrsc, tmp, WPA_KEY_RSC_LEN);
-+      }
-+#else /* WORDS_BIGENDIAN */
-+      os_memcpy(&wk.ik_keyrsc, seq, seq_len);
-+#endif /* WORDS_BIGENDIAN */
-+
-       ret = set80211priv(drv, IEEE80211_IOCTL_SETKEY, &wk, sizeof(wk));
-       if (ret < 0) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to set key (addr %s"
diff --git a/package/network/services/hostapd/patches/200-multicall.patch 
b/package/network/services/hostapd/patches/200-multicall.patch
index 23180b9..c6ac36e 100644
--- a/package/network/services/hostapd/patches/200-multicall.patch
+++ b/package/network/services/hostapd/patches/200-multicall.patch
@@ -1,6 +1,8 @@
---- a/hostapd/Makefile
-+++ b/hostapd/Makefile
-@@ -14,6 +14,7 @@ CFLAGS += -I$(abspath ../src/utils)
+Index: hostapd-2015-02-01/hostapd/Makefile
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/Makefile
++++ hostapd-2015-02-01/hostapd/Makefile
+@@ -17,6 +17,7 @@ export BINDIR ?= /usr/local/bin/
  # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
  
  -include .config
@@ -8,7 +10,7 @@
  
  ifdef CONFIG_TESTING_OPTIONS
  CFLAGS += -DCONFIG_TESTING_OPTIONS
-@@ -224,10 +225,14 @@ ifdef CONFIG_IEEE80211AC
+@@ -242,10 +243,14 @@ ifdef CONFIG_IEEE80211AC
  CFLAGS += -DCONFIG_IEEE80211AC
  endif
  
@@ -26,7 +28,7 @@
  LIBS += $(DRV_AP_LIBS)
  
  ifdef CONFIG_L2_PACKET
-@@ -914,6 +919,12 @@ install: all
+@@ -950,6 +955,12 @@ install: $(addprefix $(DESTDIR)$(BINDIR)
  
  BCHECK=../src/drivers/build.hostapd
  
@@ -39,7 +41,7 @@
  hostapd: $(BCHECK) $(OBJS)
        $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
        @$(E) "  LD " $@
-@@ -952,6 +963,12 @@ HOBJS += ../src/crypto/aes-internal.o
+@@ -989,6 +1000,12 @@ HOBJS += ../src/crypto/aes-internal.o
  HOBJS += ../src/crypto/aes-internal-enc.o
  endif
  
@@ -52,9 +54,11 @@
  nt_password_hash: $(NOBJS)
        $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
        @$(E) "  LD " $@
---- a/wpa_supplicant/Makefile
-+++ b/wpa_supplicant/Makefile
-@@ -14,6 +14,7 @@ CFLAGS += -I$(abspath ../src)
+Index: hostapd-2015-02-01/wpa_supplicant/Makefile
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/Makefile
++++ hostapd-2015-02-01/wpa_supplicant/Makefile
+@@ -15,6 +15,7 @@ CFLAGS += -I$(abspath ../src)
  CFLAGS += -I$(abspath ../src/utils)
  
  -include .config
@@ -62,7 +66,7 @@
  
  ifdef CONFIG_TESTING_OPTIONS
  CFLAGS += -DCONFIG_TESTING_OPTIONS
-@@ -745,6 +746,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
+@@ -771,6 +772,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
  CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
  LIBS += -ldl -rdynamic
  endif
@@ -73,7 +77,7 @@
  endif
  
  ifdef CONFIG_MACSEC
-@@ -765,9 +770,11 @@ NEED_EAP_COMMON=y
+@@ -791,9 +796,11 @@ NEED_EAP_COMMON=y
  NEED_RSN_AUTHENTICATOR=y
  CFLAGS += -DCONFIG_AP
  OBJS += ap.o
@@ -85,7 +89,7 @@
  OBJS += ../src/ap/hostapd.o
  OBJS += ../src/ap/wpa_auth_glue.o
  OBJS += ../src/ap/utils.o
-@@ -830,10 +837,18 @@ endif
+@@ -856,10 +863,18 @@ endif
  ifdef CONFIG_HS20
  OBJS += ../src/ap/hs20.o
  endif
@@ -104,7 +108,7 @@
  NEED_AES_WRAP=y
  OBJS += ../src/ap/wpa_auth.o
  OBJS += ../src/ap/wpa_auth_ie.o
-@@ -1589,6 +1604,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
+@@ -1616,6 +1631,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
  
  $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
  
@@ -117,9 +121,9 @@
  wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
        $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
        @$(E) "  LD " $@
-@@ -1669,6 +1690,12 @@ endif
- %@.service: %.service.arg.in
-       sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
+@@ -1698,6 +1719,12 @@ endif
+       $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
+       @$(E) "  sed" $<
  
 +dump_cflags:
 +      @echo -n $(CFLAGS) " "
@@ -130,9 +134,11 @@
  wpa_supplicant.exe: wpa_supplicant
        mv -f $< $@
  wpa_cli.exe: wpa_cli
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -4294,8 +4294,8 @@ union wpa_event_data {
+Index: hostapd-2015-02-01/src/drivers/driver.h
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/driver.h
++++ hostapd-2015-02-01/src/drivers/driver.h
+@@ -4539,8 +4539,8 @@ union wpa_event_data {
   * Driver wrapper code should call this function whenever an event is received
   * from the driver.
   */
@@ -143,9 +149,11 @@
  
  
  /*
---- a/src/ap/drv_callbacks.c
-+++ b/src/ap/drv_callbacks.c
-@@ -989,8 +989,8 @@ static void hostapd_event_dfs_nop_finish
+Index: hostapd-2015-02-01/src/ap/drv_callbacks.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/drv_callbacks.c
++++ hostapd-2015-02-01/src/ap/drv_callbacks.c
+@@ -1035,8 +1035,8 @@ static void hostapd_event_dfs_nop_finish
  #endif /* NEED_AP_MLME */
  
  
@@ -156,9 +164,11 @@
  {
        struct hostapd_data *hapd = ctx;
  #ifndef CONFIG_NO_STDOUT_DEBUG
---- a/wpa_supplicant/wpa_priv.c
-+++ b/wpa_supplicant/wpa_priv.c
-@@ -815,8 +815,8 @@ static void wpa_priv_send_ft_response(st
+Index: hostapd-2015-02-01/wpa_supplicant/wpa_priv.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/wpa_priv.c
++++ hostapd-2015-02-01/wpa_supplicant/wpa_priv.c
+@@ -819,8 +819,8 @@ static void wpa_priv_send_ft_response(st
  }
  
  
@@ -169,7 +179,7 @@
  {
        struct wpa_priv_interface *iface = ctx;
  
-@@ -956,6 +956,7 @@ int main(int argc, char *argv[])
+@@ -961,6 +961,7 @@ int main(int argc, char *argv[])
        if (os_program_init())
                return -1;
  
@@ -177,9 +187,11 @@
        wpa_priv_fd_workaround();
  
        for (;;) {
---- a/wpa_supplicant/events.c
-+++ b/wpa_supplicant/events.c
-@@ -2924,8 +2924,8 @@ static void wpa_supplicant_event_assoc_a
+Index: hostapd-2015-02-01/wpa_supplicant/events.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/events.c
++++ hostapd-2015-02-01/wpa_supplicant/events.c
+@@ -2997,8 +2997,8 @@ static void wpa_supplicant_event_assoc_a
  }
  
  
@@ -190,9 +202,11 @@
  {
        struct wpa_supplicant *wpa_s = ctx;
  
---- a/wpa_supplicant/wpa_supplicant.c
-+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -3980,6 +3980,9 @@ static void wpa_supplicant_deinit_iface(
+Index: hostapd-2015-02-01/wpa_supplicant/wpa_supplicant.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/wpa_supplicant.c
++++ hostapd-2015-02-01/wpa_supplicant/wpa_supplicant.c
+@@ -4180,6 +4180,9 @@ static void wpa_supplicant_deinit_iface(
        os_free(wpa_s);
  }
  
@@ -202,17 +216,19 @@
  
  /**
   * wpa_supplicant_add_iface - Add a new network interface
-@@ -4181,6 +4184,7 @@ struct wpa_global * wpa_supplicant_init(
+@@ -4404,6 +4407,7 @@ struct wpa_global * wpa_supplicant_init(
+ #ifndef CONFIG_NO_WPA_MSG
        wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb);
  #endif /* CONFIG_NO_WPA_MSG */
- 
 +      wpa_supplicant_event = supplicant_event;
-       wpa_debug_open_file(params->wpa_debug_file_path);
-       if (params->wpa_debug_syslog)
-               wpa_debug_open_syslog();
---- a/hostapd/main.c
-+++ b/hostapd/main.c
-@@ -504,6 +504,9 @@ static int hostapd_get_ctrl_iface_group(
+ 
+       if (params->wpa_debug_file_path)
+               wpa_debug_open_file(params->wpa_debug_file_path);
+Index: hostapd-2015-02-01/hostapd/main.c
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/main.c
++++ hostapd-2015-02-01/hostapd/main.c
+@@ -511,6 +511,9 @@ static int hostapd_get_ctrl_iface_group(
        return 0;
  }
  
@@ -222,7 +238,7 @@
  
  #ifdef CONFIG_WPS
  static int gen_uuid(const char *txt_addr)
-@@ -555,6 +558,7 @@ int main(int argc, char *argv[])
+@@ -562,6 +565,7 @@ int main(int argc, char *argv[])
        interfaces.global_iface_name = NULL;
        interfaces.global_ctrl_sock = -1;
  
@@ -230,8 +246,10 @@
        for (;;) {
                c = getopt(argc, argv, "b:Bde:f:hKP:Ttu:vg:G:");
                if (c < 0)
---- a/src/drivers/drivers.c
-+++ b/src/drivers/drivers.c
+Index: hostapd-2015-02-01/src/drivers/drivers.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/drivers.c
++++ hostapd-2015-02-01/src/drivers/drivers.c
 @@ -10,6 +10,9 @@
  #include "utils/common.h"
  #include "driver.h"
@@ -242,8 +260,10 @@
  #ifdef CONFIG_DRIVER_WEXT
  extern struct wpa_driver_ops wpa_driver_wext_ops; /* driver_wext.c */
  #endif /* CONFIG_DRIVER_WEXT */
---- a/wpa_supplicant/eapol_test.c
-+++ b/wpa_supplicant/eapol_test.c
+Index: hostapd-2015-02-01/wpa_supplicant/eapol_test.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/eapol_test.c
++++ hostapd-2015-02-01/wpa_supplicant/eapol_test.c
 @@ -28,8 +28,12 @@
  #include "ctrl_iface.h"
  #include "pcsc_funcs.h"
@@ -257,7 +277,7 @@
  struct wpa_driver_ops *wpa_drivers[] = { NULL };
  
  
-@@ -1194,6 +1198,8 @@ static void usage(void)
+@@ -1203,6 +1207,8 @@ static void usage(void)
               "option several times.\n");
  }
  
@@ -266,7 +286,7 @@
  
  int main(int argc, char *argv[])
  {
-@@ -1212,6 +1218,7 @@ int main(int argc, char *argv[])
+@@ -1221,6 +1227,7 @@ int main(int argc, char *argv[])
        if (os_program_init())
                return -1;
  
diff --git a/package/network/services/hostapd/patches/300-noscan.patch 
b/package/network/services/hostapd/patches/300-noscan.patch
index 9910f89..e5168de 100644
--- a/package/network/services/hostapd/patches/300-noscan.patch
+++ b/package/network/services/hostapd/patches/300-noscan.patch
@@ -1,6 +1,8 @@
---- a/hostapd/config_file.c
-+++ b/hostapd/config_file.c
-@@ -2651,6 +2651,8 @@ static int hostapd_config_fill(struct ho
+Index: hostapd-2015-02-01/hostapd/config_file.c
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/config_file.c
++++ hostapd-2015-02-01/hostapd/config_file.c
+@@ -2678,6 +2678,8 @@ static int hostapd_config_fill(struct ho
                }
  #endif /* CONFIG_IEEE80211W */
  #ifdef CONFIG_IEEE80211N
@@ -9,9 +11,11 @@
        } else if (os_strcmp(buf, "ieee80211n") == 0) {
                conf->ieee80211n = atoi(pos);
        } else if (os_strcmp(buf, "ht_capab") == 0) {
---- a/src/ap/ap_config.h
-+++ b/src/ap/ap_config.h
-@@ -605,6 +605,7 @@ struct hostapd_config {
+Index: hostapd-2015-02-01/src/ap/ap_config.h
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/ap_config.h
++++ hostapd-2015-02-01/src/ap/ap_config.h
+@@ -618,6 +618,7 @@ struct hostapd_config {
  
        int ht_op_mode_fixed;
        u16 ht_capab;
@@ -19,9 +23,11 @@
        int ieee80211n;
        int secondary_channel;
        int require_ht;
---- a/src/ap/hw_features.c
-+++ b/src/ap/hw_features.c
-@@ -690,7 +690,7 @@ static int ieee80211n_check_40mhz(struct
+Index: hostapd-2015-02-01/src/ap/hw_features.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/hw_features.c
++++ hostapd-2015-02-01/src/ap/hw_features.c
+@@ -461,7 +461,7 @@ static int ieee80211n_check_40mhz(struct
        struct wpa_driver_scan_params params;
        int ret;
  
@@ -30,19 +36,21 @@
                return 0; /* HT40 not used */
  
        hostapd_set_state(iface, HAPD_IFACE_HT_SCAN);
---- a/src/ap/ieee802_11_ht.c
-+++ b/src/ap/ieee802_11_ht.c
-@@ -220,6 +220,9 @@ void hostapd_2040_coex_action(struct hos
+Index: hostapd-2015-02-01/src/ap/ieee802_11_ht.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/ieee802_11_ht.c
++++ hostapd-2015-02-01/src/ap/ieee802_11_ht.c
+@@ -221,6 +221,9 @@ void hostapd_2040_coex_action(struct hos
        if (!(iface->conf->ht_capab & HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET))
                return;
  
 +      if (iface->conf->noscan)
 +              return;
 +
-       if (len < IEEE80211_HDRLEN + 1)
+       if (len < IEEE80211_HDRLEN + 2 + sizeof(*bc_ie))
                return;
-       data++;
-@@ -317,6 +320,9 @@ void ht40_intolerant_add(struct hostapd_
+ 
+@@ -341,6 +344,9 @@ void ht40_intolerant_add(struct hostapd_
        if (iface->current_mode->mode != HOSTAPD_MODE_IEEE80211G)
                return;
  
diff --git 
a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch 
b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch
index 097f5c8..24f133c 100644
--- a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch
+++ b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch
@@ -1,11 +1,13 @@
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -7840,7 +7840,7 @@ static int nl80211_set_channel(struct i8
-       nl80211_cmd(drv, msg, 0, set_chan ? NL80211_CMD_SET_CHANNEL :
-                   NL80211_CMD_SET_WIPHY);
- 
--      NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, drv->ifindex);
-+      NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, bss->ifindex);
-       if (nl80211_put_freq_params(msg, freq) < 0)
-               goto nla_put_failure;
+Index: hostapd-2015-02-01/src/drivers/driver_nl80211.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/driver_nl80211.c
++++ hostapd-2015-02-01/src/drivers/driver_nl80211.c
+@@ -3502,7 +3502,7 @@ static int nl80211_set_channel(struct i8
+                  freq->freq, freq->ht_enabled, freq->vht_enabled,
+                  freq->bandwidth, freq->center_freq1, freq->center_freq2);
  
+-      msg = nl80211_drv_msg(drv, 0, set_chan ? NL80211_CMD_SET_CHANNEL :
++      msg = nl80211_bss_msg(bss, 0, set_chan ? NL80211_CMD_SET_CHANNEL :
+                             NL80211_CMD_SET_WIPHY);
+       if (!msg || nl80211_put_freq_params(msg, freq) < 0) {
+               nlmsg_free(msg);
diff --git 
a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch 
b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
deleted file mode 100644
index 46f0a25..0000000
--- a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -5083,18 +5083,20 @@ wpa_driver_nl80211_finish_drv_init(struc
- }
- 
- 
--static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
-+static int wpa_driver_nl80211_del_bss_beacon(struct i802_bss *bss)
- {
-+      struct wpa_driver_nl80211_data *drv = bss->drv;
-       struct nl_msg *msg;
- 
-       msg = nlmsg_alloc();
-       if (!msg)
-               return -ENOMEM;
- 
-+      bss->beacon_set = 0;
-       wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
--                 drv->ifindex);
-+                 bss->ifindex);
-       nl80211_cmd(drv, msg, 0, NL80211_CMD_DEL_BEACON);
--      NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, drv->ifindex);
-+      NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, bss->ifindex);
- 
-       return send_and_recv_msgs(drv, msg, NULL, NULL);
-  nla_put_failure:
-@@ -5102,6 +5104,15 @@ static int wpa_driver_nl80211_del_beacon
-       return -ENOBUFS;
- }
- 
-+static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
-+{
-+      struct i802_bss *bss;
-+
-+      for (bss = drv->first_bss; bss; bss = bss->next)
-+              wpa_driver_nl80211_del_bss_beacon(bss);
-+
-+      return 0;
-+}
- 
- /**
-  * wpa_driver_nl80211_deinit - Deinitialize nl80211 driver interface
-@@ -11147,7 +11158,6 @@ static int wpa_driver_nl80211_stop_ap(vo
-       if (!is_ap_interface(drv->nlmode))
-               return -1;
-       wpa_driver_nl80211_del_beacon(drv);
--      bss->beacon_set = 0;
-       return 0;
- }
- 
diff --git 
a/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch 
b/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch
index f5557fd..db4faa3 100644
--- a/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch
+++ b/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch
@@ -1,6 +1,8 @@
---- a/hostapd/ctrl_iface.c
-+++ b/hostapd/ctrl_iface.c
-@@ -43,6 +43,7 @@
+Index: hostapd-2015-02-01/hostapd/ctrl_iface.c
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/ctrl_iface.c
++++ hostapd-2015-02-01/hostapd/ctrl_iface.c
+@@ -44,6 +44,7 @@
  #include "wps/wps.h"
  #include "config_file.h"
  #include "ctrl_iface.h"
@@ -8,7 +10,7 @@
  
  
  struct wpa_ctrl_dst {
-@@ -53,6 +54,7 @@ struct wpa_ctrl_dst {
+@@ -54,6 +55,7 @@ struct wpa_ctrl_dst {
        int errors;
  };
  
@@ -16,7 +18,7 @@
  
  static void hostapd_ctrl_iface_send(struct hostapd_data *hapd, int level,
                                    const char *buf, size_t len);
-@@ -162,6 +164,68 @@ static int hostapd_ctrl_iface_new_sta(st
+@@ -163,6 +165,68 @@ static int hostapd_ctrl_iface_new_sta(st
        return 0;
  }
  
@@ -85,7 +87,7 @@
  
  #ifdef CONFIG_IEEE80211W
  #ifdef NEED_AP_MLME
-@@ -1761,6 +1825,10 @@ static void hostapd_ctrl_iface_receive(i
+@@ -2079,6 +2143,10 @@ static void hostapd_ctrl_iface_receive(i
        } else if (os_strncmp(buf, "VENDOR ", 7) == 0) {
                reply_len = hostapd_ctrl_iface_vendor(hapd, buf + 7, reply,
                                                      reply_size);
@@ -93,6 +95,6 @@
 +              hostapd_ctrl_iface_set_down(hapd);
 +      } else if (os_strncmp(buf, "UPDATE ", 7) == 0) {
 +              hostapd_ctrl_iface_update(hapd, buf + 7);
- 
-       } else {
-               os_memcpy(reply, "UNKNOWN COMMAND\n", 16);
+       } else if (os_strcmp(buf, "ERP_FLUSH") == 0) {
+               ieee802_1x_erp_flush(hapd);
+ #ifdef RADIUS_SERVER
diff --git a/package/network/services/hostapd/patches/450-scan_wait.patch 
b/package/network/services/hostapd/patches/450-scan_wait.patch
index 629786d..61e86de 100644
--- a/package/network/services/hostapd/patches/450-scan_wait.patch
+++ b/package/network/services/hostapd/patches/450-scan_wait.patch
@@ -1,5 +1,7 @@
---- a/hostapd/main.c
-+++ b/hostapd/main.c
+Index: hostapd-2015-02-01/hostapd/main.c
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/main.c
++++ hostapd-2015-02-01/hostapd/main.c
 @@ -36,6 +36,8 @@ struct hapd_global {
  };
  
@@ -33,7 +35,7 @@
        /* Initialize the driver interface */
        if (!(b[0] | b[1] | b[2] | b[3] | b[4] | b[5]))
                b = NULL;
-@@ -374,8 +386,6 @@ static void hostapd_global_deinit(const 
+@@ -381,8 +393,6 @@ static void hostapd_global_deinit(const
  #endif /* CONFIG_NATIVE_WINDOWS */
  
        eap_server_unregister_methods();
@@ -42,19 +44,19 @@
  }
  
  
-@@ -401,11 +411,6 @@ static int hostapd_global_run(struct hap
+@@ -408,11 +418,6 @@ static int hostapd_global_run(struct hap
        }
  #endif /* EAP_SERVER_TNC */
  
 -      if (daemonize && os_daemonize(pid_file)) {
--              perror("daemon");
+-              wpa_printf(MSG_ERROR, "daemon: %s", strerror(errno));
 -              return -1;
 -      }
 -
        eloop_run();
  
        return 0;
-@@ -535,8 +540,7 @@ int main(int argc, char *argv[])
+@@ -542,8 +547,7 @@ int main(int argc, char *argv[])
        struct hapd_interfaces interfaces;
        int ret = 1;
        size_t i, j;
diff --git 
a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch
 
b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch
index 46a0ef1..39abb16 100644
--- 
a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch
+++ 
b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch
@@ -8,9 +8,11 @@ Signed-hostap: Antonio Quartulli <or...@autistici.org>
  src/drivers/driver_nl80211.c |   33 ++++++++++++++++++++++++++++++++-
  1 file changed, 32 insertions(+), 1 deletion(-)
 
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -9023,7 +9023,7 @@ static int wpa_driver_nl80211_ibss(struc
+Index: hostapd-2015-02-01/src/drivers/driver_nl80211.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/driver_nl80211.c
++++ hostapd-2015-02-01/src/drivers/driver_nl80211.c
+@@ -4279,7 +4279,7 @@ static int wpa_driver_nl80211_ibss(struc
                                   struct wpa_driver_associate_params *params)
  {
        struct nl_msg *msg;
@@ -19,19 +21,19 @@ Signed-hostap: Antonio Quartulli <or...@autistici.org>
        int count = 0;
  
        wpa_printf(MSG_DEBUG, "nl80211: Join IBSS (ifindex=%d)", drv->ifindex);
-@@ -9069,6 +9069,37 @@ retry:
-                           params->beacon_int);
-       }
+@@ -4306,6 +4306,37 @@ retry:
+           nl80211_put_beacon_int(msg, params->beacon_int))
+               goto fail;
  
 +      if (params->fixed_freq) {
 +              wpa_printf(MSG_DEBUG, "  * fixed_freq");
-+              NLA_PUT_FLAG(msg, NL80211_ATTR_FREQ_FIXED);
++              nla_put_flag(msg, NL80211_ATTR_FREQ_FIXED);
 +      }
 +
 +      if (params->beacon_interval > 0) {
 +              wpa_printf(MSG_DEBUG, "  * beacon_interval=%d",
 +                         params->beacon_interval);
-+              NLA_PUT_U32(msg, NL80211_ATTR_BEACON_INTERVAL,
++              nla_put_u32(msg, NL80211_ATTR_BEACON_INTERVAL,
 +                          params->beacon_interval);
 +      }
 +
@@ -44,16 +46,16 @@ Signed-hostap: Antonio Quartulli <or...@autistici.org>
 +                                 (double)params->rates[i] / 2);
 +                      i++;
 +              }
-+              NLA_PUT(msg, NL80211_ATTR_BSS_BASIC_RATES, i,
++              nla_put(msg, NL80211_ATTR_BSS_BASIC_RATES, i,
 +                      params->rates);
 +      }
 +
 +      if (params->mcast_rate > 0) {
 +              wpa_printf(MSG_DEBUG, "  * mcast_rates=%.1f",
 +                         (double)params->mcast_rate / 10);
-+              NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate);
++              nla_put_u32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate);
 +      }
 +
        ret = nl80211_set_conn_keys(params, msg);
        if (ret)
-               goto nla_put_failure;
+               goto fail;
diff --git 
a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch 
b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch
index 543e2a6..218a814 100644
--- 
a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch
+++ 
b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch
@@ -14,9 +14,11 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
  wpa_supplicant/wpa_supplicant.c |    2 ++
  5 files changed, 88 insertions(+)
 
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -447,6 +447,8 @@ struct wpa_driver_associate_params {
+Index: hostapd-2015-02-01/src/drivers/driver.h
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/driver.h
++++ hostapd-2015-02-01/src/drivers/driver.h
+@@ -538,6 +538,8 @@ struct wpa_driver_associate_params {
        int fixed_freq;
        unsigned char rates[NL80211_MAX_SUPP_RATES];
        int mcast_rate;
@@ -25,10 +27,12 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
  
        /**
         * bssid_hint - BSSID of a proposed AP
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -9100,6 +9100,22 @@ retry:
-               NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate);
+Index: hostapd-2015-02-01/src/drivers/driver_nl80211.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/drivers/driver_nl80211.c
++++ hostapd-2015-02-01/src/drivers/driver_nl80211.c
+@@ -4337,6 +4337,22 @@ retry:
+               nla_put_u32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate);
        }
  
 +      if (params->ht_set) {
@@ -43,16 +47,18 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
 +                              wpa_printf(MSG_DEBUG, "  * ht=HT40-");
 +                              break;
 +              }
-+              NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE,
++              nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE,
 +                          params->htmode);
 +      }
 +
        ret = nl80211_set_conn_keys(params, msg);
        if (ret)
-               goto nla_put_failure;
---- a/wpa_supplicant/config.c
-+++ b/wpa_supplicant/config.c
-@@ -1608,6 +1608,71 @@ static char * wpa_config_write_mcast_rat
+               goto fail;
+Index: hostapd-2015-02-01/wpa_supplicant/config.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/config.c
++++ hostapd-2015-02-01/wpa_supplicant/config.c
+@@ -1754,6 +1754,71 @@ static char * wpa_config_write_mcast_rat
  }
  #endif /* NO_CONFIG_WRITE */
  
@@ -124,7 +130,7 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
  static int wpa_config_parse_rates(const struct parse_data *data,
                                  struct wpa_ssid *ssid, int line,
                                  const char *value)
-@@ -1883,6 +1948,7 @@ static const struct parse_data ssid_fiel
+@@ -2041,6 +2106,7 @@ static const struct parse_data ssid_fiel
        { INT_RANGE(fixed_freq, 0, 1) },
        { FUNC(rates) },
        { FUNC(mcast_rate) },
@@ -132,9 +138,11 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
  #ifdef CONFIG_MACSEC
        { INT_RANGE(macsec_policy, 0, 1) },
  #endif /* CONFIG_MACSEC */
---- a/wpa_supplicant/config_ssid.h
-+++ b/wpa_supplicant/config_ssid.h
-@@ -644,6 +644,8 @@ struct wpa_ssid {
+Index: hostapd-2015-02-01/wpa_supplicant/config_ssid.h
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/config_ssid.h
++++ hostapd-2015-02-01/wpa_supplicant/config_ssid.h
+@@ -674,6 +674,8 @@ struct wpa_ssid {
        int fixed_freq;
        unsigned char rates[NL80211_MAX_SUPP_RATES];
        double mcast_rate;
@@ -143,9 +151,11 @@ Signed-off-by: Antonio Quartulli <or...@autistici.org>
  
  #ifdef CONFIG_MACSEC
        /**
---- a/wpa_supplicant/wpa_supplicant.c
-+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1956,6 +1956,8 @@ static void wpas_start_assoc_cb(struct w
+Index: hostapd-2015-02-01/wpa_supplicant/wpa_supplicant.c
+===================================================================
+--- hostapd-2015-02-01.orig/wpa_supplicant/wpa_supplicant.c
++++ hostapd-2015-02-01/wpa_supplicant/wpa_supplicant.c
+@@ -2179,6 +2179,8 @@ static void wpas_start_assoc_cb(struct w
                        i++;
                }
                params.mcast_rate = ssid->mcast_rate;
diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch 
b/package/network/services/hostapd/patches/600-ubus_support.patch
index fcaddbc..0719b4b 100644
--- a/package/network/services/hostapd/patches/600-ubus_support.patch
+++ b/package/network/services/hostapd/patches/600-ubus_support.patch
@@ -1,6 +1,8 @@
---- a/hostapd/Makefile
-+++ b/hostapd/Makefile
-@@ -117,6 +117,11 @@ OBJS += ../src/common/wpa_common.o
+Index: hostapd-2015-02-01/hostapd/Makefile
+===================================================================
+--- hostapd-2015-02-01.orig/hostapd/Makefile
++++ hostapd-2015-02-01/hostapd/Makefile
+@@ -121,6 +121,11 @@ OBJS += ../src/common/hw_features_common
  
  OBJS += ../src/eapol_auth/eapol_auth_sm.o
  
@@ -12,17 +14,19 @@
  
  ifdef CONFIG_CODE_COVERAGE
  CFLAGS += -O0 -fprofile-arcs -ftest-coverage
---- a/src/ap/hostapd.h
-+++ b/src/ap/hostapd.h
-@@ -12,6 +12,7 @@
- #include "common/defs.h"
+Index: hostapd-2015-02-01/src/ap/hostapd.h
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/hostapd.h
++++ hostapd-2015-02-01/src/ap/hostapd.h
+@@ -13,6 +13,7 @@
+ #include "utils/list.h"
  #include "ap_config.h"
  #include "drivers/driver.h"
 +#include "ubus.h"
  
  struct wpa_ctrl_dst;
  struct radius_server_data;
-@@ -102,6 +103,7 @@ struct hostapd_data {
+@@ -103,6 +104,7 @@ struct hostapd_data {
        struct hostapd_iface *iface;
        struct hostapd_config *iconf;
        struct hostapd_bss_config *conf;
@@ -30,7 +34,7 @@
        int interface_added; /* virtual interface added for this BSS */
        unsigned int started:1;
  
-@@ -275,6 +277,8 @@ struct hostapd_iface {
+@@ -284,6 +286,8 @@ struct hostapd_iface {
        struct hostapd_config *conf;
        char phy[16]; /* Name of the PHY (radio) */
  
@@ -39,8 +43,10 @@
        enum hostapd_iface_state {
                HAPD_IFACE_UNINITIALIZED,
                HAPD_IFACE_DISABLED,
+Index: hostapd-2015-02-01/src/ap/ubus.c
+===================================================================
 --- /dev/null
-+++ b/src/ap/ubus.c
++++ hostapd-2015-02-01/src/ap/ubus.c
 @@ -0,0 +1,408 @@
 +/*
 + * hostapd / ubus support
@@ -450,8 +456,10 @@
 +
 +      return 0;
 +}
+Index: hostapd-2015-02-01/src/ap/ubus.h
+===================================================================
 --- /dev/null
-+++ b/src/ap/ubus.h
++++ hostapd-2015-02-01/src/ap/ubus.h
 @@ -0,0 +1,78 @@
 +/*
 + * hostapd / ubus support
@@ -531,9 +539,11 @@
 +#endif
 +
 +#endif
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -263,6 +263,7 @@ static void hostapd_free_hapd_data(struc
+Index: hostapd-2015-02-01/src/ap/hostapd.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/hostapd.c
++++ hostapd-2015-02-01/src/ap/hostapd.c
+@@ -278,6 +278,7 @@ static void hostapd_free_hapd_data(struc
        hapd->started = 0;
  
        wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
@@ -541,7 +551,7 @@
        iapp_deinit(hapd->iapp);
        hapd->iapp = NULL;
        accounting_deinit(hapd);
-@@ -907,6 +908,8 @@ static int hostapd_setup_bss(struct host
+@@ -1094,6 +1095,8 @@ static int hostapd_setup_bss(struct host
        if (hapd->driver && hapd->driver->set_operstate)
                hapd->driver->set_operstate(hapd->drv_priv, 1);
  
@@ -550,7 +560,7 @@
        return 0;
  }
  
-@@ -1192,6 +1195,7 @@ int hostapd_setup_interface_complete(str
+@@ -1379,6 +1382,7 @@ int hostapd_setup_interface_complete(str
        if (err)
                goto fail;
  
@@ -558,7 +568,7 @@
        wpa_printf(MSG_DEBUG, "Completing interface initialization");
        if (iface->conf->channel) {
  #ifdef NEED_AP_MLME
-@@ -1322,6 +1326,7 @@ int hostapd_setup_interface_complete(str
+@@ -1509,6 +1513,7 @@ int hostapd_setup_interface_complete(str
  
  fail:
        wpa_printf(MSG_ERROR, "Interface initialization failed");
@@ -566,7 +576,7 @@
        hostapd_set_state(iface, HAPD_IFACE_DISABLED);
        wpa_msg(hapd->msg_ctx, MSG_INFO, AP_EVENT_DISABLED);
        if (iface->interfaces && iface->interfaces->terminate_on_error)
-@@ -1648,6 +1653,7 @@ void hostapd_interface_deinit_free(struc
+@@ -1835,6 +1840,7 @@ void hostapd_interface_deinit_free(struc
                   (unsigned int) iface->conf->num_bss);
        driver = iface->bss[0]->driver;
        drv_priv = iface->bss[0]->drv_priv;
@@ -574,9 +584,11 @@
        hostapd_interface_deinit(iface);
        wpa_printf(MSG_DEBUG, "%s: driver=%p drv_priv=%p -> hapd_deinit",
                   __func__, driver, drv_priv);
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -545,7 +545,8 @@ failed:
+Index: hostapd-2015-02-01/src/ap/ieee802_11.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/ieee802_11.c
++++ hostapd-2015-02-01/src/ap/ieee802_11.c
+@@ -881,7 +881,8 @@ int auth_sae_init_committed(struct hosta
  
  
  static void handle_auth(struct hostapd_data *hapd,
@@ -586,10 +598,10 @@
  {
        u16 auth_alg, auth_transaction, status_code;
        u16 resp = WLAN_STATUS_SUCCESS;
-@@ -560,6 +561,11 @@ static void handle_auth(struct hostapd_d
-       size_t resp_ies_len = 0;
+@@ -897,6 +898,11 @@ static void handle_auth(struct hostapd_d
        char *identity = NULL;
        char *radius_cui = NULL;
+       u16 seq_ctrl;
 +      struct hostapd_ubus_request req = {
 +              .type = HOSTAPD_UBUS_AUTH_REQ,
 +              .mgmt_frame = mgmt,
@@ -598,7 +610,7 @@
  
        if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.auth)) {
                wpa_printf(MSG_INFO, "handle_auth - too short payload 
(len=%lu)",
-@@ -643,6 +649,14 @@ static void handle_auth(struct hostapd_d
+@@ -983,6 +989,14 @@ static void handle_auth(struct hostapd_d
                resp = WLAN_STATUS_UNSPECIFIED_FAILURE;
                goto fail;
        }
@@ -613,14 +625,14 @@
        if (res == HOSTAPD_ACL_PENDING) {
                wpa_printf(MSG_DEBUG, "Authentication frame from " MACSTR
                           " waiting for an external authentication",
-@@ -1289,13 +1303,18 @@ static void send_assoc_resp(struct hosta
+@@ -1694,13 +1708,18 @@ static void send_assoc_resp(struct hosta
  
  static void handle_assoc(struct hostapd_data *hapd,
                         const struct ieee80211_mgmt *mgmt, size_t len,
 -                       int reassoc)
 +                       int reassoc, struct hostapd_frame_info *fi)
  {
-       u16 capab_info, listen_interval;
+       u16 capab_info, listen_interval, seq_ctrl, fc;
        u16 resp = WLAN_STATUS_SUCCESS;
        const u8 *pos;
        int left, i;
@@ -633,7 +645,7 @@
  
        if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_req) :
                                      sizeof(mgmt->u.assoc_req))) {
-@@ -1394,6 +1413,13 @@ static void handle_assoc(struct hostapd_
+@@ -1820,6 +1839,13 @@ static void handle_assoc(struct hostapd_
                goto fail;
        }
  
@@ -647,7 +659,7 @@
        sta->capability = capab_info;
        sta->listen_interval = listen_interval;
  
-@@ -1785,7 +1811,7 @@ int ieee802_11_mgmt(struct hostapd_data 
+@@ -2236,7 +2262,7 @@ int ieee802_11_mgmt(struct hostapd_data
  
  
        if (stype == WLAN_FC_STYPE_PROBE_REQ) {
@@ -656,7 +668,7 @@
                return 1;
        }
  
-@@ -1800,17 +1826,17 @@ int ieee802_11_mgmt(struct hostapd_data 
+@@ -2251,17 +2277,17 @@ int ieee802_11_mgmt(struct hostapd_data
        switch (stype) {
        case WLAN_FC_STYPE_AUTH:
                wpa_printf(MSG_DEBUG, "mgmt::auth");
@@ -677,9 +689,11 @@
                ret = 1;
                break;
        case WLAN_FC_STYPE_DISASSOC:
---- a/src/ap/beacon.c
-+++ b/src/ap/beacon.c
-@@ -513,7 +513,7 @@ static enum ssid_match_result ssid_match
+Index: hostapd-2015-02-01/src/ap/beacon.c
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/beacon.c
++++ hostapd-2015-02-01/src/ap/beacon.c
+@@ -541,7 +541,7 @@ static enum ssid_match_result ssid_match
  
  void handle_probe_req(struct hostapd_data *hapd,
                      const struct ieee80211_mgmt *mgmt, size_t len,
@@ -688,7 +702,7 @@
  {
        u8 *resp;
        struct ieee802_11_elems elems;
-@@ -521,8 +521,14 @@ void handle_probe_req(struct hostapd_dat
+@@ -549,8 +549,14 @@ void handle_probe_req(struct hostapd_dat
        size_t ie_len;
        struct sta_info *sta = NULL;
        size_t i, resp_len;
@@ -703,7 +717,7 @@
  
        ie = mgmt->u.probe_req.variable;
        if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req))
-@@ -660,6 +666,12 @@ void handle_probe_req(struct hostapd_dat
+@@ -688,6 +694,12 @@ void handle_probe_req(struct hostapd_dat
        }
  #endif /* CONFIG_P2P */
  
@@ -716,8 +730,10 @@
        /* TODO: verify that supp_rates contains at least one matching rate
         * with AP configuration */
  
---- a/src/ap/beacon.h
-+++ b/src/ap/beacon.h
+Index: hostapd-2015-02-01/src/ap/beacon.h
+===================================================================
+--- hostapd-2015-02-01.orig/src/ap/beacon.h
++++ hostapd-2015-02-01/src/ap/beacon.h
 @@ -14,7 +14,7 @@ struct ieee80211_mgmt;
  
  void handle_probe_req(struct hostapd_data *hapd,
-- 
2.2.2

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to