staging: vt6656: Replace pStatistic->abyTxPktInfo with struct vnt_tx_pkt_info
[deliverable/linux.git] / drivers / staging / vt6656 / device.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: device.h
20 *
21 * Purpose: MAC Data structure
22 *
23 * Author: Tevin Chen
24 *
25 * Date: Mar 17, 1997
26 *
27 */
28
29 #ifndef __DEVICE_H__
30 #define __DEVICE_H__
31
32 #include <linux/module.h>
33 #include <linux/kernel.h>
34 #include <linux/slab.h>
35 #include <linux/init.h>
36 #include <linux/delay.h>
37 #include <linux/device.h>
38 #include <linux/firmware.h>
39 #include <linux/etherdevice.h>
40 #include <linux/suspend.h>
41 #include <linux/if_arp.h>
42 #include <linux/wireless.h>
43 #include <net/iw_handler.h>
44 #include <net/cfg80211.h>
45 #include <linux/timer.h>
46 #include <linux/usb.h>
47 #include <linux/crc32.h>
48
49 #ifdef SIOCETHTOOL
50 #define DEVICE_ETHTOOL_IOCTL_SUPPORT
51 #include <linux/ethtool.h>
52 #else
53 #undef DEVICE_ETHTOOL_IOCTL_SUPPORT
54 #endif
55
56 /* please copy below macro to driver_event.c for API */
57 #define RT_INSMOD_EVENT_FLAG 0x0101
58 #define RT_UPDEV_EVENT_FLAG 0x0102
59 #define RT_DISCONNECTED_EVENT_FLAG 0x0103
60 #define RT_WPACONNECTED_EVENT_FLAG 0x0104
61 #define RT_DOWNDEV_EVENT_FLAG 0x0105
62 #define RT_RMMOD_EVENT_FLAG 0x0106
63
64 /*
65 * device specific
66 */
67
68 #include "device_cfg.h"
69 #include "80211hdr.h"
70 #include "tether.h"
71 #include "wmgr.h"
72 #include "wcmd.h"
73 #include "mib.h"
74 #include "srom.h"
75 #include "rc4.h"
76 #include "desc.h"
77 #include "key.h"
78 #include "card.h"
79 #include "rndis.h"
80
81 #define VNT_USB_VENDOR_ID 0x160a
82 #define VNT_USB_PRODUCT_ID 0x3184
83
84 #define MAC_MAX_CONTEXT_REG (256+128)
85
86 #define MAX_MULTICAST_ADDRESS_NUM 32
87 #define MULTICAST_ADDRESS_LIST_SIZE (MAX_MULTICAST_ADDRESS_NUM * ETH_ALEN)
88
89 #define DUPLICATE_RX_CACHE_LENGTH 5
90
91 #define NUM_KEY_ENTRY 11
92
93 #define TX_WEP_NONE 0
94 #define TX_WEP_OTF 1
95 #define TX_WEP_SW 2
96 #define TX_WEP_SWOTP 3
97 #define TX_WEP_OTPSW 4
98 #define TX_WEP_SW232 5
99
100 #define KEYSEL_WEP40 0
101 #define KEYSEL_WEP104 1
102 #define KEYSEL_TKIP 2
103 #define KEYSEL_CCMP 3
104
105 #define AUTO_FB_NONE 0
106 #define AUTO_FB_0 1
107 #define AUTO_FB_1 2
108
109 #define FB_RATE0 0
110 #define FB_RATE1 1
111
112 /* Antenna Mode */
113 #define ANT_A 0
114 #define ANT_B 1
115 #define ANT_DIVERSITY 2
116 #define ANT_RXD_TXA 3
117 #define ANT_RXD_TXB 4
118 #define ANT_UNKNOWN 0xFF
119 #define ANT_TXA 0
120 #define ANT_TXB 1
121 #define ANT_RXA 2
122 #define ANT_RXB 3
123
124 #define MAXCHECKHANGCNT 4
125
126 /* Packet type */
127 #define TX_PKT_UNI 0x00
128 #define TX_PKT_MULTI 0x01
129 #define TX_PKT_BROAD 0x02
130
131 #define BB_VGA_LEVEL 4
132 #define BB_VGA_CHANGE_THRESHOLD 3
133
134 #ifndef RUN_AT
135 #define RUN_AT(x) (jiffies+(x))
136 #endif
137
138 /* DMA related */
139 #define RESERV_AC0DMA 4
140
141 #define PRIVATE_Message 0
142
143 #define DBG_PRT(l, p, args...) { if (l <= msglevel) printk(p, ##args); }
144 #define PRINT_K(p, args...) { if (PRIVATE_Message) printk(p, ##args); }
145
146 typedef enum __device_msg_level {
147 MSG_LEVEL_ERR = 0, /* Errors causing abnormal operation */
148 MSG_LEVEL_NOTICE = 1, /* Errors needing user notification */
149 MSG_LEVEL_INFO = 2, /* Normal message. */
150 MSG_LEVEL_VERBOSE = 3, /* Will report all trival errors. */
151 MSG_LEVEL_DEBUG = 4 /* Only for debug purpose. */
152 } DEVICE_MSG_LEVEL, *PDEVICE_MSG_LEVEL;
153
154 #define DEVICE_INIT_COLD 0x0 /* cold init */
155 #define DEVICE_INIT_RESET 0x1 /* reset init or Dx to D0 power remain */
156 #define DEVICE_INIT_DXPL 0x2 /* Dx to D0 power lost init */
157
158 /* USB */
159
160 /*
161 * Enum of context types for SendPacket
162 */
163 typedef enum _CONTEXT_TYPE {
164 CONTEXT_DATA_PACKET = 1,
165 CONTEXT_MGMT_PACKET
166 } CONTEXT_TYPE;
167
168 /* RCB (Receive Control Block) */
169 struct vnt_rcb {
170 void *Next;
171 signed long Ref;
172 void *pDevice;
173 struct urb *pUrb;
174 struct vnt_rx_mgmt sMngPacket;
175 struct sk_buff *skb;
176 int bBoolInUse;
177 };
178
179 /* used to track bulk out irps */
180 struct vnt_usb_send_context {
181 void *pDevice;
182 struct sk_buff *pPacket;
183 struct urb *pUrb;
184 unsigned int uBufLen;
185 CONTEXT_TYPE Type;
186 struct ethhdr sEthHeader;
187 void *Next;
188 bool bBoolInUse;
189 unsigned char Data[MAX_TOTAL_SIZE_WITH_ALL_HEADERS];
190 };
191
192 /* tx packet info for rxtx */
193 struct vnt_tx_pkt_info {
194 u16 fifo_ctl;
195 u8 dest_addr[ETH_ALEN];
196 };
197
198 /* structure got from configuration file as user-desired default settings */
199 typedef struct _DEFAULT_CONFIG {
200 signed int ZoneType;
201 signed int eConfigMode;
202 signed int eAuthenMode; /* open/wep/wpa */
203 signed int bShareKeyAlgorithm; /* open-open/{open,wep}-sharekey */
204 signed int keyidx; /* wepkey index */
205 signed int eEncryptionStatus;
206 } DEFAULT_CONFIG, *PDEFAULT_CONFIG;
207
208 /*
209 * Structure to keep track of USB interrupt packets
210 */
211 typedef struct {
212 unsigned int uDataLen;
213 u8 * pDataBuf;
214 /* struct urb *pUrb; */
215 bool bInUse;
216 } INT_BUFFER, *PINT_BUFFER;
217
218 /* 0:11A 1:11B 2:11G */
219 typedef enum _VIA_BB_TYPE
220 {
221 BB_TYPE_11A = 0,
222 BB_TYPE_11B,
223 BB_TYPE_11G
224 } VIA_BB_TYPE, *PVIA_BB_TYPE;
225
226 /* 0:11a, 1:11b, 2:11gb (only CCK in BasicRate), 3:11ga(OFDM in BasicRate) */
227 typedef enum _VIA_PKT_TYPE
228 {
229 PK_TYPE_11A = 0,
230 PK_TYPE_11B,
231 PK_TYPE_11GB,
232 PK_TYPE_11GA
233 } VIA_PKT_TYPE, *PVIA_PKT_TYPE;
234
235 /*++ NDIS related */
236
237 typedef enum __DEVICE_NDIS_STATUS {
238 STATUS_SUCCESS = 0,
239 STATUS_FAILURE,
240 STATUS_RESOURCES,
241 STATUS_PENDING,
242 } DEVICE_NDIS_STATUS, *PDEVICE_NDIS_STATUS;
243
244 #define MAX_BSSIDINFO_4_PMKID 16
245 #define MAX_PMKIDLIST 5
246 /* flags for PMKID Candidate list structure */
247 #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
248
249 /* PMKID Structures */
250 typedef unsigned char NDIS_802_11_PMKID_VALUE[16];
251
252 typedef enum _NDIS_802_11_WEP_STATUS
253 {
254 Ndis802_11WEPEnabled,
255 Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
256 Ndis802_11WEPDisabled,
257 Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
258 Ndis802_11WEPKeyAbsent,
259 Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
260 Ndis802_11WEPNotSupported,
261 Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
262 Ndis802_11Encryption2Enabled,
263 Ndis802_11Encryption2KeyAbsent,
264 Ndis802_11Encryption3Enabled,
265 Ndis802_11Encryption3KeyAbsent
266 } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
267 NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
268
269 typedef enum _NDIS_802_11_STATUS_TYPE
270 {
271 Ndis802_11StatusType_Authentication,
272 Ndis802_11StatusType_MediaStreamMode,
273 Ndis802_11StatusType_PMKID_CandidateList,
274 Ndis802_11StatusTypeMax, /* not a real type, defined as upper bound */
275 } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
276
277 /* added new types for PMKID Candidate lists */
278 typedef struct _PMKID_CANDIDATE {
279 NDIS_802_11_MAC_ADDRESS BSSID;
280 unsigned long Flags;
281 } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
282
283 typedef struct _BSSID_INFO
284 {
285 NDIS_802_11_MAC_ADDRESS BSSID;
286 NDIS_802_11_PMKID_VALUE PMKID;
287 } BSSID_INFO, *PBSSID_INFO;
288
289 typedef struct tagSPMKID {
290 unsigned long Length;
291 unsigned long BSSIDInfoCount;
292 BSSID_INFO BSSIDInfo[MAX_BSSIDINFO_4_PMKID];
293 } SPMKID, *PSPMKID;
294
295 typedef struct tagSPMKIDCandidateEvent {
296 NDIS_802_11_STATUS_TYPE StatusType;
297 unsigned long Version; /* Version of the structure */
298 unsigned long NumCandidates; /* No. of pmkid candidates */
299 PMKID_CANDIDATE CandidateList[MAX_PMKIDLIST];
300 } SPMKIDCandidateEvent, *PSPMKIDCandidateEvent;
301
302 /*++ 802.11h related */
303 #define MAX_QUIET_COUNT 8
304
305 typedef struct tagSQuietControl {
306 bool bEnable;
307 u32 dwStartTime;
308 u8 byPeriod;
309 u16 wDuration;
310 } SQuietControl, *PSQuietControl;
311
312 /* The receive duplicate detection cache entry */
313 typedef struct tagSCacheEntry{
314 u16 wFmSequence;
315 u8 abyAddr2[ETH_ALEN];
316 u16 wFrameCtl;
317 } SCacheEntry, *PSCacheEntry;
318
319 typedef struct tagSCache{
320 /* The receive cache is updated circularly. The next entry to be written is
321 * indexed by the "InPtr".
322 */
323 unsigned int uInPtr; /* Place to use next */
324 SCacheEntry asCacheEntry[DUPLICATE_RX_CACHE_LENGTH];
325 } SCache, *PSCache;
326
327 #define CB_MAX_RX_FRAG 64
328 /*
329 * DeFragment Control Block, used for collecting fragments prior to reassembly
330 */
331 typedef struct tagSDeFragControlBlock
332 {
333 u16 wSequence;
334 u16 wFragNum;
335 u8 abyAddr2[ETH_ALEN];
336 unsigned int uLifetime;
337 struct sk_buff* skb;
338 u8 * pbyRxBuffer;
339 unsigned int cbFrameLength;
340 bool bInUse;
341 } SDeFragControlBlock, *PSDeFragControlBlock;
342
343 /* flags for options */
344 #define DEVICE_FLAGS_UNPLUG 0x00000001UL
345 #define DEVICE_FLAGS_PREAMBLE_TYPE 0x00000002UL
346 #define DEVICE_FLAGS_OP_MODE 0x00000004UL
347 #define DEVICE_FLAGS_PS_MODE 0x00000008UL
348 #define DEVICE_FLAGS_80211h_MODE 0x00000010UL
349
350 /* flags for driver status */
351 #define DEVICE_FLAGS_OPENED 0x00010000UL
352 #define DEVICE_FLAGS_WOL_ENABLED 0x00080000UL
353 /* flags for capabilities */
354 #define DEVICE_FLAGS_TX_ALIGN 0x01000000UL
355 #define DEVICE_FLAGS_HAVE_CAM 0x02000000UL
356 #define DEVICE_FLAGS_FLOW_CTRL 0x04000000UL
357
358 /* flags for MII status */
359 #define DEVICE_LINK_FAIL 0x00000001UL
360 #define DEVICE_SPEED_10 0x00000002UL
361 #define DEVICE_SPEED_100 0x00000004UL
362 #define DEVICE_SPEED_1000 0x00000008UL
363 #define DEVICE_DUPLEX_FULL 0x00000010UL
364 #define DEVICE_AUTONEG_ENABLE 0x00000020UL
365 #define DEVICE_FORCED_BY_EEPROM 0x00000040UL
366 /* for device_set_media_duplex */
367 #define DEVICE_LINK_CHANGE 0x00000001UL
368
369 typedef struct __device_opt {
370 int nRxDescs0; /* number of RX descriptors 0 */
371 int nTxDescs0; /* number of TX descriptors 0, 1, 2, 3 */
372 int rts_thresh; /* RTS threshold */
373 int frag_thresh;
374 int OpMode;
375 int data_rate;
376 int channel_num;
377 int short_retry;
378 int long_retry;
379 int bbp_type;
380 u32 flags;
381 } OPTIONS, *POPTIONS;
382
383 struct vnt_private {
384 /* netdev */
385 struct usb_device *usb;
386 struct net_device *dev;
387 struct net_device_stats stats;
388
389 OPTIONS sOpts;
390
391 struct tasklet_struct CmdWorkItem;
392 struct tasklet_struct EventWorkItem;
393 struct work_struct read_work_item;
394 struct work_struct rx_mng_work_item;
395
396 u32 rx_buf_sz;
397 int multicast_limit;
398 u8 byRxMode;
399
400 spinlock_t lock;
401
402 u32 rx_bytes;
403
404 u8 byRevId;
405
406 u32 flags;
407 unsigned long Flags;
408
409 SCache sDupRxCache;
410
411 SDeFragControlBlock sRxDFCB[CB_MAX_RX_FRAG];
412 u32 cbDFCB;
413 u32 cbFreeDFCB;
414 u32 uCurrentDFCBIdx;
415
416 /* USB */
417 struct urb *pControlURB;
418 struct urb *pInterruptURB;
419 struct usb_ctrlrequest sUsbCtlRequest;
420 u32 int_interval;
421
422 /* Variables to track resources for the BULK In Pipe */
423 struct vnt_rcb *pRCBMem;
424 struct vnt_rcb *apRCB[CB_MAX_RX_DESC];
425 u32 cbRD;
426 struct vnt_rcb *FirstRecvFreeList;
427 struct vnt_rcb *LastRecvFreeList;
428 u32 NumRecvFreeList;
429 struct vnt_rcb *FirstRecvMngList;
430 struct vnt_rcb *LastRecvMngList;
431 u32 NumRecvMngList;
432 int bIsRxWorkItemQueued;
433 int bIsRxMngWorkItemQueued;
434 unsigned long ulRcvRefCount; /* packets that have not returned back */
435
436 /* Variables to track resources for the BULK Out Pipe */
437 struct vnt_usb_send_context *apTD[CB_MAX_TX_DESC];
438 u32 cbTD;
439 struct vnt_tx_pkt_info pkt_info[16];
440
441 /* Variables to track resources for the Interrupt In Pipe */
442 INT_BUFFER intBuf;
443 int fKillEventPollingThread;
444 int bEventAvailable;
445
446 /* default config from file by user setting */
447 DEFAULT_CONFIG config_file;
448
449 /* Statistic for USB */
450 unsigned long ulBulkInPosted;
451 unsigned long ulBulkInError;
452 unsigned long ulBulkInContCRCError;
453 unsigned long ulBulkInBytesRead;
454
455 unsigned long ulBulkOutPosted;
456 unsigned long ulBulkOutError;
457 unsigned long ulBulkOutContCRCError;
458 unsigned long ulBulkOutBytesWrite;
459
460 unsigned long ulIntInPosted;
461 unsigned long ulIntInError;
462 unsigned long ulIntInContCRCError;
463 unsigned long ulIntInBytesRead;
464
465 /* Version control */
466 u16 wFirmwareVersion;
467 u8 byLocalID;
468 u8 byRFType;
469 u8 byBBRxConf;
470
471 u8 byZoneType;
472 int bZoneRegExist;
473
474 u8 byOriginalZonetype;
475
476 int bLinkPass; /* link status: OK or fail */
477 struct vnt_cmd_card_init init_command;
478 struct vnt_rsp_card_init init_response;
479 u8 abyCurrentNetAddr[ETH_ALEN];
480 u8 abyPermanentNetAddr[ETH_ALEN];
481
482 int bExistSWNetAddr;
483
484 /* Adapter statistics */
485 SStatCounter scStatistic;
486 /* 802.11 counter */
487 SDot11Counters s802_11Counter;
488
489 /* Maintain statistical debug info. */
490 unsigned long packetsReceived;
491 unsigned long packetsReceivedDropped;
492 unsigned long packetsReceivedOverflow;
493 unsigned long packetsSent;
494 unsigned long packetsSentDropped;
495 unsigned long SendContextsInUse;
496 unsigned long RcvBuffersInUse;
497
498 /* 802.11 management */
499 struct vnt_manager vnt_mgmt;
500
501 u64 qwCurrTSF;
502 u32 cbBulkInMax;
503 int bPSRxBeacon;
504
505 /* 802.11 MAC specific */
506 u32 uCurrRSSI;
507 u8 byCurrSQ;
508
509 /* Antenna Diversity */
510 int bTxRxAntInv;
511 u32 dwRxAntennaSel;
512 u32 dwTxAntennaSel;
513 u8 byAntennaCount;
514 u8 byRxAntennaMode;
515 u8 byTxAntennaMode;
516 u8 byRadioCtl;
517 u8 bHWRadioOff;
518
519 /* SQ3 functions for antenna diversity */
520 struct timer_list TimerSQ3Tmax1;
521 struct timer_list TimerSQ3Tmax2;
522 struct timer_list TimerSQ3Tmax3;
523
524 int bDiversityRegCtlON;
525 int bDiversityEnable;
526 unsigned long ulDiversityNValue;
527 unsigned long ulDiversityMValue;
528 u8 byTMax;
529 u8 byTMax2;
530 u8 byTMax3;
531 unsigned long ulSQ3TH;
532
533 unsigned long uDiversityCnt;
534 u8 byAntennaState;
535 unsigned long ulRatio_State0;
536 unsigned long ulRatio_State1;
537 unsigned long ulSQ3_State0;
538 unsigned long ulSQ3_State1;
539
540 unsigned long aulSQ3Val[MAX_RATE];
541 unsigned long aulPktNum[MAX_RATE];
542
543 /* IFS & Cw */
544 u32 uSIFS; /* Current SIFS */
545 u32 uDIFS; /* Current DIFS */
546 u32 uEIFS; /* Current EIFS */
547 u32 uSlot; /* Current SlotTime */
548 u32 uCwMin; /* Current CwMin */
549 u32 uCwMax; /* CwMax is fixed on 1023 */
550
551 /* PHY parameter */
552 u8 bySIFS;
553 u8 byDIFS;
554 u8 byEIFS;
555 u8 bySlot;
556 u8 byCWMaxMin;
557
558 /* Rate */
559 VIA_BB_TYPE byBBType; /* 0: 11A, 1:11B, 2:11G */
560 VIA_PKT_TYPE byPacketType; /* 0:11a 1:11b 2:11gb 3:11ga */
561 u16 wBasicRate;
562 u8 byACKRate;
563 u8 byTopOFDMBasicRate;
564 u8 byTopCCKBasicRate;
565
566 u32 dwAotoRateTxOkCnt;
567 u32 dwAotoRateTxFailCnt;
568 u32 dwErrorRateThreshold[13];
569 u32 dwTPTable[MAX_RATE];
570 u8 abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /*u32 alignment */
571
572 u8 byMinChannel;
573 u8 byMaxChannel;
574 u32 uConnectionRate;
575
576 u8 byPreambleType;
577 u8 byShortPreamble;
578 /* CARD_PHY_TYPE */
579 u8 eConfigPHYMode;
580
581 /* For RF Power table */
582 u8 byCCKPwr;
583 u8 byOFDMPwrG;
584 u8 byOFDMPwrA;
585 u8 byCurPwr;
586 u8 abyCCKPwrTbl[14];
587 u8 abyOFDMPwrTbl[14];
588 u8 abyOFDMAPwrTbl[42];
589
590 u16 wCurrentRate;
591 u16 tx_rate_fb0;
592 u16 tx_rate_fb1;
593
594 u16 wRTSThreshold;
595 u16 wFragmentationThreshold;
596 u8 byShortRetryLimit;
597 u8 byLongRetryLimit;
598 CARD_OP_MODE eOPMode;
599 int bBSSIDFilter;
600 u16 wMaxTransmitMSDULifetime;
601 u8 abyBSSID[ETH_ALEN];
602 u8 abyDesireBSSID[ETH_ALEN];
603
604 u32 dwMaxReceiveLifetime; /* dot11MaxReceiveLifetime */
605
606 int bCCK;
607 int bEncryptionEnable;
608 int bShortSlotTime;
609 int bProtectMode;
610 int bNonERPPresent;
611 int bBarkerPreambleMd;
612
613 u8 byERPFlag;
614 u16 wUseProtectCntDown;
615
616 int bRadioControlOff;
617 int bRadioOff;
618
619 /* Power save */
620 int bEnablePSMode;
621 u16 wListenInterval;
622 int bPWBitOn;
623 WMAC_POWER_MODE ePSMode;
624 unsigned long ulPSModeWaitTx;
625 int bPSModeTxBurst;
626
627 /* Beacon releated */
628 u16 wSeqCounter;
629 int bBeaconBufReady;
630 int bBeaconSent;
631 int bFixRate;
632 u8 byCurrentCh;
633 u32 uScanTime;
634
635 CMD_STATE eCommandState;
636
637 CMD_CODE eCommand;
638 int bBeaconTx;
639 u8 byScanBBType;
640
641 int bStopBeacon;
642 int bStopDataPkt;
643 int bStopTx0Pkt;
644 u32 uAutoReConnectTime;
645 u32 uIsroamingTime;
646
647 /* 802.11 counter */
648
649 CMD_ITEM eCmdQueue[CMD_Q_SIZE];
650 u32 uCmdDequeueIdx;
651 u32 uCmdEnqueueIdx;
652 u32 cbFreeCmdQueue;
653 int bCmdRunning;
654 int bCmdClear;
655 int bNeedRadioOFF;
656
657 int bEnableRoaming;
658 int bIsRoaming;
659 int bFastRoaming;
660 u8 bSameBSSMaxNum;
661 u8 bSameBSSCurNum;
662 int bRoaming;
663 int b11hEable;
664 unsigned long ulTxPower;
665
666 /* Encryption */
667 NDIS_802_11_WEP_STATUS eEncryptionStatus;
668 int bTransmitKey;
669 NDIS_802_11_WEP_STATUS eOldEncryptionStatus;
670 SKeyManagement sKey;
671 u32 dwIVCounter;
672
673 RC4Ext SBox;
674 u8 abyPRNG[WLAN_WEPMAX_KEYLEN+3];
675 u8 byKeyIndex;
676
677 u32 uKeyLength;
678 u8 abyKey[WLAN_WEP232_KEYLEN];
679
680 /* for AP mode */
681 u32 uAssocCount;
682 int bMoreData;
683
684 /* QoS */
685 int bGrpAckPolicy;
686
687 u8 byAutoFBCtrl;
688
689 int bTxMICFail;
690 int bRxMICFail;
691
692 /* For Update BaseBand VGA Gain Offset */
693 int bUpdateBBVGA;
694 u32 uBBVGADiffCount;
695 u8 byBBVGANew;
696 u8 byBBVGACurrent;
697 u8 abyBBVGA[BB_VGA_LEVEL];
698 signed long ldBmThreshold[BB_VGA_LEVEL];
699
700 u8 byBBPreEDRSSI;
701 u8 byBBPreEDIndex;
702
703 int bRadioCmd;
704
705 /* For FOE Tuning */
706 u8 byFOETuning;
707
708 /* For Auto Power Tunning */
709 u8 byAutoPwrTunning;
710
711 /* BaseBand Loopback Use */
712 u8 byBBCR4d;
713 u8 byBBCRc9;
714 u8 byBBCR88;
715 u8 byBBCR09;
716
717 /* command timer */
718 struct delayed_work run_command_work;
719 /* One second callback */
720 struct delayed_work second_callback_work;
721
722 u8 tx_data_time_out;
723 bool tx_trigger;
724 int fWPA_Authened; /*is WPA/WPA-PSK or WPA2/WPA2-PSK authen?? */
725 u8 byReAssocCount;
726 u8 byLinkWaitCount;
727
728 struct ethhdr sTxEthHeader;
729 struct ethhdr sRxEthHeader;
730 u8 abyBroadcastAddr[ETH_ALEN];
731 u8 abySNAP_RFC1042[ETH_ALEN];
732 u8 abySNAP_Bridgetunnel[ETH_ALEN];
733
734 /* Pre-Authentication & PMK cache */
735 SPMKID gsPMKID;
736 SPMKIDCandidateEvent gsPMKIDCandidate;
737
738 /* for 802.11h */
739 int b11hEnable;
740
741 int bChannelSwitch;
742 u8 byNewChannel;
743 u8 byChannelSwitchCount;
744
745 /* WPA supplicant daemon */
746 int bWPADEVUp;
747 int bwextstep0;
748 int bwextstep1;
749 int bwextstep2;
750 int bwextstep3;
751 int bWPASuppWextEnabled;
752
753 /* user space daemon: hostapd, is used for HOSTAP */
754 int bEnableHostapd;
755 int bEnable8021x;
756 int bEnableHostWEP;
757 struct net_device *apdev;
758 int (*tx_80211)(struct sk_buff *skb, struct net_device *dev);
759
760 u32 uChannel;
761
762 struct iw_statistics wstats; /* wireless stats */
763
764 int bCommit;
765
766 };
767
768 #define EnqueueRCB(_Head, _Tail, _RCB) \
769 { \
770 if (!_Head) { \
771 _Head = _RCB; \
772 } \
773 else { \
774 _Tail->Next = _RCB; \
775 } \
776 _RCB->Next = NULL; \
777 _Tail = _RCB; \
778 }
779
780 #define DequeueRCB(Head, Tail) \
781 { \
782 struct vnt_rcb *RCB = Head; \
783 if (!RCB->Next) { \
784 Tail = NULL; \
785 } \
786 Head = RCB->Next; \
787 }
788
789 #define ADD_ONE_WITH_WRAP_AROUND(uVar, uModulo) { \
790 if ((uVar) >= ((uModulo) - 1)) \
791 (uVar) = 0; \
792 else \
793 (uVar)++; \
794 }
795
796 #define fMP_RESET_IN_PROGRESS 0x00000001
797 #define fMP_DISCONNECTED 0x00000002
798 #define fMP_HALT_IN_PROGRESS 0x00000004
799 #define fMP_SURPRISE_REMOVED 0x00000008
800 #define fMP_RECV_LOOKASIDE 0x00000010
801 #define fMP_INIT_IN_PROGRESS 0x00000020
802 #define fMP_SEND_SIDE_RESOURCE_ALLOCATED 0x00000040
803 #define fMP_RECV_SIDE_RESOURCE_ALLOCATED 0x00000080
804 #define fMP_POST_READS 0x00000100
805 #define fMP_POST_WRITES 0x00000200
806 #define fMP_CONTROL_READS 0x00000400
807 #define fMP_CONTROL_WRITES 0x00000800
808
809 #define MP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F))
810 #define MP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F))
811 #define MP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F))
812
813 #define MP_IS_READY(_M) (((_M)->Flags & \
814 (fMP_DISCONNECTED | fMP_RESET_IN_PROGRESS | fMP_HALT_IN_PROGRESS | fMP_INIT_IN_PROGRESS | fMP_SURPRISE_REMOVED)) == 0)
815
816 int device_alloc_frag_buf(struct vnt_private *, PSDeFragControlBlock pDeF);
817
818 #endif
This page took 0.049421 seconds and 5 git commands to generate.