Commit | Line | Data |
---|---|---|
4bd43f50 LR |
1 | /* |
2 | * Copyright (c) 2007-2008 Atheros Communications Inc. | |
3 | * | |
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. | |
7 | * | |
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. | |
15 | */ | |
16 | /* */ | |
17 | /* Module Name : usbdrv.h */ | |
18 | /* */ | |
19 | /* Abstract */ | |
20 | /* This module contains network interface up/down related definition*/ | |
21 | /* */ | |
22 | /* NOTES */ | |
23 | /* Platform dependent. */ | |
24 | /* */ | |
25 | /************************************************************************/ | |
26 | ||
27 | #ifndef _USBDRV_H | |
28 | #define _USBDRV_H | |
29 | ||
30 | #define WLAN_USB 0 | |
31 | #define WLAN_PCI 1 | |
32 | ||
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> | |
f4f85ff7 | 38 | #include <linux/uaccess.h> |
4bd43f50 LR |
39 | #include <linux/wireless.h> |
40 | #include <linux/if_arp.h> | |
a4ab2773 | 41 | #include <linux/slab.h> |
f4f85ff7 | 42 | #include <linux/io.h> |
4bd43f50 LR |
43 | |
44 | #include "zdcompat.h" | |
45 | ||
46 | #include "oal_dt.h" | |
47 | #include "oal_marc.h" | |
48 | #include "80211core/pub_zfi.h" | |
dba0da37 | 49 | /* #include "pub_zfw.h" */ |
4bd43f50 LR |
50 | #include "80211core/pub_usb.h" |
51 | ||
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 | |
55 | ||
56 | #define usb_complete_t usb_complete_t | |
57 | #define pipe_t u32_t | |
58 | ||
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 | |
64 | ||
4bd43f50 LR |
65 | #ifdef ZM_HOSTAPD_SUPPORT |
66 | #include "athr_common.h" | |
67 | #endif | |
68 | ||
69 | /************************************************************************** | |
70 | ** Descriptor Data Structure | |
71 | ***************************************************************************/ | |
72 | struct driver_stats { | |
73 | struct net_device_stats net_stats; | |
74 | }; | |
75 | ||
76 | #define ZM_MAX_RX_BUFFER_SIZE 8192 | |
77 | ||
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 | |
82 | #else | |
83 | #define ZM_USB_TX_BUF_SIZE 2048 | |
84 | #define ZM_MAX_TX_URB_NUM 8 | |
85 | #endif | |
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 | |
89 | ||
dba0da37 | 90 | typedef struct UsbTxQ { |
4bd43f50 LR |
91 | zbuf_t *buf; |
92 | u8_t hdr[80]; | |
93 | u16_t hdrlen; | |
94 | u8_t snap[8]; | |
95 | u16_t snapLen; | |
96 | u8_t tail[16]; | |
97 | u16_t tailLen; | |
98 | u16_t offset; | |
99 | } UsbTxQ_t; | |
100 | ||
101 | ||
102 | struct zdap_ioctl { | |
dba0da37 MT |
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 */ | |
4bd43f50 LR |
106 | u8_t data[0x100]; |
107 | }; | |
108 | ||
109 | #define ZM_OAL_MAX_STA_SUPPORT 16 | |
110 | ||
dba0da37 MT |
111 | struct usbdrv_private { |
112 | /* linux used */ | |
4bd43f50 LR |
113 | struct net_device *device; |
114 | #if (WLAN_HOSTIF == WLAN_PCI) | |
115 | struct pci_dev *pdev; | |
116 | #endif | |
117 | #if (WLAN_HOSTIF == WLAN_USB) | |
118 | struct usb_device *udev; | |
119 | struct usb_interface *interface; | |
120 | #endif | |
121 | struct driver_stats drv_stats; | |
122 | char ifname[IFNAMSIZ]; | |
dba0da37 | 123 | int using_dac; |
4bd43f50 LR |
124 | u8_t rev_id; /* adapter PCI revision ID */ |
125 | rwlock_t isolate_lock; | |
126 | spinlock_t cs_lock; | |
127 | int driver_isolated; | |
128 | #if (WLAN_HOSTIF == WLAN_PCI) | |
129 | void *regp; | |
130 | #endif | |
131 | ||
dba0da37 | 132 | /* timer for heart beat */ |
4bd43f50 LR |
133 | struct timer_list hbTimer10ms; |
134 | ||
135 | /* For driver core */ | |
dba0da37 | 136 | void *wd; |
4bd43f50 LR |
137 | |
138 | #if (WLAN_HOSTIF == WLAN_USB) | |
dba0da37 MT |
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]; | |
4bd43f50 LR |
142 | urb_t *WlanTxDataUrb[ZM_MAX_TX_URB_NUM]; |
143 | urb_t *WlanRxDataUrb[ZM_MAX_RX_URB_NUM]; | |
144 | urb_t *RegOutUrb; | |
145 | urb_t *RegInUrb; | |
dba0da37 MT |
146 | UsbTxQ_t UsbTxBufQ[ZM_MAX_TX_BUF_NUM]; |
147 | zbuf_t *UsbRxBufQ[ZM_MAX_RX_URB_NUM]; | |
148 | u16_t TxBufHead; | |
149 | u16_t TxBufTail; | |
150 | u16_t TxBufCnt; | |
151 | u16_t TxUrbHead; | |
152 | u16_t TxUrbTail; | |
153 | u16_t TxUrbCnt; | |
154 | u16_t RxBufHead; | |
155 | u16_t RxBufTail; | |
156 | u16_t RxBufCnt; | |
4bd43f50 LR |
157 | #endif |
158 | ||
159 | #if ZM_USB_STREAM_MODE == 1 | |
dba0da37 | 160 | zbuf_t *reamin_buf; |
4bd43f50 LR |
161 | #endif |
162 | ||
163 | #ifdef ZM_HOSTAPD_SUPPORT | |
dba0da37 | 164 | struct athr_wlan_param athr_wpa_req; |
4bd43f50 | 165 | #endif |
dba0da37 MT |
166 | struct sock *netlink_sk; |
167 | u8_t DeviceOpened; /* CWYang(+) */ | |
168 | u8_t supIe[50]; | |
169 | u8_t supLen; | |
170 | struct ieee80211req_wpaie stawpaie[ZM_OAL_MAX_STA_SUPPORT]; | |
171 | u8_t forwardMgmt; | |
172 | ||
173 | struct zfCbUsbFuncTbl usbCbFunctions; | |
174 | ||
175 | /* For keventd */ | |
176 | u32_t flags; | |
177 | unsigned long kevent_flags; | |
178 | u16_t kevent_ready; | |
179 | ||
180 | struct semaphore ioctl_sem; | |
181 | struct work_struct kevent; | |
182 | wait_queue_head_t wait_queue_event; | |
4bd43f50 | 183 | #ifdef ZM_HALPLUS_LOCK |
dba0da37 | 184 | unsigned long hal_irqFlag; |
4bd43f50 | 185 | #endif |
dba0da37 | 186 | u16_t adapterState; |
4bd43f50 LR |
187 | }; |
188 | ||
189 | /* WDS */ | |
190 | #define ZM_WDS_PORT_NUMBER 6 | |
191 | ||
dba0da37 MT |
192 | struct zsWdsStruct { |
193 | struct net_device *dev; | |
4bd43f50 LR |
194 | u16_t openFlag; |
195 | }; | |
196 | ||
197 | /* VAP */ | |
198 | #define ZM_VAP_PORT_NUMBER 7 | |
199 | ||
dba0da37 MT |
200 | struct zsVapStruct { |
201 | struct net_device *dev; | |
4bd43f50 LR |
202 | u16_t openFlag; |
203 | }; | |
204 | ||
205 | /***************************************/ | |
206 | ||
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 | |
dba0da37 MT |
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 | |
4bd43f50 LR |
234 | |
235 | #define ZDAPIOCTL SIOCDEVPRIVATE | |
236 | ||
237 | enum devState { | |
238 | Opened, | |
239 | Enabled, | |
240 | Disabled, | |
241 | Closed | |
242 | }; | |
243 | ||
244 | #endif /* _USBDRV_H */ | |
245 |