Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / rtl8187se / r8180.h
CommitLineData
c8d86be3
GKH
1/*
2 This is part of rtl8180 OpenSource driver.
3 Copyright (C) Andrea Merello 2004-2005 <andreamrl@tiscali.it>
4 Released under the terms of GPL (General Public Licence)
5
6 Parts of this driver are based on the GPL part of the
7 official realtek driver
8
9 Parts of this driver are based on the rtl8180 driver skeleton
10 from Patric Schenke & Andres Salomon
11
12 Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver
13
14 We want to tanks the Authors of those projects and the Ndiswrapper
15 project Authors.
16*/
17
18#ifndef R8180H
19#define R8180H
20
219eb47e 21#include <linux/interrupt.h>
c8d86be3 22
be286fd2 23#define RTL8180_MODULE_NAME "r8180"
c8d86be3
GKH
24#define DMESG(x,a...) printk(KERN_INFO RTL8180_MODULE_NAME ": " x "\n", ## a)
25#define DMESGW(x,a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": WW:" x "\n", ## a)
26#define DMESGE(x,a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": EE:" x "\n", ## a)
27
28#include <linux/module.h>
29#include <linux/kernel.h>
30//#include <linux/config.h>
31#include <linux/init.h>
32#include <linux/ioport.h>
33#include <linux/sched.h>
34#include <linux/types.h>
35#include <linux/slab.h>
36#include <linux/netdevice.h>
37#include <linux/pci.h>
38#include <linux/etherdevice.h>
39#include <linux/delay.h>
40#include <linux/rtnetlink.h> //for rtnl_lock()
41#include <linux/wireless.h>
42#include <linux/timer.h>
43#include <linux/proc_fs.h> // Necessary because we use the proc fs
44#include <linux/if_arp.h>
fd9b8d6e 45#include "ieee80211/ieee80211.h"
c8d86be3
GKH
46#include <asm/io.h>
47//#include <asm/semaphore.h>
48
49#define EPROM_93c46 0
50#define EPROM_93c56 1
51
52#define RTL_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30
53
54#define DEFAULT_FRAG_THRESHOLD 2342U
55#define MIN_FRAG_THRESHOLD 256U
c8d86be3
GKH
56#define DEFAULT_RTS_THRESHOLD 2342U
57#define MIN_RTS_THRESHOLD 0U
58#define MAX_RTS_THRESHOLD 2342U
59#define DEFAULT_BEACONINTERVAL 0x64U
c8d86be3 60
c8d86be3
GKH
61#define DEFAULT_RETRY_RTS 7
62#define DEFAULT_RETRY_DATA 7
c8d86be3 63
c8d86be3
GKH
64#define BEACON_QUEUE 6
65
c8d86be3
GKH
66#define aSifsTime 10
67
68#define sCrcLng 4
69#define sAckCtsLng 112 // bits in ACK and CTS frames
70//+by amy 080312
71#define RATE_ADAPTIVE_TIMER_PERIOD 300
72
73typedef enum _WIRELESS_MODE {
74 WIRELESS_MODE_UNKNOWN = 0x00,
75 WIRELESS_MODE_A = 0x01,
76 WIRELESS_MODE_B = 0x02,
77 WIRELESS_MODE_G = 0x04,
78 WIRELESS_MODE_AUTO = 0x08,
79} WIRELESS_MODE;
80
c8d86be3
GKH
81typedef struct ChnlAccessSetting {
82 u16 SIFS_Timer;
83 u16 DIFS_Timer;
84 u16 SlotTimeTimer;
85 u16 EIFS_Timer;
86 u16 CWminIndex;
87 u16 CWmaxIndex;
88}*PCHANNEL_ACCESS_SETTING,CHANNEL_ACCESS_SETTING;
89
90typedef enum{
91 NIC_8185 = 1,
92 NIC_8185B
93 } nic_t;
94
95typedef u32 AC_CODING;
96#define AC0_BE 0 // ACI: 0x00 // Best Effort
97#define AC1_BK 1 // ACI: 0x01 // Background
98#define AC2_VI 2 // ACI: 0x10 // Video
99#define AC3_VO 3 // ACI: 0x11 // Voice
100#define AC_MAX 4 // Max: define total number; Should not to be used as a real enum.
101
102//
103// ECWmin/ECWmax field.
104// Ref: WMM spec 2.2.2: WME Parameter Element, p.13.
105//
106typedef union _ECW{
107 u8 charData;
108 struct
109 {
110 u8 ECWmin:4;
111 u8 ECWmax:4;
112 }f; // Field
113}ECW, *PECW;
114
115//
116// ACI/AIFSN Field.
117// Ref: WMM spec 2.2.2: WME Parameter Element, p.12.
118//
119typedef union _ACI_AIFSN{
120 u8 charData;
121
122 struct
123 {
124 u8 AIFSN:4;
125 u8 ACM:1;
126 u8 ACI:2;
127 u8 Reserved:1;
128 }f; // Field
129}ACI_AIFSN, *PACI_AIFSN;
130
131//
132// AC Parameters Record Format.
133// Ref: WMM spec 2.2.2: WME Parameter Element, p.12.
134//
135typedef union _AC_PARAM{
136 u32 longData;
137 u8 charData[4];
138
139 struct
140 {
141 ACI_AIFSN AciAifsn;
142 ECW Ecw;
143 u16 TXOPLimit;
144 }f; // Field
145}AC_PARAM, *PAC_PARAM;
146
147/* it is a wrong definition. -xiong-2006-11-17
148typedef struct ThreeWireReg {
149 u16 longData;
150 struct {
151 u8 enableB;
152 u8 data;
153 u8 clk;
154 u8 read_write;
155 } struc;
156} ThreeWireReg;
157*/
158
159typedef union _ThreeWire{
160 struct _ThreeWireStruc{
161 u16 data:1;
162 u16 clk:1;
163 u16 enableB:1;
164 u16 read_write:1;
165 u16 resv1:12;
166// u2Byte resv2:14;
167// u2Byte ThreeWireEnable:1;
168// u2Byte resv3:1;
169 }struc;
170 u16 longData;
171}ThreeWireReg;
172
c8d86be3
GKH
173
174typedef struct buffer
175{
176 struct buffer *next;
177 u32 *buf;
178 dma_addr_t dma;
179} buffer;
180
181//YJ,modified,080828
182typedef struct Stats
183{
184 unsigned long txrdu;
185 unsigned long rxrdu;
186 unsigned long rxnolast;
187 unsigned long rxnodata;
188// unsigned long rxreset;
189// unsigned long rxwrkaround;
190 unsigned long rxnopointer;
191 unsigned long txnperr;
192 unsigned long txresumed;
193 unsigned long rxerr;
194 unsigned long rxoverflow;
195 unsigned long rxint;
196 unsigned long txbkpokint;
197 unsigned long txbepoking;
198 unsigned long txbkperr;
199 unsigned long txbeperr;
200 unsigned long txnpokint;
201 unsigned long txhpokint;
202 unsigned long txhperr;
203 unsigned long ints;
204 unsigned long shints;
205 unsigned long txoverflow;
206 unsigned long rxdmafail;
207 unsigned long txbeacon;
208 unsigned long txbeaconerr;
209 unsigned long txlpokint;
210 unsigned long txlperr;
211 unsigned long txretry;//retry number tony 20060601
212 unsigned long rxcrcerrmin;//crc error (0-500)
213 unsigned long rxcrcerrmid;//crc error (500-1000)
214 unsigned long rxcrcerrmax;//crc error (>1000)
215 unsigned long rxicverr;//ICV error
216} Stats;
217
218#define MAX_LD_SLOT_NUM 10
219#define KEEP_ALIVE_INTERVAL 20 // in seconds.
220#define CHECK_FOR_HANG_PERIOD 2 //be equal to watchdog check time
221#define DEFAULT_KEEP_ALIVE_LEVEL 1
222#define DEFAULT_SLOT_NUM 2
223#define POWER_PROFILE_AC 0
224#define POWER_PROFILE_BATTERY 1
225
226typedef struct _link_detect_t
227{
228 u32 RxFrameNum[MAX_LD_SLOT_NUM]; // number of Rx Frame / CheckForHang_period to determine link status
229 u16 SlotNum; // number of CheckForHang period to determine link status, default is 2
230 u16 SlotIndex;
231
232 u32 NumTxOkInPeriod; //number of packet transmitted during CheckForHang
233 u32 NumRxOkInPeriod; //number of packet received during CheckForHang
234
235 u8 IdleCount; // (KEEP_ALIVE_INTERVAL / CHECK_FOR_HANG_PERIOD)
236 u32 LastNumTxUnicast;
237 u32 LastNumRxUnicast;
238
239 bool bBusyTraffic; //when it is set to 1, UI cann't scan at will.
240}link_detect_t, *plink_detect_t;
241
242//YJ,modified,080828,end
243
244//by amy for led
245//================================================================================
246// LED customization.
247//================================================================================
248
249typedef enum _LED_STRATEGY_8185{
250 SW_LED_MODE0, //
251 SW_LED_MODE1, //
252 HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes)
253}LED_STRATEGY_8185, *PLED_STRATEGY_8185;
254//by amy for led
255//by amy for power save
256typedef enum _LED_CTL_MODE{
257 LED_CTL_POWER_ON = 1,
258 LED_CTL_LINK = 2,
259 LED_CTL_NO_LINK = 3,
260 LED_CTL_TX = 4,
261 LED_CTL_RX = 5,
262 LED_CTL_SITE_SURVEY = 6,
263 LED_CTL_POWER_OFF = 7
264}LED_CTL_MODE;
265
266typedef enum _RT_RF_POWER_STATE
267{
268 eRfOn,
269 eRfSleep,
270 eRfOff
271}RT_RF_POWER_STATE;
272
273enum _ReasonCode{
274 unspec_reason = 0x1,
275 auth_not_valid = 0x2,
276 deauth_lv_ss = 0x3,
277 inactivity = 0x4,
278 ap_overload = 0x5,
279 class2_err = 0x6,
280 class3_err = 0x7,
281 disas_lv_ss = 0x8,
282 asoc_not_auth = 0x9,
283
284 //----MIC_CHECK
285 mic_failure = 0xe,
286 //----END MIC_CHECK
287
288 // Reason code defined in 802.11i D10.0 p.28.
289 invalid_IE = 0x0d,
290 four_way_tmout = 0x0f,
291 two_way_tmout = 0x10,
292 IE_dismatch = 0x11,
293 invalid_Gcipher = 0x12,
294 invalid_Pcipher = 0x13,
295 invalid_AKMP = 0x14,
296 unsup_RSNIEver = 0x15,
297 invalid_RSNIE = 0x16,
298 auth_802_1x_fail= 0x17,
299 ciper_reject = 0x18,
300
301 // Reason code defined in 7.3.1.7, 802.1e D13.0, p.42. Added by Annie, 2005-11-15.
302 QoS_unspec = 0x20, // 32
303 QAP_bandwidth = 0x21, // 33
304 poor_condition = 0x22, // 34
305 no_facility = 0x23, // 35
306 // Where is 36???
307 req_declined = 0x25, // 37
308 invalid_param = 0x26, // 38
309 req_not_honored= 0x27, // 39
310 TS_not_created = 0x2F, // 47
311 DL_not_allowed = 0x30, // 48
312 dest_not_exist = 0x31, // 49
313 dest_not_QSTA = 0x32, // 50
314};
315typedef enum _RT_PS_MODE
316{
317 eActive, // Active/Continuous access.
318 eMaxPs, // Max power save mode.
319 eFastPs // Fast power save mode.
320}RT_PS_MODE;
321//by amy for power save
322typedef struct r8180_priv
323{
324 struct pci_dev *pdev;
325
326 short epromtype;
327 int irq;
328 struct ieee80211_device *ieee80211;
329
c8d86be3
GKH
330 short phy_ver; /* meaningful for rtl8225 1:A 2:B 3:C */
331 short enable_gpio0;
c8d86be3
GKH
332 short hw_plcp_len;
333 short plcp_preamble_mode; // 0:auto 1:short 2:long
334
335 spinlock_t irq_lock;
336 spinlock_t irq_th_lock;
337 spinlock_t tx_lock;
338 spinlock_t ps_lock;
339 spinlock_t rf_ps_lock;
340
341 u16 irq_mask;
342 short irq_enabled;
343 struct net_device *dev;
344 short chan;
345 short sens;
346 short max_sens;
347 u8 chtxpwr[15]; //channels from 1 to 14, 0 not used
348 u8 chtxpwr_ofdm[15]; //channels from 1 to 14, 0 not used
349 //u8 challow[15]; //channels from 1 to 14, 0 not used
350 u8 channel_plan; // it's the channel plan index
351 short up;
352 short crcmon; //if 1 allow bad crc frame reception in monitor mode
353 short prism_hdr;
354
355 struct timer_list scan_timer;
356 /*short scanpending;
357 short stopscan;*/
358 spinlock_t scan_lock;
359 u8 active_probe;
360 //u8 active_scan_num;
361 struct semaphore wx_sem;
362 struct semaphore rf_state;
363 short hw_wep;
364
365 short digphy;
366 short antb;
367 short diversity;
368 u8 cs_treshold;
369 short rcr_csense;
c8d86be3
GKH
370 u32 key0[4];
371 short (*rf_set_sens)(struct net_device *dev,short sens);
372 void (*rf_set_chan)(struct net_device *dev,short ch);
373 void (*rf_close)(struct net_device *dev);
374 void (*rf_init)(struct net_device *dev);
375 void (*rf_sleep)(struct net_device *dev);
376 void (*rf_wakeup)(struct net_device *dev);
377 //short rate;
378 short promisc;
379 /*stats*/
380 struct Stats stats;
381 struct _link_detect_t link_detect; //YJ,add,080828
382 struct iw_statistics wstats;
383 struct proc_dir_entry *dir_dev;
384
385 /*RX stuff*/
386 u32 *rxring;
387 u32 *rxringtail;
388 dma_addr_t rxringdma;
389 struct buffer *rxbuffer;
390 struct buffer *rxbufferhead;
391 int rxringcount;
392 u16 rxbuffersize;
393
394 struct sk_buff *rx_skb;
395
396 short rx_skb_complete;
397
398 u32 rx_prevlen;
399
400 /*TX stuff*/
401/*
402 u32 *txlpring;
403 u32 *txhpring;
404 u32 *txnpring;
405 dma_addr_t txlpringdma;
406 dma_addr_t txhpringdma;
407 dma_addr_t txnpringdma;
408 u32 *txlpringtail;
409 u32 *txhpringtail;
410 u32 *txnpringtail;
411 u32 *txlpringhead;
412 u32 *txhpringhead;
413 u32 *txnpringhead;
414 struct buffer *txlpbufs;
415 struct buffer *txhpbufs;
416 struct buffer *txnpbufs;
417 struct buffer *txlpbufstail;
418 struct buffer *txhpbufstail;
419 struct buffer *txnpbufstail;
420*/
421 u32 *txmapring;
422 u32 *txbkpring;
423 u32 *txbepring;
424 u32 *txvipring;
425 u32 *txvopring;
426 u32 *txhpring;
427 dma_addr_t txmapringdma;
428 dma_addr_t txbkpringdma;
429 dma_addr_t txbepringdma;
430 dma_addr_t txvipringdma;
431 dma_addr_t txvopringdma;
432 dma_addr_t txhpringdma;
433 u32 *txmapringtail;
434 u32 *txbkpringtail;
435 u32 *txbepringtail;
436 u32 *txvipringtail;
437 u32 *txvopringtail;
438 u32 *txhpringtail;
439 u32 *txmapringhead;
440 u32 *txbkpringhead;
441 u32 *txbepringhead;
442 u32 *txvipringhead;
443 u32 *txvopringhead;
444 u32 *txhpringhead;
445 struct buffer *txmapbufs;
446 struct buffer *txbkpbufs;
447 struct buffer *txbepbufs;
448 struct buffer *txvipbufs;
449 struct buffer *txvopbufs;
450 struct buffer *txhpbufs;
451 struct buffer *txmapbufstail;
452 struct buffer *txbkpbufstail;
453 struct buffer *txbepbufstail;
454 struct buffer *txvipbufstail;
455 struct buffer *txvopbufstail;
456 struct buffer *txhpbufstail;
457
458 int txringcount;
459 int txbuffsize;
460 //struct tx_pendingbuf txnp_pending;
461 //struct tasklet_struct irq_tx_tasklet;
462 struct tasklet_struct irq_rx_tasklet;
463 u8 dma_poll_mask;
464 //short tx_suspend;
465
466 /* adhoc/master mode stuff */
467 u32 *txbeaconringtail;
468 dma_addr_t txbeaconringdma;
469 u32 *txbeaconring;
470 int txbeaconcount;
471 struct buffer *txbeaconbufs;
472 struct buffer *txbeaconbufstail;
473 //char *master_essid;
474 //u16 master_beaconinterval;
475 //u32 master_beaconsize;
476 //u16 beacon_interval;
477
478 u8 retry_data;
479 u8 retry_rts;
480 u16 rts;
481
c8d86be3
GKH
482//by amy for led
483 LED_STRATEGY_8185 LedStrategy;
484//by amy for led
485
486//by amy for power save
487 struct timer_list watch_dog_timer;
488 bool bInactivePs;
489 bool bSwRfProcessing;
490 RT_RF_POWER_STATE eInactivePowerState;
491 RT_RF_POWER_STATE eRFPowerState;
492 u32 RfOffReason;
493 bool RFChangeInProgress;
494 bool bInHctTest;
495 bool SetRFPowerStateInProgress;
496 u8 RFProgType;
497 bool bLeisurePs;
498 RT_PS_MODE dot11PowerSaveMode;
499 //u32 NumRxOkInPeriod; //YJ,del,080828
500 //u32 NumTxOkInPeriod; //YJ,del,080828
501 u8 TxPollingTimes;
502
94e2bd68 503 bool bApBufOurFrame;// TRUE if AP buffer our unicast data , we will keep eAwake until receive data or timeout.
c8d86be3
GKH
504 u8 WaitBufDataBcnCount;
505 u8 WaitBufDataTimeOut;
506
507//by amy for power save
508//by amy for antenna
509 u8 EEPROMSwAntennaDiversity;
510 bool EEPROMDefaultAntenna1;
511 u8 RegSwAntennaDiversityMechanism;
512 bool bSwAntennaDiverity;
513 u8 RegDefaultAntenna;
514 bool bDefaultAntenna1;
515 u8 SignalStrength;
516 long Stats_SignalStrength;
517 long LastSignalStrengthInPercent; // In percentange, used for smoothing, e.g. Moving Average.
518 u8 SignalQuality; // in 0-100 index.
519 long Stats_SignalQuality;
520 long RecvSignalPower; // in dBm.
521 long Stats_RecvSignalPower;
522 u8 LastRxPktAntenna; // +by amy 080312 Antenn which received the lasted packet. 0: Aux, 1:Main. Added by Roger, 2008.01.25.
523 u32 AdRxOkCnt;
524 long AdRxSignalStrength;
525 u8 CurrAntennaIndex; // Index to current Antenna (both Tx and Rx).
526 u8 AdTickCount; // Times of SwAntennaDiversityTimer happened.
527 u8 AdCheckPeriod; // # of period SwAntennaDiversityTimer to check Rx signal strength for SW Antenna Diversity.
528 u8 AdMinCheckPeriod; // Min value of AdCheckPeriod.
529 u8 AdMaxCheckPeriod; // Max value of AdCheckPeriod.
530 long AdRxSsThreshold; // Signal strength threshold to switch antenna.
531 long AdMaxRxSsThreshold; // Max value of AdRxSsThreshold.
532 bool bAdSwitchedChecking; // TRUE if we shall shall check Rx signal strength for last time switching antenna.
533 long AdRxSsBeforeSwitched; // Rx signal strength before we swithed antenna.
534 struct timer_list SwAntennaDiversityTimer;
535//by amy for antenna
536//{by amy 080312
537//
538 // Crystal calibration.
539 // Added by Roger, 2007.12.11.
540 //
541 bool bXtalCalibration; // Crystal calibration.
542 u8 XtalCal_Xin; // Crystal calibration for Xin. 0~7.5pF
543 u8 XtalCal_Xout; // Crystal calibration for Xout. 0~7.5pF
544 //
545 // Tx power tracking with thermal meter indication.
546 // Added by Roger, 2007.12.11.
547 //
548 bool bTxPowerTrack; // Tx Power tracking.
549 u8 ThermalMeter; // Thermal meter reference indication.
550 //
551 // Dynamic Initial Gain Adjustment Mechanism. Added by Bruce, 2007-02-14.
552 //
553 bool bDigMechanism; // TRUE if DIG is enabled, FALSE ow.
554 bool bRegHighPowerMechanism; // For High Power Mechanism. 061010, by rcnjko.
555 u32 FalseAlarmRegValue;
556 u8 RegDigOfdmFaUpTh; // Upper threhold of OFDM false alarm, which is used in DIG.
557 u8 DIG_NumberFallbackVote;
558 u8 DIG_NumberUpgradeVote;
559 // For HW antenna diversity, added by Roger, 2008.01.30.
560 u32 AdMainAntennaRxOkCnt; // Main antenna Rx OK count.
561 u32 AdAuxAntennaRxOkCnt; // Aux antenna Rx OK count.
562 bool bHWAdSwitched; // TRUE if we has switched default antenna by HW evaluation.
563 // RF High Power upper/lower threshold.
564 u8 RegHiPwrUpperTh;
565 u8 RegHiPwrLowerTh;
566 // RF RSSI High Power upper/lower Threshold.
567 u8 RegRSSIHiPwrUpperTh;
568 u8 RegRSSIHiPwrLowerTh;
569 // Current CCK RSSI value to determine CCK high power, asked by SD3 DZ, by Bruce, 2007-04-12.
570 u8 CurCCKRSSI;
571 bool bCurCCKPkt;
572 //
573 // High Power Mechanism. Added by amy, 080312.
574 //
575 bool bToUpdateTxPwr;
576 long UndecoratedSmoothedSS;
577 long UndercorateSmoothedRxPower;
578 u8 RSSI;
579 char RxPower;
580 u8 InitialGain;
bbc9a991 581 //For adjust Dig Threshold during Legacy/Leisure Power Save Mode
c8d86be3
GKH
582 u32 DozePeriodInPast2Sec;
583 // Don't access BB/RF under disable PLL situation.
584 u8 InitialGainBackUp;
585 u8 RegBModeGainStage;
586//by amy for rate adaptive
587 struct timer_list rateadapter_timer;
588 u32 RateAdaptivePeriod;
589 bool bEnhanceTxPwr;
590 bool bUpdateARFR;
591 int ForcedDataRate; // Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M.)
592 u32 NumTxUnicast; //YJ,add,080828,for keep alive
593 u8 keepAliveLevel; //YJ,add,080828,for KeepAlive
594 unsigned long NumTxOkTotal;
595 u16 LastRetryCnt;
596 u16 LastRetryRate;
597 unsigned long LastTxokCnt;
598 unsigned long LastRxokCnt;
599 u16 CurrRetryCnt;
600 unsigned long LastTxOKBytes;
601 unsigned long NumTxOkBytesTotal;
602 u8 LastFailTxRate;
603 long LastFailTxRateSS;
604 u8 FailTxRateCount;
605 u32 LastTxThroughput;
606 //for up rate
607 unsigned short bTryuping;
608 u8 CurrTxRate; //the rate before up
609 u16 CurrRetryRate;
610 u16 TryupingCount;
611 u8 TryDownCountLowData;
612 u8 TryupingCountNoData;
613
614 u8 CurrentOperaRate;
615//by amy for rate adaptive
616//by amy 080312}
617// short wq_hurryup;
618// struct workqueue_struct *workqueue;
619 struct work_struct reset_wq;
620 struct work_struct watch_dog_wq;
621 struct work_struct tx_irq_wq;
622 short ack_tx_to_ieee;
623
624 u8 PowerProfile;
c8d86be3
GKH
625 u32 CSMethod;
626 u8 cck_txpwr_base;
627 u8 ofdm_txpwr_base;
628 u8 dma_poll_stop_mask;
629
630 //u8 RegThreeWireMode;
631 u8 MWIEnable;
632 u16 ShortRetryLimit;
633 u16 LongRetryLimit;
634 u16 EarlyRxThreshold;
635 u32 TransmitConfig;
636 u32 ReceiveConfig;
637 u32 IntrMask;
638
639 struct ChnlAccessSetting ChannelAccessSetting;
c8d86be3
GKH
640}r8180_priv;
641
642#define MANAGE_PRIORITY 0
643#define BK_PRIORITY 1
644#define BE_PRIORITY 2
645#define VI_PRIORITY 3
646#define VO_PRIORITY 4
647#define HI_PRIORITY 5
648#define BEACON_PRIORITY 6
649
650#define LOW_PRIORITY VI_PRIORITY
651#define NORM_PRIORITY VO_PRIORITY
652//AC2Queue mapping
653#define AC2Q(_ac) (((_ac) == WME_AC_VO) ? VO_PRIORITY : \
654 ((_ac) == WME_AC_VI) ? VI_PRIORITY : \
655 ((_ac) == WME_AC_BK) ? BK_PRIORITY : \
656 BE_PRIORITY)
657
658short rtl8180_tx(struct net_device *dev,u8* skbuf, int len,int priority,
659 short morefrag,short fragdesc,int rate);
660
661u8 read_nic_byte(struct net_device *dev, int x);
662u32 read_nic_dword(struct net_device *dev, int x);
663u16 read_nic_word(struct net_device *dev, int x) ;
664void write_nic_byte(struct net_device *dev, int x,u8 y);
665void write_nic_word(struct net_device *dev, int x,u16 y);
666void write_nic_dword(struct net_device *dev, int x,u32 y);
667void force_pci_posting(struct net_device *dev);
668
669void rtl8180_rtx_disable(struct net_device *);
670void rtl8180_rx_enable(struct net_device *);
671void rtl8180_tx_enable(struct net_device *);
672void rtl8180_start_scanning(struct net_device *dev);
673void rtl8180_start_scanning_s(struct net_device *dev);
674void rtl8180_stop_scanning(struct net_device *dev);
675void rtl8180_disassociate(struct net_device *dev);
676//void fix_rx_fifo(struct net_device *dev);
677void rtl8180_set_anaparam(struct net_device *dev,u32 a);
678void rtl8185_set_anaparam2(struct net_device *dev,u32 a);
679void rtl8180_set_hw_wep(struct net_device *dev);
680void rtl8180_no_hw_wep(struct net_device *dev);
681void rtl8180_update_msr(struct net_device *dev);
682//void rtl8180_BSS_create(struct net_device *dev);
683void rtl8180_beacon_tx_disable(struct net_device *dev);
684void rtl8180_beacon_rx_disable(struct net_device *dev);
685void rtl8180_conttx_enable(struct net_device *dev);
686void rtl8180_conttx_disable(struct net_device *dev);
687int rtl8180_down(struct net_device *dev);
688int rtl8180_up(struct net_device *dev);
689void rtl8180_commit(struct net_device *dev);
690void rtl8180_set_chan(struct net_device *dev,short ch);
691void rtl8180_set_master_essid(struct net_device *dev,char *essid);
692void rtl8180_update_beacon_security(struct net_device *dev);
693void write_phy(struct net_device *dev, u8 adr, u8 data);
694void write_phy_cck(struct net_device *dev, u8 adr, u32 data);
695void write_phy_ofdm(struct net_device *dev, u8 adr, u32 data);
696void rtl8185_tx_antenna(struct net_device *dev, u8 ant);
697void rtl8185_rf_pins_enable(struct net_device *dev);
698void IBSS_randomize_cell(struct net_device *dev);
699void IPSEnter(struct net_device *dev);
700void IPSLeave(struct net_device *dev);
701int get_curr_tx_free_desc(struct net_device *dev, int priority);
702void UpdateInitialGain(struct net_device *dev);
703bool SetAntennaConfig87SE(struct net_device *dev, u8 DefaultAnt, bool bAntDiversity);
704
705//#ifdef CONFIG_RTL8185B
706void rtl8185b_adapter_start(struct net_device *dev);
707void rtl8185b_rx_enable(struct net_device *dev);
708void rtl8185b_tx_enable(struct net_device *dev);
709void rtl8180_reset(struct net_device *dev);
710void rtl8185b_irq_enable(struct net_device *dev);
711void fix_rx_fifo(struct net_device *dev);
712void fix_tx_fifo(struct net_device *dev);
713void rtl8225z2_SetTXPowerLevel(struct net_device *dev, short ch);
c8d86be3 714void rtl8180_rate_adapter(struct work_struct * work);
c8d86be3
GKH
715//#endif
716bool MgntActSet_RF_State(struct net_device *dev, RT_RF_POWER_STATE StateToSet, u32 ChangeSource);
717
718#endif