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