]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
staging: r8188eu: Add files for new driver - part 26
authorLarry Finger <Larry.Finger@lwfinger.net>
Thu, 22 Aug 2013 03:34:08 +0000 (22:34 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Aug 2013 17:20:12 +0000 (10:20 -0700)
This commit adds files include/rtw_android.h, include/rtw_ap.h,
include/rtw_br_ext.h, include/rtw_cmd.h, include/rtw_debug.h,
include/rtw_eeprom.h, include/rtw_efuse.h, and include/rtw_event.h.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/include/rtw_android.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_ap.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_br_ext.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_cmd.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_debug.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_eeprom.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_efuse.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/rtw_event.h [new file with mode: 0644]

diff --git a/drivers/staging/rtl8188eu/include/rtw_android.h b/drivers/staging/rtl8188eu/include/rtw_android.h
new file mode 100644 (file)
index 0000000..e85bf1f
--- /dev/null
@@ -0,0 +1,64 @@
+/******************************************************************************
+ *
+ * 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 __RTW_ANDROID_H__
+#define __RTW_ANDROID_H__
+
+#include <linux/module.h>
+#include <linux/netdevice.h>
+
+enum ANDROID_WIFI_CMD {
+       ANDROID_WIFI_CMD_START,
+       ANDROID_WIFI_CMD_STOP,
+       ANDROID_WIFI_CMD_SCAN_ACTIVE,
+       ANDROID_WIFI_CMD_SCAN_PASSIVE,
+       ANDROID_WIFI_CMD_RSSI,
+       ANDROID_WIFI_CMD_LINKSPEED,
+       ANDROID_WIFI_CMD_RXFILTER_START,
+       ANDROID_WIFI_CMD_RXFILTER_STOP,
+       ANDROID_WIFI_CMD_RXFILTER_ADD,
+       ANDROID_WIFI_CMD_RXFILTER_REMOVE,
+       ANDROID_WIFI_CMD_BTCOEXSCAN_START,
+       ANDROID_WIFI_CMD_BTCOEXSCAN_STOP,
+       ANDROID_WIFI_CMD_BTCOEXMODE,
+       ANDROID_WIFI_CMD_SETSUSPENDOPT,
+       ANDROID_WIFI_CMD_P2P_DEV_ADDR,
+       ANDROID_WIFI_CMD_SETFWPATH,
+       ANDROID_WIFI_CMD_SETBAND,
+       ANDROID_WIFI_CMD_GETBAND,
+       ANDROID_WIFI_CMD_COUNTRY,
+       ANDROID_WIFI_CMD_P2P_SET_NOA,
+       ANDROID_WIFI_CMD_P2P_GET_NOA,
+       ANDROID_WIFI_CMD_P2P_SET_PS,
+       ANDROID_WIFI_CMD_SET_AP_WPS_P2P_IE,
+       ANDROID_WIFI_CMD_MACADDR,
+       ANDROID_WIFI_CMD_BLOCK,
+       ANDROID_WIFI_CMD_WFD_ENABLE,
+       ANDROID_WIFI_CMD_WFD_DISABLE,
+       ANDROID_WIFI_CMD_WFD_SET_TCPPORT,
+       ANDROID_WIFI_CMD_WFD_SET_MAX_TPUT,
+       ANDROID_WIFI_CMD_WFD_SET_DEVTYPE,
+       ANDROID_WIFI_CMD_MAX
+};
+
+int rtw_android_cmdstr_to_num(char *cmdstr);
+int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd);
+
+#endif /* __RTW_ANDROID_H__ */
diff --git a/drivers/staging/rtl8188eu/include/rtw_ap.h b/drivers/staging/rtl8188eu/include/rtw_ap.h
new file mode 100644 (file)
index 0000000..9233401
--- /dev/null
@@ -0,0 +1,65 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2012 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 __RTW_AP_H_
+#define __RTW_AP_H_
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+#ifdef CONFIG_88EU_AP_MODE
+
+/* external function */
+void rtw_indicate_sta_assoc_event(struct adapter *padapter,
+                                 struct sta_info *psta);
+void rtw_indicate_sta_disassoc_event(struct adapter *padapter,
+                                    struct sta_info *psta);
+void init_mlme_ap_info(struct adapter *padapter);
+void free_mlme_ap_info(struct adapter *padapter);
+void rtw_add_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork,
+                   u8 index, u8 *data, u8 len);
+void rtw_remove_bcn_ie(struct adapter *padapter,
+                      struct wlan_bssid_ex *pnetwork, u8 index);
+void update_beacon(struct adapter *padapter, u8 ie_id,
+                  u8 *oui, u8 tx);
+void add_RATid(struct adapter *padapter, struct sta_info *psta,
+              u8 rssi_level);
+void expire_timeout_chk(struct adapter *padapter);
+void update_sta_info_apmode(struct adapter *padapter, struct sta_info *psta);
+int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf,  int len);
+void rtw_set_macaddr_acl(struct adapter *padapter, int mode);
+int rtw_acl_add_sta(struct adapter *padapter, u8 *addr);
+int rtw_acl_remove_sta(struct adapter *padapter, u8 *addr);
+
+#ifdef CONFIG_88EU_AP_MODE
+void associated_clients_update(struct adapter *padapter, u8 updated);
+void bss_cap_update_on_sta_join(struct adapter *padapter, struct sta_info *psta);
+u8 bss_cap_update_on_sta_leave(struct adapter *padapter, struct sta_info *psta);
+void sta_info_update(struct adapter *padapter, struct sta_info *psta);
+void ap_sta_info_defer_update(struct adapter *padapter, struct sta_info *psta);
+u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta,
+              bool active, u16 reason);
+int rtw_sta_flush(struct adapter *padapter);
+int rtw_ap_inform_ch_switch(struct adapter *padapter, u8 new_ch, u8 ch_offset);
+void start_ap_mode(struct adapter *padapter);
+void stop_ap_mode(struct adapter *padapter);
+#endif
+#endif /* end of CONFIG_88EU_AP_MODE */
+
+#endif
diff --git a/drivers/staging/rtl8188eu/include/rtw_br_ext.h b/drivers/staging/rtl8188eu/include/rtw_br_ext.h
new file mode 100644 (file)
index 0000000..f21e7a4
--- /dev/null
@@ -0,0 +1,66 @@
+/******************************************************************************
+ *
+ * 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 _RTW_BR_EXT_H_
+#define _RTW_BR_EXT_H_
+
+#define MACADDRLEN             6
+#define _DEBUG_ERR             DBG_88E
+#define _DEBUG_INFO            DBG_88E
+#define DEBUG_WARN             DBG_88E
+#define DEBUG_INFO             DBG_88E
+#define DEBUG_ERR              DBG_88E
+#define GET_MY_HWADDR(padapter)                ((padapter)->eeprompriv.mac_addr)
+
+#define NAT25_HASH_BITS                4
+#define NAT25_HASH_SIZE                (1 << NAT25_HASH_BITS)
+#define NAT25_AGEING_TIME      300
+
+#define MAX_NETWORK_ADDR_LEN   17
+
+struct nat25_network_db_entry {
+       struct nat25_network_db_entry   *next_hash;
+       struct nat25_network_db_entry   **pprev_hash;
+       atomic_t        use_count;
+       unsigned char   macAddr[6];
+       unsigned long   ageing_timer;
+       unsigned char   networkAddr[MAX_NETWORK_ADDR_LEN];
+};
+
+enum NAT25_METHOD {
+       NAT25_MIN,
+       NAT25_CHECK,
+       NAT25_INSERT,
+       NAT25_LOOKUP,
+       NAT25_PARSE,
+       NAT25_MAX
+};
+
+struct br_ext_info {
+       unsigned int    nat25_disable;
+       unsigned int    macclone_enable;
+       unsigned int    dhcp_bcst_disable;
+       int     addPPPoETag;            /* 1: Add PPPoE relay-SID, 0: disable */
+       unsigned char   nat25_dmzMac[MACADDRLEN];
+       unsigned int    nat25sc_disable;
+};
+
+void nat25_db_cleanup(struct adapter *priv);
+
+#endif /*  _RTW_BR_EXT_H_ */
diff --git a/drivers/staging/rtl8188eu/include/rtw_cmd.h b/drivers/staging/rtl8188eu/include/rtw_cmd.h
new file mode 100644 (file)
index 0000000..819285b
--- /dev/null
@@ -0,0 +1,991 @@
+/******************************************************************************
+ *
+ * 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 __RTW_CMD_H_
+#define __RTW_CMD_H_
+
+#include <wlan_bssdef.h>
+#include <rtw_rf.h>
+#include <rtw_led.h>
+
+#define C2H_MEM_SZ (16*1024)
+
+#include <osdep_service.h>
+#include <ieee80211.h> /*  <ieee80211/ieee80211.h> */
+
+#define FREE_CMDOBJ_SZ 128
+
+#define MAX_CMDSZ      1024
+#define MAX_RSPSZ      512
+#define MAX_EVTSZ      1024
+
+#define CMDBUFF_ALIGN_SZ 512
+
+struct cmd_obj {
+       struct adapter *padapter;
+       u16     cmdcode;
+       u8      res;
+       u8      *parmbuf;
+       u32     cmdsz;
+       u8      *rsp;
+       u32     rspsz;
+       struct list_head list;
+};
+
+struct cmd_priv {
+       struct semaphore cmd_queue_sema;
+       struct semaphore terminate_cmdthread_sema;
+       struct __queue cmd_queue;
+       u8      cmd_seq;
+       u8      *cmd_buf;       /* shall be non-paged, and 4 bytes aligned */
+       u8      *cmd_allocated_buf;
+       u8      *rsp_buf;       /* shall be non-paged, and 4 bytes aligned */
+       u8      *rsp_allocated_buf;
+       u32     cmd_issued_cnt;
+       u32     cmd_done_cnt;
+       u32     rsp_cnt;
+       u8 cmdthd_running;
+       struct adapter *padapter;
+};
+
+struct evt_priv {
+       struct work_struct c2h_wk;
+       bool c2h_wk_alive;
+       struct rtw_cbuf *c2h_queue;
+       #define C2H_QUEUE_MAX_LEN 10
+       ATOMIC_T event_seq;
+       u8      *evt_buf;       /* shall be non-paged, and 4 bytes aligned */
+       u8      *evt_allocated_buf;
+       u32     evt_done_cnt;
+};
+
+#define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
+do {\
+       _rtw_init_listhead(&pcmd->list);\
+       pcmd->cmdcode = code;\
+       pcmd->parmbuf = (u8 *)(pparm);\
+       pcmd->cmdsz = sizeof(*pparm);\
+       pcmd->rsp = NULL;\
+       pcmd->rspsz = 0;\
+} while (0)
+
+struct c2h_evt_hdr {
+       u8 id:4;
+       u8 plen:4;
+       u8 seq;
+       u8 payload[0];
+};
+
+#define c2h_evt_exist(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen)
+
+u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
+struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv);
+void rtw_free_cmd_obj(struct cmd_obj *pcmd);
+
+int rtw_cmd_thread(void *context);
+
+u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv);
+void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv);
+
+u32 rtw_init_evt_priv(struct evt_priv *pevtpriv);
+void rtw_free_evt_priv(struct evt_priv *pevtpriv);
+void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv);
+void rtw_evt_notify_isr(struct evt_priv *pevtpriv);
+#ifdef CONFIG_88EU_P2P
+u8 p2p_protocol_wk_cmd(struct adapter *padapter, int intCmdType);
+#endif /* CONFIG_88EU_P2P */
+
+enum rtw_drvextra_cmd_id {
+       NONE_WK_CID,
+       DYNAMIC_CHK_WK_CID,
+       DM_CTRL_WK_CID,
+       PBC_POLLING_WK_CID,
+       POWER_SAVING_CTRL_WK_CID,/* IPS,AUTOSuspend */
+       LPS_CTRL_WK_CID,
+       ANT_SELECT_WK_CID,
+       P2P_PS_WK_CID,
+       P2P_PROTO_WK_CID,
+       CHECK_HIQ_WK_CID,/* for softap mode, check hi queue if empty */
+       INTEl_WIDI_WK_CID,
+       C2H_WK_CID,
+       RTP_TIMER_CFG_WK_CID,
+       MAX_WK_CID
+};
+
+enum LPS_CTRL_TYPE {
+       LPS_CTRL_SCAN = 0,
+       LPS_CTRL_JOINBSS = 1,
+       LPS_CTRL_CONNECT = 2,
+       LPS_CTRL_DISCONNECT = 3,
+       LPS_CTRL_SPECIAL_PACKET = 4,
+       LPS_CTRL_LEAVE = 5,
+};
+
+enum RFINTFS {
+       SWSI,
+       HWSI,
+       HWPI,
+};
+
+/*
+Caller Mode: Infra, Ad-HoC(C)
+
+Notes: To enter USB suspend mode
+
+Command Mode
+
+*/
+struct usb_suspend_parm {
+       u32 action;/*  1: sleep, 0:resume */
+};
+
+/*
+Caller Mode: Infra, Ad-HoC
+
+Notes: To join a known BSS.
+
+Command-Event Mode
+
+*/
+
+/*
+Caller Mode: Infra, Ad-Hoc
+
+Notes: To join the specified bss
+
+Command Event Mode
+
+*/
+struct joinbss_parm {
+       struct wlan_bssid_ex network;
+};
+
+/*
+Caller Mode: Infra, Ad-HoC(C)
+
+Notes: To disconnect the current associated BSS
+
+Command Mode
+
+*/
+struct disconnect_parm {
+       u32 deauth_timeout_ms;
+};
+
+/*
+Caller Mode: AP, Ad-HoC(M)
+
+Notes: To create a BSS
+
+Command Mode
+*/
+struct createbss_parm {
+       struct wlan_bssid_ex network;
+};
+
+struct setopmode_parm {
+       u8      mode;
+       u8      rsvd[3];
+};
+
+/*
+Caller Mode: AP, Ad-HoC, Infra
+
+Notes: To ask RTL8711 performing site-survey
+
+Command-Event Mode
+
+*/
+
+#define RTW_SSID_SCAN_AMOUNT 9 /*  for WEXT_CSCAN_AMOUNT 9 */
+#define RTW_CHANNEL_SCAN_AMOUNT (14+37)
+struct sitesurvey_parm {
+       int scan_mode;  /* active: 1, passive: 0 */
+       u8 ssid_num;
+       u8 ch_num;
+       struct ndis_802_11_ssid ssid[RTW_SSID_SCAN_AMOUNT];
+       struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
+};
+
+/*
+Caller Mode: Any
+
+Notes: To set the auth type of RTL8711. open/shared/802.1x
+
+Command Mode
+
+*/
+struct setauth_parm {
+       u8 mode;  /* 0: legacy open, 1: legacy shared 2: 802.1x */
+       u8 _1x;   /* 0: PSK, 1: TLS */
+       u8 rsvd[2];
+};
+
+/*
+Caller Mode: Infra
+
+a. algorithm: wep40, wep104, tkip & aes
+b. keytype: grp key/unicast key
+c. key contents
+
+when shared key ==> keyid is the camid
+when 802.1x ==> keyid [0:1] ==> grp key
+when 802.1x ==> keyid > 2 ==> unicast key
+
+*/
+struct setkey_parm {
+       u8      algorithm;      /* could be none, wep40, TKIP, CCMP, wep104 */
+       u8      keyid;
+       u8      grpkey;         /* 1: this is the grpkey for 802.1x.
+                                * 0: this is the unicast key for 802.1x */
+       u8      set_tx;         /* 1: main tx key for wep. 0: other key. */
+       u8      key[16];        /* this could be 40 or 104 */
+};
+
+/*
+When in AP or Ad-Hoc mode, this is used to
+allocate an sw/hw entry for a newly associated sta.
+
+Command
+
+when shared key ==> algorithm/keyid
+
+*/
+struct set_stakey_parm {
+       u8      addr[ETH_ALEN];
+       u8      algorithm;
+       u8      id;/* currently for erasing cam entry if
+                   * algorithm == _NO_PRIVACY_ */
+       u8      key[16];
+};
+
+struct set_stakey_rsp {
+       u8      addr[ETH_ALEN];
+       u8      keyid;
+       u8      rsvd;
+};
+
+/*
+Caller Ad-Hoc/AP
+
+Command -Rsp(AID == CAMID) mode
+
+This is to force fw to add an sta_data entry per driver's request.
+
+FW will write an cam entry associated with it.
+
+*/
+struct set_assocsta_parm {
+       u8      addr[ETH_ALEN];
+};
+
+struct set_assocsta_rsp {
+       u8      cam_id;
+       u8      rsvd[3];
+};
+
+/*
+       Caller Ad-Hoc/AP
+
+       Command mode
+
+       This is to force fw to del an sta_data entry per driver's request
+
+       FW will invalidate the cam entry associated with it.
+
+*/
+struct del_assocsta_parm {
+       u8      addr[ETH_ALEN];
+};
+
+/*
+Caller Mode: AP/Ad-HoC(M)
+
+Notes: To notify fw that given staid has changed its power state
+
+Command Mode
+
+*/
+struct setstapwrstate_parm {
+       u8      staid;
+       u8      status;
+       u8      hwaddr[6];
+};
+
+/*
+Caller Mode: Any
+
+Notes: To setup the basic rate of RTL8711
+
+Command Mode
+
+*/
+struct setbasicrate_parm {
+       u8      basicrates[NumRates];
+};
+
+/*
+Caller Mode: Any
+
+Notes: To read the current basic rate
+
+Command-Rsp Mode
+
+*/
+struct getbasicrate_parm {
+       u32 rsvd;
+};
+
+struct getbasicrate_rsp {
+       u8 basicrates[NumRates];
+};
+
+/*
+Caller Mode: Any
+
+Notes: To setup the data rate of RTL8711
+
+Command Mode
+
+*/
+struct setdatarate_parm {
+       u8      mac_id;
+       u8      datarates[NumRates];
+};
+
+/*
+Caller Mode: Any
+
+Notes: To read the current data rate
+
+Command-Rsp Mode
+
+*/
+struct getdatarate_parm {
+       u32 rsvd;
+
+};
+struct getdatarate_rsp {
+       u8 datarates[NumRates];
+};
+
+/*
+Caller Mode: Any
+AP: AP can use the info for the contents of beacon frame
+Infra: STA can use the info when sitesurveying
+Ad-HoC(M): Like AP
+Ad-HoC(C): Like STA
+
+Notes: To set the phy capability of the NIC
+
+Command Mode
+
+*/
+
+struct setphyinfo_parm {
+       struct regulatory_class class_sets[NUM_REGULATORYS];
+       u8      status;
+};
+
+struct getphyinfo_parm {
+       u32 rsvd;
+};
+
+struct getphyinfo_rsp {
+       struct regulatory_class class_sets[NUM_REGULATORYS];
+       u8      status;
+};
+
+/*
+Caller Mode: Any
+
+Notes: To set the channel/modem/band
+This command will be used when channel/modem/band is changed.
+
+Command Mode
+
+*/
+struct setphy_parm {
+       u8      rfchannel;
+       u8      modem;
+};
+
+/*
+Caller Mode: Any
+
+Notes: To get the current setting of channel/modem/band
+
+Command-Rsp Mode
+
+*/
+struct getphy_parm {
+       u32 rsvd;
+
+};
+struct getphy_rsp {
+       u8      rfchannel;
+       u8      modem;
+};
+
+struct readBB_parm {
+       u8      offset;
+};
+struct readBB_rsp {
+       u8      value;
+};
+
+struct readTSSI_parm {
+       u8      offset;
+};
+struct readTSSI_rsp {
+       u8      value;
+};
+
+struct writeBB_parm {
+       u8      offset;
+       u8      value;
+};
+
+struct readRF_parm {
+       u8      offset;
+};
+struct readRF_rsp {
+       u32     value;
+};
+
+struct writeRF_parm {
+       u32     offset;
+       u32     value;
+};
+
+struct getrfintfs_parm {
+       u8      rfintfs;
+};
+
+struct Tx_Beacon_param
+{
+       struct wlan_bssid_ex network;
+};
+
+/*
+       Notes: This command is used for H2C/C2H loopback testing
+
+       mac[0] == 0
+       ==> CMD mode, return H2C_SUCCESS.
+       The following condition must be ture under CMD mode
+               mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
+               s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
+               s2 == (b1 << 8 | b0);
+
+       mac[0] == 1
+       ==> CMD_RSP mode, return H2C_SUCCESS_RSP
+
+       The rsp layout shall be:
+       rsp:                    parm:
+               mac[0]  =   mac[5];
+               mac[1]  =   mac[4];
+               mac[2]  =   mac[3];
+               mac[3]  =   mac[2];
+               mac[4]  =   mac[1];
+               mac[5]  =   mac[0];
+               s0              =   s1;
+               s1              =   swap16(s0);
+               w0              =       swap32(w1);
+               b0              =       b1
+               s2              =       s0 + s1
+               b1              =       b0
+               w1              =       w0
+
+       mac[0] ==       2
+       ==> CMD_EVENT mode, return      H2C_SUCCESS
+       The event layout shall be:
+       event:                  parm:
+               mac[0]  =   mac[5];
+               mac[1]  =   mac[4];
+               mac[2]  =   event's seq no, starting from 1 to parm's marc[3]
+               mac[3]  =   mac[2];
+               mac[4]  =   mac[1];
+               mac[5]  =   mac[0];
+               s0              =   swap16(s0) - event.mac[2];
+               s1              =   s1 + event.mac[2];
+               w0              =       swap32(w0);
+               b0              =       b1
+               s2              =       s0 + event.mac[2]
+               b1              =       b0
+               w1              =       swap32(w1) - event.mac[2];
+
+               parm->mac[3] is the total event counts that host requested.
+       event will be the same with the cmd's param.
+*/
+
+/*  CMD param Format for driver extra cmd handler */
+struct drvextra_cmd_parm {
+       int ec_id; /* extra cmd id */
+       int type_size; /*  Can use this field as the type id or command size */
+       unsigned char *pbuf;
+};
+
+/*------------------- Below are used for RF/BB tunning ---------------------*/
+
+struct setantenna_parm {
+       u8      tx_antset;
+       u8      rx_antset;
+       u8      tx_antenna;
+       u8      rx_antenna;
+};
+
+struct enrateadaptive_parm {
+       u32     en;
+};
+
+struct settxagctbl_parm {
+       u32     txagc[MAX_RATES_LENGTH];
+};
+
+struct gettxagctbl_parm {
+       u32 rsvd;
+};
+struct gettxagctbl_rsp {
+       u32     txagc[MAX_RATES_LENGTH];
+};
+
+struct setagcctrl_parm {
+       u32     agcctrl;                /*  0: pure hw, 1: fw */
+};
+
+struct setssup_parm    {
+       u32     ss_ForceUp[MAX_RATES_LENGTH];
+};
+
+struct getssup_parm    {
+       u32 rsvd;
+};
+
+struct getssup_rsp     {
+       u8      ss_ForceUp[MAX_RATES_LENGTH];
+};
+
+struct setssdlevel_parm        {
+       u8      ss_DLevel[MAX_RATES_LENGTH];
+};
+
+struct getssdlevel_parm        {
+       u32 rsvd;
+};
+
+struct getssdlevel_rsp {
+       u8      ss_DLevel[MAX_RATES_LENGTH];
+};
+
+struct setssulevel_parm        {
+       u8      ss_ULevel[MAX_RATES_LENGTH];
+};
+
+struct getssulevel_parm        {
+       u32 rsvd;
+};
+
+struct getssulevel_rsp {
+       u8      ss_ULevel[MAX_RATES_LENGTH];
+};
+
+struct setcountjudge_parm {
+       u8      count_judge[MAX_RATES_LENGTH];
+};
+
+struct getcountjudge_parm {
+       u32 rsvd;
+};
+
+struct getcountjudge_rsp {
+       u8      count_judge[MAX_RATES_LENGTH];
+};
+
+struct setratable_parm {
+       u8 ss_ForceUp[NumRates];
+       u8 ss_ULevel[NumRates];
+       u8 ss_DLevel[NumRates];
+       u8 count_judge[NumRates];
+};
+
+struct getratable_parm {
+                uint rsvd;
+};
+
+struct getratable_rsp {
+        u8 ss_ForceUp[NumRates];
+        u8 ss_ULevel[NumRates];
+        u8 ss_DLevel[NumRates];
+        u8 count_judge[NumRates];
+};
+
+/* to get TX,RX retry count */
+
+struct gettxretrycnt_parm {
+       unsigned int rsvd;
+};
+
+struct gettxretrycnt_rsp {
+       unsigned long tx_retrycnt;
+};
+
+struct getrxretrycnt_parm {
+       unsigned int rsvd;
+};
+
+struct getrxretrycnt_rsp {
+       unsigned long rx_retrycnt;
+};
+
+/* to get BCNOK,BCNERR count */
+struct getbcnokcnt_parm {
+       unsigned int rsvd;
+};
+
+struct getbcnokcnt_rsp {
+       unsigned long  bcnokcnt;
+};
+
+struct getbcnerrcnt_parm {
+       unsigned int rsvd;
+};
+
+struct getbcnerrcnt_rsp {
+       unsigned long bcnerrcnt;
+};
+
+/*  to get current TX power level */
+struct getcurtxpwrlevel_parm {
+       unsigned int rsvd;
+};
+struct getcurtxpwrlevel_rspi {
+       unsigned short tx_power;
+};
+
+struct setprobereqextraie_parm {
+       unsigned char e_id;
+       unsigned char ie_len;
+       unsigned char ie[0];
+};
+
+struct setassocreqextraie_parm {
+       unsigned char e_id;
+       unsigned char ie_len;
+       unsigned char ie[0];
+};
+
+struct setproberspextraie_parm {
+       unsigned char e_id;
+       unsigned char ie_len;
+       unsigned char ie[0];
+};
+
+struct setassocrspextraie_parm {
+       unsigned char e_id;
+       unsigned char ie_len;
+       unsigned char ie[0];
+};
+
+struct addBaReq_parm {
+       unsigned int tid;
+       u8      addr[ETH_ALEN];
+};
+
+/*H2C Handler index: 46 */
+struct set_ch_parm {
+       u8 ch;
+       u8 bw;
+       u8 ch_offset;
+};
+
+/*H2C Handler index: 59 */
+struct SetChannelPlan_param
+{
+       u8 channel_plan;
+};
+
+/*H2C Handler index: 60 */
+struct LedBlink_param
+{
+       struct LED_871x *pLed;
+};
+
+/*H2C Handler index: 61 */
+struct SetChannelSwitch_param
+{
+       u8 new_ch_no;
+};
+
+/*H2C Handler index: 62 */
+struct TDLSoption_param
+{
+       u8 addr[ETH_ALEN];
+       u8 option;
+};
+
+#define GEN_CMD_CODE(cmd)      cmd ## _CMD_
+
+/*
+
+Result:
+0x00: success
+0x01: sucess, and check Response.
+0x02: cmd ignored due to duplicated sequcne number
+0x03: cmd dropped due to invalid cmd code
+0x04: reserved.
+
+*/
+
+#define H2C_RSP_OFFSET         512
+
+#define H2C_SUCCESS            0x00
+#define H2C_SUCCESS_RSP                0x01
+#define H2C_DUPLICATED         0x02
+#define H2C_DROPPED            0x03
+#define H2C_PARAMETERS_ERROR   0x04
+#define H2C_REJECTED           0x05
+#define H2C_CMD_OVERFLOW       0x06
+#define H2C_RESERVED           0x07
+
+u8 rtw_setassocsta_cmd(struct adapter  *padapter, u8 *mac_addr);
+u8 rtw_setstandby_cmd(struct adapter *padapter, uint action);
+u8 rtw_sitesurvey_cmd(struct adapter  *padapter, struct ndis_802_11_ssid *ssid,
+                     int ssid_num, struct rtw_ieee80211_channel *ch,
+                     int ch_num);
+u8 rtw_createbss_cmd(struct adapter  *padapter);
+u8 rtw_createbss_cmd_ex(struct adapter  *padapter, unsigned char *pbss,
+                              unsigned int sz);
+u8 rtw_setphy_cmd(struct adapter  *padapter, u8 modem, u8 ch);
+u8 rtw_setstakey_cmd(struct adapter *padapter, u8 *psta, u8 unicast_key);
+u8 rtw_clearstakey_cmd(struct adapter *padapter, u8 *psta, u8 entry, u8 enqueue);
+u8 rtw_joinbss_cmd(struct adapter  *padapter, struct wlan_network* pnetwork);
+u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue);
+u8 rtw_setopmode_cmd(struct adapter  *padapter, enum ndis_802_11_network_infra networktype);
+u8 rtw_setdatarate_cmd(struct adapter  *padapter, u8 *rateset);
+u8 rtw_setbasicrate_cmd(struct adapter  *padapter, u8 *rateset);
+u8 rtw_setbbreg_cmd(struct adapter * padapter, u8 offset, u8 val);
+u8 rtw_setrfreg_cmd(struct adapter * padapter, u8 offset, u32 val);
+u8 rtw_getbbreg_cmd(struct adapter * padapter, u8 offset, u8 * pval);
+u8 rtw_getrfreg_cmd(struct adapter * padapter, u8 offset, u8 * pval);
+u8 rtw_setrfintfs_cmd(struct adapter  *padapter, u8 mode);
+u8 rtw_setrttbl_cmd(struct adapter  *padapter, struct setratable_parm *prate_table);
+u8 rtw_getrttbl_cmd(struct adapter  *padapter, struct getratable_rsp *pval);
+
+u8 rtw_gettssi_cmd(struct adapter  *padapter, u8 offset,u8 *pval);
+u8 rtw_setfwdig_cmd(struct adapter*padapter, u8 type);
+u8 rtw_setfwra_cmd(struct adapter*padapter, u8 type);
+
+u8 rtw_addbareq_cmd(struct adapter*padapter, u8 tid, u8 *addr);
+
+u8 rtw_dynamic_chk_wk_cmd(struct adapter *adapter);
+
+u8 rtw_lps_ctrl_wk_cmd(struct adapter*padapter, u8 lps_ctrl_type, u8 enqueue);
+u8 rtw_rpt_timer_cfg_cmd(struct adapter*padapter, u16 minRptTime);
+
+ u8 rtw_antenna_select_cmd(struct adapter*padapter, u8 antenna,u8 enqueue);
+u8 rtw_ps_cmd(struct adapter*padapter);
+
+#ifdef CONFIG_88EU_AP_MODE
+u8 rtw_chk_hi_queue_cmd(struct adapter*padapter);
+#endif
+
+u8 rtw_set_ch_cmd(struct adapter*padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue);
+u8 rtw_set_chplan_cmd(struct adapter*padapter, u8 chplan, u8 enqueue);
+u8 rtw_led_blink_cmd(struct adapter*padapter, struct LED_871x * pLed);
+u8 rtw_set_csa_cmd(struct adapter*padapter, u8 new_ch_no);
+u8 rtw_tdls_cmd(struct adapter *padapter, u8 *addr, u8 option);
+
+u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt);
+
+u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf);
+
+void rtw_survey_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd);
+void rtw_disassoc_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd);
+void rtw_joinbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd);
+void rtw_createbss_cmd_callback(struct adapter *adapt, struct cmd_obj *pcmd);
+void rtw_getbbrfreg_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd);
+void rtw_readtssi_cmdrsp_callback(struct adapter *adapt,  struct cmd_obj *cmd);
+
+void rtw_setstaKey_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd);
+void rtw_setassocsta_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cm);
+void rtw_getrttbl_cmdrsp_callback(struct adapter *adapt, struct cmd_obj *cmd);
+
+struct _cmd_callback {
+       u32     cmd_code;
+       void (*callback)(struct adapter  *padapter, struct cmd_obj *cmd);
+};
+
+enum rtw_h2c_cmd {
+       GEN_CMD_CODE(_Read_MACREG),     /*0*/
+       GEN_CMD_CODE(_Write_MACREG),
+       GEN_CMD_CODE(_Read_BBREG),
+       GEN_CMD_CODE(_Write_BBREG),
+       GEN_CMD_CODE(_Read_RFREG),
+       GEN_CMD_CODE(_Write_RFREG), /*5*/
+       GEN_CMD_CODE(_Read_EEPROM),
+       GEN_CMD_CODE(_Write_EEPROM),
+       GEN_CMD_CODE(_Read_EFUSE),
+       GEN_CMD_CODE(_Write_EFUSE),
+
+       GEN_CMD_CODE(_Read_CAM),        /*10*/
+       GEN_CMD_CODE(_Write_CAM),
+       GEN_CMD_CODE(_setBCNITV),
+       GEN_CMD_CODE(_setMBIDCFG),
+       GEN_CMD_CODE(_JoinBss),   /*14*/
+       GEN_CMD_CODE(_DisConnect), /*15*/
+       GEN_CMD_CODE(_CreateBss),
+       GEN_CMD_CODE(_SetOpMode),
+       GEN_CMD_CODE(_SiteSurvey),  /*18*/
+       GEN_CMD_CODE(_SetAuth),
+
+       GEN_CMD_CODE(_SetKey),  /*20*/
+       GEN_CMD_CODE(_SetStaKey),
+       GEN_CMD_CODE(_SetAssocSta),
+       GEN_CMD_CODE(_DelAssocSta),
+       GEN_CMD_CODE(_SetStaPwrState),
+       GEN_CMD_CODE(_SetBasicRate), /*25*/
+       GEN_CMD_CODE(_GetBasicRate),
+       GEN_CMD_CODE(_SetDataRate),
+       GEN_CMD_CODE(_GetDataRate),
+       GEN_CMD_CODE(_SetPhyInfo),
+
+       GEN_CMD_CODE(_GetPhyInfo),      /*30*/
+       GEN_CMD_CODE(_SetPhy),
+       GEN_CMD_CODE(_GetPhy),
+       GEN_CMD_CODE(_readRssi),
+       GEN_CMD_CODE(_readGain),
+       GEN_CMD_CODE(_SetAtim), /*35*/
+       GEN_CMD_CODE(_SetPwrMode),
+       GEN_CMD_CODE(_JoinbssRpt),
+       GEN_CMD_CODE(_SetRaTable),
+       GEN_CMD_CODE(_GetRaTable),
+
+       GEN_CMD_CODE(_GetCCXReport), /*40*/
+       GEN_CMD_CODE(_GetDTMReport),
+       GEN_CMD_CODE(_GetTXRateStatistics),
+       GEN_CMD_CODE(_SetUsbSuspend),
+       GEN_CMD_CODE(_SetH2cLbk),
+       GEN_CMD_CODE(_AddBAReq), /*45*/
+       GEN_CMD_CODE(_SetChannel), /*46*/
+       GEN_CMD_CODE(_SetTxPower),
+       GEN_CMD_CODE(_SwitchAntenna),
+       GEN_CMD_CODE(_SetCrystalCap),
+       GEN_CMD_CODE(_SetSingleCarrierTx), /*50*/
+
+       GEN_CMD_CODE(_SetSingleToneTx),/*51*/
+       GEN_CMD_CODE(_SetCarrierSuppressionTx),
+       GEN_CMD_CODE(_SetContinuousTx),
+       GEN_CMD_CODE(_SwitchBandwidth), /*54*/
+       GEN_CMD_CODE(_TX_Beacon), /*55*/
+
+       GEN_CMD_CODE(_Set_MLME_EVT), /*56*/
+       GEN_CMD_CODE(_Set_Drv_Extra), /*57*/
+       GEN_CMD_CODE(_Set_H2C_MSG), /*58*/
+
+       GEN_CMD_CODE(_SetChannelPlan), /*59*/
+       GEN_CMD_CODE(_LedBlink), /*60*/
+
+       GEN_CMD_CODE(_SetChannelSwitch), /*61*/
+       GEN_CMD_CODE(_TDLS), /*62*/
+
+       MAX_H2CCMD
+};
+
+#define _GetBBReg_CMD_         _Read_BBREG_CMD_
+#define _SetBBReg_CMD_         _Write_BBREG_CMD_
+#define _GetRFReg_CMD_         _Read_RFREG_CMD_
+#define _SetRFReg_CMD_         _Write_RFREG_CMD_
+
+#ifdef _RTW_CMD_C_
+static struct _cmd_callback    rtw_cmd_callback[] =
+{
+       {GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
+       {GEN_CMD_CODE(_Write_MACREG), NULL},
+       {GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback},
+       {GEN_CMD_CODE(_Write_BBREG), NULL},
+       {GEN_CMD_CODE(_Read_RFREG), &rtw_getbbrfreg_cmdrsp_callback},
+       {GEN_CMD_CODE(_Write_RFREG), NULL}, /*5*/
+       {GEN_CMD_CODE(_Read_EEPROM), NULL},
+       {GEN_CMD_CODE(_Write_EEPROM), NULL},
+       {GEN_CMD_CODE(_Read_EFUSE), NULL},
+       {GEN_CMD_CODE(_Write_EFUSE), NULL},
+
+       {GEN_CMD_CODE(_Read_CAM),       NULL},  /*10*/
+       {GEN_CMD_CODE(_Write_CAM),       NULL},
+       {GEN_CMD_CODE(_setBCNITV), NULL},
+       {GEN_CMD_CODE(_setMBIDCFG), NULL},
+       {GEN_CMD_CODE(_JoinBss), &rtw_joinbss_cmd_callback},  /*14*/
+       {GEN_CMD_CODE(_DisConnect), &rtw_disassoc_cmd_callback}, /*15*/
+       {GEN_CMD_CODE(_CreateBss), &rtw_createbss_cmd_callback},
+       {GEN_CMD_CODE(_SetOpMode), NULL},
+       {GEN_CMD_CODE(_SiteSurvey), &rtw_survey_cmd_callback}, /*18*/
+       {GEN_CMD_CODE(_SetAuth), NULL},
+
+       {GEN_CMD_CODE(_SetKey), NULL},  /*20*/
+       {GEN_CMD_CODE(_SetStaKey), &rtw_setstaKey_cmdrsp_callback},
+       {GEN_CMD_CODE(_SetAssocSta), &rtw_setassocsta_cmdrsp_callback},
+       {GEN_CMD_CODE(_DelAssocSta), NULL},
+       {GEN_CMD_CODE(_SetStaPwrState), NULL},
+       {GEN_CMD_CODE(_SetBasicRate), NULL}, /*25*/
+       {GEN_CMD_CODE(_GetBasicRate), NULL},
+       {GEN_CMD_CODE(_SetDataRate), NULL},
+       {GEN_CMD_CODE(_GetDataRate), NULL},
+       {GEN_CMD_CODE(_SetPhyInfo), NULL},
+
+       {GEN_CMD_CODE(_GetPhyInfo), NULL}, /*30*/
+       {GEN_CMD_CODE(_SetPhy), NULL},
+       {GEN_CMD_CODE(_GetPhy), NULL},
+       {GEN_CMD_CODE(_readRssi), NULL},
+       {GEN_CMD_CODE(_readGain), NULL},
+       {GEN_CMD_CODE(_SetAtim), NULL}, /*35*/
+       {GEN_CMD_CODE(_SetPwrMode), NULL},
+       {GEN_CMD_CODE(_JoinbssRpt), NULL},
+       {GEN_CMD_CODE(_SetRaTable), NULL},
+       {GEN_CMD_CODE(_GetRaTable), NULL},
+
+       {GEN_CMD_CODE(_GetCCXReport), NULL}, /*40*/
+       {GEN_CMD_CODE(_GetDTMReport),   NULL},
+       {GEN_CMD_CODE(_GetTXRateStatistics), NULL},
+       {GEN_CMD_CODE(_SetUsbSuspend), NULL},
+       {GEN_CMD_CODE(_SetH2cLbk), NULL},
+       {GEN_CMD_CODE(_AddBAReq), NULL}, /*45*/
+       {GEN_CMD_CODE(_SetChannel), NULL},              /*46*/
+       {GEN_CMD_CODE(_SetTxPower), NULL},
+       {GEN_CMD_CODE(_SwitchAntenna), NULL},
+       {GEN_CMD_CODE(_SetCrystalCap), NULL},
+       {GEN_CMD_CODE(_SetSingleCarrierTx), NULL},      /*50*/
+
+       {GEN_CMD_CODE(_SetSingleToneTx), NULL}, /*51*/
+       {GEN_CMD_CODE(_SetCarrierSuppressionTx), NULL},
+       {GEN_CMD_CODE(_SetContinuousTx), NULL},
+       {GEN_CMD_CODE(_SwitchBandwidth), NULL},         /*54*/
+       {GEN_CMD_CODE(_TX_Beacon), NULL},/*55*/
+
+       {GEN_CMD_CODE(_Set_MLME_EVT), NULL},/*56*/
+       {GEN_CMD_CODE(_Set_Drv_Extra), NULL},/*57*/
+       {GEN_CMD_CODE(_Set_H2C_MSG), NULL},/*58*/
+       {GEN_CMD_CODE(_SetChannelPlan), NULL},/*59*/
+       {GEN_CMD_CODE(_LedBlink), NULL},/*60*/
+
+       {GEN_CMD_CODE(_SetChannelSwitch), NULL},/*61*/
+       {GEN_CMD_CODE(_TDLS), NULL},/*62*/
+};
+#endif
+
+#endif /*  _CMD_H_ */
diff --git a/drivers/staging/rtl8188eu/include/rtw_debug.h b/drivers/staging/rtl8188eu/include/rtw_debug.h
new file mode 100644 (file)
index 0000000..c6b193a
--- /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 __RTW_DEBUG_H__
+#define __RTW_DEBUG_H__
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+
+#define _drv_always_                   1
+#define _drv_emerg_                    2
+#define _drv_alert_                    3
+#define _drv_crit_                     4
+#define _drv_err_                      5
+#define        _drv_warning_                   6
+#define _drv_notice_                   7
+#define _drv_info_                     8
+#define        _drv_debug_                     9
+
+
+#define _module_rtl871x_xmit_c_                BIT(0)
+#define _module_xmit_osdep_c_          BIT(1)
+#define _module_rtl871x_recv_c_                BIT(2)
+#define _module_recv_osdep_c_          BIT(3)
+#define _module_rtl871x_mlme_c_                BIT(4)
+#define _module_mlme_osdep_c_          BIT(5)
+#define _module_rtl871x_sta_mgt_c_     BIT(6)
+#define _module_rtl871x_cmd_c_         BIT(7)
+#define _module_cmd_osdep_c_           BIT(8)
+#define _module_rtl871x_io_c_          BIT(9)
+#define _module_io_osdep_c_            BIT(10)
+#define _module_os_intfs_c_            BIT(11)
+#define _module_rtl871x_security_c_    BIT(12)
+#define _module_rtl871x_eeprom_c_      BIT(13)
+#define _module_hal_init_c_            BIT(14)
+#define _module_hci_hal_init_c_                BIT(15)
+#define _module_rtl871x_ioctl_c_       BIT(16)
+#define _module_rtl871x_ioctl_set_c_   BIT(17)
+#define _module_rtl871x_ioctl_query_c_ BIT(18)
+#define _module_rtl871x_pwrctrl_c_     BIT(19)
+#define _module_hci_intfs_c_           BIT(20)
+#define _module_hci_ops_c_             BIT(21)
+#define _module_osdep_service_c_       BIT(22)
+#define _module_mp_                    BIT(23)
+#define _module_hci_ops_os_c_          BIT(24)
+#define _module_rtl871x_ioctl_os_c     BIT(25)
+#define _module_rtl8712_cmd_c_         BIT(26)
+#define        _module_rtl8192c_xmit_c_        BIT(27)
+#define _module_hal_xmit_c_            BIT(28)
+#define _module_efuse_                 BIT(29)
+#define _module_rtl8712_recv_c_                BIT(30)
+#define _module_rtl8712_led_c_         BIT(31)
+
+#define DRIVER_PREFIX  "R8188EU: "
+
+extern u32 GlobalDebugLevel;
+
+#define DBG_88E_LEVEL(_level, fmt, arg...)                             \
+       do {                                                            \
+               if (_level <= GlobalDebugLevel)                         \
+                       pr_info(DRIVER_PREFIX"ERROR " fmt, ##arg);      \
+       } while (0)
+
+#define DBG_88E(...)                                                   \
+       do {                                                            \
+               if (_drv_err_ <= GlobalDebugLevel)                      \
+                       pr_info(DRIVER_PREFIX __VA_ARGS__);             \
+       } while (0)
+
+#define MSG_88E(...)                                                   \
+       do {                                                            \
+               if (_drv_err_ <= GlobalDebugLevel)                      \
+                       pr_info(DRIVER_PREFIX __VA_ARGS__);                     \
+       } while (0)
+
+#define RT_TRACE(_comp, _level, fmt)                                   \
+       do {                                                            \
+               if (_level <= GlobalDebugLevel) {                       \
+                       pr_info("%s [0x%08x,%d]", DRIVER_PREFIX,        \
+                                (unsigned int)_comp, _level);          \
+                       pr_info fmt;                                    \
+               }                                                       \
+       } while (0)
+
+#define _func_enter_                                                   \
+       do {                                                            \
+               if (GlobalDebugLevel >= _drv_debug_)                    \
+                       pr_info("%s : %s enters at %d\n",               \
+                                DRIVER_PREFIX, __func__, __LINE__);    \
+       } while (0)
+
+#define _func_exit_                                                    \
+       do {                                                            \
+               if (GlobalDebugLevel >= _drv_debug_)                    \
+                       pr_info("%s : %s exits at %d\n",                \
+                                DRIVER_PREFIX, __func__, __LINE__);    \
+       } while (0)
+
+#define RT_PRINT_DATA(_comp, _level, _titlestring, _hexdata, _hexdatalen)\
+       do {                                                            \
+               if (_level <= GlobalDebugLevel) {                       \
+                       int __i;                                        \
+                       u8      *ptr = (u8 *)_hexdata;                  \
+                       pr_info("%s", DRIVER_PREFIX);                   \
+                       pr_info(_titlestring);                          \
+                       for (__i = 0; __i < (int)_hexdatalen; __i++ ) { \
+                               pr_info("%02X%s", ptr[__i],             \
+                                        (((__i + 1) % 4) == 0) ?       \
+                                        "  " : " ");   \
+                               if (((__i + 1) % 16) == 0)              \
+                                       printk("\n");                   \
+                       }                                               \
+                       printk("\n");                                   \
+               }                                                       \
+       } while (0)
+
+int proc_get_drv_version(char *page, char **start,
+                        off_t offset, int count,
+                        int *eof, void *data);
+
+int proc_get_write_reg(char *page, char **start,
+                      off_t offset, int count,
+                      int *eof, void *data);
+
+int proc_set_write_reg(struct file *file, const char __user *buffer,
+                      unsigned long count, void *data);
+int proc_get_read_reg(char *page, char **start,
+                     off_t offset, int count,
+                     int *eof, void *data);
+
+int proc_set_read_reg(struct file *file, const char __user *buffer,
+                     unsigned long count, void *data);
+
+int proc_get_fwstate(char *page, char **start,
+                    off_t offset, int count,
+                    int *eof, void *data);
+int proc_get_sec_info(char *page, char **start,
+                     off_t offset, int count,
+                     int *eof, void *data);
+int proc_get_mlmext_state(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_qos_option(char *page, char **start,
+                       off_t offset, int count,
+                       int *eof, void *data);
+int proc_get_ht_option(char *page, char **start,
+                      off_t offset, int count,
+                      int *eof, void *data);
+int proc_get_rf_info(char *page, char **start,
+                    off_t offset, int count,
+                    int *eof, void *data);
+int proc_get_ap_info(char *page, char **start,
+                    off_t offset, int count,
+                    int *eof, void *data);
+
+int proc_get_adapter_state(char *page, char **start,
+                          off_t offset, int count,
+                          int *eof, void *data);
+
+int proc_get_trx_info(char *page, char **start,
+                     off_t offset, int count,
+                     int *eof, void *data);
+
+int proc_get_mac_reg_dump1(char *page, char **start,
+                          off_t offset, int count,
+                          int *eof, void *data);
+
+int proc_get_mac_reg_dump2(char *page, char **start,
+                          off_t offset, int count,
+                          int *eof, void *data);
+
+int proc_get_mac_reg_dump3(char *page, char **start,
+                          off_t offset, int count,
+                          int *eof, void *data);
+
+int proc_get_bb_reg_dump1(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_bb_reg_dump2(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_bb_reg_dump3(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_rf_reg_dump1(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_rf_reg_dump2(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_rf_reg_dump3(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_rf_reg_dump4(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+#ifdef CONFIG_88EU_AP_MODE
+
+int proc_get_all_sta_info(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+#endif
+
+int proc_get_best_channel(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_get_rx_signal(char *page, char **start,
+                      off_t offset, int count,
+                      int *eof, void *data);
+
+int proc_set_rx_signal(struct file *file, const char __user *buffer,
+                      unsigned long count, void *data);
+
+int proc_get_ht_enable(char *page, char **start,
+                      off_t offset, int count,
+                      int *eof, void *data);
+
+int proc_set_ht_enable(struct file *file, const char __user *buffer,
+                      unsigned long count, void *data);
+
+int proc_get_cbw40_enable(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_set_cbw40_enable(struct file *file, const char __user *buffer,
+                         unsigned long count, void *data);
+
+int proc_get_ampdu_enable(char *page, char **start,
+                         off_t offset, int count,
+                         int *eof, void *data);
+
+int proc_set_ampdu_enable(struct file *file, const char __user *buffer,
+                         unsigned long count, void *data);
+
+int proc_get_rx_stbc(char *page, char **start,
+                    off_t offset, int count,
+                    int *eof, void *data);
+
+int proc_set_rx_stbc(struct file *file, const char __user *buffer,
+                    unsigned long count, void *data);
+
+int proc_get_two_path_rssi(char *page, char **start,
+                          off_t offset, int count,
+                          int *eof, void *data);
+
+int proc_get_rssi_disp(char *page, char **start,
+                      off_t offset, int count,
+                      int *eof, void *data);
+
+int proc_set_rssi_disp(struct file *file, const char __user *buffer,
+                      unsigned long count, void *data);
+
+#ifdef CONFIG_BT_COEXIST
+int proc_get_btcoex_dbg(char *page, char **start,
+                       off_t offset, int count,
+                       int *eof, void *data);
+
+int proc_set_btcoex_dbg(struct file *file, const char *buffer,
+                       signed long count, void *data);
+
+#endif /* CONFIG_BT_COEXIST */
+
+#endif /* __RTW_DEBUG_H__ */
diff --git a/drivers/staging/rtl8188eu/include/rtw_eeprom.h b/drivers/staging/rtl8188eu/include/rtw_eeprom.h
new file mode 100644 (file)
index 0000000..b2672c3
--- /dev/null
@@ -0,0 +1,130 @@
+/******************************************************************************
+ *
+ * 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 __RTW_EEPROM_H__
+#define __RTW_EEPROM_H__
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+#define        RTL8712_EEPROM_ID               0x8712
+
+#define        HWSET_MAX_SIZE_512              512
+#define        EEPROM_MAX_SIZE                 HWSET_MAX_SIZE_512
+
+#define        CLOCK_RATE                      50      /* 100us */
+
+/*  EEPROM opcodes */
+#define EEPROM_READ_OPCODE             06
+#define EEPROM_WRITE_OPCODE            05
+#define EEPROM_ERASE_OPCODE            07
+#define EEPROM_EWEN_OPCODE             19      /*  Erase/write enable */
+#define EEPROM_EWDS_OPCODE             16      /*  Erase/write disable */
+
+/* Country codes */
+#define USA                            0x555320
+#define EUROPE                         0x1 /* temp, should be provided later */
+#define JAPAN                          0x2 /* temp, should be provided later */
+
+#define        EEPROM_CID_DEFAULT              0x0
+#define        EEPROM_CID_ALPHA                0x1
+#define        EEPROM_CID_Senao                0x3
+#define        EEPROM_CID_NetCore              0x5
+#define        EEPROM_CID_CAMEO                0X8
+#define        EEPROM_CID_SITECOM              0x9
+#define        EEPROM_CID_COREGA               0xB
+#define        EEPROM_CID_EDIMAX_BELK          0xC
+#define        EEPROM_CID_SERCOMM_BELK         0xE
+#define        EEPROM_CID_CAMEO1               0xF
+#define        EEPROM_CID_WNC_COREGA           0x12
+#define        EEPROM_CID_CLEVO                0x13
+#define        EEPROM_CID_WHQL                 0xFE
+
+/*  Customer ID, note that: */
+/*  This variable is initiailzed through EEPROM or registry, */
+/*  however, its definition may be different with that in EEPROM for */
+/*  EEPROM size consideration. So, we have to perform proper translation
+ *  between them. */
+/*  Besides, CustomerID of registry has precedence of that of EEPROM. */
+/*  defined below. 060703, by rcnjko. */
+enum RT_CUSTOMER_ID {
+       RT_CID_DEFAULT = 0,
+       RT_CID_8187_ALPHA0 = 1,
+       RT_CID_8187_SERCOMM_PS = 2,
+       RT_CID_8187_HW_LED = 3,
+       RT_CID_8187_NETGEAR = 4,
+       RT_CID_WHQL = 5,
+       RT_CID_819x_CAMEO  = 6,
+       RT_CID_819x_RUNTOP = 7,
+       RT_CID_819x_Senao = 8,
+       RT_CID_TOSHIBA = 9,     /*  Merge by Jacken, 2008/01/31. */
+       RT_CID_819x_Netcore = 10,
+       RT_CID_Nettronix = 11,
+       RT_CID_DLINK = 12,
+       RT_CID_PRONET = 13,
+       RT_CID_COREGA = 14,
+       RT_CID_CHINA_MOBILE = 15,
+       RT_CID_819x_ALPHA = 16,
+       RT_CID_819x_Sitecom = 17,
+       RT_CID_CCX = 18, /*  It's set under CCX logo test and isn't demanded
+                         * for CCX functions, but for test behavior like retry
+                         * limit and tx report. By Bruce, 2009-02-17. */
+       RT_CID_819x_Lenovo = 19,
+       RT_CID_819x_QMI = 20,
+       RT_CID_819x_Edimax_Belkin = 21,
+       RT_CID_819x_Sercomm_Belkin = 22,
+       RT_CID_819x_CAMEO1 = 23,
+       RT_CID_819x_MSI = 24,
+       RT_CID_819x_Acer = 25,
+       RT_CID_819x_AzWave_ASUS = 26,
+       RT_CID_819x_AzWave = 27, /*  For AzWave in PCIe,i
+                                 * The ID is AzWave use and not only Asus */
+       RT_CID_819x_HP = 28,
+       RT_CID_819x_WNC_COREGA = 29,
+       RT_CID_819x_Arcadyan_Belkin = 30,
+       RT_CID_819x_SAMSUNG = 31,
+       RT_CID_819x_CLEVO = 32,
+       RT_CID_819x_DELL = 33,
+       RT_CID_819x_PRONETS = 34,
+       RT_CID_819x_Edimax_ASUS = 35,
+       RT_CID_819x_CAMEO_NETGEAR = 36,
+       RT_CID_PLANEX = 37,
+       RT_CID_CC_C = 38,
+       RT_CID_819x_Xavi = 39,
+       RT_CID_819x_FUNAI_TV = 40,
+       RT_CID_819x_ALPHA_WD=41,
+};
+
+struct eeprom_priv {
+       u8              bautoload_fail_flag;
+       u8              bloadfile_fail_flag;
+       u8              bloadmac_fail_flag;
+       u8              mac_addr[6];    /* PermanentAddress */
+       u16             channel_plan;
+       u8              EepromOrEfuse;
+       u8              efuse_eeprom_data[HWSET_MAX_SIZE_512];
+};
+
+void eeprom_write16(struct adapter *padapter, u16 reg, u16 data);
+u16 eeprom_read16(struct adapter *padapter, u16 reg);
+void read_eeprom_content(struct adapter *padapter);
+void eeprom_read_sz(struct adapter *adapt, u16 reg, u8 *data, u32 sz);
+void read_eeprom_content_by_attrib(struct adapter *padapter);
+
+#endif  /* __RTL871X_EEPROM_H__ */
diff --git a/drivers/staging/rtl8188eu/include/rtw_efuse.h b/drivers/staging/rtl8188eu/include/rtw_efuse.h
new file mode 100644 (file)
index 0000000..4d45e1e
--- /dev/null
@@ -0,0 +1,150 @@
+/******************************************************************************
+ *
+ * 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 __RTW_EFUSE_H__
+#define __RTW_EFUSE_H__
+
+#include <osdep_service.h>
+
+#define        EFUSE_ERROE_HANDLE              1
+
+#define        PG_STATE_HEADER                 0x01
+#define        PG_STATE_WORD_0         0x02
+#define        PG_STATE_WORD_1         0x04
+#define        PG_STATE_WORD_2         0x08
+#define        PG_STATE_WORD_3         0x10
+#define        PG_STATE_DATA                   0x20
+
+#define        PG_SWBYTE_H                     0x01
+#define        PG_SWBYTE_L                     0x02
+
+#define        PGPKT_DATA_SIZE         8
+
+#define        EFUSE_WIFI                              0
+#define        EFUSE_BT                                1
+
+enum _EFUSE_DEF_TYPE {
+       TYPE_EFUSE_MAX_SECTION                          = 0,
+       TYPE_EFUSE_REAL_CONTENT_LEN                     = 1,
+       TYPE_AVAILABLE_EFUSE_BYTES_BANK         = 2,
+       TYPE_AVAILABLE_EFUSE_BYTES_TOTAL        = 3,
+       TYPE_EFUSE_MAP_LEN                                      = 4,
+       TYPE_EFUSE_PROTECT_BYTES_BANK           = 5,
+       TYPE_EFUSE_CONTENT_LEN_BANK                     = 6,
+};
+
+/* E-Fuse */
+#define EFUSE_MAP_SIZE      512
+#define EFUSE_MAX_SIZE      256
+/* end of E-Fuse */
+
+#define                EFUSE_MAX_MAP_LEN               256
+#define                EFUSE_MAX_HW_SIZE               512
+#define                EFUSE_MAX_SECTION_BASE  16
+
+#define EXT_HEADER(header) ((header & 0x1F) == 0x0F)
+#define ALL_WORDS_DISABLED(wde)        ((wde & 0x0F) == 0x0F)
+#define GET_HDR_OFFSET_2_0(header) ((header & 0xE0) >> 5)
+
+#define                EFUSE_REPEAT_THRESHOLD_                 3
+
+/*     The following is for BT Efuse definition */
+#define                EFUSE_BT_MAX_MAP_LEN            1024
+#define                EFUSE_MAX_BANK                  4
+#define                EFUSE_MAX_BT_BANK               (EFUSE_MAX_BANK-1)
+/*--------------------------Define Parameters-------------------------------*/
+#define                EFUSE_MAX_WORD_UNIT                     4
+
+/*------------------------------Define structure----------------------------*/
+struct pgpkt {
+       u8 offset;
+       u8 word_en;
+       u8 data[8];
+       u8 word_cnts;
+};
+
+/*------------------------------Define structure----------------------------*/
+struct efuse_hal {
+       u8 fakeEfuseBank;
+       u32     fakeEfuseUsedBytes;
+       u8 fakeEfuseContent[EFUSE_MAX_HW_SIZE];
+       u8 fakeEfuseInitMap[EFUSE_MAX_MAP_LEN];
+       u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN];
+
+       u16 BTEfuseUsedBytes;
+       u8 BTEfuseUsedPercentage;
+       u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
+       u8 BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
+       u8 BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
+
+       u16 fakeBTEfuseUsedBytes;
+       u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
+       u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
+       u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
+};
+
+/*------------------------Export global variable----------------------------*/
+extern u8 fakeEfuseBank;
+extern u32 fakeEfuseUsedBytes;
+extern u8 fakeEfuseContent[];
+extern u8 fakeEfuseInitMap[];
+extern u8 fakeEfuseModifiedMap[];
+
+extern u32 BTEfuseUsedBytes;
+extern u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
+extern u8 BTEfuseInitMap[];
+extern u8 BTEfuseModifiedMap[];
+
+extern u32 fakeBTEfuseUsedBytes;
+extern u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
+extern u8 fakeBTEfuseInitMap[];
+extern u8 fakeBTEfuseModifiedMap[];
+/*------------------------Export global variable----------------------------*/
+
+u8 efuse_GetCurrentSize(struct adapter *adapter, u16 *size);
+u16 efuse_GetMaxSize(struct adapter *adapter);
+u8 rtw_efuse_access(struct adapter *adapter, u8 read, u16 start_addr,
+                   u16 cnts, u8 *data);
+u8 rtw_efuse_map_read(struct adapter *adapter, u16 addr, u16 cnts, u8 *data);
+u8 rtw_efuse_map_write(struct adapter *adapter, u16 addr, u16 cnts, u8 *data);
+u8 rtw_BT_efuse_map_read(struct adapter *adapter, u16 addr,
+                        u16 cnts, u8 *data);
+u8 rtw_BT_efuse_map_write(struct adapter *adapter, u16 addr,
+                         u16 cnts, u8 *data);
+u16 Efuse_GetCurrentSize(struct adapter *adapter, u8 efusetype, bool test);
+u8 Efuse_CalculateWordCnts(u8 word_en);
+void ReadEFuseByte(struct adapter *adapter, u16 _offset, u8 *pbuf, bool test);
+void EFUSE_GetEfuseDefinition(struct adapter *adapt, u8 type, u8 type1,
+                             void *out, bool bPseudoTest);
+u8 efuse_OneByteRead(struct adapter *adapter, u16 addr, u8 *data, bool test);
+u8 efuse_OneByteWrite(struct adapter *adapter, u16 addr, u8 data, bool test);
+
+void Efuse_PowerSwitch(struct adapter *adapt,u8 bWrite,u8  PwrState);
+int Efuse_PgPacketRead(struct adapter *adapt, u8 offset, u8 *data, bool test);
+int Efuse_PgPacketWrite(struct adapter *adapter, u8 offset, u8 word, u8 *data,
+                       bool test);
+void efuse_WordEnableDataRead(u8 word_en, u8 *sourdata, u8 *targetdata);
+u8 Efuse_WordEnableDataWrite(struct adapter *adapter, u16 efuse_addr,
+                            u8 word_en, u8 *data, bool test);
+
+u8 EFUSE_Read1Byte(struct adapter *adapter, u16 address);
+void EFUSE_ShadowMapUpdate(struct adapter *adapter, u8 efusetype, bool test);
+void EFUSE_ShadowRead(struct adapter *adapt, u8 type, u16 offset, u32 *val);
+
+#endif
diff --git a/drivers/staging/rtl8188eu/include/rtw_event.h b/drivers/staging/rtl8188eu/include/rtw_event.h
new file mode 100644 (file)
index 0000000..52151dc
--- /dev/null
@@ -0,0 +1,115 @@
+/******************************************************************************
+ *
+ * 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 _RTW_EVENT_H_
+#define _RTW_EVENT_H_
+
+#include <osdep_service.h>
+
+#include <wlan_bssdef.h>
+#include <linux/semaphore.h>
+#include <linux/sem.h>
+
+/*
+Used to report a bss has been scanned
+*/
+struct survey_event    {
+       struct wlan_bssid_ex bss;
+};
+
+/*
+Used to report that the requested site survey has been done.
+
+bss_cnt indicates the number of bss that has been reported.
+
+
+*/
+struct surveydone_event {
+       unsigned int    bss_cnt;
+
+};
+
+/*
+Used to report the link result of joinning the given bss
+
+
+join_res:
+-1: authentication fail
+-2: association fail
+> 0: TID
+
+*/
+struct joinbss_event {
+       struct  wlan_network    network;
+};
+
+/*
+Used to report a given STA has joinned the created BSS.
+It is used in AP/Ad-HoC(M) mode.
+*/
+
+struct stassoc_event {
+       unsigned char macaddr[6];
+       unsigned char rsvd[2];
+       int    cam_id;
+};
+
+struct stadel_event {
+       unsigned char macaddr[6];
+       unsigned char rsvd[2]; /* for reason */
+       int mac_id;
+};
+
+struct addba_event {
+       unsigned int tid;
+};
+
+#define GEN_EVT_CODE(event)    event ## _EVT_
+
+struct fwevent {
+       u32     parmsize;
+       void (*event_callback)(struct adapter *dev, u8 *pbuf);
+};
+
+#define C2HEVENT_SZ                    32
+
+struct event_node {
+       unsigned char *node;
+       unsigned char evt_code;
+       unsigned short evt_sz;
+       int     *caller_ff_tail;
+       int     caller_ff_sz;
+};
+
+struct c2hevent_queue {
+       int     head;
+       int     tail;
+       struct  event_node      nodes[C2HEVENT_SZ];
+       unsigned char   seq;
+};
+
+#define NETWORK_QUEUE_SZ       4
+
+struct network_queue {
+       int     head;
+       int     tail;
+       struct wlan_bssid_ex networks[NETWORK_QUEUE_SZ];
+};
+
+#endif /*  _WLANEVENT_H_ */