staging: r8188eu: Add files for new driver - part 23
authorLarry Finger <Larry.Finger@lwfinger.net>
Thu, 22 Aug 2013 03:34:05 +0000 (22:34 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Aug 2013 17:20:11 +0000 (10:20 -0700)
This commit adds files include/ieee80211.h, include/ieee80211_ext.h,
include/if_ether.h, include/ioctl_cfg80211.h, include/ip.h,
include/mlme_osdep.h, include/mp_custom_oid.h, and include/nic_spec.h.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/include/ieee80211.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/ieee80211_ext.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/if_ether.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/ioctl_cfg80211.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/ip.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/mlme_osdep.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/mp_custom_oid.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/nic_spec.h [new file with mode: 0644]

diff --git a/drivers/staging/rtl8188eu/include/ieee80211.h b/drivers/staging/rtl8188eu/include/ieee80211.h
new file mode 100644 (file)
index 0000000..cd37ea4
--- /dev/null
@@ -0,0 +1,1274 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __IEEE80211_H
+#define __IEEE80211_H
+
+#include <osdep_service.h>
+#include <drv_types.h>
+#include "wifi.h"
+#include <linux/wireless.h>
+
+#define MGMT_QUEUE_NUM 5
+
+#define ETH_ALEN       6
+#define ETH_TYPE_LEN           2
+#define PAYLOAD_TYPE_LEN       1
+
+#ifdef CONFIG_88EU_AP_MODE
+
+#define RTL_IOCTL_HOSTAPD (SIOCIWFIRSTPRIV + 28)
+
+/* RTL871X_IOCTL_HOSTAPD ioctl() cmd: */
+enum {
+       RTL871X_HOSTAPD_FLUSH = 1,
+       RTL871X_HOSTAPD_ADD_STA = 2,
+       RTL871X_HOSTAPD_REMOVE_STA = 3,
+       RTL871X_HOSTAPD_GET_INFO_STA = 4,
+       /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */
+       RTL871X_HOSTAPD_GET_WPAIE_STA = 5,
+       RTL871X_SET_ENCRYPTION = 6,
+       RTL871X_GET_ENCRYPTION = 7,
+       RTL871X_HOSTAPD_SET_FLAGS_STA = 8,
+       RTL871X_HOSTAPD_GET_RID = 9,
+       RTL871X_HOSTAPD_SET_RID = 10,
+       RTL871X_HOSTAPD_SET_ASSOC_AP_ADDR = 11,
+       RTL871X_HOSTAPD_SET_GENERIC_ELEMENT = 12,
+       RTL871X_HOSTAPD_MLME = 13,
+       RTL871X_HOSTAPD_SCAN_REQ = 14,
+       RTL871X_HOSTAPD_STA_CLEAR_STATS = 15,
+       RTL871X_HOSTAPD_SET_BEACON = 16,
+       RTL871X_HOSTAPD_SET_WPS_BEACON = 17,
+       RTL871X_HOSTAPD_SET_WPS_PROBE_RESP = 18,
+       RTL871X_HOSTAPD_SET_WPS_ASSOC_RESP = 19,
+       RTL871X_HOSTAPD_SET_HIDDEN_SSID = 20,
+       RTL871X_HOSTAPD_SET_MACADDR_ACL = 21,
+       RTL871X_HOSTAPD_ACL_ADD_STA = 22,
+       RTL871X_HOSTAPD_ACL_REMOVE_STA = 23,
+};
+
+/* STA flags */
+#define WLAN_STA_AUTH BIT(0)
+#define WLAN_STA_ASSOC BIT(1)
+#define WLAN_STA_PS BIT(2)
+#define WLAN_STA_TIM BIT(3)
+#define WLAN_STA_PERM BIT(4)
+#define WLAN_STA_AUTHORIZED BIT(5)
+#define WLAN_STA_PENDING_POLL BIT(6) /* pending activity poll not ACKed */
+#define WLAN_STA_SHORT_PREAMBLE BIT(7)
+#define WLAN_STA_PREAUTH BIT(8)
+#define WLAN_STA_WME BIT(9)
+#define WLAN_STA_MFP BIT(10)
+#define WLAN_STA_HT BIT(11)
+#define WLAN_STA_WPS BIT(12)
+#define WLAN_STA_MAYBE_WPS BIT(13)
+#define WLAN_STA_NONERP BIT(31)
+
+#endif
+
+#define IEEE_CMD_SET_WPA_PARAM                 1
+#define IEEE_CMD_SET_WPA_IE                            2
+#define IEEE_CMD_SET_ENCRYPTION                        3
+#define IEEE_CMD_MLME                                          4
+
+#define IEEE_PARAM_WPA_ENABLED                         1
+#define IEEE_PARAM_TKIP_COUNTERMEASURES                2
+#define IEEE_PARAM_DROP_UNENCRYPTED                    3
+#define IEEE_PARAM_PRIVACY_INVOKED                     4
+#define IEEE_PARAM_AUTH_ALGS                                   5
+#define IEEE_PARAM_IEEE_802_1X                         6
+#define IEEE_PARAM_WPAX_SELECT                         7
+
+#define AUTH_ALG_OPEN_SYSTEM                   0x1
+#define AUTH_ALG_SHARED_KEY                    0x2
+#define AUTH_ALG_LEAP                          0x00000004
+
+#define IEEE_MLME_STA_DEAUTH                           1
+#define IEEE_MLME_STA_DISASSOC                 2
+
+#define IEEE_CRYPT_ERR_UNKNOWN_ALG                     2
+#define IEEE_CRYPT_ERR_UNKNOWN_ADDR                    3
+#define IEEE_CRYPT_ERR_CRYPT_INIT_FAILED               4
+#define IEEE_CRYPT_ERR_KEY_SET_FAILED                  5
+#define IEEE_CRYPT_ERR_TX_KEY_SET_FAILED               6
+#define IEEE_CRYPT_ERR_CARD_CONF_FAILED                7
+
+
+#define        IEEE_CRYPT_ALG_NAME_LEN                 16
+
+#define WPA_CIPHER_NONE                BIT(0)
+#define WPA_CIPHER_WEP40       BIT(1)
+#define WPA_CIPHER_WEP104 BIT(2)
+#define WPA_CIPHER_TKIP                BIT(3)
+#define WPA_CIPHER_CCMP                BIT(4)
+
+
+
+#define WPA_SELECTOR_LEN 4
+extern u8 RTW_WPA_OUI_TYPE[];
+extern u16 RTW_WPA_VERSION;
+extern u8 WPA_AUTH_KEY_MGMT_NONE[];
+extern u8 WPA_AUTH_KEY_MGMT_UNSPEC_802_1X[];
+extern u8 WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X[];
+extern u8 WPA_CIPHER_SUITE_NONE[];
+extern u8 WPA_CIPHER_SUITE_WEP40[];
+extern u8 WPA_CIPHER_SUITE_TKIP[];
+extern u8 WPA_CIPHER_SUITE_WRAP[];
+extern u8 WPA_CIPHER_SUITE_CCMP[];
+extern u8 WPA_CIPHER_SUITE_WEP104[];
+
+
+#define RSN_HEADER_LEN 4
+#define RSN_SELECTOR_LEN 4
+
+extern u16 RSN_VERSION_BSD;
+extern u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X[];
+extern u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X[];
+extern u8 RSN_CIPHER_SUITE_NONE[];
+extern u8 RSN_CIPHER_SUITE_WEP40[];
+extern u8 RSN_CIPHER_SUITE_TKIP[];
+extern u8 RSN_CIPHER_SUITE_WRAP[];
+extern u8 RSN_CIPHER_SUITE_CCMP[];
+extern u8 RSN_CIPHER_SUITE_WEP104[];
+
+enum ratr_table_mode {
+       RATR_INX_WIRELESS_NGB = 0,      /*  BGN 40 Mhz 2SS 1SS */
+       RATR_INX_WIRELESS_NG = 1,       /*  GN or N */
+       RATR_INX_WIRELESS_NB = 2,       /*  BGN 20 Mhz 2SS 1SS  or BN */
+       RATR_INX_WIRELESS_N = 3,
+       RATR_INX_WIRELESS_GB = 4,
+       RATR_INX_WIRELESS_G = 5,
+       RATR_INX_WIRELESS_B = 6,
+       RATR_INX_WIRELESS_MC = 7,
+       RATR_INX_WIRELESS_AC_N = 8,
+};
+
+enum NETWORK_TYPE {
+       WIRELESS_INVALID = 0,
+       /* Sub-Element */
+       WIRELESS_11B = BIT(0), /* tx:cck only, rx:cck only, hw: cck */
+       WIRELESS_11G = BIT(1), /* tx:ofdm only, rx:ofdm & cck, hw:cck & ofdm*/
+       WIRELESS_11A = BIT(2), /* tx:ofdm only, rx: ofdm only, hw:ofdm only */
+       WIRELESS_11_24N = BIT(3), /* tx:MCS only, rx:MCS & cck, hw:MCS & cck */
+       WIRELESS_11_5N = BIT(4), /* tx:MCS only, rx:MCS & ofdm, hw:ofdm only */
+       WIRELESS_AC             = BIT(6),
+
+       /* Combination */
+       /*  tx: cck & ofdm, rx: cck & ofdm & MCS, hw: cck & ofdm */
+       WIRELESS_11BG = (WIRELESS_11B | WIRELESS_11G),
+       /*  tx: ofdm & MCS, rx: ofdm & cck & MCS, hw: cck & ofdm */
+       WIRELESS_11G_24N = (WIRELESS_11G | WIRELESS_11_24N),
+       /*  tx: ofdm & MCS, rx: ofdm & MCS, hw: ofdm only */
+       WIRELESS_11A_5N = (WIRELESS_11A | WIRELESS_11_5N),
+       /*  tx: ofdm & cck & MCS, rx: ofdm & cck & MCS, hw: ofdm & cck */
+       WIRELESS_11BG_24N = (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N),
+       /*  tx: ofdm & MCS, rx: ofdm & MCS, hw: ofdm only */
+       WIRELESS_11AGN = (WIRELESS_11A | WIRELESS_11G | WIRELESS_11_24N |
+                         WIRELESS_11_5N),
+       WIRELESS_11ABGN = (WIRELESS_11A | WIRELESS_11B | WIRELESS_11G |
+                          WIRELESS_11_24N | WIRELESS_11_5N),
+};
+
+#define SUPPORTED_24G_NETTYPE_MSK                              \
+        (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N)
+#define SUPPORTED_5G_NETTYPE_MSK                               \
+        (WIRELESS_11A | WIRELESS_11_5N)
+
+#define IsSupported24G(NetType)                                        \
+       ((NetType) & SUPPORTED_24G_NETTYPE_MSK ? true : false)
+#define IsSupported5G(NetType)                                 \
+       ((NetType) & SUPPORTED_5G_NETTYPE_MSK ? true : false)
+
+#define IsEnableHWCCK(NetType)                                 \
+       IsSupported24G(NetType)
+#define IsEnableHWOFDM(NetType)                                        \
+       ((NetType) & (WIRELESS_11G | WIRELESS_11_24N |          \
+        SUPPORTED_5G_NETTYPE_MSK) ? true : false)
+
+#define IsSupportedRxCCK(NetType) IsEnableHWCCK(NetType)
+#define IsSupportedRxOFDM(NetType) IsEnableHWOFDM(NetType)
+#define IsSupportedRxMCS(NetType) IsEnableHWOFDM(NetType)
+
+#define IsSupportedTxCCK(NetType)                              \
+       ((NetType) & (WIRELESS_11B) ? true : false)
+#define IsSupportedTxOFDM(NetType)                             \
+       ((NetType) & (WIRELESS_11G|WIRELESS_11A) ? true : false)
+#define IsSupportedTxMCS(NetType)                              \
+       ((NetType) & (WIRELESS_11_24N|WIRELESS_11_5N) ? true : false)
+
+
+struct ieee_param {
+       u32 cmd;
+       u8 sta_addr[ETH_ALEN];
+       union {
+               struct {
+                       u8 name;
+                       u32 value;
+               } wpa_param;
+               struct {
+                       u32 len;
+                       u8 reserved[32];
+                       u8 data[0];
+               } wpa_ie;
+               struct {
+                       int command;
+                       int reason_code;
+               } mlme;
+               struct {
+                       u8 alg[IEEE_CRYPT_ALG_NAME_LEN];
+                       u8 set_tx;
+                       u32 err;
+                       u8 idx;
+                       u8 seq[8]; /* sequence counter (set: RX, get: TX) */
+                       u16 key_len;
+                       u8 key[0];
+               } crypt;
+#ifdef CONFIG_88EU_AP_MODE
+               struct {
+                       u16 aid;
+                       u16 capability;
+                       int flags;
+                       u8 tx_supp_rates[16];
+                       struct rtw_ieee80211_ht_cap ht_cap;
+               } add_sta;
+               struct {
+                       u8      reserved[2];/* for set max_num_sta */
+                       u8      buf[0];
+               } bcn_ie;
+#endif
+
+       } u;
+};
+
+#ifdef CONFIG_88EU_AP_MODE
+struct ieee_param_ex {
+       u32 cmd;
+       u8 sta_addr[ETH_ALEN];
+       u8 data[0];
+};
+
+struct sta_data {
+       u16 aid;
+       u16 capability;
+       int flags;
+       u32 sta_set;
+       u8 tx_supp_rates[16];
+       u32 tx_supp_rates_len;
+       struct rtw_ieee80211_ht_cap ht_cap;
+       u64     rx_pkts;
+       u64     rx_bytes;
+       u64     rx_drops;
+       u64     tx_pkts;
+       u64     tx_bytes;
+       u64     tx_drops;
+};
+#endif
+
+#define IEEE80211_DATA_LEN             2304
+/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
+   6.2.1.1.2.
+
+   The figure in section 7.1.2 suggests a body size of up to 2312
+   bytes is allowed, which is a bit confusing, I suspect this
+   represents the 2304 bytes of real data, plus a possible 8 bytes of
+   WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */
+
+
+#define IEEE80211_HLEN                 30
+#define IEEE80211_FRAME_LEN            (IEEE80211_DATA_LEN + IEEE80211_HLEN)
+
+
+/* this is stolen from ipw2200 driver */
+#define IEEE_IBSS_MAC_HASH_SIZE 31
+
+struct ieee_ibss_seq {
+       u8 mac[ETH_ALEN];
+       u16 seq_num;
+       u16 frag_num;
+       unsigned long packet_time;
+       struct list_head list;
+};
+
+struct rtw_ieee80211_hdr {
+       u16 frame_ctl;
+       u16 duration_id;
+       u8 addr1[ETH_ALEN];
+       u8 addr2[ETH_ALEN];
+       u8 addr3[ETH_ALEN];
+       u16 seq_ctl;
+       u8 addr4[ETH_ALEN];
+} __packed;
+
+struct rtw_ieee80211_hdr_3addr {
+       u16 frame_ctl;
+       u16 duration_id;
+       u8 addr1[ETH_ALEN];
+       u8 addr2[ETH_ALEN];
+       u8 addr3[ETH_ALEN];
+       u16 seq_ctl;
+} __packed;
+
+struct rtw_ieee80211_hdr_qos {
+       u16 frame_ctl;
+       u16 duration_id;
+       u8 addr1[ETH_ALEN];
+       u8 addr2[ETH_ALEN];
+       u8 addr3[ETH_ALEN];
+       u16 seq_ctl;
+       u8 addr4[ETH_ALEN];
+       u16     qc;
+}  __packed;
+
+struct rtw_ieee80211_hdr_3addr_qos {
+       u16 frame_ctl;
+       u16 duration_id;
+       u8 addr1[ETH_ALEN];
+       u8 addr2[ETH_ALEN];
+       u8 addr3[ETH_ALEN];
+       u16 seq_ctl;
+       u16     qc;
+}  __packed;
+
+struct eapol {
+       u8 snap[6];
+       u16 ethertype;
+       u8 version;
+       u8 type;
+       u16 length;
+} __packed;
+
+enum eap_type {
+       EAP_PACKET = 0,
+       EAPOL_START,
+       EAPOL_LOGOFF,
+       EAPOL_KEY,
+       EAPOL_ENCAP_ASF_ALERT
+};
+
+#define IEEE80211_3ADDR_LEN 24
+#define IEEE80211_4ADDR_LEN 30
+#define IEEE80211_FCS_LEN    4
+
+#define MIN_FRAG_THRESHOLD     256U
+#define        MAX_FRAG_THRESHOLD     2346U
+
+/* Frame control field constants */
+#define RTW_IEEE80211_FCTL_VERS                0x0003
+#define RTW_IEEE80211_FCTL_FTYPE       0x000c
+#define RTW_IEEE80211_FCTL_STYPE       0x00f0
+#define RTW_IEEE80211_FCTL_TODS                0x0100
+#define RTW_IEEE80211_FCTL_FROMDS      0x0200
+#define RTW_IEEE80211_FCTL_MOREFRAGS   0x0400
+#define RTW_IEEE80211_FCTL_RETRY       0x0800
+#define RTW_IEEE80211_FCTL_PM          0x1000
+#define RTW_IEEE80211_FCTL_MOREDATA    0x2000
+#define RTW_IEEE80211_FCTL_PROTECTED   0x4000
+#define RTW_IEEE80211_FCTL_ORDER       0x8000
+#define RTW_IEEE80211_FCTL_CTL_EXT     0x0f00
+
+#define RTW_IEEE80211_FTYPE_MGMT       0x0000
+#define RTW_IEEE80211_FTYPE_CTL                0x0004
+#define RTW_IEEE80211_FTYPE_DATA       0x0008
+#define RTW_IEEE80211_FTYPE_EXT                0x000c
+
+/* management */
+#define RTW_IEEE80211_STYPE_ASSOC_REQ  0x0000
+#define RTW_IEEE80211_STYPE_ASSOC_RESP 0x0010
+#define RTW_IEEE80211_STYPE_REASSOC_REQ        0x0020
+#define RTW_IEEE80211_STYPE_REASSOC_RESP       0x0030
+#define RTW_IEEE80211_STYPE_PROBE_REQ  0x0040
+#define RTW_IEEE80211_STYPE_PROBE_RESP 0x0050
+#define RTW_IEEE80211_STYPE_BEACON     0x0080
+#define RTW_IEEE80211_STYPE_ATIM       0x0090
+#define RTW_IEEE80211_STYPE_DISASSOC   0x00A0
+#define RTW_IEEE80211_STYPE_AUTH       0x00B0
+#define RTW_IEEE80211_STYPE_DEAUTH     0x00C0
+#define RTW_IEEE80211_STYPE_ACTION     0x00D0
+
+/* control */
+#define RTW_IEEE80211_STYPE_CTL_EXT    0x0060
+#define RTW_IEEE80211_STYPE_BACK_REQ   0x0080
+#define RTW_IEEE80211_STYPE_BACK       0x0090
+#define RTW_IEEE80211_STYPE_PSPOLL     0x00A0
+#define RTW_IEEE80211_STYPE_RTS                0x00B0
+#define RTW_IEEE80211_STYPE_CTS                0x00C0
+#define RTW_IEEE80211_STYPE_ACK                0x00D0
+#define RTW_IEEE80211_STYPE_CFEND      0x00E0
+#define RTW_IEEE80211_STYPE_CFENDACK   0x00F0
+
+/* data */
+#define RTW_IEEE80211_STYPE_DATA       0x0000
+#define RTW_IEEE80211_STYPE_DATA_CFACK 0x0010
+#define RTW_IEEE80211_STYPE_DATA_CFPOLL        0x0020
+#define RTW_IEEE80211_STYPE_DATA_CFACKPOLL     0x0030
+#define RTW_IEEE80211_STYPE_NULLFUNC   0x0040
+#define RTW_IEEE80211_STYPE_CFACK      0x0050
+#define RTW_IEEE80211_STYPE_CFPOLL     0x0060
+#define RTW_IEEE80211_STYPE_CFACKPOLL  0x0070
+#define RTW_IEEE80211_STYPE_QOS_DATA   0x0080
+#define RTW_IEEE80211_STYPE_QOS_DATA_CFACK     0x0090
+#define RTW_IEEE80211_STYPE_QOS_DATA_CFPOLL    0x00A0
+#define RTW_IEEE80211_STYPE_QOS_DATA_CFACKPOLL 0x00B0
+#define RTW_IEEE80211_STYPE_QOS_NULLFUNC       0x00C0
+#define RTW_IEEE80211_STYPE_QOS_CFACK          0x00D0
+#define RTW_IEEE80211_STYPE_QOS_CFPOLL         0x00E0
+#define RTW_IEEE80211_STYPE_QOS_CFACKPOLL      0x00F0
+
+/* sequence control field */
+#define RTW_IEEE80211_SCTL_FRAG        0x000F
+#define RTW_IEEE80211_SCTL_SEQ 0xFFF0
+
+
+#define RTW_ERP_INFO_NON_ERP_PRESENT BIT(0)
+#define RTW_ERP_INFO_USE_PROTECTION BIT(1)
+#define RTW_ERP_INFO_BARKER_PREAMBLE_MODE BIT(2)
+
+/* QoS, QOS */
+#define NORMAL_ACK                     0
+#define NO_ACK                         1
+#define NON_EXPLICIT_ACK               2
+#define BLOCK_ACK                      3
+
+#ifndef ETH_P_PAE
+#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
+#endif /* ETH_P_PAE */
+
+#define ETH_P_PREAUTH 0x88C7 /* IEEE 802.11i pre-authentication */
+
+#define ETH_P_ECONET   0x0018
+
+#ifndef ETH_P_80211_RAW
+#define ETH_P_80211_RAW (ETH_P_ECONET + 1)
+#endif
+
+/* IEEE 802.11 defines */
+
+#define P80211_OUI_LEN 3
+
+struct ieee80211_snap_hdr {
+       u8    dsap;   /* always 0xAA */
+       u8    ssap;   /* always 0xAA */
+       u8    ctrl;   /* always 0x03 */
+       u8    oui[P80211_OUI_LEN];    /* organizational universal id */
+} __packed;
+
+#define SNAP_SIZE sizeof(struct ieee80211_snap_hdr)
+
+#define WLAN_FC_GET_TYPE(fc) ((fc) & RTW_IEEE80211_FCTL_FTYPE)
+#define WLAN_FC_GET_STYPE(fc) ((fc) & RTW_IEEE80211_FCTL_STYPE)
+
+#define WLAN_QC_GET_TID(qc) ((qc) & 0x0f)
+
+#define WLAN_GET_SEQ_FRAG(seq) ((seq) & RTW_IEEE80211_SCTL_FRAG)
+#define WLAN_GET_SEQ_SEQ(seq)  ((seq) & RTW_IEEE80211_SCTL_SEQ)
+
+/* Authentication algorithms */
+#define WLAN_AUTH_OPEN 0
+#define WLAN_AUTH_SHARED_KEY 1
+
+#define WLAN_AUTH_CHALLENGE_LEN 128
+
+#define WLAN_CAPABILITY_BSS (1<<0)
+#define WLAN_CAPABILITY_IBSS (1<<1)
+#define WLAN_CAPABILITY_CF_POLLABLE (1<<2)
+#define WLAN_CAPABILITY_CF_POLL_REQUEST (1<<3)
+#define WLAN_CAPABILITY_PRIVACY (1<<4)
+#define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5)
+#define WLAN_CAPABILITY_PBCC (1<<6)
+#define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7)
+#define WLAN_CAPABILITY_SHORT_SLOT (1<<10)
+
+/* Status codes */
+#define WLAN_STATUS_SUCCESS 0
+#define WLAN_STATUS_UNSPECIFIED_FAILURE 1
+#define WLAN_STATUS_CAPS_UNSUPPORTED 10
+#define WLAN_STATUS_REASSOC_NO_ASSOC 11
+#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12
+#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13
+#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14
+#define WLAN_STATUS_CHALLENGE_FAIL 15
+#define WLAN_STATUS_AUTH_TIMEOUT 16
+#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17
+#define WLAN_STATUS_ASSOC_DENIED_RATES 18
+/* 802.11b */
+#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19
+#define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20
+#define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21
+
+/* Reason codes */
+#define WLAN_REASON_UNSPECIFIED 1
+#define WLAN_REASON_PREV_AUTH_NOT_VALID 2
+#define WLAN_REASON_DEAUTH_LEAVING 3
+#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4
+#define WLAN_REASON_DISASSOC_AP_BUSY 5
+#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6
+#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7
+#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8
+#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9
+#define WLAN_REASON_JOIN_WRONG_CHANNEL       65534
+#define WLAN_REASON_EXPIRATION_CHK 65535
+
+/* Information Element IDs */
+#define WLAN_EID_SSID 0
+#define WLAN_EID_SUPP_RATES 1
+#define WLAN_EID_FH_PARAMS 2
+#define WLAN_EID_DS_PARAMS 3
+#define WLAN_EID_CF_PARAMS 4
+#define WLAN_EID_TIM 5
+#define WLAN_EID_IBSS_PARAMS 6
+#define WLAN_EID_CHALLENGE 16
+/* EIDs defined by IEEE 802.11h - START */
+#define WLAN_EID_PWR_CONSTRAINT 32
+#define WLAN_EID_PWR_CAPABILITY 33
+#define WLAN_EID_TPC_REQUEST 34
+#define WLAN_EID_TPC_REPORT 35
+#define WLAN_EID_SUPPORTED_CHANNELS 36
+#define WLAN_EID_CHANNEL_SWITCH 37
+#define WLAN_EID_MEASURE_REQUEST 38
+#define WLAN_EID_MEASURE_REPORT 39
+#define WLAN_EID_QUITE 40
+#define WLAN_EID_IBSS_DFS 41
+/* EIDs defined by IEEE 802.11h - END */
+#define WLAN_EID_ERP_INFO 42
+#define WLAN_EID_HT_CAP 45
+#define WLAN_EID_RSN 48
+#define WLAN_EID_EXT_SUPP_RATES 50
+#define WLAN_EID_MOBILITY_DOMAIN 54
+#define WLAN_EID_FAST_BSS_TRANSITION 55
+#define WLAN_EID_TIMEOUT_INTERVAL 56
+#define WLAN_EID_RIC_DATA 57
+#define WLAN_EID_HT_OPERATION 61
+#define WLAN_EID_SECONDARY_CHANNEL_OFFSET 62
+#define WLAN_EID_20_40_BSS_COEXISTENCE 72
+#define WLAN_EID_20_40_BSS_INTOLERANT 73
+#define WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS 74
+#define WLAN_EID_MMIE 76
+#define WLAN_EID_VENDOR_SPECIFIC 221
+#define WLAN_EID_GENERIC (WLAN_EID_VENDOR_SPECIFIC)
+
+#define IEEE80211_MGMT_HDR_LEN 24
+#define IEEE80211_DATA_HDR3_LEN 24
+#define IEEE80211_DATA_HDR4_LEN 30
+
+
+#define IEEE80211_STATMASK_SIGNAL (1<<0)
+#define IEEE80211_STATMASK_RSSI (1<<1)
+#define IEEE80211_STATMASK_NOISE (1<<2)
+#define IEEE80211_STATMASK_RATE (1<<3)
+#define IEEE80211_STATMASK_WEMASK 0x7
+
+
+#define IEEE80211_CCK_MODULATION    (1<<0)
+#define IEEE80211_OFDM_MODULATION   (1<<1)
+
+#define IEEE80211_24GHZ_BAND     (1<<0)
+#define IEEE80211_52GHZ_BAND     (1<<1)
+
+#define IEEE80211_CCK_RATE_LEN                 4
+#define IEEE80211_NUM_OFDM_RATESLEN    8
+
+
+#define IEEE80211_CCK_RATE_1MB                 0x02
+#define IEEE80211_CCK_RATE_2MB                 0x04
+#define IEEE80211_CCK_RATE_5MB                 0x0B
+#define IEEE80211_CCK_RATE_11MB                        0x16
+#define IEEE80211_OFDM_RATE_LEN                        8
+#define IEEE80211_OFDM_RATE_6MB                        0x0C
+#define IEEE80211_OFDM_RATE_9MB                        0x12
+#define IEEE80211_OFDM_RATE_12MB               0x18
+#define IEEE80211_OFDM_RATE_18MB               0x24
+#define IEEE80211_OFDM_RATE_24MB               0x30
+#define IEEE80211_OFDM_RATE_36MB               0x48
+#define IEEE80211_OFDM_RATE_48MB               0x60
+#define IEEE80211_OFDM_RATE_54MB               0x6C
+#define IEEE80211_BASIC_RATE_MASK              0x80
+
+#define IEEE80211_CCK_RATE_1MB_MASK            (1<<0)
+#define IEEE80211_CCK_RATE_2MB_MASK            (1<<1)
+#define IEEE80211_CCK_RATE_5MB_MASK            (1<<2)
+#define IEEE80211_CCK_RATE_11MB_MASK           (1<<3)
+#define IEEE80211_OFDM_RATE_6MB_MASK           (1<<4)
+#define IEEE80211_OFDM_RATE_9MB_MASK           (1<<5)
+#define IEEE80211_OFDM_RATE_12MB_MASK          (1<<6)
+#define IEEE80211_OFDM_RATE_18MB_MASK          (1<<7)
+#define IEEE80211_OFDM_RATE_24MB_MASK          (1<<8)
+#define IEEE80211_OFDM_RATE_36MB_MASK          (1<<9)
+#define IEEE80211_OFDM_RATE_48MB_MASK          (1<<10)
+#define IEEE80211_OFDM_RATE_54MB_MASK          (1<<11)
+
+#define IEEE80211_CCK_RATES_MASK               0x0000000F
+#define IEEE80211_CCK_BASIC_RATES_MASK (IEEE80211_CCK_RATE_1MB_MASK | \
+       IEEE80211_CCK_RATE_2MB_MASK)
+#define IEEE80211_CCK_DEFAULT_RATES_MASK                               \
+       (IEEE80211_CCK_BASIC_RATES_MASK |                               \
+       IEEE80211_CCK_RATE_5MB_MASK |                                   \
+       IEEE80211_CCK_RATE_11MB_MASK)
+
+#define IEEE80211_OFDM_RATES_MASK              0x00000FF0
+#define IEEE80211_OFDM_BASIC_RATES_MASK        (IEEE80211_OFDM_RATE_6MB_MASK | \
+       IEEE80211_OFDM_RATE_12MB_MASK |                                 \
+       IEEE80211_OFDM_RATE_24MB_MASK)
+#define IEEE80211_OFDM_DEFAULT_RATES_MASK                              \
+       (IEEE80211_OFDM_BASIC_RATES_MASK |                              \
+       IEEE80211_OFDM_RATE_9MB_MASK  |                                 \
+       IEEE80211_OFDM_RATE_18MB_MASK |                                 \
+       IEEE80211_OFDM_RATE_36MB_MASK |                                 \
+       IEEE80211_OFDM_RATE_48MB_MASK |                                 \
+       IEEE80211_OFDM_RATE_54MB_MASK)
+#define IEEE80211_DEFAULT_RATES_MASK                                   \
+       (IEEE80211_OFDM_DEFAULT_RATES_MASK |                            \
+        IEEE80211_CCK_DEFAULT_RATES_MASK)
+
+#define IEEE80211_NUM_OFDM_RATES       8
+#define IEEE80211_NUM_CCK_RATES                4
+#define IEEE80211_OFDM_SHIFT_MASK_A    4
+
+/* NOTE: This data is for statistical purposes; not all hardware provides this
+ *       information for frames received.  Not setting these will not cause
+ *       any adverse affects. */
+struct ieee80211_rx_stats {
+       /* u32 mac_time[2]; */
+       s8 rssi;
+       u8 signal;
+       u8 noise;
+       u8 received_channel;
+       u16 rate; /* in 100 kbps */
+       /* u8 control; */
+       u8 mask;
+       u8 freq;
+       u16 len;
+};
+
+/* IEEE 802.11 requires that STA supports concurrent reception of at least
+ * three fragmented frames. This define can be increased to support more
+ * concurrent frames, but it should be noted that each entry can consume about
+ * 2 kB of RAM and increasing cache size will slow down frame reassembly. */
+#define IEEE80211_FRAG_CACHE_LEN 4
+
+struct ieee80211_frag_entry {
+       u32 first_frag_time;
+       uint seq;
+       uint last_frag;
+       uint qos;   /* jackson */
+       uint tid;       /* jackson */
+       struct sk_buff *skb;
+       u8 src_addr[ETH_ALEN];
+       u8 dst_addr[ETH_ALEN];
+};
+
+struct ieee80211_stats {
+       uint tx_unicast_frames;
+       uint tx_multicast_frames;
+       uint tx_fragments;
+       uint tx_unicast_octets;
+       uint tx_multicast_octets;
+       uint tx_deferred_transmissions;
+       uint tx_single_retry_frames;
+       uint tx_multiple_retry_frames;
+       uint tx_retry_limit_exceeded;
+       uint tx_discards;
+       uint rx_unicast_frames;
+       uint rx_multicast_frames;
+       uint rx_fragments;
+       uint rx_unicast_octets;
+       uint rx_multicast_octets;
+       uint rx_fcs_errors;
+       uint rx_discards_no_buffer;
+       uint tx_discards_wrong_sa;
+       uint rx_discards_undecryptable;
+       uint rx_message_in_msg_fragments;
+       uint rx_message_in_bad_msg_fragments;
+};
+
+struct ieee80211_softmac_stats {
+       uint rx_ass_ok;
+       uint rx_ass_err;
+       uint rx_probe_rq;
+       uint tx_probe_rs;
+       uint tx_beacons;
+       uint rx_auth_rq;
+       uint rx_auth_rs_ok;
+       uint rx_auth_rs_err;
+       uint tx_auth_rq;
+       uint no_auth_rs;
+       uint no_ass_rs;
+       uint tx_ass_rq;
+       uint rx_ass_rq;
+       uint tx_probe_rq;
+       uint reassoc;
+       uint swtxstop;
+       uint swtxawake;
+};
+
+#define SEC_KEY_1      (1<<0)
+#define SEC_KEY_2      (1<<1)
+#define SEC_KEY_3      (1<<2)
+#define SEC_KEY_4      (1<<3)
+#define SEC_ACTIVE_KEY  (1<<4)
+#define SEC_AUTH_MODE   (1<<5)
+#define SEC_UNICAST_GROUP (1<<6)
+#define SEC_LEVEL      (1<<7)
+#define SEC_ENABLED     (1<<8)
+
+#define SEC_LEVEL_0      0 /* None */
+#define SEC_LEVEL_1      1 /* WEP 40 and 104 bit */
+#define SEC_LEVEL_2      2 /* Level 1 + TKIP */
+#define SEC_LEVEL_2_CKIP 3 /* Level 1 + CKIP */
+#define SEC_LEVEL_3      4 /* Level 2 + CCMP */
+
+#define WEP_KEYS 4
+#define WEP_KEY_LEN 13
+
+struct ieee80211_security {
+       u16 active_key:2,
+       enabled:1,
+       auth_mode:2,
+       auth_algo:4,
+       unicast_uses_group:1;
+       u8 key_sizes[WEP_KEYS];
+       u8 keys[WEP_KEYS][WEP_KEY_LEN];
+       u8 level;
+       u16 flags;
+} __packed;
+
+/*
+
+ 802.11 data frame from AP
+
+      ,-------------------------------------------------------------------.
+Bytes |  2   |  2   |    6    |    6    |    6    |  2   | 0..2312 |   4  |
+      |------|------|---------|---------|---------|------|---------|------|
+Desc. | ctrl | dura |  DA/RA  |   TA    |    SA   | Sequ |  frame  |  fcs |
+      |      | tion | (BSSID) |         |       | ence |  data   |      |
+      `-------------------------------------------------------------------'
+
+Total: 28-2340 bytes
+
+*/
+
+struct ieee80211_header_data {
+       u16 frame_ctl;
+       u16 duration_id;
+       u8 addr1[6];
+       u8 addr2[6];
+       u8 addr3[6];
+       u16 seq_ctrl;
+};
+
+#define BEACON_PROBE_SSID_ID_POSITION 12
+
+/* Management Frame Information Element Types */
+#define MFIE_TYPE_SSID         0
+#define MFIE_TYPE_RATES                1
+#define MFIE_TYPE_FH_SET       2
+#define MFIE_TYPE_DS_SET       3
+#define MFIE_TYPE_CF_SET       4
+#define MFIE_TYPE_TIM          5
+#define MFIE_TYPE_IBSS_SET     6
+#define MFIE_TYPE_CHALLENGE    16
+#define MFIE_TYPE_ERP          42
+#define MFIE_TYPE_RSN          48
+#define MFIE_TYPE_RATES_EX     50
+#define MFIE_TYPE_GENERIC      221
+
+struct ieee80211_info_element_hdr {
+       u8 id;
+       u8 len;
+} __packed;
+
+struct ieee80211_info_element {
+       u8 id;
+       u8 len;
+       u8 data[0];
+} __packed;
+
+/*
+ * These are the data types that can make up management packets
+ *
+       u16 auth_algorithm;
+       u16 auth_sequence;
+       u16 beacon_interval;
+       u16 capability;
+       u8 current_ap[ETH_ALEN];
+       u16 listen_interval;
+       struct {
+               u16 association_id:14, reserved:2;
+       } __packed;
+       u32 time_stamp[2];
+       u16 reason;
+       u16 status;
+*/
+
+#define IEEE80211_DEFAULT_TX_ESSID "Penguin"
+#define IEEE80211_DEFAULT_BASIC_RATE 10
+
+struct ieee80211_authentication {
+       struct ieee80211_header_data header;
+       u16 algorithm;
+       u16 transaction;
+       u16 status;
+       /* struct ieee80211_info_element_hdr info_element; */
+} __packed;
+
+struct ieee80211_probe_response {
+       struct ieee80211_header_data header;
+       u32 time_stamp[2];
+       u16 beacon_interval;
+       u16 capability;
+       struct ieee80211_info_element info_element;
+} __packed;
+
+struct ieee80211_probe_request {
+       struct ieee80211_header_data header;
+} __packed;
+
+struct ieee80211_assoc_request_frame {
+       struct rtw_ieee80211_hdr_3addr header;
+       u16 capability;
+       u16 listen_interval;
+       struct ieee80211_info_element_hdr info_element;
+} __packed;
+
+struct ieee80211_assoc_response_frame {
+       struct rtw_ieee80211_hdr_3addr header;
+       u16 capability;
+       u16 status;
+       u16 aid;
+} __packed;
+
+struct ieee80211_txb {
+       u8 nr_frags;
+       u8 encrypted;
+       u16 reserved;
+       u16 frag_size;
+       u16 payload_size;
+       struct sk_buff *fragments[0];
+};
+
+
+/* SWEEP TABLE ENTRIES NUMBER*/
+#define MAX_SWEEP_TAB_ENTRIES            42
+#define MAX_SWEEP_TAB_ENTRIES_PER_PACKET  7
+/* MAX_RATES_LENGTH needs to be 12.  The spec says 8, and many APs
+ * only use 8, and then use extended rates for the remaining supported
+ * rates.  Other APs, however, stick all of their supported rates on the
+ * main rates information element... */
+#define MAX_RATES_LENGTH               ((u8)12)
+#define MAX_RATES_EX_LENGTH            ((u8)16)
+#define MAX_NETWORK_COUNT              128
+#define MAX_CHANNEL_NUMBER             161
+#define IEEE80211_SOFTMAC_SCAN_TIME    400
+/* HZ / 2) */
+#define IEEE80211_SOFTMAC_ASSOC_RETRY_TIME (HZ * 2)
+
+#define CRC_LENGTH              4U
+
+#define MAX_WPA_IE_LEN (256)
+#define MAX_WPS_IE_LEN (512)
+#define MAX_P2P_IE_LEN (256)
+#define MAX_WFD_IE_LEN (128)
+
+#define NETWORK_EMPTY_ESSID (1<<0)
+#define NETWORK_HAS_OFDM    (1<<1)
+#define NETWORK_HAS_CCK     (1<<2)
+
+#define IEEE80211_DTIM_MBCAST 4
+#define IEEE80211_DTIM_UCAST 2
+#define IEEE80211_DTIM_VALID 1
+#define IEEE80211_DTIM_INVALID 0
+
+#define IEEE80211_PS_DISABLED 0
+#define IEEE80211_PS_UNICAST IEEE80211_DTIM_UCAST
+#define IEEE80211_PS_MBCAST IEEE80211_DTIM_MBCAST
+#define IW_ESSID_MAX_SIZE 32
+/*
+join_res:
+-1: authentication fail
+-2: association fail
+> 0: TID
+*/
+
+enum ieee80211_state {
+       /* the card is not linked at all */
+       IEEE80211_NOLINK = 0,
+
+       /* IEEE80211_ASSOCIATING* are for BSS client mode
+        * the driver shall not perform RX filtering unless
+        * the state is LINKED.
+        * The driver shall just check for the state LINKED and
+        * defaults to NOLINK for ALL the other states (including
+        * LINKED_SCANNING)
+        */
+
+       /* the association procedure will start (wq scheduling)*/
+       IEEE80211_ASSOCIATING,
+       IEEE80211_ASSOCIATING_RETRY,
+
+       /* the association procedure is sending AUTH request*/
+       IEEE80211_ASSOCIATING_AUTHENTICATING,
+
+       /* the association procedure has successfully authentcated
+        * and is sending association request
+        */
+       IEEE80211_ASSOCIATING_AUTHENTICATED,
+
+       /* the link is ok. the card associated to a BSS or linked
+        * to a ibss cell or acting as an AP and creating the bss
+        */
+       IEEE80211_LINKED,
+
+       /* same as LINKED, but the driver shall apply RX filter
+        * rules as we are in NO_LINK mode. As the card is still
+        * logically linked, but it is doing a syncro site survey
+        * then it will be back to LINKED state.
+        */
+       IEEE80211_LINKED_SCANNING,
+
+};
+
+#define DEFAULT_MAX_SCAN_AGE (15 * HZ)
+#define DEFAULT_FTS 2346
+
+static inline int is_multicast_mac_addr(const u8 *addr)
+{
+       return ((addr[0] != 0xff) && (0x01 & addr[0]));
+}
+
+static inline int is_broadcast_mac_addr(const u8 *addr)
+{
+       return (addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&
+              (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff);
+}
+
+#define CFG_IEEE80211_RESERVE_FCS (1<<0)
+#define CFG_IEEE80211_COMPUTE_FCS (1<<1)
+
+struct tx_pending {
+       int frag;
+       struct ieee80211_txb *txb;
+};
+
+#define MAXTID 16
+
+#define IEEE_A     (1<<0)
+#define IEEE_B     (1<<1)
+#define IEEE_G     (1<<2)
+#define IEEE_MODE_MASK    (IEEE_A|IEEE_B|IEEE_G)
+
+/* Baron move to ieee80211.c */
+int ieee80211_is_empty_essid(const char *essid, int essid_len);
+int ieee80211_get_hdrlen(u16 fc);
+
+/* Action category code */
+enum rtw_ieee80211_category {
+       RTW_WLAN_CATEGORY_SPECTRUM_MGMT = 0,
+       RTW_WLAN_CATEGORY_QOS = 1,
+       RTW_WLAN_CATEGORY_DLS = 2,
+       RTW_WLAN_CATEGORY_BACK = 3,
+       RTW_WLAN_CATEGORY_PUBLIC = 4, /* IEEE 802.11 public action frames */
+       RTW_WLAN_CATEGORY_RADIO_MEASUREMENT  = 5,
+       RTW_WLAN_CATEGORY_FT = 6,
+       RTW_WLAN_CATEGORY_HT = 7,
+       RTW_WLAN_CATEGORY_SA_QUERY = 8,
+       RTW_WLAN_CATEGORY_TDLS = 12,
+       RTW_WLAN_CATEGORY_WMM = 17,
+       RTW_WLAN_CATEGORY_P2P = 0x7f,/* P2P action frames */
+};
+
+/* SPECTRUM_MGMT action code */
+enum rtw_ieee80211_spectrum_mgmt_actioncode {
+       RTW_WLAN_ACTION_SPCT_MSR_REQ = 0,
+       RTW_WLAN_ACTION_SPCT_MSR_RPRT = 1,
+       RTW_WLAN_ACTION_SPCT_TPC_REQ = 2,
+       RTW_WLAN_ACTION_SPCT_TPC_RPRT = 3,
+       RTW_WLAN_ACTION_SPCT_CHL_SWITCH = 4,
+       RTW_WLAN_ACTION_SPCT_EXT_CHL_SWITCH = 5,
+};
+
+enum _PUBLIC_ACTION {
+       ACT_PUBLIC_BSSCOEXIST = 0, /*  20/40 BSS Coexistence */
+       ACT_PUBLIC_DSE_ENABLE = 1,
+       ACT_PUBLIC_DSE_DEENABLE = 2,
+       ACT_PUBLIC_DSE_REG_LOCATION = 3,
+       ACT_PUBLIC_EXT_CHL_SWITCH = 4,
+       ACT_PUBLIC_DSE_MSR_REQ = 5,
+       ACT_PUBLIC_DSE_MSR_RPRT = 6,
+       ACT_PUBLIC_MP = 7, /*  Measurement Pilot */
+       ACT_PUBLIC_DSE_PWR_CONSTRAINT = 8,
+       ACT_PUBLIC_VENDOR = 9, /*  for WIFI_DIRECT */
+       ACT_PUBLIC_GAS_INITIAL_REQ = 10,
+       ACT_PUBLIC_GAS_INITIAL_RSP = 11,
+       ACT_PUBLIC_GAS_COMEBACK_REQ = 12,
+       ACT_PUBLIC_GAS_COMEBACK_RSP = 13,
+       ACT_PUBLIC_TDLS_DISCOVERY_RSP = 14,
+       ACT_PUBLIC_LOCATION_TRACK = 15,
+       ACT_PUBLIC_MAX
+};
+
+/* BACK action code */
+enum rtw_ieee80211_back_actioncode {
+       RTW_WLAN_ACTION_ADDBA_REQ = 0,
+       RTW_WLAN_ACTION_ADDBA_RESP = 1,
+       RTW_WLAN_ACTION_DELBA = 2,
+};
+
+/* HT features action code */
+enum rtw_ieee80211_ht_actioncode {
+       RTW_WLAN_ACTION_NOTIFY_CH_WIDTH = 0,
+       RTW_WLAN_ACTION_SM_PS = 1,
+       RTW_WLAN_ACTION_PSPM = 2,
+       RTW_WLAN_ACTION_PCO_PHASE = 3,
+       RTW_WLAN_ACTION_MIMO_CSI_MX = 4,
+       RTW_WLAN_ACTION_MIMO_NONCP_BF = 5,
+       RTW_WLAN_ACTION_MIMP_CP_BF = 6,
+       RTW_WLAN_ACTION_ASEL_INDICATES_FB = 7,
+       RTW_WLAN_ACTION_HI_INFO_EXCHG = 8,
+};
+
+/* BACK (block-ack) parties */
+enum rtw_ieee80211_back_parties {
+       RTW_WLAN_BACK_RECIPIENT = 0,
+       RTW_WLAN_BACK_INITIATOR = 1,
+       RTW_WLAN_BACK_TIMER = 2,
+};
+
+#define OUI_MICROSOFT 0x0050f2 /* Microsoft (also used in Wi-Fi specs)
+                               * 00:50:F2 */
+#define WME_OUI_TYPE 2
+#define WME_OUI_SUBTYPE_INFORMATION_ELEMENT 0
+#define WME_OUI_SUBTYPE_PARAMETER_ELEMENT 1
+#define WME_OUI_SUBTYPE_TSPEC_ELEMENT 2
+#define WME_VERSION 1
+
+#define WME_ACTION_CODE_SETUP_REQUEST 0
+#define WME_ACTION_CODE_SETUP_RESPONSE 1
+#define WME_ACTION_CODE_TEARDOWN 2
+
+#define WME_SETUP_RESPONSE_STATUS_ADMISSION_ACCEPTED 0
+#define WME_SETUP_RESPONSE_STATUS_INVALID_PARAMETERS 1
+#define WME_SETUP_RESPONSE_STATUS_REFUSED 3
+
+#define WME_TSPEC_DIRECTION_UPLINK 0
+#define WME_TSPEC_DIRECTION_DOWNLINK 1
+#define WME_TSPEC_DIRECTION_BI_DIRECTIONAL 3
+
+
+#define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */
+
+#define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */
+
+/**
+ * enum rtw_ieee80211_channel_flags - channel flags
+ *
+ * Channel flags set by the regulatory control code.
+ *
+ * @RTW_IEEE80211_CHAN_DISABLED: This channel is disabled.
+ * @RTW_IEEE80211_CHAN_PASSIVE_SCAN: Only passive scanning is permitted
+ *      on this channel.
+ * @RTW_IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel.
+ * @RTW_IEEE80211_CHAN_RADAR: Radar detection is required on this channel.
+ * @RTW_IEEE80211_CHAN_NO_HT40PLUS: extension channel above this channel
+ *      is not permitted.
+ * @RTW_IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel
+ *      is not permitted.
+ */
+enum rtw_ieee80211_channel_flags {
+       RTW_IEEE80211_CHAN_DISABLED      = 1<<0,
+       RTW_IEEE80211_CHAN_PASSIVE_SCAN     = 1<<1,
+       RTW_IEEE80211_CHAN_NO_IBSS        = 1<<2,
+       RTW_IEEE80211_CHAN_RADAR            = 1<<3,
+       RTW_IEEE80211_CHAN_NO_HT40PLUS      = 1<<4,
+       RTW_IEEE80211_CHAN_NO_HT40MINUS     = 1<<5,
+};
+
+#define RTW_IEEE80211_CHAN_NO_HT40 \
+         (RTW_IEEE80211_CHAN_NO_HT40PLUS | RTW_IEEE80211_CHAN_NO_HT40MINUS)
+
+/* Represent channel details, subset of ieee80211_channel */
+struct rtw_ieee80211_channel {
+       u16 hw_value;
+       u32 flags;
+};
+
+#define CHAN_FMT \
+       "hw_value:%u, " \
+       "flags:0x%08x" \
+
+#define CHAN_ARG(channel) \
+       (channel)->hw_value \
+       , (channel)->flags \
+
+/* Parsed Information Elements */
+struct rtw_ieee802_11_elems {
+       u8 *ssid;
+       u8 ssid_len;
+       u8 *supp_rates;
+       u8 supp_rates_len;
+       u8 *fh_params;
+       u8 fh_params_len;
+       u8 *ds_params;
+       u8 ds_params_len;
+       u8 *cf_params;
+       u8 cf_params_len;
+       u8 *tim;
+       u8 tim_len;
+       u8 *ibss_params;
+       u8 ibss_params_len;
+       u8 *challenge;
+       u8 challenge_len;
+       u8 *erp_info;
+       u8 erp_info_len;
+       u8 *ext_supp_rates;
+       u8 ext_supp_rates_len;
+       u8 *wpa_ie;
+       u8 wpa_ie_len;
+       u8 *rsn_ie;
+       u8 rsn_ie_len;
+       u8 *wme;
+       u8 wme_len;
+       u8 *wme_tspec;
+       u8 wme_tspec_len;
+       u8 *wps_ie;
+       u8 wps_ie_len;
+       u8 *power_cap;
+       u8 power_cap_len;
+       u8 *supp_channels;
+       u8 supp_channels_len;
+       u8 *mdie;
+       u8 mdie_len;
+       u8 *ftie;
+       u8 ftie_len;
+       u8 *timeout_int;
+       u8 timeout_int_len;
+       u8 *ht_capabilities;
+       u8 ht_capabilities_len;
+       u8 *ht_operation;
+       u8 ht_operation_len;
+       u8 *vendor_ht_cap;
+       u8 vendor_ht_cap_len;
+};
+
+enum parse_res {
+       ParseOK = 0,
+       ParseUnknown = 1,
+       ParseFailed = -1
+};
+
+enum parse_res rtw_ieee802_11_parse_elems(u8 *start, uint len,
+                                         struct rtw_ieee802_11_elems *elems,
+                                         int show_errors);
+
+u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len,
+                    unsigned char *source, unsigned int *frlen);
+u8 *rtw_set_ie(u8 *pbuf, int index, uint len, u8 *source, uint *frlen);
+
+enum secondary_ch_offset {
+       SCN = 0, /* no secondary channel */
+       SCA = 1, /* secondary channel above */
+       SCB = 3,  /* secondary channel below */
+};
+u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset);
+u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset);
+u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode,
+                        u8 new_ch, u8 ch_switch_cnt);
+u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len,
+                                  u8 secondary_ch_offset);
+u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl,
+                                  u8 flags, u16 reason, u16 precedence);
+
+u8 *rtw_get_ie(u8 *pbuf, int index, int *len, int limit);
+u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui,
+                 u8 oui_len, u8 *ie, uint *ielen);
+int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset,
+                     u8 eid, u8 *oui, u8 oui_len);
+
+void rtw_set_supported_rate(u8 *SupportedRates, uint mode);
+
+unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit);
+unsigned char *rtw_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit);
+int rtw_get_wpa_cipher_suite(u8 *s);
+int rtw_get_wpa2_cipher_suite(u8 *s);
+int rtw_get_wapi_ie(u8 *in_ie, uint in_len, u8 *wapi_ie, u16 *wapi_len);
+int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
+                    int *pairwise_cipher, int *is_8021x);
+int rtw_parse_wpa2_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
+                     int *pairwise_cipher, int *is_8021x);
+
+int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len,
+                  u8 *wpa_ie, u16 *wpa_len);
+
+u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen);
+u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
+u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+                    u8 *buf_attr, u32 *len_attr);
+u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+                            u8 *buf_content, uint *len_content);
+
+/**
+ * for_each_ie - iterate over continuous IEs
+ * @ie:
+ * @buf:
+ * @buf_len:
+ */
+#define for_each_ie(ie, buf, buf_len) \
+       for (ie = (void *)buf; (((u8 *)ie) - ((u8 *)buf) + 1) < buf_len;        \
+               ie = (void *)(((u8 *)ie) + *(((u8 *)ie)+1) + 2))
+
+void dump_ies(u8 *buf, u32 buf_len);
+void dump_wps_ie(u8 *ie, u32 ie_len);
+
+#ifdef CONFIG_88EU_P2P
+void dump_p2p_ie(u8 *ie, u32 ie_len);
+u8 *rtw_get_p2p_ie(u8 *in_ie, int in_len, u8 *p2p_ie, uint *p2p_ielen);
+u8 *rtw_get_p2p_attr(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id,
+                    u8 *buf_attr, u32 *len_attr);
+u8 *rtw_get_p2p_attr_content(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id,
+                            u8 *buf_content, uint *len_content);
+u32 rtw_set_p2p_attr_content(u8 *pbuf, u8 attr_id, u16 attr_len,
+                            u8 *pdata_attr);
+void rtw_wlan_bssid_ex_remove_p2p_attr(struct wlan_bssid_ex *bss_ex,
+                                      u8 attr_id);
+#endif
+
+uint   rtw_get_rateset_len(u8  *rateset);
+
+struct registry_priv;
+int rtw_generate_ie(struct registry_priv *pregistrypriv);
+
+
+int rtw_get_bit_value_from_ieee_value(u8 val);
+
+uint   rtw_is_cckrates_included(u8 *rate);
+
+uint   rtw_is_cckratesonly_included(u8 *rate);
+
+int rtw_check_network_type(unsigned char *rate, int ratelen, int channel);
+
+void rtw_get_bcn_info(struct wlan_network *pnetwork);
+
+void rtw_macaddr_cfg(u8 *mac_addr);
+
+u16 rtw_mcs_rate(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40,
+                unsigned char *MCS_rate);
+
+int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category,
+                          u8 *action);
+const char *action_public_str(u8 action);
+
+#endif /* IEEE80211_H */
diff --git a/drivers/staging/rtl8188eu/include/ieee80211_ext.h b/drivers/staging/rtl8188eu/include/ieee80211_ext.h
new file mode 100644 (file)
index 0000000..1052d18
--- /dev/null
@@ -0,0 +1,290 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __IEEE80211_EXT_H
+#define __IEEE80211_EXT_H
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+#define WMM_OUI_TYPE 2
+#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
+#define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1
+#define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2
+#define WMM_VERSION 1
+
+#define WPA_PROTO_WPA BIT(0)
+#define WPA_PROTO_RSN BIT(1)
+
+#define WPA_KEY_MGMT_IEEE8021X BIT(0)
+#define WPA_KEY_MGMT_PSK BIT(1)
+#define WPA_KEY_MGMT_NONE BIT(2)
+#define WPA_KEY_MGMT_IEEE8021X_NO_WPA BIT(3)
+#define WPA_KEY_MGMT_WPA_NONE BIT(4)
+
+
+#define WPA_CAPABILITY_PREAUTH BIT(0)
+#define WPA_CAPABILITY_MGMT_FRAME_PROTECTION BIT(6)
+#define WPA_CAPABILITY_PEERKEY_ENABLED BIT(9)
+
+
+#define PMKID_LEN 16
+
+
+struct wpa_ie_hdr {
+       u8 elem_id;
+       u8 len;
+       u8 oui[4]; /* 24-bit OUI followed by 8-bit OUI type */
+       u8 version[2]; /* little endian */
+} __packed;
+
+struct rsn_ie_hdr {
+       u8 elem_id; /* WLAN_EID_RSN */
+       u8 len;
+       u8 version[2]; /* little endian */
+} __packed;
+
+struct wme_ac_parameter {
+#if defined(__LITTLE_ENDIAN)
+       /* byte 1 */
+       u8      aifsn:4,
+               acm:1,
+               aci:2,
+               reserved:1;
+
+       /* byte 2 */
+       u8      eCWmin:4,
+               eCWmax:4;
+#elif defined(__BIG_ENDIAN)
+       /* byte 1 */
+       u8      reserved:1,
+               aci:2,
+               acm:1,
+               aifsn:4;
+
+       /* byte 2 */
+       u8      eCWmax:4,
+               eCWmin:4;
+#else
+#error "Please fix <endian.h>"
+#endif
+
+       /* bytes 3 & 4 */
+       u16 txopLimit;
+} __packed;
+
+struct wme_parameter_element {
+       /* required fields for WME version 1 */
+       u8 oui[3];
+       u8 oui_type;
+       u8 oui_subtype;
+       u8 version;
+       u8 acInfo;
+       u8 reserved;
+       struct wme_ac_parameter ac[4];
+
+} __packed;
+
+#define WPA_PUT_LE16(a, val)                   \
+       do {                                    \
+               (a)[1] = ((u16) (val)) >> 8;    \
+               (a)[0] = ((u16) (val)) & 0xff;  \
+       } while (0)
+
+#define WPA_PUT_BE32(a, val)                                   \
+       do {                                                    \
+               (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff);   \
+               (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff);   \
+               (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff);    \
+               (a)[3] = (u8) (((u32) (val)) & 0xff);           \
+       } while (0)
+
+#define WPA_PUT_LE32(a, val)                                   \
+       do {                                                    \
+               (a)[3] = (u8) ((((u32) (val)) >> 24) & 0xff);   \
+               (a)[2] = (u8) ((((u32) (val)) >> 16) & 0xff);   \
+               (a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff);    \
+               (a)[0] = (u8) (((u32) (val)) & 0xff);           \
+       } while (0)
+
+#define RSN_SELECTOR_PUT(a, val) WPA_PUT_BE32((u8 *)(a), (val))
+
+/* Action category code */
+enum ieee80211_category {
+       WLAN_CATEGORY_SPECTRUM_MGMT = 0,
+       WLAN_CATEGORY_QOS = 1,
+       WLAN_CATEGORY_DLS = 2,
+       WLAN_CATEGORY_BACK = 3,
+       WLAN_CATEGORY_HT = 7,
+       WLAN_CATEGORY_WMM = 17,
+};
+
+/* SPECTRUM_MGMT action code */
+enum ieee80211_spectrum_mgmt_actioncode {
+       WLAN_ACTION_SPCT_MSR_REQ = 0,
+       WLAN_ACTION_SPCT_MSR_RPRT = 1,
+       WLAN_ACTION_SPCT_TPC_REQ = 2,
+       WLAN_ACTION_SPCT_TPC_RPRT = 3,
+       WLAN_ACTION_SPCT_CHL_SWITCH = 4,
+       WLAN_ACTION_SPCT_EXT_CHL_SWITCH = 5,
+};
+
+/* BACK action code */
+enum ieee80211_back_actioncode {
+       WLAN_ACTION_ADDBA_REQ = 0,
+       WLAN_ACTION_ADDBA_RESP = 1,
+       WLAN_ACTION_DELBA = 2,
+};
+
+/* HT features action code */
+enum ieee80211_ht_actioncode {
+       WLAN_ACTION_NOTIFY_CH_WIDTH = 0,
+       WLAN_ACTION_SM_PS = 1,
+       WLAN_ACTION_PSPM = 2,
+       WLAN_ACTION_PCO_PHASE = 3,
+       WLAN_ACTION_MIMO_CSI_MX = 4,
+       WLAN_ACTION_MIMO_NONCP_BF = 5,
+       WLAN_ACTION_MIMP_CP_BF = 6,
+       WLAN_ACTION_ASEL_INDICATES_FB = 7,
+       WLAN_ACTION_HI_INFO_EXCHG = 8,
+};
+
+/* BACK (block-ack) parties */
+enum ieee80211_back_parties {
+       WLAN_BACK_RECIPIENT = 0,
+       WLAN_BACK_INITIATOR = 1,
+       WLAN_BACK_TIMER = 2,
+};
+
+struct ieee80211_mgmt {
+       u16 frame_control;
+       u16 duration;
+       u8 da[6];
+       u8 sa[6];
+       u8 bssid[6];
+       u16 seq_ctrl;
+       union {
+               struct {
+                       u16 auth_alg;
+                       u16 auth_transaction;
+                       u16 status_code;
+                       /* possibly followed by Challenge text */
+                       u8 variable[0];
+               }  __packed auth;
+               struct {
+                       u16 reason_code;
+               }  __packed deauth;
+               struct {
+                       u16 capab_info;
+                       u16 listen_interval;
+                       /* followed by SSID and Supported rates */
+                       u8 variable[0];
+               }  __packed assoc_req;
+               struct {
+                       u16 capab_info;
+                       u16 status_code;
+                       u16 aid;
+                       /* followed by Supported rates */
+                       u8 variable[0];
+               }  __packed assoc_resp, reassoc_resp;
+               struct {
+                       u16 capab_info;
+                       u16 listen_interval;
+                       u8 current_ap[6];
+                       /* followed by SSID and Supported rates */
+                       u8 variable[0];
+               }  __packed reassoc_req;
+               struct {
+                       u16 reason_code;
+               }  __packed disassoc;
+               struct {
+                       __le64 timestamp;
+                       u16 beacon_int;
+                       u16 capab_info;
+                       /* followed by some of SSID, Supported rates,
+                        * FH Params, DS Params, CF Params, IBSS Params, TIM */
+                       u8 variable[0];
+               }  __packed beacon;
+               struct {
+                       /* only variable items: SSID, Supported rates */
+                       u8 variable[0];
+               }  __packed probe_req;
+               struct {
+                       __le64 timestamp;
+                       u16 beacon_int;
+                       u16 capab_info;
+                       /* followed by some of SSID, Supported rates,
+                        * FH Params, DS Params, CF Params, IBSS Params */
+                       u8 variable[0];
+               }  __packed probe_resp;
+               struct {
+                       u8 category;
+                       union {
+                               struct {
+                                       u8 action_code;
+                                       u8 dialog_token;
+                                       u8 status_code;
+                                       u8 variable[0];
+                               }  __packed wme_action;
+                               struct {
+                                       u8 action_code;
+                                       u8 dialog_token;
+                                       u16 capab;
+                                       u16 timeout;
+                                       u16 start_seq_num;
+                               }  __packed addba_req;
+                               struct {
+                                       u8 action_code;
+                                       u8 dialog_token;
+                                       u16 status;
+                                       u16 capab;
+                                       u16 timeout;
+                               }  __packed addba_resp;
+                               struct {
+                                       u8 action_code;
+                                       u16 params;
+                                       u16 reason_code;
+                               }  __packed delba;
+                               structi {
+                                       u8 action_code;
+                                       /* capab_info for open and confirm,
+                                        * reason for close
+                                        */
+                                       u16 aux;
+                                       /* Followed in plink_confirm by status
+                                        * code, AID and supported rates,
+                                        * and directly by supported rates in
+                                        * plink_open and plink_close
+                                        */
+                                       u8 variable[0];
+                               }  __packed plink_action;
+                               struct{
+                                       u8 action_code;
+                                       u8 variable[0];
+                               }  __packed mesh_action;
+                       } __packed u;
+               }  __packed action;
+       } __packed u;
+} __packed;
+
+/* mgmt header + 1 byte category code */
+#define IEEE80211_MIN_ACTION_SIZE                              \
+        FIELD_OFFSET(struct ieee80211_mgmt, u.action.u)
+
+#endif
diff --git a/drivers/staging/rtl8188eu/include/if_ether.h b/drivers/staging/rtl8188eu/include/if_ether.h
new file mode 100644 (file)
index 0000000..db15771
--- /dev/null
@@ -0,0 +1,111 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+
+#ifndef _LINUX_IF_ETHER_H
+#define _LINUX_IF_ETHER_H
+
+/*
+ *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
+ *     and FCS/CRC (frame check sequence).
+ */
+
+#define ETH_ALEN       6               /* Octets in one ethernet addr   */
+#define ETH_HLEN       14              /* Total octets in header.       */
+#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
+#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
+#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
+
+/*
+ *     These are the defined Ethernet Protocol ID's.
+ */
+
+#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
+#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
+#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
+#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
+#define ETH_P_X25      0x0805          /* CCITT X.25                   */
+#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
+#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  */
+#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet   */
+#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP          */
+#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
+#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
+#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
+#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
+#define ETH_P_LAT       0x6004          /* DEC LAT                      */
+#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
+#define ETH_P_CUST      0x6006          /* DEC Customer use             */
+#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
+#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
+#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
+#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
+#define ETH_P_8021Q    0x8100          /* 802.1Q VLAN Extended Header  */
+#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
+#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
+#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
+#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
+#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
+#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
+                                        * over Ethernet
+                                        */
+
+/*
+ *     Non DIX types. Won't clash for 1500 types.
+ */
+
+#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
+#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
+#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
+#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
+#define ETH_P_SNAP     0x0005          /* Internal only                */
+#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
+#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
+#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
+#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
+#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
+#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
+#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
+#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
+#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
+#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
+
+/*
+ *     This is an Ethernet frame header.
+ */
+
+struct ethhdr {
+       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
+       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
+       unsigned short  h_proto;                /* packet type ID field */
+};
+
+struct _vlan {
+       unsigned short       h_vlan_TCI;        /*  Encap prio and VLAN ID */
+       unsigned short       h_vlan_encapsulated_proto;
+};
+
+#define get_vlan_id(pvlan)                             \
+       ((ntohs((unsigned short)pvlan->h_vlan_TCI)) & 0xfff)
+#define get_vlan_priority(pvlan)                       \
+       ((ntohs((unsigned short)pvlan->h_vlan_TCI))>>13)
+#define get_vlan_encap_proto(pvlan)                    \
+        (ntohs((unsigned short)pvlan->h_vlan_encapsulated_proto))
+
+#endif /* _LINUX_IF_ETHER_H */
diff --git a/drivers/staging/rtl8188eu/include/ioctl_cfg80211.h b/drivers/staging/rtl8188eu/include/ioctl_cfg80211.h
new file mode 100644 (file)
index 0000000..037e9a5
--- /dev/null
@@ -0,0 +1,107 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __IOCTL_CFG80211_H__
+#define __IOCTL_CFG80211_H__
+
+struct rtw_wdev_invit_info {
+       u8 token;
+       u8 flags;
+       u8 status;
+       u8 req_op_ch;
+       u8 rsp_op_ch;
+};
+
+#define rtw_wdev_invit_info_init(invit_info) \
+       do { \
+               (invit_info)->token = 0; \
+               (invit_info)->flags = 0x00; \
+               (invit_info)->status = 0xff; \
+               (invit_info)->req_op_ch = 0; \
+               (invit_info)->rsp_op_ch = 0; \
+       } while (0)
+
+struct rtw_wdev_priv {
+       struct wireless_dev *rtw_wdev;
+
+       struct adapter *padapter;
+
+       struct cfg80211_scan_request *scan_request;
+       spinlock_t scan_req_lock;
+
+       struct net_device *pmon_ndev;/* for monitor interface */
+       char ifname_mon[IFNAMSIZ + 1]; /* name of monitor interface */
+
+       u8 p2p_enabled;
+
+       u8 provdisc_req_issued;
+
+       struct rtw_wdev_invit_info invit_info;
+
+       u8 bandroid_scan;
+       bool block;
+       bool power_mgmt;
+};
+
+#define wdev_to_priv(w) ((struct rtw_wdev_priv *)(wdev_priv(w)))
+
+#define wiphy_to_wdev(x)                               \
+((struct wireless_dev *)(((struct rtw_wdev_priv *)wiphy_priv(x))->rtw_wdev))
+
+int rtw_wdev_alloc(struct adapter *padapter, struct device *dev);
+void rtw_wdev_free(struct wireless_dev *wdev);
+void rtw_wdev_unregister(struct wireless_dev *wdev);
+
+void rtw_cfg80211_init_wiphy(struct adapter *padapter);
+
+void rtw_cfg80211_surveydone_event_callback(struct adapter *padapter);
+
+void rtw_cfg80211_indicate_connect(struct adapter *padapter);
+void rtw_cfg80211_indicate_disconnect(struct adapter *padapter);
+void rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv,
+                                    bool aborted);
+
+#ifdef CONFIG_88EU_AP_MODE
+void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter,
+                                    u8 *pmgmt_frame, uint frame_len);
+void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter,
+                                       unsigned char *da,
+                                       unsigned short reason);
+#endif /* CONFIG_88EU_AP_MODE */
+
+void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter,
+                                             const u8 *buf, size_t len);
+void rtw_cfg80211_rx_p2p_action_public(struct adapter *padapter,
+                                      u8 *pmgmt_frame, uint frame_len);
+void rtw_cfg80211_rx_action_p2p(struct adapter *padapter, u8 *pmgmt_frame,
+                               uint frame_len);
+void rtw_cfg80211_rx_action(struct adapter *adapter, u8 *frame,
+                           uint frame_len, const char *msg);
+
+int rtw_cfg80211_set_mgnt_wpsp2pie(struct net_device *net,
+                                  char *buf, int len, int type);
+
+bool rtw_cfg80211_pwr_mgmt(struct adapter *adapter);
+
+#define rtw_cfg80211_rx_mgmt(dev, freq, sig_dbm, buf, len, gfp)                \
+       cfg80211_rx_mgmt(dev, freq, sig_dbm, buf, len, gfp)
+#define rtw_cfg80211_send_rx_assoc(dev, bss, buf, len)                 \
+       cfg80211_send_rx_assoc(dev, bss, buf, len)
+
+#endif /* __IOCTL_CFG80211_H__ */
diff --git a/drivers/staging/rtl8188eu/include/ip.h b/drivers/staging/rtl8188eu/include/ip.h
new file mode 100644 (file)
index 0000000..9fdac6d
--- /dev/null
@@ -0,0 +1,126 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef _LINUX_IP_H
+#define _LINUX_IP_H
+
+/* SOL_IP socket options */
+
+#define IPTOS_TOS_MASK         0x1E
+#define IPTOS_TOS(tos)         ((tos)&IPTOS_TOS_MASK)
+#define        IPTOS_LOWDELAY          0x10
+#define        IPTOS_THROUGHPUT        0x08
+#define        IPTOS_RELIABILITY       0x04
+#define        IPTOS_MINCOST           0x02
+
+#define IPTOS_PREC_MASK                0xE0
+#define IPTOS_PREC(tos)                ((tos)&IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL           0xe0
+#define IPTOS_PREC_INTERNETCONTROL      0xc0
+#define IPTOS_PREC_CRITIC_ECP           0xa0
+#define IPTOS_PREC_FLASHOVERRIDE        0x80
+#define IPTOS_PREC_FLASH                0x60
+#define IPTOS_PREC_IMMEDIATE            0x40
+#define IPTOS_PREC_PRIORITY             0x20
+#define IPTOS_PREC_ROUTINE              0x00
+
+
+/* IP options */
+#define IPOPT_COPY             0x80
+#define IPOPT_CLASS_MASK       0x60
+#define IPOPT_NUMBER_MASK      0x1f
+
+#define        IPOPT_COPIED(o)         ((o)&IPOPT_COPY)
+#define        IPOPT_CLASS(o)          ((o)&IPOPT_CLASS_MASK)
+#define        IPOPT_NUMBER(o)         ((o)&IPOPT_NUMBER_MASK)
+
+#define        IPOPT_CONTROL           0x00
+#define        IPOPT_RESERVED1         0x20
+#define        IPOPT_MEASUREMENT       0x40
+#define        IPOPT_RESERVED2         0x60
+
+#define IPOPT_END      (0 | IPOPT_CONTROL)
+#define IPOPT_NOOP     (1 | IPOPT_CONTROL)
+#define IPOPT_SEC      (2 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_LSRR     (3 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_TIMESTAMP        (4 | IPOPT_MEASUREMENT)
+#define IPOPT_RR       (7 | IPOPT_CONTROL)
+#define IPOPT_SID      (8 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_SSRR     (9 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_RA       (20 | IPOPT_CONTROL | IPOPT_COPY)
+
+#define IPVERSION      4
+#define MAXTTL         255
+#define IPDEFTTL       64
+#define IPOPT_OPTVAL 0
+#define IPOPT_OLEN   1
+#define IPOPT_OFFSET 2
+#define IPOPT_MINOFF 4
+#define MAX_IPOPTLEN 40
+#define IPOPT_NOP IPOPT_NOOP
+#define IPOPT_EOL IPOPT_END
+#define IPOPT_TS  IPOPT_TIMESTAMP
+
+#define        IPOPT_TS_TSONLY         0       /* timestamps only */
+#define        IPOPT_TS_TSANDADDR      1       /* timestamps and addresses */
+#define        IPOPT_TS_PRESPEC        3       /* specified modules only */
+
+struct ip_options {
+       __u32           faddr;                  /* Saved first hop address */
+       unsigned char   optlen;
+       unsigned char srr;
+       unsigned char rr;
+       unsigned char ts;
+       unsigned char   is_setbyuser:1, /* Set by setsockopt?           */
+                       is_data:1,      /* Options in __data, rather than skb*/
+                       is_strictroute:1,/* Strict source route         */
+                       srr_is_hit:1,   /* Packet destn addr was ours */
+                       is_changed:1,   /* IP checksum more not valid   */
+                       rr_needaddr:1,  /* Need to record addr of out dev*/
+                       ts_needtime:1,  /* Need to record timestamp     */
+                       ts_needaddr:1;  /* Need to record addr of out dev  */
+       unsigned char router_alert;
+       unsigned char __pad1;
+       unsigned char __pad2;
+       unsigned char __data[0];
+};
+
+#define optlength(opt) (sizeof(struct ip_options) + opt->optlen)
+
+struct iphdr {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+       __u8    ihl:4,
+               version:4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+       __u8    version:4,
+               ihl:4;
+#endif
+       __u8    tos;
+       __u16   tot_len;
+       __u16   id;
+       __u16   frag_off;
+       __u8    ttl;
+       __u8    protocol;
+       __u16   check;
+       __u32   saddr;
+       __u32   daddr;
+       /*The options start here. */
+};
+
+#endif /* _LINUX_IP_H */
diff --git a/drivers/staging/rtl8188eu/include/mlme_osdep.h b/drivers/staging/rtl8188eu/include/mlme_osdep.h
new file mode 100644 (file)
index 0000000..ae1722c
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef        __MLME_OSDEP_H_
+#define __MLME_OSDEP_H_
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+void rtw_init_mlme_timer(struct adapter *padapter);
+void rtw_os_indicate_disconnect(struct adapter *adapter);
+void rtw_os_indicate_connect(struct adapter *adapter);
+void rtw_os_indicate_scan_done(struct adapter *padapter, bool aborted);
+void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, u8 *sec_ie);
+
+void rtw_reset_securitypriv(struct adapter *adapter);
+void indicate_wx_scan_complete_event(struct adapter *padapter);
+
+#endif /* _MLME_OSDEP_H_ */
diff --git a/drivers/staging/rtl8188eu/include/mp_custom_oid.h b/drivers/staging/rtl8188eu/include/mp_custom_oid.h
new file mode 100644 (file)
index 0000000..6fa52cf
--- /dev/null
@@ -0,0 +1,352 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef        __CUSTOM_OID_H
+#define __CUSTOM_OID_H
+
+/*  by Owen */
+/*  0xFF818000 - 0xFF81802F            RTL8180 Mass Production Kit */
+/*  0xFF818500 - 0xFF81850F            RTL8185 Setup Utility */
+/*  0xFF818580 - 0xFF81858F            RTL8185 Phy Status Utility */
+
+/*  */
+
+/*  by Owen for Production Kit */
+/*  For Production Kit with Agilent Equipments */
+/*  in order to make our custom oids hopefully somewhat unique */
+/*  we will use 0xFF (indicating implementation specific OID) */
+/*     81(first byte of non zero Realtek unique identifier) */
+/*     80 (second byte of non zero Realtek unique identifier) */
+/*     XX (the custom OID number - providing 255 possible custom oids) */
+
+#define OID_RT_PRO_RESET_DUT                           0xFF818000
+#define OID_RT_PRO_SET_DATA_RATE                       0xFF818001
+#define OID_RT_PRO_START_TEST                          0xFF818002
+#define OID_RT_PRO_STOP_TEST                           0xFF818003
+#define OID_RT_PRO_SET_PREAMBLE                                0xFF818004
+#define OID_RT_PRO_SET_SCRAMBLER                       0xFF818005
+#define OID_RT_PRO_SET_FILTER_BB                       0xFF818006
+#define OID_RT_PRO_SET_MANUAL_DIVERSITY_BB             0xFF818007
+#define OID_RT_PRO_SET_CHANNEL_DIRECT_CALL             0xFF818008
+#define OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL          0xFF818009
+#define OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL           0xFF81800A
+
+#define OID_RT_PRO_SET_TX_ANTENNA_BB                   0xFF81800D
+#define OID_RT_PRO_SET_ANTENNA_BB                      0xFF81800E
+#define OID_RT_PRO_SET_CR_SCRAMBLER                    0xFF81800F
+#define OID_RT_PRO_SET_CR_NEW_FILTER                   0xFF818010
+#define OID_RT_PRO_SET_TX_POWER_CONTROL                        0xFF818011
+#define OID_RT_PRO_SET_CR_TX_CONFIG                    0xFF818012
+#define OID_RT_PRO_GET_TX_POWER_CONTROL                        0xFF818013
+#define OID_RT_PRO_GET_CR_SIGNAL_QUALITY               0xFF818014
+#define OID_RT_PRO_SET_CR_SETPOINT                     0xFF818015
+#define OID_RT_PRO_SET_INTEGRATOR                      0xFF818016
+#define OID_RT_PRO_SET_SIGNAL_QUALITY                  0xFF818017
+#define OID_RT_PRO_GET_INTEGRATOR                      0xFF818018
+#define OID_RT_PRO_GET_SIGNAL_QUALITY                  0xFF818019
+#define OID_RT_PRO_QUERY_EEPROM_TYPE                   0xFF81801A
+#define OID_RT_PRO_WRITE_MAC_ADDRESS                   0xFF81801B
+#define OID_RT_PRO_READ_MAC_ADDRESS                    0xFF81801C
+#define OID_RT_PRO_WRITE_CIS_DATA                      0xFF81801D
+#define OID_RT_PRO_READ_CIS_DATA                       0xFF81801E
+#define OID_RT_PRO_WRITE_POWER_CONTROL                 0xFF81801F
+#define OID_RT_PRO_READ_POWER_CONTROL                  0xFF818020
+#define OID_RT_PRO_WRITE_EEPROM                                0xFF818021
+#define OID_RT_PRO_READ_EEPROM                         0xFF818022
+#define OID_RT_PRO_RESET_TX_PACKET_SENT                        0xFF818023
+#define OID_RT_PRO_QUERY_TX_PACKET_SENT                        0xFF818024
+#define OID_RT_PRO_RESET_RX_PACKET_RECEIVED            0xFF818025
+#define OID_RT_PRO_QUERY_RX_PACKET_RECEIVED            0xFF818026
+#define OID_RT_PRO_QUERY_RX_PACKET_CRC32_ERROR         0xFF818027
+#define OID_RT_PRO_QUERY_CURRENT_ADDRESS               0xFF818028
+#define OID_RT_PRO_QUERY_PERMANENT_ADDRESS             0xFF818029
+#define OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS           0xFF81802A
+#define OID_RT_PRO_RECEIVE_PACKET                      0xFF81802C
+/*  added by Owen on 04/08/03 for Cameo's request */
+#define OID_RT_PRO_WRITE_EEPROM_BYTE                   0xFF81802D
+#define OID_RT_PRO_READ_EEPROM_BYTE                    0xFF81802E
+#define OID_RT_PRO_SET_MODULATION                      0xFF81802F
+/*  */
+
+/* Sean */
+#define OID_RT_DRIVER_OPTION                           0xFF818080
+#define OID_RT_RF_OFF                                  0xFF818081
+#define OID_RT_AUTH_STATUS                             0xFF818082
+
+/*  */
+#define OID_RT_PRO_SET_CONTINUOUS_TX                   0xFF81800B
+#define OID_RT_PRO_SET_SINGLE_CARRIER_TX               0xFF81800C
+#define OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX          0xFF81802B
+#define OID_RT_PRO_SET_SINGLE_TONE_TX                  0xFF818043
+/*  */
+
+
+/*  by Owen for RTL8185 Phy Status Report Utility */
+#define OID_RT_UTILITY_false_ALARM_COUNTERS            0xFF818580
+#define OID_RT_UTILITY_SELECT_DEBUG_MODE               0xFF818581
+#define OID_RT_UTILITY_SELECT_SUBCARRIER_NUMBER                0xFF818582
+#define OID_RT_UTILITY_GET_RSSI_STATUS                 0xFF818583
+#define OID_RT_UTILITY_GET_FRAME_DETECTION_STATUS      0xFF818584
+#define OID_RT_UTILITY_GET_AGC_AND_FREQUENCY_OFFSET_ESTIMATION_STATUS  \
+                                                       0xFF818585
+#define OID_RT_UTILITY_GET_CHANNEL_ESTIMATION_STATUS   0xFF818586
+/*  */
+
+/*  by Owen on 03/09/19-03/09/22 for RTL8185 */
+#define OID_RT_WIRELESS_MODE                           0xFF818500
+#define OID_RT_SUPPORTED_RATES                         0xFF818501
+#define OID_RT_DESIRED_RATES                           0xFF818502
+#define OID_RT_WIRELESS_MODE_STARTING_ADHOC            0xFF818503
+/*  */
+
+#define OID_RT_GET_CONNECT_STATE                       0xFF030001
+#define OID_RT_RESCAN                                  0xFF030002
+#define OID_RT_SET_KEY_LENGTH                          0xFF030003
+#define OID_RT_SET_DEFAULT_KEY_ID                      0xFF030004
+
+#define OID_RT_SET_CHANNEL                             0xFF010182
+#define OID_RT_SET_SNIFFER_MODE                                0xFF010183
+#define OID_RT_GET_SIGNAL_QUALITY                      0xFF010184
+#define OID_RT_GET_SMALL_PACKET_CRC                    0xFF010185
+#define OID_RT_GET_MIDDLE_PACKET_CRC                   0xFF010186
+#define OID_RT_GET_LARGE_PACKET_CRC                    0xFF010187
+#define OID_RT_GET_TX_RETRY                            0xFF010188
+#define OID_RT_GET_RX_RETRY                            0xFF010189
+#define OID_RT_PRO_SET_FW_DIG_STATE                    0xFF01018A/* S */
+#define OID_RT_PRO_SET_FW_RA_STATE                     0xFF01018B/* S */
+
+#define OID_RT_GET_RX_TOTAL_PACKET                     0xFF010190
+#define OID_RT_GET_TX_BEACON_OK                                0xFF010191
+#define OID_RT_GET_TX_BEACON_ERR                       0xFF010192
+#define OID_RT_GET_RX_ICV_ERR                          0xFF010193
+#define OID_RT_SET_ENCRYPTION_ALGORITHM                        0xFF010194
+#define OID_RT_SET_NO_AUTO_RESCAN                      0xFF010195
+#define OID_RT_GET_PREAMBLE_MODE                       0xFF010196
+#define OID_RT_GET_DRIVER_UP_DELTA_TIME                        0xFF010197
+#define OID_RT_GET_AP_IP                               0xFF010198
+#define OID_RT_GET_CHANNELPLAN                         0xFF010199
+#define OID_RT_SET_PREAMBLE_MODE                       0xFF01019A
+#define OID_RT_SET_BCN_INTVL                           0xFF01019B
+#define OID_RT_GET_RF_VENDER                           0xFF01019C
+#define OID_RT_DEDICATE_PROBE                          0xFF01019D
+#define OID_RT_PRO_RX_FILTER_PATTERN                   0xFF01019E
+
+#define OID_RT_GET_DCST_CURRENT_THRESHOLD              0xFF01019F
+
+#define OID_RT_GET_CCA_ERR                             0xFF0101A0
+#define OID_RT_GET_CCA_UPGRADE_THRESHOLD               0xFF0101A1
+#define OID_RT_GET_CCA_FALLBACK_THRESHOLD              0xFF0101A2
+
+#define OID_RT_GET_CCA_UPGRADE_EVALUATE_TIMES          0xFF0101A3
+#define OID_RT_GET_CCA_FALLBACK_EVALUATE_TIMES         0xFF0101A4
+
+/*  by Owen on 03/31/03 for Cameo's request */
+#define OID_RT_SET_RATE_ADAPTIVE                       0xFF0101A5
+/*  */
+#define OID_RT_GET_DCST_EVALUATE_PERIOD                        0xFF0101A5
+#define OID_RT_GET_DCST_TIME_UNIT_INDEX                        0xFF0101A6
+#define OID_RT_GET_TOTAL_TX_BYTES                      0xFF0101A7
+#define OID_RT_GET_TOTAL_RX_BYTES                      0xFF0101A8
+#define OID_RT_CURRENT_TX_POWER_LEVEL                  0xFF0101A9
+#define OID_RT_GET_ENC_KEY_MISMATCH_COUNT              0xFF0101AA
+#define OID_RT_GET_ENC_KEY_MATCH_COUNT                 0xFF0101AB
+#define OID_RT_GET_CHANNEL                             0xFF0101AC
+
+#define OID_RT_SET_CHANNELPLAN                         0xFF0101AD
+#define OID_RT_GET_HARDWARE_RADIO_OFF                  0xFF0101AE
+#define OID_RT_CHANNELPLAN_BY_COUNTRY                  0xFF0101AF
+#define OID_RT_SCAN_AVAILABLE_BSSID                    0xFF0101B0
+#define OID_RT_GET_HARDWARE_VERSION                    0xFF0101B1
+#define OID_RT_GET_IS_ROAMING                          0xFF0101B2
+#define OID_RT_GET_IS_PRIVACY                          0xFF0101B3
+#define OID_RT_GET_KEY_MISMATCH                                0xFF0101B4
+#define OID_RT_SET_RSSI_ROAM_TRAFFIC_TH                        0xFF0101B5
+#define OID_RT_SET_RSSI_ROAM_SIGNAL_TH                 0xFF0101B6
+#define OID_RT_RESET_LOG                               0xFF0101B7
+#define OID_RT_GET_LOG                                 0xFF0101B8
+#define OID_RT_SET_INDICATE_HIDDEN_AP                  0xFF0101B9
+#define OID_RT_GET_HEADER_FAIL                         0xFF0101BA
+#define OID_RT_SUPPORTED_WIRELESS_MODE                 0xFF0101BB
+#define OID_RT_GET_CHANNEL_LIST                                0xFF0101BC
+#define OID_RT_GET_SCAN_IN_PROGRESS                    0xFF0101BD
+#define OID_RT_GET_TX_INFO                             0xFF0101BE
+#define OID_RT_RF_READ_WRITE_OFFSET                    0xFF0101BF
+#define OID_RT_RF_READ_WRITE                           0xFF0101C0
+
+/*  For Netgear request. 2005.01.13, by rcnjko. */
+#define OID_RT_FORCED_DATA_RATE                                0xFF0101C1
+#define OID_RT_WIRELESS_MODE_FOR_SCAN_LIST             0xFF0101C2
+/*  For Netgear request. 2005.02.17, by rcnjko. */
+#define OID_RT_GET_BSS_WIRELESS_MODE                   0xFF0101C3
+/*  For AZ project. 2005.06.27, by rcnjko. */
+#define OID_RT_SCAN_WITH_MAGIC_PACKET                  0xFF0101C4
+
+/*  Vincent 8185MP */
+#define OID_RT_PRO_RX_FILTER                           0xFF0111C0
+
+#define OID_CE_USB_WRITE_REGISTRY                      0xFF0111C1
+#define OID_CE_USB_READ_REGISTRY                       0xFF0111C2
+
+#define OID_RT_PRO_SET_INITIAL_GA                      0xFF0111C3
+#define OID_RT_PRO_SET_BB_RF_STANDBY_MODE              0xFF0111C4
+#define OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE             0xFF0111C5
+#define OID_RT_PRO_SET_TX_CHARGE_PUMP                  0xFF0111C6
+#define OID_RT_PRO_SET_RX_CHARGE_PUMP                  0xFF0111C7
+#define OID_RT_PRO_RF_WRITE_REGISTRY                   0xFF0111C8
+#define OID_RT_PRO_RF_READ_REGISTRY                    0xFF0111C9
+#define OID_RT_PRO_QUERY_RF_TYPE                       0xFF0111CA
+
+/*  AP OID */
+#define OID_RT_AP_GET_ASSOCIATED_STATION_LIST          0xFF010300
+#define OID_RT_AP_GET_CURRENT_TIME_STAMP               0xFF010301
+#define OID_RT_AP_SWITCH_INTO_AP_MODE                  0xFF010302
+#define OID_RT_AP_SET_DTIM_PERIOD                      0xFF010303
+/*  Determine if driver supports AP mode. */
+#define OID_RT_AP_SUPPORTED                            0xFF010304
+/*  Set WPA-PSK passphrase into authenticator. */
+#define OID_RT_AP_SET_PASSPHRASE                       0xFF010305
+
+/*  8187MP. 2004.09.06, by rcnjko. */
+#define OID_RT_PRO8187_WI_POLL                         0xFF818780
+#define OID_RT_PRO_WRITE_BB_REG                                0xFF818781
+#define OID_RT_PRO_READ_BB_REG                         0xFF818782
+#define OID_RT_PRO_WRITE_RF_REG                                0xFF818783
+#define OID_RT_PRO_READ_RF_REG                         0xFF818784
+
+/*  Meeting House. added by Annie, 2005-07-20. */
+#define OID_RT_MH_VENDER_ID                            0xFFEDC100
+
+/* 8711 MP OID added 20051230. */
+#define OID_RT_PRO8711_JOIN_BSS                                0xFF871100/* S */
+
+#define OID_RT_PRO_READ_REGISTER                       0xFF871101 /* Q */
+#define OID_RT_PRO_WRITE_REGISTER                      0xFF871102 /* S */
+
+#define OID_RT_PRO_BURST_READ_REGISTER                 0xFF871103 /* Q */
+#define OID_RT_PRO_BURST_WRITE_REGISTER                        0xFF871104 /* S */
+
+#define OID_RT_PRO_WRITE_TXCMD                         0xFF871105 /* S */
+
+#define OID_RT_PRO_READ16_EEPROM                       0xFF871106 /* Q */
+#define OID_RT_PRO_WRITE16_EEPROM                      0xFF871107 /* S */
+
+#define OID_RT_PRO_H2C_SET_COMMAND                     0xFF871108 /* S */
+#define OID_RT_PRO_H2C_QUERY_RESULT                    0xFF871109 /* Q */
+
+#define OID_RT_PRO8711_WI_POLL                         0xFF87110A /* Q */
+#define OID_RT_PRO8711_PKT_LOSS                                0xFF87110B /* Q */
+#define OID_RT_RD_ATTRIB_MEM                           0xFF87110C/* Q */
+#define OID_RT_WR_ATTRIB_MEM                           0xFF87110D/* S */
+
+
+/* Method 2 for H2C/C2H */
+#define OID_RT_PRO_H2C_CMD_MODE                                0xFF871110 /* S */
+#define OID_RT_PRO_H2C_CMD_RSP_MODE                    0xFF871111 /* Q */
+#define OID_RT_PRO_H2C_CMD_EVENT_MODE                  0xFF871112 /* S */
+#define OID_RT_PRO_WAIT_C2H_EVENT                      0xFF871113 /* Q */
+#define OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST             0xFF871114/* Q */
+
+#define OID_RT_PRO_SCSI_ACCESS_TEST                    0xFF871115 /* Q, S */
+
+#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT               0xFF871116 /* S */
+#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN                        0xFF871117 /* Q,S */
+#define OID_RT_RRO_RX_PKT_VIA_IOCTRL                   0xFF871118 /* Q */
+#define OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL              0xFF871119 /* Q */
+
+#define OID_RT_RPO_SET_PWRMGT_TEST                     0xFF87111A /* S */
+#define OID_RT_PRO_QRY_PWRMGT_TEST                     0XFF87111B /* Q */
+#define OID_RT_RPO_ASYNC_RWIO_TEST                     0xFF87111C /* S */
+#define OID_RT_RPO_ASYNC_RWIO_POLL                     0xFF87111D /* Q */
+#define OID_RT_PRO_SET_RF_INTFS                                0xFF87111E /* S */
+#define OID_RT_POLL_RX_STATUS                          0xFF87111F /* Q */
+
+#define OID_RT_PRO_CFG_DEBUG_MESSAGE                   0xFF871120 /* Q,S */
+#define OID_RT_PRO_SET_DATA_RATE_EX                    0xFF871121/* S */
+#define OID_RT_PRO_SET_BASIC_RATE                      0xFF871122/* S */
+#define OID_RT_PRO_READ_TSSI                           0xFF871123/* S */
+#define OID_RT_PRO_SET_POWER_TRACKING                  0xFF871124/* S */
+
+
+#define OID_RT_PRO_QRY_PWRSTATE                                0xFF871150 /* Q */
+#define OID_RT_PRO_SET_PWRSTATE                                0xFF871151 /* S */
+
+/* Method 2 , using workitem */
+#define OID_RT_SET_READ_REG                            0xFF871181 /* S */
+#define OID_RT_SET_WRITE_REG                           0xFF871182 /* S */
+#define OID_RT_SET_BURST_READ_REG                      0xFF871183 /* S */
+#define OID_RT_SET_BURST_WRITE_REG                     0xFF871184 /* S */
+#define OID_RT_SET_WRITE_TXCMD                         0xFF871185 /* S */
+#define OID_RT_SET_READ16_EEPROM                       0xFF871186 /* S */
+#define OID_RT_SET_WRITE16_EEPROM                      0xFF871187 /* S */
+#define OID_RT_QRY_POLL_WKITEM                         0xFF871188 /* Q */
+
+/* For SDIO INTERFACE only */
+#define OID_RT_PRO_SYNCPAGERW_SRAM                     0xFF8711A0 /* Q, S */
+#define OID_RT_PRO_871X_DRV_EXT                                0xFF8711A1
+
+/* For USB INTERFACE only */
+#define OID_RT_PRO_USB_VENDOR_REQ                      0xFF8711B0 /* Q, S */
+#define OID_RT_PRO_SCSI_AUTO_TEST                      0xFF8711B1 /* S */
+#define OID_RT_PRO_USB_MAC_AC_FIFO_WRITE               0xFF8711B2 /* S */
+#define OID_RT_PRO_USB_MAC_RX_FIFO_READ                        0xFF8711B3 /* Q */
+#define OID_RT_PRO_USB_MAC_RX_FIFO_POLLING             0xFF8711B4 /* Q */
+
+#define OID_RT_PRO_H2C_SET_RATE_TABLE                  0xFF8711FB /* S */
+#define OID_RT_PRO_H2C_GET_RATE_TABLE                  0xFF8711FC /* S */
+#define OID_RT_PRO_H2C_C2H_LBK_TEST                    0xFF8711FE
+
+#define OID_RT_PRO_ENCRYPTION_CTRL                     0xFF871200 /* Q, S */
+#define OID_RT_PRO_ADD_STA_INFO                                0xFF871201 /* S */
+#define OID_RT_PRO_DELE_STA_INFO                       0xFF871202 /* S */
+#define OID_RT_PRO_QUERY_DR_VARIABLE                   0xFF871203 /* Q */
+
+#define OID_RT_PRO_RX_PACKET_TYPE                      0xFF871204 /* Q, S */
+
+#define OID_RT_PRO_READ_EFUSE                          0xFF871205 /* Q */
+#define OID_RT_PRO_WRITE_EFUSE                         0xFF871206 /* S */
+#define OID_RT_PRO_RW_EFUSE_PGPKT                      0xFF871207 /* Q, S */
+#define OID_RT_GET_EFUSE_CURRENT_SIZE                  0xFF871208 /* Q */
+
+#define OID_RT_SET_BANDWIDTH                           0xFF871209 /* S */
+#define OID_RT_SET_CRYSTAL_CAP                         0xFF87120A /* S */
+
+#define OID_RT_SET_RX_PACKET_TYPE                      0xFF87120B /* S */
+
+#define OID_RT_GET_EFUSE_MAX_SIZE                      0xFF87120C /* Q */
+
+#define OID_RT_PRO_SET_TX_AGC_OFFSET                   0xFF87120D /* S */
+
+#define OID_RT_PRO_SET_PKT_TEST_MODE                   0xFF87120E /* S */
+
+#define OID_RT_PRO_FOR_EVM_TEST_SETTING                        0xFF87120F /* S */
+
+#define OID_RT_PRO_GET_THERMAL_METER                   0xFF871210 /* Q */
+
+#define OID_RT_RESET_PHY_RX_PACKET_COUNT               0xFF871211 /* S */
+#define OID_RT_GET_PHY_RX_PACKET_RECEIVED              0xFF871212 /* Q */
+#define OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR           0xFF871213 /* Q */
+
+#define OID_RT_SET_POWER_DOWN                          0xFF871214 /* S */
+
+#define OID_RT_GET_POWER_MODE                          0xFF871215 /* Q */
+
+#define OID_RT_PRO_EFUSE                               0xFF871216 /* Q, S */
+#define OID_RT_PRO_EFUSE_MAP                           0xFF871217 /* Q, S */
+
+#endif /* ifndef       __CUSTOM_OID_H */
diff --git a/drivers/staging/rtl8188eu/include/nic_spec.h b/drivers/staging/rtl8188eu/include/nic_spec.h
new file mode 100644 (file)
index 0000000..d422447
--- /dev/null
@@ -0,0 +1,44 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+
+
+#ifndef __NIC_SPEC_H__
+#define __NIC_SPEC_H__
+
+#define RTL8711_MCTRL_         (0x20000)
+#define RTL8711_UART_          (0x30000)
+#define RTL8711_TIMER_         (0x40000)
+#define RTL8711_FINT_          (0x50000)
+#define RTL8711_HINT_          (0x50000)
+#define RTL8711_GPIO_          (0x60000)
+#define RTL8711_WLANCTRL_      (0x200000)
+#define RTL8711_WLANFF_                (0xe00000)
+#define RTL8711_HCICTRL_       (0x600000)
+#define RTL8711_SYSCFG_                (0x620000)
+#define RTL8711_SYSCTRL_       (0x620000)
+#define RTL8711_MCCTRL_                (0x020000)
+
+
+#include <rtl8711_regdef.h>
+
+#include <rtl8711_bitdef.h>
+
+
+#endif /*  __RTL8711_SPEC_H__ */