1cf3e6881SAli Bahar /****************************************************************************** 2cf3e6881SAli Bahar * 3cf3e6881SAli Bahar * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. 4cf3e6881SAli Bahar * 5cf3e6881SAli Bahar * This program is free software; you can redistribute it and/or modify it 6cf3e6881SAli Bahar * under the terms of version 2 of the GNU General Public License as 7cf3e6881SAli Bahar * published by the Free Software Foundation. 8cf3e6881SAli Bahar * 9cf3e6881SAli Bahar * This program is distributed in the hope that it will be useful, but WITHOUT 10cf3e6881SAli Bahar * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11cf3e6881SAli Bahar * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12cf3e6881SAli Bahar * more details. 13cf3e6881SAli Bahar * 14cf3e6881SAli Bahar * You should have received a copy of the GNU General Public License along with 15cf3e6881SAli Bahar * this program; if not, write to the Free Software Foundation, Inc., 16cf3e6881SAli Bahar * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17cf3e6881SAli Bahar * 18cf3e6881SAli Bahar * Modifications for inclusion into the Linux staging tree are 19cf3e6881SAli Bahar * Copyright(c) 2010 Larry Finger. All rights reserved. 20cf3e6881SAli Bahar * 21cf3e6881SAli Bahar * Contact information: 22cf3e6881SAli Bahar * WLAN FAE <wlanfae@realtek.com> 23cf3e6881SAli Bahar * Larry Finger <Larry.Finger@lwfinger.net> 24cf3e6881SAli Bahar * 25cf3e6881SAli Bahar ******************************************************************************/ 262865d42cSLarry Finger /* --------------------------------------------------------------------- 27*0c9968efSPunit Vara * 28*0c9968efSPunit Vara * For type defines and data structure defines 29*0c9968efSPunit Vara * 30*0c9968efSPunit Vara * --------------------------------------------------------------------- 31*0c9968efSPunit Vara */ 322865d42cSLarry Finger #ifndef __DRV_TYPES_H__ 332865d42cSLarry Finger #define __DRV_TYPES_H__ 342865d42cSLarry Finger 352865d42cSLarry Finger struct _adapter; 362865d42cSLarry Finger 372865d42cSLarry Finger #include "osdep_service.h" 382865d42cSLarry Finger #include "wlan_bssdef.h" 392865d42cSLarry Finger #include "rtl8712_spec.h" 402865d42cSLarry Finger #include "rtl8712_hal.h" 418c213fa5SLarry Finger #include <linux/mutex.h> 428c213fa5SLarry Finger #include <linux/completion.h> 432865d42cSLarry Finger 442865d42cSLarry Finger enum _NIC_VERSION { 452865d42cSLarry Finger RTL8711_NIC, 462865d42cSLarry Finger RTL8712_NIC, 472865d42cSLarry Finger RTL8713_NIC, 482865d42cSLarry Finger RTL8716_NIC 492865d42cSLarry Finger }; 502865d42cSLarry Finger 512865d42cSLarry Finger struct _adapter; 522865d42cSLarry Finger 532865d42cSLarry Finger struct qos_priv { 542865d42cSLarry Finger /* bit mask option: u-apsd, s-apsd, ts, block ack... */ 552865d42cSLarry Finger unsigned int qos_option; 562865d42cSLarry Finger }; 572865d42cSLarry Finger 582865d42cSLarry Finger #include "rtl871x_ht.h" 592865d42cSLarry Finger #include "rtl871x_cmd.h" 602865d42cSLarry Finger #include "rtl871x_xmit.h" 612865d42cSLarry Finger #include "rtl871x_recv.h" 622865d42cSLarry Finger #include "rtl871x_security.h" 632865d42cSLarry Finger #include "rtl871x_pwrctrl.h" 642865d42cSLarry Finger #include "rtl871x_io.h" 652865d42cSLarry Finger #include "rtl871x_eeprom.h" 662865d42cSLarry Finger #include "sta_info.h" 672865d42cSLarry Finger #include "rtl871x_mlme.h" 682865d42cSLarry Finger #include "rtl871x_mp.h" 692865d42cSLarry Finger #include "rtl871x_debug.h" 702865d42cSLarry Finger #include "rtl871x_rf.h" 712865d42cSLarry Finger #include "rtl871x_event.h" 722865d42cSLarry Finger #include "rtl871x_led.h" 732865d42cSLarry Finger 742865d42cSLarry Finger #define SPEC_DEV_ID_DISABLE_HT BIT(1) 752865d42cSLarry Finger 762865d42cSLarry Finger struct specific_device_id { 772865d42cSLarry Finger u32 flags; 782865d42cSLarry Finger u16 idVendor; 792865d42cSLarry Finger u16 idProduct; 802865d42cSLarry Finger 812865d42cSLarry Finger }; 822865d42cSLarry Finger 832865d42cSLarry Finger struct registry_priv { 842865d42cSLarry Finger u8 chip_version; 852865d42cSLarry Finger u8 rfintfs; 862865d42cSLarry Finger u8 lbkmode; 872865d42cSLarry Finger u8 hci; 882865d42cSLarry Finger u8 network_mode; /*infra, ad-hoc, auto*/ 892865d42cSLarry Finger struct ndis_802_11_ssid ssid; 902865d42cSLarry Finger u8 channel;/* ad-hoc support requirement */ 912865d42cSLarry Finger u8 wireless_mode;/* A, B, G, auto */ 922865d42cSLarry Finger u8 vrtl_carrier_sense; /*Enable, Disable, Auto*/ 932865d42cSLarry Finger u8 vcs_type;/*RTS/CTS, CTS-to-self*/ 942865d42cSLarry Finger u16 rts_thresh; 952865d42cSLarry Finger u16 frag_thresh; 962865d42cSLarry Finger u8 preamble;/*long, short, auto*/ 972865d42cSLarry Finger u8 scan_mode;/*active, passive*/ 982865d42cSLarry Finger u8 adhoc_tx_pwr; 992865d42cSLarry Finger u8 soft_ap; 1002865d42cSLarry Finger u8 smart_ps; 1012865d42cSLarry Finger u8 power_mgnt; 1022865d42cSLarry Finger u8 radio_enable; 1032865d42cSLarry Finger u8 long_retry_lmt; 1042865d42cSLarry Finger u8 short_retry_lmt; 1052865d42cSLarry Finger u16 busy_thresh; 1062865d42cSLarry Finger u8 ack_policy; 1072865d42cSLarry Finger u8 mp_mode; 1082865d42cSLarry Finger u8 software_encrypt; 1092865d42cSLarry Finger u8 software_decrypt; 1102865d42cSLarry Finger /* UAPSD */ 1112865d42cSLarry Finger u8 wmm_enable; 1122865d42cSLarry Finger u8 uapsd_enable; 1132865d42cSLarry Finger u8 uapsd_max_sp; 1142865d42cSLarry Finger u8 uapsd_acbk_en; 1152865d42cSLarry Finger u8 uapsd_acbe_en; 1162865d42cSLarry Finger u8 uapsd_acvi_en; 1172865d42cSLarry Finger u8 uapsd_acvo_en; 1182865d42cSLarry Finger 1192865d42cSLarry Finger struct wlan_bssid_ex dev_network; 1202865d42cSLarry Finger 1212865d42cSLarry Finger u8 ht_enable; 1222865d42cSLarry Finger u8 cbw40_enable; 1232865d42cSLarry Finger u8 ampdu_enable;/*for tx*/ 1242865d42cSLarry Finger u8 rf_config; 1252865d42cSLarry Finger u8 low_power; 126d19b8647SLarry Finger u8 wifi_test; 1272865d42cSLarry Finger }; 1282865d42cSLarry Finger 1292865d42cSLarry Finger struct dvobj_priv { 1302865d42cSLarry Finger struct _adapter *padapter; 1312865d42cSLarry Finger u32 nr_endpoint; 1322865d42cSLarry Finger u8 ishighspeed; 1332865d42cSLarry Finger uint (*inirp_init)(struct _adapter *adapter); 1342865d42cSLarry Finger uint (*inirp_deinit)(struct _adapter *adapter); 1352865d42cSLarry Finger struct usb_device *pusbdev; 1362865d42cSLarry Finger }; 1372865d42cSLarry Finger 138d1661dfdSAli Bahar /** 139d1661dfdSAli Bahar * struct _adapter - the main adapter structure for this device. 140d1661dfdSAli Bahar * 141be10ac2bSJustin P. Mattock * bup: True indicates that the interface is up. 142d1661dfdSAli Bahar */ 1432865d42cSLarry Finger struct _adapter { 1442865d42cSLarry Finger struct dvobj_priv dvobjpriv; 1452865d42cSLarry Finger struct mlme_priv mlmepriv; 1462865d42cSLarry Finger struct cmd_priv cmdpriv; 1472865d42cSLarry Finger struct evt_priv evtpriv; 1482865d42cSLarry Finger struct io_queue *pio_queue; 1492865d42cSLarry Finger struct xmit_priv xmitpriv; 1502865d42cSLarry Finger struct recv_priv recvpriv; 1512865d42cSLarry Finger struct sta_priv stapriv; 1522865d42cSLarry Finger struct security_priv securitypriv; 1532865d42cSLarry Finger struct registry_priv registrypriv; 1542865d42cSLarry Finger struct wlan_acl_pool acl_list; 1552865d42cSLarry Finger struct pwrctrl_priv pwrctrlpriv; 1562865d42cSLarry Finger struct eeprom_priv eeprompriv; 1572865d42cSLarry Finger struct hal_priv halpriv; 1582865d42cSLarry Finger struct led_priv ledpriv; 1592865d42cSLarry Finger struct mp_priv mppriv; 1602865d42cSLarry Finger s32 bDriverStopped; 1612865d42cSLarry Finger s32 bSurpriseRemoved; 1622865d42cSLarry Finger u32 IsrContent; 1632865d42cSLarry Finger u32 ImrContent; 1642865d42cSLarry Finger u8 EepromAddressSize; 1652865d42cSLarry Finger u8 hw_init_completed; 1662865d42cSLarry Finger struct task_struct *cmdThread; 1672865d42cSLarry Finger pid_t evtThread; 1682865d42cSLarry Finger struct task_struct *xmitThread; 1692865d42cSLarry Finger pid_t recvThread; 1702865d42cSLarry Finger uint (*dvobj_init)(struct _adapter *adapter); 1712865d42cSLarry Finger void (*dvobj_deinit)(struct _adapter *adapter); 1722865d42cSLarry Finger struct net_device *pnetdev; 1732865d42cSLarry Finger int bup; 1742865d42cSLarry Finger struct net_device_stats stats; 1752865d42cSLarry Finger struct iw_statistics iwstats; 1762865d42cSLarry Finger int pid; /*process id from UI*/ 177143198fdSJames A Shackleford struct work_struct wkFilterRxFF0; 178f95302eeSAli Bahar u8 blnEnableRxFF0Filter; 179f95302eeSAli Bahar spinlock_t lockRxFF0Filter; 1808c213fa5SLarry Finger const struct firmware *fw; 1818c213fa5SLarry Finger struct usb_interface *pusb_intf; 1828c213fa5SLarry Finger struct mutex mutex_start; 1838c213fa5SLarry Finger struct completion rtl8712_fw_ready; 1842865d42cSLarry Finger }; 1852865d42cSLarry Finger 1862865d42cSLarry Finger static inline u8 *myid(struct eeprom_priv *peepriv) 1872865d42cSLarry Finger { 1882865d42cSLarry Finger return peepriv->mac_addr; 1892865d42cSLarry Finger } 1902865d42cSLarry Finger 1912865d42cSLarry Finger u8 r8712_usb_hal_bus_init(struct _adapter *adapter); 1922865d42cSLarry Finger 1932865d42cSLarry Finger #endif /*__DRV_TYPES_H__*/ 1942865d42cSLarry Finger 195