2 * Copyright (c) 2007-2008 Atheros Communications Inc.
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 /* Module Name : usbdrv.h */
20 /* This module contains network interface up/down related definition*/
23 /* Platform dependent. */
25 /************************************************************************/
33 #include <linux/module.h>
34 #include <linux/pci.h>
35 #include <linux/netdevice.h>
36 #include <linux/etherdevice.h>
37 #include <linux/skbuff.h>
38 #include <linux/uaccess.h>
39 #include <linux/wireless.h>
40 #include <linux/if_arp.h>
41 #include <linux/slab.h>
48 #include "80211core/pub_zfi.h"
49 /* #include "pub_zfw.h" */
50 #include "80211core/pub_usb.h"
52 #include <linux/usb.h>
53 /* Please include header files for device type in the beginning of this file */
54 #define urb_t struct urb
56 #define usb_complete_t usb_complete_t
59 /* USB Endpoint definition */
60 #define USB_WLAN_TX_PIPE 1
61 #define USB_WLAN_RX_PIPE 2
62 #define USB_REG_IN_PIPE 3
63 #define USB_REG_OUT_PIPE 4
65 #ifdef ZM_HOSTAPD_SUPPORT
66 #include "athr_common.h"
69 /**************************************************************************
70 ** Descriptor Data Structure
71 ***************************************************************************/
73 struct net_device_stats net_stats
;
76 #define ZM_MAX_RX_BUFFER_SIZE 8192
78 #if ZM_USB_TX_STREAM_MODE == 1
79 #define ZM_MAX_TX_AGGREGATE_NUM 4
80 #define ZM_USB_TX_BUF_SIZE 8096
81 #define ZM_MAX_TX_URB_NUM 4
83 #define ZM_USB_TX_BUF_SIZE 2048
84 #define ZM_MAX_TX_URB_NUM 8
86 #define ZM_USB_REG_MAX_BUF_SIZE 64
87 #define ZM_MAX_RX_URB_NUM 16
88 #define ZM_MAX_TX_BUF_NUM 128
90 typedef struct UsbTxQ
{
103 u16_t cmd
; /* Command to run */
104 u32_t addr
; /* Length of the data buffer */
105 u32_t value
; /* Pointer to the data buffer */
109 #define ZM_OAL_MAX_STA_SUPPORT 16
111 struct usbdrv_private
{
113 struct net_device
*device
;
114 #if (WLAN_HOSTIF == WLAN_PCI)
115 struct pci_dev
*pdev
;
117 #if (WLAN_HOSTIF == WLAN_USB)
118 struct usb_device
*udev
;
119 struct usb_interface
*interface
;
121 struct driver_stats drv_stats
;
122 char ifname
[IFNAMSIZ
];
124 u8_t rev_id
; /* adapter PCI revision ID */
125 rwlock_t isolate_lock
;
128 #if (WLAN_HOSTIF == WLAN_PCI)
132 /* timer for heart beat */
133 struct timer_list hbTimer10ms
;
135 /* For driver core */
138 #if (WLAN_HOSTIF == WLAN_USB)
139 u8_t txUsbBuf
[ZM_MAX_TX_URB_NUM
][ZM_USB_TX_BUF_SIZE
];
140 u8_t regUsbReadBuf
[ZM_USB_REG_MAX_BUF_SIZE
];
141 u8_t regUsbWriteBuf
[ZM_USB_REG_MAX_BUF_SIZE
];
142 urb_t
*WlanTxDataUrb
[ZM_MAX_TX_URB_NUM
];
143 urb_t
*WlanRxDataUrb
[ZM_MAX_RX_URB_NUM
];
146 UsbTxQ_t UsbTxBufQ
[ZM_MAX_TX_BUF_NUM
];
147 zbuf_t
*UsbRxBufQ
[ZM_MAX_RX_URB_NUM
];
159 #if ZM_USB_STREAM_MODE == 1
163 #ifdef ZM_HOSTAPD_SUPPORT
164 struct athr_wlan_param athr_wpa_req
;
166 struct sock
*netlink_sk
;
167 u8_t DeviceOpened
; /* CWYang(+) */
170 struct ieee80211req_wpaie stawpaie
[ZM_OAL_MAX_STA_SUPPORT
];
173 struct zfCbUsbFuncTbl usbCbFunctions
;
177 unsigned long kevent_flags
;
180 struct semaphore ioctl_sem
;
181 struct work_struct kevent
;
182 wait_queue_head_t wait_queue_event
;
183 #ifdef ZM_HALPLUS_LOCK
184 unsigned long hal_irqFlag
;
190 #define ZM_WDS_PORT_NUMBER 6
193 struct net_device
*dev
;
198 #define ZM_VAP_PORT_NUMBER 7
201 struct net_device
*dev
;
205 /***************************************/
207 #define ZM_IOCTL_REG_READ 0x01
208 #define ZM_IOCTL_REG_WRITE 0x02
209 #define ZM_IOCTL_MEM_DUMP 0x03
210 #define ZM_IOCTL_REG_DUMP 0x05
211 #define ZM_IOCTL_TXD_DUMP 0x06
212 #define ZM_IOCTL_RXD_DUMP 0x07
213 #define ZM_IOCTL_MEM_READ 0x0B
214 #define ZM_IOCTL_MEM_WRITE 0x0C
215 #define ZM_IOCTL_DMA_TEST 0x10
216 #define ZM_IOCTL_REG_TEST 0x11
217 #define ZM_IOCTL_TEST 0x80
218 #define ZM_IOCTL_TALLY 0x81 /* CWYang(+) */
219 #define ZM_IOCTL_RTS 0xA0
220 #define ZM_IOCTL_MIX_MODE 0xA1
221 #define ZM_IOCTL_FRAG 0xA2
222 #define ZM_IOCTL_SCAN 0xA3
223 #define ZM_IOCTL_KEY 0xA4
224 #define ZM_IOCTL_RATE 0xA5
225 #define ZM_IOCTL_ENCRYPTION_MODE 0xA6
226 #define ZM_IOCTL_GET_TXCNT 0xA7
227 #define ZM_IOCTL_GET_DEAGG_CNT 0xA8
228 #define ZM_IOCTL_DURATION_MODE 0xA9
229 #define ZM_IOCTL_SET_AES_KEY 0xAA
230 #define ZM_IOCTL_SET_AES_MODE 0xAB
231 #define ZM_IOCTL_SIGNAL_STRENGTH 0xAC /* CWYang(+) */
232 #define ZM_IOCTL_SIGNAL_QUALITY 0xAD /* CWYang(+) */
233 #define ZM_IOCTL_SET_PIBSS_MODE 0xAE
235 #define ZDAPIOCTL SIOCDEVPRIVATE
244 #endif /* _USBDRV_H */