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