1e24c1f86SMichael Straube /* SPDX-License-Identifier: GPL-2.0 */ 2cf3e6881SAli Bahar /****************************************************************************** 3cf3e6881SAli Bahar * 4cf3e6881SAli Bahar * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. 5cf3e6881SAli Bahar * 6cf3e6881SAli Bahar * Modifications for inclusion into the Linux staging tree are 7cf3e6881SAli Bahar * Copyright(c) 2010 Larry Finger. All rights reserved. 8cf3e6881SAli Bahar * 9cf3e6881SAli Bahar * Contact information: 10cf3e6881SAli Bahar * WLAN FAE <wlanfae@realtek.com> 11cf3e6881SAli Bahar * Larry Finger <Larry.Finger@lwfinger.net> 12cf3e6881SAli Bahar * 13cf3e6881SAli Bahar ******************************************************************************/ 142865d42cSLarry Finger /* --------------------------------------------------------------------- 150c9968efSPunit Vara * 160c9968efSPunit Vara * For type defines and data structure defines 170c9968efSPunit Vara * 180c9968efSPunit Vara * --------------------------------------------------------------------- 190c9968efSPunit Vara */ 202865d42cSLarry Finger #ifndef __DRV_TYPES_H__ 212865d42cSLarry Finger #define __DRV_TYPES_H__ 222865d42cSLarry Finger 232865d42cSLarry Finger struct _adapter; 242865d42cSLarry Finger 252865d42cSLarry Finger #include "osdep_service.h" 262865d42cSLarry Finger #include "wlan_bssdef.h" 272865d42cSLarry Finger #include "rtl8712_spec.h" 282865d42cSLarry Finger #include "rtl8712_hal.h" 298c213fa5SLarry Finger #include <linux/mutex.h> 308c213fa5SLarry Finger #include <linux/completion.h> 312865d42cSLarry Finger 322865d42cSLarry Finger enum _NIC_VERSION { 332865d42cSLarry Finger RTL8711_NIC, 342865d42cSLarry Finger RTL8712_NIC, 352865d42cSLarry Finger RTL8713_NIC, 362865d42cSLarry Finger RTL8716_NIC 372865d42cSLarry Finger }; 382865d42cSLarry Finger 392865d42cSLarry Finger struct _adapter; 402865d42cSLarry Finger 412865d42cSLarry Finger struct qos_priv { 422865d42cSLarry Finger /* bit mask option: u-apsd, s-apsd, ts, block ack... */ 432865d42cSLarry Finger unsigned int qos_option; 442865d42cSLarry Finger }; 452865d42cSLarry Finger 462865d42cSLarry Finger #include "rtl871x_ht.h" 472865d42cSLarry Finger #include "rtl871x_cmd.h" 482865d42cSLarry Finger #include "rtl871x_xmit.h" 492865d42cSLarry Finger #include "rtl871x_recv.h" 502865d42cSLarry Finger #include "rtl871x_security.h" 512865d42cSLarry Finger #include "rtl871x_pwrctrl.h" 522865d42cSLarry Finger #include "rtl871x_io.h" 532865d42cSLarry Finger #include "rtl871x_eeprom.h" 542865d42cSLarry Finger #include "sta_info.h" 552865d42cSLarry Finger #include "rtl871x_mlme.h" 562865d42cSLarry Finger #include "rtl871x_mp.h" 572865d42cSLarry Finger #include "rtl871x_debug.h" 582865d42cSLarry Finger #include "rtl871x_rf.h" 592865d42cSLarry Finger #include "rtl871x_event.h" 602865d42cSLarry Finger #include "rtl871x_led.h" 612865d42cSLarry Finger 622865d42cSLarry Finger #define SPEC_DEV_ID_DISABLE_HT BIT(1) 632865d42cSLarry Finger 642865d42cSLarry Finger struct specific_device_id { 652865d42cSLarry Finger u32 flags; 662865d42cSLarry Finger u16 idVendor; 672865d42cSLarry Finger u16 idProduct; 682865d42cSLarry Finger 692865d42cSLarry Finger }; 702865d42cSLarry Finger 712865d42cSLarry Finger struct registry_priv { 722865d42cSLarry Finger u8 chip_version; 732865d42cSLarry Finger u8 rfintfs; 742865d42cSLarry Finger u8 lbkmode; 752865d42cSLarry Finger u8 hci; 762865d42cSLarry Finger u8 network_mode; /*infra, ad-hoc, auto*/ 772865d42cSLarry Finger struct ndis_802_11_ssid ssid; 782865d42cSLarry Finger u8 channel;/* ad-hoc support requirement */ 792865d42cSLarry Finger u8 wireless_mode;/* A, B, G, auto */ 802865d42cSLarry Finger u8 vrtl_carrier_sense; /*Enable, Disable, Auto*/ 812865d42cSLarry Finger u8 vcs_type;/*RTS/CTS, CTS-to-self*/ 822865d42cSLarry Finger u16 rts_thresh; 832865d42cSLarry Finger u16 frag_thresh; 842865d42cSLarry Finger u8 preamble;/*long, short, auto*/ 852865d42cSLarry Finger u8 scan_mode;/*active, passive*/ 862865d42cSLarry Finger u8 adhoc_tx_pwr; 872865d42cSLarry Finger u8 soft_ap; 882865d42cSLarry Finger u8 smart_ps; 892865d42cSLarry Finger u8 power_mgnt; 902865d42cSLarry Finger u8 radio_enable; 912865d42cSLarry Finger u8 long_retry_lmt; 922865d42cSLarry Finger u8 short_retry_lmt; 932865d42cSLarry Finger u16 busy_thresh; 942865d42cSLarry Finger u8 ack_policy; 952865d42cSLarry Finger u8 mp_mode; 962865d42cSLarry Finger u8 software_encrypt; 972865d42cSLarry Finger u8 software_decrypt; 982865d42cSLarry Finger /* UAPSD */ 992865d42cSLarry Finger u8 wmm_enable; 1002865d42cSLarry Finger u8 uapsd_enable; 1012865d42cSLarry Finger u8 uapsd_max_sp; 1022865d42cSLarry Finger u8 uapsd_acbk_en; 1032865d42cSLarry Finger u8 uapsd_acbe_en; 1042865d42cSLarry Finger u8 uapsd_acvi_en; 1052865d42cSLarry Finger u8 uapsd_acvo_en; 1062865d42cSLarry Finger 1072865d42cSLarry Finger struct wlan_bssid_ex dev_network; 1082865d42cSLarry Finger 1092865d42cSLarry Finger u8 ht_enable; 1102865d42cSLarry Finger u8 cbw40_enable; 1112865d42cSLarry Finger u8 ampdu_enable;/*for tx*/ 1122865d42cSLarry Finger u8 rf_config; 1132865d42cSLarry Finger u8 low_power; 114d19b8647SLarry Finger u8 wifi_test; 1152865d42cSLarry Finger }; 1162865d42cSLarry Finger 1172865d42cSLarry Finger struct dvobj_priv { 1182865d42cSLarry Finger struct _adapter *padapter; 1192865d42cSLarry Finger u32 nr_endpoint; 1202865d42cSLarry Finger u8 ishighspeed; 1212865d42cSLarry Finger uint (*inirp_init)(struct _adapter *adapter); 1222865d42cSLarry Finger uint (*inirp_deinit)(struct _adapter *adapter); 1232865d42cSLarry Finger struct usb_device *pusbdev; 1242865d42cSLarry Finger }; 1252865d42cSLarry Finger 126d1661dfdSAli Bahar /** 127d1661dfdSAli Bahar * struct _adapter - the main adapter structure for this device. 128d1661dfdSAli Bahar * 129be10ac2bSJustin P. Mattock * bup: True indicates that the interface is up. 130d1661dfdSAli Bahar */ 1312865d42cSLarry Finger struct _adapter { 1322865d42cSLarry Finger struct dvobj_priv dvobjpriv; 1332865d42cSLarry Finger struct mlme_priv mlmepriv; 1342865d42cSLarry Finger struct cmd_priv cmdpriv; 1352865d42cSLarry Finger struct evt_priv evtpriv; 1362865d42cSLarry Finger struct io_queue *pio_queue; 1372865d42cSLarry Finger struct xmit_priv xmitpriv; 1382865d42cSLarry Finger struct recv_priv recvpriv; 1392865d42cSLarry Finger struct sta_priv stapriv; 1402865d42cSLarry Finger struct security_priv securitypriv; 1412865d42cSLarry Finger struct registry_priv registrypriv; 1422865d42cSLarry Finger struct wlan_acl_pool acl_list; 1432865d42cSLarry Finger struct pwrctrl_priv pwrctrlpriv; 1442865d42cSLarry Finger struct eeprom_priv eeprompriv; 1452865d42cSLarry Finger struct hal_priv halpriv; 1462865d42cSLarry Finger struct led_priv ledpriv; 1472865d42cSLarry Finger struct mp_priv mppriv; 1480ec6fc6fSHimadri Pandya bool driver_stopped; 1495b8d98f1SHimadri Pandya bool surprise_removed; 1507e517382SHimadri Pandya bool suspended; 1512865d42cSLarry Finger u32 IsrContent; 152906ad742SDeepak Mishra u8 eeprom_address_size; 1532865d42cSLarry Finger u8 hw_init_completed; 154*cc96550bSDeepak Mishra struct task_struct *cmd_thread; 1552865d42cSLarry Finger pid_t evtThread; 1562865d42cSLarry Finger struct task_struct *xmitThread; 1572865d42cSLarry Finger pid_t recvThread; 1582865d42cSLarry Finger uint (*dvobj_init)(struct _adapter *adapter); 1592865d42cSLarry Finger void (*dvobj_deinit)(struct _adapter *adapter); 1602865d42cSLarry Finger struct net_device *pnetdev; 1612865d42cSLarry Finger int bup; 1622865d42cSLarry Finger struct net_device_stats stats; 1632865d42cSLarry Finger struct iw_statistics iwstats; 1642865d42cSLarry Finger int pid; /*process id from UI*/ 165143198fdSJames A Shackleford struct work_struct wkFilterRxFF0; 166f95302eeSAli Bahar u8 blnEnableRxFF0Filter; 167f95302eeSAli Bahar spinlock_t lockRxFF0Filter; 1688c213fa5SLarry Finger const struct firmware *fw; 1698c213fa5SLarry Finger struct usb_interface *pusb_intf; 1708c213fa5SLarry Finger struct mutex mutex_start; 1718c213fa5SLarry Finger struct completion rtl8712_fw_ready; 1722865d42cSLarry Finger }; 1732865d42cSLarry Finger 1742865d42cSLarry Finger static inline u8 *myid(struct eeprom_priv *peepriv) 1752865d42cSLarry Finger { 1762865d42cSLarry Finger return peepriv->mac_addr; 1772865d42cSLarry Finger } 1782865d42cSLarry Finger 1792865d42cSLarry Finger u8 r8712_usb_hal_bus_init(struct _adapter *adapter); 1802865d42cSLarry Finger 1812865d42cSLarry Finger #endif /*__DRV_TYPES_H__*/ 1822865d42cSLarry Finger 183