Linux 3.9-rc5
[deliverable/linux.git] / drivers / staging / vt6656 / iocmd.h
1 /*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * File: iocmd.h
20 *
21 * Purpose: Handles the viawget ioctl private interface functions
22 *
23 * Author: Lyndon Chen
24 *
25 * Date: May 8, 2002
26 *
27 */
28
29 #ifndef __IOCMD_H__
30 #define __IOCMD_H__
31
32 #include "ttype.h"
33
34 /*--------------------- Export Definitions -------------------------*/
35
36 // ioctl Command code
37 #define MAGIC_CODE 0x3142
38 #define IOCTL_CMD_TEST (SIOCDEVPRIVATE + 0)
39 #define IOCTL_CMD_SET (SIOCDEVPRIVATE + 1)
40 #define IOCTL_CMD_HOSTAPD (SIOCDEVPRIVATE + 2)
41 #define IOCTL_CMD_WPA (SIOCDEVPRIVATE + 3)
42
43 typedef enum tagWMAC_CMD {
44
45 WLAN_CMD_BSS_SCAN,
46 WLAN_CMD_BSS_JOIN,
47 WLAN_CMD_DISASSOC,
48 WLAN_CMD_SET_WEP,
49 WLAN_CMD_GET_LINK,
50 WLAN_CMD_GET_LISTLEN,
51 WLAN_CMD_GET_LIST,
52 WLAN_CMD_GET_MIB,
53 WLAN_CMD_GET_STAT,
54 WLAN_CMD_STOP_MAC,
55 WLAN_CMD_START_MAC,
56 WLAN_CMD_AP_START,
57 WLAN_CMD_SET_HOSTAPD,
58 WLAN_CMD_SET_HOSTAPD_STA,
59 WLAN_CMD_SET_802_1X,
60 WLAN_CMD_SET_HOST_WEP,
61 WLAN_CMD_SET_WPA,
62 WLAN_CMD_GET_NODE_CNT,
63 WLAN_CMD_ZONETYPE_SET,
64 WLAN_CMD_GET_NODE_LIST
65
66 } WMAC_CMD, *PWMAC_CMD;
67
68 typedef enum tagWZONETYPE {
69 ZoneType_USA = 0,
70 ZoneType_Japan = 1,
71 ZoneType_Europe = 2
72 } WZONETYPE;
73
74 #define ADHOC 0
75 #define INFRA 1
76 #define BOTH 2
77 #define AP 3
78
79 #define ADHOC_STARTED 1
80 #define ADHOC_JOINTED 2
81
82 #define PHY80211a 0
83 #define PHY80211b 1
84 #define PHY80211g 2
85
86 #define SSID_ID 0
87 #define SSID_MAXLEN 32
88 #define BSSID_LEN 6
89 #define WEP_NKEYS 4
90 #define WEP_KEYMAXLEN 29
91 #define WEP_40BIT_LEN 5
92 #define WEP_104BIT_LEN 13
93 #define WEP_232BIT_LEN 16
94
95 // Ioctl interface structure
96 // Command structure
97 //
98 typedef struct tagSCmdRequest {
99 u8 name[16];
100 void *data;
101 u16 wResult;
102 u16 wCmdCode;
103 } __packed SCmdRequest, *PSCmdRequest;
104
105 //
106 // Scan
107 //
108
109 typedef struct tagSCmdScan {
110
111 u8 ssid[SSID_MAXLEN + 2];
112
113 } __packed SCmdScan, *PSCmdScan;
114
115 //
116 // BSS Join
117 //
118
119 typedef struct tagSCmdBSSJoin {
120
121 u16 wBSSType;
122 u16 wBBPType;
123 u8 ssid[SSID_MAXLEN + 2];
124 u32 uChannel;
125 bool bPSEnable;
126 bool bShareKeyAuth;
127
128 } __packed SCmdBSSJoin, *PSCmdBSSJoin;
129
130 //
131 // Zonetype Setting
132 //
133
134 typedef struct tagSCmdZoneTypeSet {
135
136 bool bWrite;
137 WZONETYPE ZoneType;
138
139 } __packed SCmdZoneTypeSet, *PSCmdZoneTypeSet;
140
141 typedef struct tagSWPAResult {
142 char ifname[100];
143 u8 proto;
144 u8 key_mgmt;
145 u8 eap_type;
146 bool authenticated;
147 } __packed SWPAResult, *PSWPAResult;
148
149 typedef struct tagSCmdStartAP {
150
151 u16 wBSSType;
152 u16 wBBPType;
153 u8 ssid[SSID_MAXLEN + 2];
154 u32 uChannel;
155 u32 uBeaconInt;
156 bool bShareKeyAuth;
157 u8 byBasicRate;
158
159 } __packed SCmdStartAP, *PSCmdStartAP;
160
161 typedef struct tagSCmdSetWEP {
162
163 bool bEnableWep;
164 u8 byKeyIndex;
165 u8 abyWepKey[WEP_NKEYS][WEP_KEYMAXLEN];
166 bool bWepKeyAvailable[WEP_NKEYS];
167 u32 auWepKeyLength[WEP_NKEYS];
168
169 } __packed SCmdSetWEP, *PSCmdSetWEP;
170
171 typedef struct tagSBSSIDItem {
172
173 u32 uChannel;
174 u8 abyBSSID[BSSID_LEN];
175 u8 abySSID[SSID_MAXLEN + 1];
176 u16 wBeaconInterval;
177 u16 wCapInfo;
178 u8 byNetType;
179 bool bWEPOn;
180 u32 uRSSI;
181
182 } __packed SBSSIDItem;
183
184
185 typedef struct tagSBSSIDList {
186
187 u32 uItem;
188 SBSSIDItem sBSSIDList[0];
189 } __packed SBSSIDList, *PSBSSIDList;
190
191
192 typedef struct tagSNodeItem {
193 // STA info
194 u16 wAID;
195 u8 abyMACAddr[6];
196 u16 wTxDataRate;
197 u16 wInActiveCount;
198 u16 wEnQueueCnt;
199 u16 wFlags;
200 bool bPWBitOn;
201 u8 byKeyIndex;
202 u16 wWepKeyLength;
203 u8 abyWepKey[WEP_KEYMAXLEN];
204 // Auto rate fallback vars
205 bool bIsInFallback;
206 u32 uTxFailures;
207 u32 uTxAttempts;
208 u16 wFailureRatio;
209
210 } __packed SNodeItem;
211
212
213 typedef struct tagSNodeList {
214
215 u32 uItem;
216 SNodeItem sNodeList[0];
217
218 } __packed SNodeList, *PSNodeList;
219
220
221 typedef struct tagSCmdLinkStatus {
222
223 bool bLink;
224 u16 wBSSType;
225 u8 byState;
226 u8 abyBSSID[BSSID_LEN];
227 u8 abySSID[SSID_MAXLEN + 2];
228 u32 uChannel;
229 u32 uLinkRate;
230
231 } __packed SCmdLinkStatus, *PSCmdLinkStatus;
232
233 //
234 // 802.11 counter
235 //
236 typedef struct tagSDot11MIBCount {
237 u32 TransmittedFragmentCount;
238 u32 MulticastTransmittedFrameCount;
239 u32 FailedCount;
240 u32 RetryCount;
241 u32 MultipleRetryCount;
242 u32 RTSSuccessCount;
243 u32 RTSFailureCount;
244 u32 ACKFailureCount;
245 u32 FrameDuplicateCount;
246 u32 ReceivedFragmentCount;
247 u32 MulticastReceivedFrameCount;
248 u32 FCSErrorCount;
249 } __packed SDot11MIBCount, *PSDot11MIBCount;
250
251
252
253 //
254 // statistic counter
255 //
256 typedef struct tagSStatMIBCount {
257 //
258 // ISR status count
259 //
260 u32 dwIsrTx0OK;
261 u32 dwIsrTx1OK;
262 u32 dwIsrBeaconTxOK;
263 u32 dwIsrRxOK;
264 u32 dwIsrTBTTInt;
265 u32 dwIsrSTIMERInt;
266 u32 dwIsrUnrecoverableError;
267 u32 dwIsrSoftInterrupt;
268 u32 dwIsrRxNoBuf;
269 /////////////////////////////////////
270
271 u32 dwIsrUnknown; /* unknown interrupt count */
272
273 // RSR status count
274 //
275 u32 dwRsrFrmAlgnErr;
276 u32 dwRsrErr;
277 u32 dwRsrCRCErr;
278 u32 dwRsrCRCOk;
279 u32 dwRsrBSSIDOk;
280 u32 dwRsrADDROk;
281 u32 dwRsrICVOk;
282 u32 dwNewRsrShortPreamble;
283 u32 dwRsrLong;
284 u32 dwRsrRunt;
285
286 u32 dwRsrRxControl;
287 u32 dwRsrRxData;
288 u32 dwRsrRxManage;
289
290 u32 dwRsrRxPacket;
291 u32 dwRsrRxOctet;
292 u32 dwRsrBroadcast;
293 u32 dwRsrMulticast;
294 u32 dwRsrDirected;
295 // 64-bit OID
296 u32 ullRsrOK;
297
298 // for some optional OIDs (64 bits) and DMI support
299 u32 ullRxBroadcastBytes;
300 u32 ullRxMulticastBytes;
301 u32 ullRxDirectedBytes;
302 u32 ullRxBroadcastFrames;
303 u32 ullRxMulticastFrames;
304 u32 ullRxDirectedFrames;
305
306 u32 dwRsrRxFragment;
307 u32 dwRsrRxFrmLen64;
308 u32 dwRsrRxFrmLen65_127;
309 u32 dwRsrRxFrmLen128_255;
310 u32 dwRsrRxFrmLen256_511;
311 u32 dwRsrRxFrmLen512_1023;
312 u32 dwRsrRxFrmLen1024_1518;
313
314 // TSR0,1 status count
315 //
316 u32 dwTsrTotalRetry[2]; /* total collision retry count */
317 u32 dwTsrOnceRetry[2]; /* this packet had one collision */
318 u32 dwTsrMoreThanOnceRetry[2]; /* this packet had many collisions */
319 u32 dwTsrRetry[2]; /* this packet has ever occur collision,
320 * that is (dwTsrOnceCollision0 plus
321 * dwTsrMoreThanOnceCollision0) */
322 u32 dwTsrACKData[2];
323 u32 dwTsrErr[2];
324 u32 dwAllTsrOK[2];
325 u32 dwTsrRetryTimeout[2];
326 u32 dwTsrTransmitTimeout[2];
327
328 u32 dwTsrTxPacket[2];
329 u32 dwTsrTxOctet[2];
330 u32 dwTsrBroadcast[2];
331 u32 dwTsrMulticast[2];
332 u32 dwTsrDirected[2];
333
334 // RD/TD count
335 u32 dwCntRxFrmLength;
336 u32 dwCntTxBufLength;
337
338 u8 abyCntRxPattern[16];
339 u8 abyCntTxPattern[16];
340
341 /* Software check.... */
342 u32 dwCntRxDataErr; /* rx buffer data CRC err count */
343 u32 dwCntDecryptErr; /* rx buffer data CRC err count */
344 u32 dwCntRxICVErr; /* rx buffer data CRC err count */
345 u32 idxRxErrorDesc; /* index for rx data error RD */
346
347 /* 64-bit OID */
348 u32 ullTsrOK[2];
349
350 // for some optional OIDs (64 bits) and DMI support
351 u32 ullTxBroadcastFrames[2];
352 u32 ullTxMulticastFrames[2];
353 u32 ullTxDirectedFrames[2];
354 u32 ullTxBroadcastBytes[2];
355 u32 ullTxMulticastBytes[2];
356 u32 ullTxDirectedBytes[2];
357 } __packed SStatMIBCount, *PSStatMIBCount;
358
359 typedef struct tagSCmdValue {
360
361 u32 dwValue;
362
363 } __packed SCmdValue, *PSCmdValue;
364
365 //
366 // hostapd & viawget ioctl related
367 //
368
369 // VIAGWET_IOCTL_HOSTAPD ioctl() cmd:
370 enum {
371 VIAWGET_HOSTAPD_FLUSH = 1,
372 VIAWGET_HOSTAPD_ADD_STA = 2,
373 VIAWGET_HOSTAPD_REMOVE_STA = 3,
374 VIAWGET_HOSTAPD_GET_INFO_STA = 4,
375 VIAWGET_HOSTAPD_SET_ENCRYPTION = 5,
376 VIAWGET_HOSTAPD_GET_ENCRYPTION = 6,
377 VIAWGET_HOSTAPD_SET_FLAGS_STA = 7,
378 VIAWGET_HOSTAPD_SET_ASSOC_AP_ADDR = 8,
379 VIAWGET_HOSTAPD_SET_GENERIC_ELEMENT = 9,
380 VIAWGET_HOSTAPD_MLME = 10,
381 VIAWGET_HOSTAPD_SCAN_REQ = 11,
382 VIAWGET_HOSTAPD_STA_CLEAR_STATS = 12,
383 };
384
385 #define VIAWGET_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \
386 ((int) (&((struct viawget_hostapd_param *) 0)->u.generic_elem.data))
387
388 // Maximum length for algorithm names (-1 for nul termination) used in ioctl()
389
390 struct viawget_hostapd_param {
391 u32 cmd;
392 u8 sta_addr[6];
393 union {
394 struct {
395 u16 aid;
396 u16 capability;
397 u8 tx_supp_rates;
398 } add_sta;
399 struct {
400 u32 inactive_sec;
401 } get_info_sta;
402 struct {
403 u8 alg;
404 u32 flags;
405 u32 err;
406 u8 idx;
407 u8 seq[8];
408 u16 key_len;
409 u8 key[0];
410 } crypt;
411 struct {
412 u32 flags_and;
413 u32 flags_or;
414 } set_flags_sta;
415 struct {
416 u16 rid;
417 u16 len;
418 u8 data[0];
419 } rid;
420 struct {
421 u8 len;
422 u8 data[0];
423 } generic_elem;
424 struct {
425 u16 cmd;
426 u16 reason_code;
427 } mlme;
428 struct {
429 u8 ssid_len;
430 u8 ssid[32];
431 } scan_req;
432 } u;
433 } __packed;
434
435 /*--------------------- Export Classes ----------------------------*/
436
437 /*--------------------- Export Variables --------------------------*/
438
439 /*--------------------- Export Types ------------------------------*/
440
441 /*--------------------- Export Functions --------------------------*/
442
443 #endif /* __IOCMD_H__ */
This page took 0.042423 seconds and 5 git commands to generate.