xref: /linux/drivers/staging/rtl8712/drv_types.h (revision 0c9968ef)
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