1 /* ///////////////////////////////////////////////////////////////////////// */
2 /*  */
3 /* Copyright (c) Atmel Corporation.  All rights reserved. */
4 /*  */
5 /* Module Name:  wilc_wlan_if.h */
6 /*  */
7 /*  */
8 /* ///////////////////////////////////////////////////////////////////////// */
9 
10 #ifndef WILC_WLAN_IF_H
11 #define WILC_WLAN_IF_H
12 
13 #include <linux/semaphore.h>
14 #include "linux_wlan_common.h"
15 
16 /********************************************
17  *
18  *      Debug Flags
19  *
20  ********************************************/
21 
22 #define N_INIT			0x00000001
23 #define N_ERR			0x00000002
24 #define N_TXQ			0x00000004
25 #define N_INTR			0x00000008
26 #define N_RXQ			0x00000010
27 
28 /********************************************
29  *
30  *      Host Interface Defines
31  *
32  ********************************************/
33 
34 #define HIF_SDIO		(0)
35 #define HIF_SPI			BIT(0)
36 #define HIF_SDIO_GPIO_IRQ	BIT(2)
37 
38 /********************************************
39  *
40  *      Tx/Rx Buffer Size Defines
41  *
42  ********************************************/
43 
44 #define CE_TX_BUFFER_SIZE	(64 * 1024)
45 #define CE_RX_BUFFER_SIZE	(384 * 1024)
46 
47 /********************************************
48  *
49  *      Wlan Interface Defines
50  *
51  ********************************************/
52 
53 typedef struct {
54 	u32 read_write:		1;
55 	u32 function:		3;
56 	u32 raw:		1;
57 	u32 address:		17;
58 	u32 data:		8;
59 } sdio_cmd52_t;
60 
61 typedef struct {
62 	/* struct { */
63 	u32 read_write:		1;
64 	u32 function:		3;
65 	u32 block_mode:		1;
66 	u32 increment:		1;
67 	u32 address:		17;
68 	u32 count:		9;
69 	/* } bit; */
70 	u8 *buffer;
71 	u32 block_size;
72 } sdio_cmd53_t;
73 
74 typedef struct {
75 	int io_type;
76 	int (*io_init)(void *);
77 	void (*io_deinit)(void *);
78 	union {
79 		struct {
80 			int (*sdio_cmd52)(sdio_cmd52_t *);
81 			int (*sdio_cmd53)(sdio_cmd53_t *);
82 			int (*sdio_set_max_speed)(void);
83 			int (*sdio_set_default_speed)(void);
84 		} sdio;
85 		struct {
86 			int (*spi_max_speed)(void);
87 			int (*spi_tx)(u8 *, u32);
88 			int (*spi_rx)(u8 *, u32);
89 			int (*spi_trx)(u8 *, u8 *, u32);
90 		} spi;
91 	} u;
92 } wilc_wlan_io_func_t;
93 
94 #define WILC_MAC_INDICATE_STATUS	0x1
95 #define WILC_MAC_STATUS_INIT		-1
96 #define WILC_MAC_STATUS_READY		0
97 #define WILC_MAC_STATUS_CONNECT		1
98 
99 #define WILC_MAC_INDICATE_SCAN		0x2
100 
101 typedef struct {
102 	void *os_private;
103 } wilc_wlan_os_context_t;
104 
105 typedef struct {
106 	wilc_wlan_os_context_t os_context;
107 	wilc_wlan_io_func_t io_func;
108 } wilc_wlan_inp_t;
109 
110 struct tx_complete_data {
111 	int size;
112 	void *buff;
113 	u8 *pBssid;
114 	struct sk_buff *skb;
115 };
116 
117 typedef void (*wilc_tx_complete_func_t)(void *, int);
118 
119 #define WILC_TX_ERR_NO_BUF	(-2)
120 
121 /********************************************
122  *
123  *      Wlan Configuration ID
124  *
125  ********************************************/
126 
127 #define MAX_SSID_LEN            33
128 #define MAX_RATES_SUPPORTED     12
129 
130 #define INFINITE_SLEEP_TIME	((u32)0xFFFFFFFF)
131 
132 typedef enum {
133 	SUPP_RATES_IE		= 1,
134 	EXT_SUPP_RATES_IE	= 50,
135 	HT_CAPABILITY_IE	= 45,
136 	RSN_IE			= 48,
137 	WPA_IE			= 221,
138 	WMM_IE			= 221,
139 	P2P_IE			= 221,
140 } BEACON_IE;
141 
142 typedef enum {
143 	INFRASTRUCTURE		= 0,
144 	INDEPENDENT,
145 	AP,
146 } BSSTYPE_T;
147 
148 typedef enum {
149 	RATE_AUTO		= 0,
150 	RATE_1MB		= 1,
151 	RATE_2MB		= 2,
152 	RATE_5MB		= 5,
153 	RATE_6MB		= 6,
154 	RATE_9MB		= 9,
155 	RATE_11MB		= 11,
156 	RATE_12MB		= 12,
157 	RATE_18MB		= 18,
158 	RATE_24MB		= 24,
159 	RATE_26MB		= 36,
160 	RATE_48MB		= 48,
161 	RATE_54MB		= 54
162 } TX_RATE_T;
163 
164 typedef enum {
165 	B_ONLY_MODE		= 0,    /* 1, 2 M, otherwise 5, 11 M */
166 	G_ONLY_MODE,			/* 6,12,24 otherwise 9,18,36,48,54 */
167 	G_MIXED_11B_1_MODE,		/* 1,2,5.5,11 otherwise all on */
168 	G_MIXED_11B_2_MODE,		/* 1,2,5,11,6,12,24 otherwise all on */
169 } G_OPERATING_MODE_T;
170 
171 typedef enum {
172 	G_SHORT_PREAMBLE	= 0,	/* Short Preamble */
173 	G_LONG_PREAMBLE		= 1,	/* Long Preamble */
174 	G_AUTO_PREAMBLE		= 2,	/* Auto Preamble Selection */
175 } G_PREAMBLE_T;
176 
177 #define MAC_CONNECTED		1
178 #define MAC_DISCONNECTED	0
179 
180 #define SCAN_DONE		TRUE
181 typedef enum {
182 	PASSIVE_SCAN		= 0,
183 	ACTIVE_SCAN		= 1,
184 } SCANTYPE_T;
185 
186 typedef enum {
187 	NO_POWERSAVE		= 0,
188 	MIN_FAST_PS		= 1,
189 	MAX_FAST_PS		= 2,
190 	MIN_PSPOLL_PS		= 3,
191 	MAX_PSPOLL_PS		= 4
192 } USER_PS_MODE_T;
193 
194 typedef enum {
195 	CHIP_WAKEDUP		= 0,
196 	CHIP_SLEEPING_AUTO      = 1,
197 	CHIP_SLEEPING_MANUAL	= 2
198 } CHIP_PS_STATE_T;
199 
200 typedef enum {
201 	ACQUIRE_ONLY            = 0,
202 	ACQUIRE_AND_WAKEUP	= 1,
203 } BUS_ACQUIRE_T;
204 
205 typedef enum {
206 	RELEASE_ONLY		= 0,
207 	RELEASE_ALLOW_SLEEP	= 1,
208 } BUS_RELEASE_T;
209 
210 typedef enum {
211 	NO_SECURITY		= 0,
212 	WEP_40			= 0x3,
213 	WEP_104			= 0x7,
214 	WPA_AES			= 0x29,
215 	WPA_TKIP		= 0x49,
216 	WPA_AES_TKIP		= 0x69,	/* Aes or Tkip */
217 	WPA2_AES		= 0x31,
218 	WPA2_TKIP		= 0x51,
219 	WPA2_AES_TKIP		= 0x71,	/* Aes or Tkip */
220 } SECURITY_T;
221 
222 enum AUTHTYPE {
223 	OPEN_SYSTEM		= 1,
224 	SHARED_KEY		= 2,
225 	ANY			= 3,
226 	IEEE8021		= 5
227 };
228 
229 enum SITESURVEY {
230 	SITE_SURVEY_1CH		= 0,
231 	SITE_SURVEY_ALL_CH	= 1,
232 	SITE_SURVEY_OFF		= 2
233 };
234 
235 typedef enum {
236 	NORMAL_ACK		= 0,
237 	NO_ACK,
238 } ACK_POLICY_T;
239 
240 typedef enum {
241 	DONT_RESET		= 0,
242 	DO_RESET		= 1,
243 	NO_REQUEST		= 2,
244 } RESET_REQ_T;
245 
246 typedef enum {
247 	REKEY_DISABLE		= 1,
248 	REKEY_TIME_BASE,
249 	REKEY_PKT_BASE,
250 	REKEY_TIME_PKT_BASE
251 } RSNA_REKEY_POLICY_T;
252 
253 typedef enum {
254 	FILTER_NO		= 0x00,
255 	FILTER_AP_ONLY		= 0x01,
256 	FILTER_STA_ONLY		= 0x02
257 } SCAN_CLASS_FITLER_T;
258 
259 typedef enum {
260 	PRI_HIGH_RSSI		= 0x00,
261 	PRI_LOW_RSSI		= 0x04,
262 	PRI_DETECT		= 0x08
263 } SCAN_PRI_T;
264 
265 typedef enum {
266 	CH_FILTER_OFF		= 0x00,
267 	CH_FILTER_ON		= 0x10
268 } CH_FILTER_T;
269 
270 typedef enum {
271 	AUTO_PROT		= 0,	/* Auto */
272 	NO_PROT,			/* Do not use any protection */
273 	ERP_PROT,			/* Protect all ERP frame exchanges */
274 	HT_PROT,			/* Protect all HT frame exchanges  */
275 	GF_PROT,			/* Protect all GF frame exchanges  */
276 } N_PROTECTION_MODE_T;
277 
278 typedef enum {
279 	G_SELF_CTS_PROT,
280 	G_RTS_CTS_PROT,
281 } G_PROTECTION_MODE_T;
282 
283 typedef enum {
284 	HT_MIXED_MODE		= 1,
285 	HT_ONLY_20MHZ_MODE,
286 	HT_ONLY_20_40MHZ_MODE,
287 } N_OPERATING_MODE_T;
288 
289 typedef enum {
290 	NO_DETECT		= 0,
291 	DETECT_ONLY		= 1,
292 	DETECT_PROTECT		= 2,
293 	DETECT_PROTECT_REPORT	= 3,
294 } N_OBSS_DETECTION_T;
295 
296 typedef enum {
297 	RTS_CTS_NONHT_PROT	= 0,	/* RTS-CTS at non-HT rate */
298 	FIRST_FRAME_NONHT_PROT,		/* First frame at non-HT rate */
299 	LSIG_TXOP_PROT,                 /* LSIG TXOP Protection */
300 	FIRST_FRAME_MIXED_PROT,		/* First frame at Mixed format */
301 } N_PROTECTION_TYPE_T;
302 
303 typedef enum {
304 	STATIC_MODE		= 1,
305 	DYNAMIC_MODE		= 2,
306 	MIMO_MODE		= 3,	/* power save disable */
307 } N_SMPS_MODE_T;
308 
309 typedef enum {
310 	DISABLE_SELF_CTS,
311 	ENABLE_SELF_CTS,
312 	DISABLE_TX_ABORT,
313 	ENABLE_TX_ABORT,
314 	HW_TRIGGER_ABORT,
315 	SW_TRIGGER_ABORT,
316 } TX_ABORT_OPTION_T;
317 
318 enum WID_TYPE {
319 	WID_CHAR		= 0,
320 	WID_SHORT		= 1,
321 	WID_INT			= 2,
322 	WID_STR			= 3,
323 	WID_BIN_DATA		= 4,
324 	WID_BIN			= 5,
325 	WID_IP			= 6,
326 	WID_ADR			= 7,
327 	WID_UNDEF		= 8,
328 	WID_TYPE_FORCE_32BIT	= 0xFFFFFFFF
329 };
330 
331 typedef enum {
332 	WID_NIL				= 0xffff,
333 
334 	/*
335 	 *  BSS Type
336 	 *  -----------------------------------------------------------
337 	 *  Configuration : Infrastructure   Independent   Access Point
338 	 *  Values to set :         0               1            2
339 	 *  -----------------------------------------------------------
340 	 */
341 	WID_BSS_TYPE			= 0x0000,
342 
343 	/*
344 	 *  Transmit Rate
345 	 *  -----------------------------------------------------------
346 	 *  Configuration : 1  2  5.5  11  6  9  12  18  24  36  48  54
347 	 *  Values to set : 1  2    5  11  6  9  12  18  24  36  48  54
348 	 *  -----------------------------------------------------------
349 	 */
350 	WID_CURRENT_TX_RATE		= 0x0001,
351 
352 	/*
353 	 *  Channel
354 	 *  -----------------------------------------------------------
355 	 *  Configuration(g) : 1  2  3  4  5  6  7  8  9 10 11 12 13 14
356 	 *  Values to set    : 1  2  3  4  5  6  7  8  9 10 11 12 13 14
357 	 *  -----------------------------------------------------------
358 	 */
359 	WID_CURRENT_CHANNEL		= 0x0002,
360 
361 	/*
362 	 *  Preamble
363 	 *  -----------------------------------------------------------
364 	 *  Configuration :    short    long      Auto
365 	 *  Values to set :       0       1         2
366 	 *  -----------------------------------------------------------
367 	 */
368 	WID_PREAMBLE			= 0x0003,
369 
370 	/*
371 	 * 11g operating mode (ignored if 11g not present)
372 	 *  -----------------------------------------------------------
373 	 *  Configuration :   HighPerf  Compat(RSet #1) Compat(RSet #2)
374 	 *  Values to set :          1               2               3
375 	 *  -----------------------------------------------------------
376 	 */
377 	WID_11G_OPERATING_MODE		= 0x0004,
378 
379 	/*
380 	 *  Mac status (response only)
381 	 *  -----------------------------------------------------------
382 	 *  Configuration :   disconnect  connect
383 	 *  Values to get :          0       1
384 	 *  -----------------------------------------------------------
385 	 */
386 	WID_STATUS			= 0x0005,
387 
388 	/*
389 	 *  Scan type
390 	 *  -----------------------------------------------------------
391 	 *  Configuration :   Passive Scanning   Active Scanning
392 	 *  Values to set :                  0                 1
393 	 *  -----------------------------------------------------------
394 	 */
395 	WID_SCAN_TYPE			= 0x0007,
396 
397 	/*
398 	 *  Key Id (WEP default key Id)
399 	 *  -----------------------------------------------------------
400 	 *  Configuration :   Any value between 0 to 3
401 	 *  Values to set :   Same value. Default is 0
402 	 *  -----------------------------------------------------------
403 	 */
404 	WID_KEY_ID			= 0x0009,
405 
406 	/*
407 	 *  QoS Enable
408 	 *  -----------------------------------------------------------
409 	 *  Configuration :   QoS Disable   WMM Enable
410 	 *  Values to set :   0             1
411 	 *  -----------------------------------------------------------
412 	 */
413 	WID_QOS_ENABLE			= 0x000A,
414 
415 	/*
416 	 *  Power Management
417 	 *  -----------------------------------------------------------
418 	 *  Configuration : NO_POWERSAVE MIN_POWERSAVE MAX_POWERSAVE
419 	 *  Values to set : 0            1             2
420 	 *  -----------------------------------------------------------
421 	 */
422 	WID_POWER_MANAGEMENT		= 0x000B,
423 
424 	/*
425 	 *  WEP/802 11I Configuration
426 	 *  -----------------------------------------------------------
427 	 *  Configuration:Disable WP40 WP104 WPA-AES WPA-TKIP RSN-AES RSN-TKIP
428 	 *  Values (0x)  :   00     03   07     29       49       31      51
429 	 *  Configuration:WPA-AES+TKIP RSN-AES+TKIP
430 	 *  Values (0x)  :      69        71
431 	 *  -----------------------------------------------------------
432 	 */
433 	WID_11I_MODE			= 0x000C,
434 
435 	/*
436 	 *  WEP Configuration: Used in BSS STA mode only when WEP is enabled
437 	 *  -----------------------------------------------------------
438 	 *  Configuration : Open System Shared Key Any Type | 802.1x Auth
439 	 *  Values (0x)   :    01             02         03 |    BIT2
440 	 *  -----------------------------------------------------------
441 	 */
442 	WID_AUTH_TYPE			= 0x000D,
443 
444 	/*
445 	 *  Site Survey Type
446 	 *  -----------------------------------------------------------
447 	 *  Configuration       :  Values to set
448 	 *  Survey 1 Channel    :  0
449 	 *  survey all Channels :  1
450 	 *  Disable Site Survey :  2
451 	 *  -----------------------------------------------------------
452 	 */
453 	WID_SITE_SURVEY			= 0x000E,
454 
455 	/*
456 	 *  Listen Interval
457 	 *  -----------------------------------------------------------
458 	 *  Configuration :   Any value between 1 to 255
459 	 *  Values to set :   Same value. Default is 3
460 	 *  -----------------------------------------------------------
461 	 */
462 	WID_LISTEN_INTERVAL		= 0x000F,
463 
464 	/*
465 	 *  DTIM Period
466 	 *  -----------------------------------------------------------
467 	 *  Configuration :   Any value between 1 to 255
468 	 *  Values to set :   Same value. Default is 3
469 	 *  -----------------------------------------------------------
470 	 */
471 	WID_DTIM_PERIOD			= 0x0010,
472 
473 	/*
474 	 *  ACK Policy
475 	 *  -----------------------------------------------------------
476 	 *  Configuration :   Normal Ack            No Ack
477 	 *  Values to set :       0                   1
478 	 *  -----------------------------------------------------------
479 	 */
480 	WID_ACK_POLICY			= 0x0011,
481 
482 	/*
483 	 *  Reset MAC (Set only)
484 	 *  -----------------------------------------------------------
485 	 *  Configuration :   Don't Reset	Reset	No Request
486 	 *  Values to set :       0               1	    2
487 	 *  -----------------------------------------------------------
488 	 */
489 	WID_RESET			= 0x0012,
490 
491 	/*
492 	 *  Broadcast SSID Option: Setting this will adhere to "" SSID element
493 	 *  -----------------------------------------------------------
494 	 *  Configuration :   Enable             Disable
495 	 *  Values to set :   1                  0
496 	 *  -----------------------------------------------------------
497 	 */
498 	WID_BCAST_SSID			= 0x0015,
499 
500 	/*
501 	 *  Disconnect (Station)
502 	 *  -----------------------------------------------------------
503 	 *  Configuration :   Association ID
504 	 *  Values to set :   Association ID
505 	 *  -----------------------------------------------------------
506 	 */
507 	WID_DISCONNECT			= 0x0016,
508 
509 	/*
510 	 *  11a Tx Power Level
511 	 *  -----------------------------------------------------------
512 	 *  Configuration : Sets TX Power (Higher the value greater the power)
513 	 *  Values to set : Any value between 0 and 63 (inclusive Default 48)
514 	 *  -----------------------------------------------------------
515 	 */
516 	WID_TX_POWER_LEVEL_11A		= 0x0018,
517 
518 	/*
519 	 *  Group Key Update Policy Selection
520 	 *  -----------------------------------------------------------
521 	 *  Configuration : Disabled timeBased packetBased timePacketBased
522 	 *  Values to set :   1            2          3              4
523 	 *  -----------------------------------------------------------
524 	 */
525 	WID_REKEY_POLICY		= 0x0019,
526 
527 	/*
528 	 *  Allow Short Slot
529 	 *  -----------------------------------------------------------
530 	 *  Configuration : Disallow Short Slot      Allow Short Slot
531 	 *          (Enable Only Long Slot) (Enable Short Slot if applicable)
532 	 *  Values to set :    0         1
533 	 *  -----------------------------------------------------------
534 	 */
535 	WID_SHORT_SLOT_ALLOWED		= 0x001A,
536 
537 	WID_PHY_ACTIVE_REG		= 0x001B,
538 
539 	/*
540 	 *  11b Tx Power Level
541 	 *  -----------------------------------------------------------
542 	 *  Configuration : Sets TX Power (Higher the value greater the power)
543 	 *  Values to set : Any value between 0 and 63 (inclusive Default 48)
544 	 *  -----------------------------------------------------------
545 	 */
546 	WID_TX_POWER_LEVEL_11B		= 0x001D,
547 
548 	/*
549 	 *  Scan Request
550 	 *  -----------------------------------------------------------
551 	 *  Configuration : Request default scan
552 	 *  Values to set : 0
553 	 *  -----------------------------------------------------------
554 	 */
555 	WID_START_SCAN_REQ		= 0x001E,
556 
557 	/*
558 	 *  Rssi (get only)
559 	 *  -----------------------------------------------------------
560 	 *  Configuration :
561 	 *  Values to get : Rssi value
562 	 *  -----------------------------------------------------------
563 	 */
564 	WID_RSSI			= 0x001F,
565 
566 	/*
567 	 * Join Request
568 	 *  -----------------------------------------------------------
569 	 *  Configuration : Request to join
570 	 *  Values to set : index of scan result
571 	 *  -----------------------------------------------------------
572 	 */
573 	WID_JOIN_REQ			= 0x0020,
574 
575 	WID_LINKSPEED			= 0x0026,
576 
577 	/*
578 	 *  Enable User Control of TX Power
579 	 *  -----------------------------------------------------------
580 	 *  Configuration : Disable                  Enable
581 	 *  Values to set :    0                       1
582 	 *  -----------------------------------------------------------
583 	 */
584 	WID_USER_CONTROL_ON_TX_POWER	= 0x0027,
585 
586 	WID_MEMORY_ACCESS_8BIT		= 0x0029,
587 
588 	/*
589 	 *  Enable Auto RX Sensitivity feature
590 	 *  -----------------------------------------------------------
591 	 *  Configuration : Disable                  Enable
592 	 *  Values to set :    0                       1
593 	 *  -----------------------------------------------------------
594 	 */
595 	WID_AUTO_RX_SENSITIVITY		= 0x0032,
596 
597 	/*
598 	 *  Receive Buffer Based Ack
599 	 *  -----------------------------------------------------------
600 	 *  Configuration : Disable                  Enable
601 	 *  Values to set :    0                       1
602 	 *  -----------------------------------------------------------
603 	 */
604 	WID_DATAFLOW_CONTROL		= 0x0033,
605 
606 	/*
607 	 *  Scan Filter
608 	 *  -----------------------------------------------------------
609 	 *  Configuration : Class       No filter   AP only   Station Only
610 	 *  Values to set :                0           1           2
611 	 *  Configuration : Priority    High Rssi   Low Rssi     Detect
612 	 *  Values to set :                0          0x4         0x0
613 	 *  Configuration : Channel     filter off  filter on
614 	 *  Values to set :                0          0x10
615 	 *  -----------------------------------------------------------
616 	 */
617 	WID_SCAN_FILTER			= 0x0036,
618 
619 	/*
620 	 *  Link Loss Threshold (measure in the beacon period)
621 	 *  -----------------------------------------------------------
622 	 *  Configuration : Any value between 10 and 254(Set to 255 disable)
623 	 *  Values to set : Same value. Default is 10
624 	 *  -----------------------------------------------------------
625 	 */
626 	WID_LINK_LOSS_THRESHOLD		= 0x0037,
627 
628 	WID_ABORT_RUNNING_SCAN		= 0x003E,
629 
630 	/* NMAC Character WID list */
631 	WID_WPS_START			= 0x0043,
632 
633 	/*
634 	 *  Protection mode for MAC
635 	 *  -----------------------------------------------------------
636 	 *  Configuration :  Auto  No protection  ERP    HT    GF
637 	 *  Values to set :  0     1              2      3     4
638 	 *  -----------------------------------------------------------
639 	 */
640 	WID_11N_PROT_MECH		= 0x0080,
641 
642 	/*
643 	 *  ERP Protection type for MAC
644 	 *  -----------------------------------------------------------
645 	 *  Configuration :  Self-CTS   RTS-CTS
646 	 *  Values to set :  0          1
647 	 *  -----------------------------------------------------------
648 	 */
649 	WID_11N_ERP_PROT_TYPE		= 0x0081,
650 
651 	/*
652 	 *  HT Option Enable
653 	 *  -----------------------------------------------------------
654 	 *  Configuration :   HT Enable          HT Disable
655 	 *  Values to set :   1                  0
656 	 *  -----------------------------------------------------------
657 	 */
658 	WID_11N_ENABLE			= 0x0082,
659 
660 	/*
661 	 *  11n Operating mode (Note that 11g operating mode will also be
662 	 *  used in addition to this, if this is set to HT Mixed mode)
663 	 *  -----------------------------------------------------------
664 	 *   Configuration :  HT Mixed  HT Only-20MHz   HT Only-20/40MHz
665 	 *  Values to set :     1         2               3
666 	 *  -----------------------------------------------------------
667 	 */
668 	WID_11N_OPERATING_MODE		= 0x0083,
669 
670 	/*
671 	 *  11n OBSS non-HT STA Detection flag
672 	 *  -----------------------------------------------------------
673 	 *  Configuration :  Do not detect
674 	 *  Values to set :  0
675 	 *  Configuration :  Detect, do not protect or report
676 	 *  Values to set :  1
677 	 *  Configuration :  Detect, protect and do not report
678 	 *  Values to set :  2
679 	 *  Configuration :  Detect, protect and report to other BSS
680 	 *  Values to set :  3
681 	 *  -----------------------------------------------------------
682 	 */
683 	WID_11N_OBSS_NONHT_DETECTION	= 0x0084,
684 
685 	/*
686 	 *  11n HT Protection Type
687 	 *  -----------------------------------------------------------
688 	 *  Configuration :  RTS-CTS   First Frame Exchange at non-HT-rate
689 	 *  Values to set :  0         1
690 	 *  Configuration :  LSIG TXOP First Frame Exchange in Mixed Fmt
691 	 *  Values to set :  2         3
692 	 *  -----------------------------------------------------------
693 	 */
694 	WID_11N_HT_PROT_TYPE		= 0x0085,
695 
696 	/*
697 	 *  11n RIFS Protection Enable Flag
698 	 *  -----------------------------------------------------------
699 	 *  Configuration :  Disable    Enable
700 	 *  Values to set :  0          1
701 	 *  -----------------------------------------------------------
702 	 */
703 	WID_11N_RIFS_PROT_ENABLE	= 0x0086,
704 
705 	/*
706 	 *  SMPS Mode
707 	 *  -----------------------------------------------------------
708 	 *  Configuration :  Static   Dynamic   MIMO (Power Save Disabled)
709 	 *  Values to set :  1        2         3
710 	 *  -----------------------------------------------------------
711 	 */
712 	WID_11N_SMPS_MODE		= 0x0087,
713 
714 	/*
715 	 *  Current transmit MCS
716 	 *  -----------------------------------------------------------
717 	 *  Configuration :  MCS Index for data rate
718 	 *  Values to set :  0 to 7
719 	 *  -----------------------------------------------------------
720 	 */
721 	WID_11N_CURRENT_TX_MCS		= 0x0088,
722 
723 	WID_11N_PRINT_STATS		= 0x0089,
724 
725 	/*
726 	 *  11n Short GI Enable Flag
727 	 *  -----------------------------------------------------------
728 	 *  Configuration :  Disable    Enable
729 	 *  Values to set :  0          1
730 	 *  -----------------------------------------------------------
731 	 */
732 	WID_11N_SHORT_GI_ENABLE		= 0x008D,
733 
734 	/*
735 	 *  11n RIFS Enable Flag
736 	 *  -----------------------------------------------------------
737 	 *  Configuration :  Disable    Enable
738 	 *  Values to set :  0          1
739 	 *  -----------------------------------------------------------
740 	 */
741 	WID_RIFS_MODE			= 0x0094,
742 
743 	/*
744 	 *  TX Abort Feature
745 	 *  -----------------------------------------------------------
746 	 *  Configuration :  Disable Self CTS    Enable Self CTS
747 	 *  Values to set :             0                      1
748 	 *  Configuration :  Disable TX Abort    Enable TX Abort
749 	 *  Values to set :             2                      3
750 	 *  Configuration :  Enable HW TX Abort Enable SW TX Abort
751 	 *  Values to set :             4                      5
752 	 *  -----------------------------------------------------------
753 	 */
754 	WID_TX_ABORT_CONFIG		= 0x00A1,
755 
756 	WID_REG_TSSI_11B_VALUE		= 0x00A6,
757 	WID_REG_TSSI_11G_VALUE		= 0x00A7,
758 	WID_REG_TSSI_11N_VALUE		= 0x00A8,
759 	WID_TX_CALIBRATION		= 0x00A9,
760 	WID_DSCR_TSSI_11B_VALUE		= 0x00AA,
761 	WID_DSCR_TSSI_11G_VALUE		= 0x00AB,
762 	WID_DSCR_TSSI_11N_VALUE		= 0x00AC,
763 
764 	/*
765 	 *  Immediate Block-Ack Support
766 	 *  -----------------------------------------------------------
767 	 *  Configuration : Disable                  Enable
768 	 *  Values to set :    0                       1
769 	 *  -----------------------------------------------------------
770 	 */
771 	WID_11N_IMMEDIATE_BA_ENABLED	= 0x00AF,
772 
773 	/*
774 	 *  TXOP Disable Flag
775 	 *  -----------------------------------------------------------
776 	 *  Configuration : Disable                  Enable
777 	 *  Values to set :    1                        0
778 	 *  -----------------------------------------------------------
779 	 */
780 	WID_11N_TXOP_PROT_DISABLE	= 0x00B0,
781 
782 	WID_TX_POWER_LEVEL_11N		= 0x00B1,
783 
784 	/* Custom Character WID list */
785 	WID_PC_TEST_MODE		= 0x00C8,
786 	/* SCAN Complete notification WID*/
787 	WID_SCAN_COMPLETE		= 0x00C9,
788 
789 	WID_DEL_BEACON			= 0x00CA,
790 
791 	WID_LOGTerminal_Switch		= 0x00CD,
792 	/*  EMAC Short WID list */
793 	/*  RTS Threshold */
794 	/*
795 	 *  -----------------------------------------------------------
796 	 *  Configuration :   Any value between 256 to 2347
797 	 *  Values to set :   Same value. Default is 2347
798 	 *  -----------------------------------------------------------
799 	 */
800 	WID_RTS_THRESHOLD		= 0x1000,
801 
802 	/*
803 	 *  Fragmentation Threshold
804 	 *  -----------------------------------------------------------
805 	 *  Configuration :   Any value between 256 to 2346
806 	 *  Values to set :   Same value. Default is 2346
807 	 *  -----------------------------------------------------------
808 	 */
809 	WID_FRAG_THRESHOLD		= 0x1001,
810 
811 	WID_SHORT_RETRY_LIMIT		= 0x1002,
812 	WID_LONG_RETRY_LIMIT		= 0x1003,
813 	WID_BEACON_INTERVAL		= 0x1006,
814 	WID_MEMORY_ACCESS_16BIT		= 0x1008,
815 	WID_RX_SENSE			= 0x100B,
816 	WID_ACTIVE_SCAN_TIME		= 0x100C,
817 	WID_PASSIVE_SCAN_TIME		= 0x100D,
818 
819 	WID_SITE_SURVEY_SCAN_TIME	= 0x100E,
820 	WID_JOIN_START_TIMEOUT		= 0x100F,
821 	WID_AUTH_TIMEOUT		= 0x1010,
822 	WID_ASOC_TIMEOUT		= 0x1011,
823 	WID_11I_PROTOCOL_TIMEOUT	= 0x1012,
824 	WID_EAPOL_RESPONSE_TIMEOUT	= 0x1013,
825 
826 	/* NMAC Short WID list */
827 	WID_11N_SIG_QUAL_VAL		= 0x1085,
828 	WID_CCA_THRESHOLD		= 0x1087,
829 
830 	/* Custom Short WID list */
831 
832 	/* EMAC Integer WID list */
833 	WID_FAILED_COUNT		= 0x2000,
834 	WID_RETRY_COUNT			= 0x2001,
835 	WID_MULTIPLE_RETRY_COUNT	= 0x2002,
836 	WID_FRAME_DUPLICATE_COUNT	= 0x2003,
837 	WID_ACK_FAILURE_COUNT		= 0x2004,
838 	WID_RECEIVED_FRAGMENT_COUNT	= 0x2005,
839 	WID_MCAST_RECEIVED_FRAME_COUNT	= 0x2006,
840 	WID_FCS_ERROR_COUNT		= 0x2007,
841 	WID_SUCCESS_FRAME_COUNT		= 0x2008,
842 	WID_HUT_TX_COUNT		= 0x200A,
843 	WID_TX_FRAGMENT_COUNT		= 0x200B,
844 	WID_TX_MULTICAST_FRAME_COUNT	= 0x200C,
845 	WID_RTS_SUCCESS_COUNT		= 0x200D,
846 	WID_RTS_FAILURE_COUNT		= 0x200E,
847 	WID_WEP_UNDECRYPTABLE_COUNT	= 0x200F,
848 	WID_REKEY_PERIOD		= 0x2010,
849 	WID_REKEY_PACKET_COUNT		= 0x2011,
850 	WID_1X_SERV_ADDR		= 0x2012,
851 	WID_STACK_IP_ADDR		= 0x2013,
852 	WID_STACK_NETMASK_ADDR		= 0x2014,
853 	WID_HW_RX_COUNT			= 0x2015,
854 	WID_MEMORY_ADDRESS		= 0x201E,
855 	WID_MEMORY_ACCESS_32BIT		= 0x201F,
856 	WID_RF_REG_VAL			= 0x2021,
857 
858 	/* NMAC Integer WID list */
859 	WID_11N_PHY_ACTIVE_REG_VAL	= 0x2080,
860 
861 	/* Custom Integer WID list */
862 	WID_GET_INACTIVE_TIME		= 0x2084,
863 	WID_SET_DRV_HANDLER		= 0X2085,
864 	WID_SET_OPERATION_MODE		= 0X2086,
865 	/* EMAC String WID list */
866 	WID_SSID			= 0x3000,
867 	WID_FIRMWARE_VERSION		= 0x3001,
868 	WID_OPERATIONAL_RATE_SET	= 0x3002,
869 	WID_BSSID			= 0x3003,
870 	WID_WEP_KEY_VALUE		= 0x3004,
871 	WID_11I_PSK			= 0x3008,
872 	WID_11E_P_ACTION_REQ		= 0x3009,
873 	WID_1X_KEY			= 0x300A,
874 	WID_HARDWARE_VERSION		= 0x300B,
875 	WID_MAC_ADDR			= 0x300C,
876 	WID_HUT_DEST_ADDR		= 0x300D,
877 	WID_PHY_VERSION			= 0x300F,
878 	WID_SUPP_USERNAME		= 0x3010,
879 	WID_SUPP_PASSWORD		= 0x3011,
880 	WID_SITE_SURVEY_RESULTS		= 0x3012,
881 	WID_RX_POWER_LEVEL		= 0x3013,
882 	WID_DEL_ALL_RX_BA		= 0x3014,
883 	WID_SET_STA_MAC_INACTIVE_TIME	= 0x3017,
884 	WID_ADD_WEP_KEY			= 0x3019,
885 	WID_REMOVE_WEP_KEY		= 0x301A,
886 	WID_ADD_PTK			= 0x301B,
887 	WID_ADD_RX_GTK			= 0x301C,
888 	WID_ADD_TX_GTK			= 0x301D,
889 	WID_REMOVE_KEY			= 0x301E,
890 	WID_ASSOC_REQ_INFO		= 0x301F,
891 	WID_ASSOC_RES_INFO		= 0x3020,
892 	WID_MANUFACTURER		= 0x3026, /*Added for CAPI tool */
893 	WID_MODEL_NAME			= 0x3027, /*Added for CAPI tool */
894 	WID_MODEL_NUM			= 0x3028, /*Added for CAPI tool */
895 	WID_DEVICE_NAME			= 0x3029, /*Added for CAPI tool */
896 
897 	/* NMAC String WID list */
898 	WID_11N_P_ACTION_REQ		= 0x3080,
899 	WID_HUT_TEST_ID			= 0x3081,
900 	WID_PMKID_INFO			= 0x3082,
901 	WID_FIRMWARE_INFO		= 0x3083,
902 	WID_REGISTER_FRAME		= 0x3084,
903 	WID_DEL_ALL_STA			= 0x3085,
904 	WID_REMAIN_ON_CHAN		= 0x3996,
905 	WID_SSID_PROBE_REQ		= 0x3997,
906 	WID_JOIN_REQ_EXTENDED		= 0x3998,
907 
908 	WID_IP_ADDRESS			= 0x3999,
909 
910 	/* Custom String WID list */
911 
912 	/* EMAC Binary WID list */
913 	WID_UAPSD_CONFIG		= 0x4001,
914 	WID_UAPSD_STATUS		= 0x4002,
915 	WID_WMM_AP_AC_PARAMS		= 0x4003,
916 	WID_WMM_STA_AC_PARAMS		= 0x4004,
917 	WID_NETWORK_INFO		= 0x4005,
918 	WID_STA_JOIN_INFO		= 0x4006,
919 	WID_CONNECTED_STA_LIST		= 0x4007,
920 
921 	/* NMAC Binary WID list */
922 	WID_11N_AUTORATE_TABLE		= 0x4080,
923 
924 	WID_SCAN_CHANNEL_LIST		= 0x4084,
925 
926 	WID_INFO_ELEMENT_PROBE		= 0x4085,
927 	WID_INFO_ELEMENT_ASSOCIATE	= 0x4086,
928 	WID_ADD_STA			= 0X4087,
929 	WID_REMOVE_STA			= 0X4088,
930 	WID_EDIT_STA			= 0X4089,
931 	WID_ADD_BEACON			= 0x408a,
932 
933 	WID_SETUP_MULTICAST_FILTER	= 0x408b,
934 
935 	/* Miscellaneous WIDs */
936 	WID_ALL				= 0x7FFE,
937 	WID_MAX				= 0xFFFF
938 } WID_T;
939 
940 int wilc_wlan_init(wilc_wlan_inp_t *inp);
941 
942 void wilc_bus_set_max_speed(void);
943 void wilc_bus_set_default_speed(void);
944 u32 wilc_get_chipid(u8 update);
945 
946 #endif
947