diff options
Diffstat (limited to 'drivers/staging/rtl8187se/r8180.h')
-rw-r--r-- | drivers/staging/rtl8187se/r8180.h | 750 |
1 files changed, 345 insertions, 405 deletions
diff --git a/drivers/staging/rtl8187se/r8180.h b/drivers/staging/rtl8187se/r8180.h index 8999ec62450d..9f931dba1d82 100644 --- a/drivers/staging/rtl8187se/r8180.h +++ b/drivers/staging/rtl8187se/r8180.h @@ -1,19 +1,18 @@ /* - This is part of rtl8180 OpenSource driver. - Copyright (C) Andrea Merello 2004-2005 <andrea.merello@gmail.com> - Released under the terms of GPL (General Public Licence) - - Parts of this driver are based on the GPL part of the - official realtek driver - - Parts of this driver are based on the rtl8180 driver skeleton - from Patric Schenke & Andres Salomon - - Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver - - We want to thanks the Authors of those projects and the Ndiswrapper - project Authors. -*/ + * This is part of rtl8180 OpenSource driver. + * Copyright (C) Andrea Merello 2004-2005 <andrea.merello@gmail.com> + * Released under the terms of GPL (General Public Licence) + * + * Parts of this driver are based on the GPL part of the official realtek driver + * + * Parts of this driver are based on the rtl8180 driver skeleton from Patric + * Schenke & Andres Salomon + * + * Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver + * + * We want to thanks the Authors of those projects and the Ndiswrapper project + * Authors. + */ #ifndef R8180H #define R8180H @@ -21,13 +20,12 @@ #include <linux/interrupt.h> #define RTL8180_MODULE_NAME "r8180" -#define DMESG(x,a...) printk(KERN_INFO RTL8180_MODULE_NAME ": " x "\n", ## a) -#define DMESGW(x,a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": WW:" x "\n", ## a) -#define DMESGE(x,a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": EE:" x "\n", ## a) +#define DMESG(x, a...) printk(KERN_INFO RTL8180_MODULE_NAME ": " x "\n", ## a) +#define DMESGW(x, a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": WW:" x "\n", ## a) +#define DMESGE(x, a...) printk(KERN_WARNING RTL8180_MODULE_NAME ": EE:" x "\n", ## a) #include <linux/module.h> #include <linux/kernel.h> -//#include <linux/config.h> #include <linux/ioport.h> #include <linux/sched.h> #include <linux/types.h> @@ -36,22 +34,21 @@ #include <linux/pci.h> #include <linux/etherdevice.h> #include <linux/delay.h> -#include <linux/rtnetlink.h> //for rtnl_lock() +#include <linux/rtnetlink.h> /* for rtnl_lock() */ #include <linux/wireless.h> #include <linux/timer.h> -#include <linux/proc_fs.h> // Necessary because we use the proc fs +#include <linux/proc_fs.h> /* Necessary because we use the proc fs. */ #include <linux/if_arp.h> #include "ieee80211/ieee80211.h" #include <asm/io.h> -//#include <asm/semaphore.h> #define EPROM_93c46 0 #define EPROM_93c56 1 -#define RTL_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30 +#define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV + 30) #define DEFAULT_FRAG_THRESHOLD 2342U -#define MIN_FRAG_THRESHOLD 256U +#define MIN_FRAG_THRESHOLD 256U #define DEFAULT_RTS_THRESHOLD 2342U #define MIN_RTS_THRESHOLD 0U #define MAX_RTS_THRESHOLD 2342U @@ -60,132 +57,99 @@ #define DEFAULT_RETRY_RTS 7 #define DEFAULT_RETRY_DATA 7 -#define BEACON_QUEUE 6 +#define BEACON_QUEUE 6 -#define aSifsTime 10 +#define aSifsTime 10 -#define sCrcLng 4 -#define sAckCtsLng 112 // bits in ACK and CTS frames -//+by amy 080312 -#define RATE_ADAPTIVE_TIMER_PERIOD 300 +#define sCrcLng 4 +#define sAckCtsLng 112 /* bits in ACK and CTS frames. */ +/* +by amy 080312. */ +#define RATE_ADAPTIVE_TIMER_PERIOD 300 -typedef enum _WIRELESS_MODE { +enum wireless_mode { WIRELESS_MODE_UNKNOWN = 0x00, WIRELESS_MODE_A = 0x01, WIRELESS_MODE_B = 0x02, WIRELESS_MODE_G = 0x04, WIRELESS_MODE_AUTO = 0x08, -} WIRELESS_MODE; - -typedef struct ChnlAccessSetting { - u16 SIFS_Timer; - u16 DIFS_Timer; - u16 SlotTimeTimer; - u16 EIFS_Timer; - u16 CWminIndex; - u16 CWmaxIndex; -}*PCHANNEL_ACCESS_SETTING,CHANNEL_ACCESS_SETTING; - -typedef enum{ - NIC_8185 = 1, - NIC_8185B - } nic_t; +}; + +struct chnl_access_setting { + u16 sifs_timer; + u16 difs_timer; + u16 slot_time_timer; + u16 eifs_timer; + u16 cwmin_index; + u16 cwmax_index; +}; + +enum nic_t { + NIC_8185 = 1, + NIC_8185B +}; typedef u32 AC_CODING; -#define AC0_BE 0 // ACI: 0x00 // Best Effort -#define AC1_BK 1 // ACI: 0x01 // Background -#define AC2_VI 2 // ACI: 0x10 // Video -#define AC3_VO 3 // ACI: 0x11 // Voice -#define AC_MAX 4 // Max: define total number; Should not to be used as a real enum. - -// -// ECWmin/ECWmax field. -// Ref: WMM spec 2.2.2: WME Parameter Element, p.13. -// -typedef union _ECW{ - u8 charData; - struct - { - u8 ECWmin:4; - u8 ECWmax:4; - }f; // Field -}ECW, *PECW; - -// -// ACI/AIFSN Field. -// Ref: WMM spec 2.2.2: WME Parameter Element, p.12. -// -typedef union _ACI_AIFSN{ - u8 charData; - - struct - { - u8 AIFSN:4; - u8 ACM:1; - u8 ACI:2; - u8 Reserved:1; - }f; // Field -}ACI_AIFSN, *PACI_AIFSN; - -// -// AC Parameters Record Format. -// Ref: WMM spec 2.2.2: WME Parameter Element, p.12. -// -typedef union _AC_PARAM{ - u32 longData; - u8 charData[4]; - - struct - { - ACI_AIFSN AciAifsn; - ECW Ecw; - u16 TXOPLimit; - }f; // Field -}AC_PARAM, *PAC_PARAM; - -/* it is a wrong definition. -xiong-2006-11-17 -typedef struct ThreeWireReg { - u16 longData; +#define AC0_BE 0 /* ACI: 0x00 */ /* Best Effort. */ +#define AC1_BK 1 /* ACI: 0x01 */ /* Background. */ +#define AC2_VI 2 /* ACI: 0x10 */ /* Video. */ +#define AC3_VO 3 /* ACI: 0x11 */ /* Voice. */ +#define AC_MAX 4 /* Max: define total number; Should not to be used as a real + * enum. + */ + +/* + * ECWmin/ECWmax field. + * Ref: WMM spec 2.2.2: WME Parameter Element, p.13. + */ +typedef union _ECW { + u8 charData; + struct { + u8 ECWmin:4; + u8 ECWmax:4; + } f; /* Field */ +} ECW, *PECW; + +/* + * ACI/AIFSN Field. Ref: WMM spec 2.2.2: WME Parameter Element, p.12. + */ +typedef union _ACI_AIFSN { + u8 charData; + struct { - u8 enableB; - u8 data; - u8 clk; - u8 read_write; - } struc; -} ThreeWireReg; -*/ - -typedef union _ThreeWire{ - struct _ThreeWireStruc{ - u16 data:1; - u16 clk:1; - u16 enableB:1; - u16 read_write:1; - u16 resv1:12; -// u2Byte resv2:14; -// u2Byte ThreeWireEnable:1; -// u2Byte resv3:1; - }struc; - u16 longData; -}ThreeWireReg; - - -typedef struct buffer -{ + u8 AIFSN:4; + u8 ACM:1; + u8 ACI:2; + u8 Reserved:1; + } f; /* Field */ +} ACI_AIFSN, *PACI_AIFSN; + +/* + * AC Parameters Record Format. + * Ref: WMM spec 2.2.2: WME Parameter Element, p.12. + */ +typedef union _AC_PARAM { + u32 longData; + u8 charData[4]; + + struct { + ACI_AIFSN AciAifsn; + ECW Ecw; + u16 TXOPLimit; + } f; /* Field */ +} AC_PARAM, *PAC_PARAM; + +struct buffer { struct buffer *next; u32 *buf; dma_addr_t dma; -} buffer; +}; -//YJ,modified,080828 -typedef struct Stats -{ +/* YJ,modified,080828. */ +struct stats { unsigned long txrdu; unsigned long rxrdu; unsigned long rxnolast; unsigned long rxnodata; -// unsigned long rxreset; -// unsigned long rxwrkaround; unsigned long rxnopointer; unsigned long txnperr; unsigned long txresumed; @@ -207,126 +171,123 @@ typedef struct Stats unsigned long txbeaconerr; unsigned long txlpokint; unsigned long txlperr; - unsigned long txretry;//retry number tony 20060601 - unsigned long rxcrcerrmin;//crc error (0-500) - unsigned long rxcrcerrmid;//crc error (500-1000) - unsigned long rxcrcerrmax;//crc error (>1000) - unsigned long rxicverr;//ICV error -} Stats; + unsigned long txretry; /* retry number tony 20060601 */ + unsigned long rxcrcerrmin; /* crc error (0-500) */ + unsigned long rxcrcerrmid; /* crc error (500-1000) */ + unsigned long rxcrcerrmax; /* crc error (>1000) */ + unsigned long rxicverr; /* ICV error */ +}; #define MAX_LD_SLOT_NUM 10 -#define KEEP_ALIVE_INTERVAL 20 // in seconds. -#define CHECK_FOR_HANG_PERIOD 2 //be equal to watchdog check time -#define DEFAULT_KEEP_ALIVE_LEVEL 1 -#define DEFAULT_SLOT_NUM 2 -#define POWER_PROFILE_AC 0 -#define POWER_PROFILE_BATTERY 1 - -typedef struct _link_detect_t -{ - u32 RxFrameNum[MAX_LD_SLOT_NUM]; // number of Rx Frame / CheckForHang_period to determine link status - u16 SlotNum; // number of CheckForHang period to determine link status, default is 2 - u16 SlotIndex; - - u32 NumTxOkInPeriod; //number of packet transmitted during CheckForHang - u32 NumRxOkInPeriod; //number of packet received during CheckForHang - - u8 IdleCount; // (KEEP_ALIVE_INTERVAL / CHECK_FOR_HANG_PERIOD) - u32 LastNumTxUnicast; - u32 LastNumRxUnicast; - - bool bBusyTraffic; //when it is set to 1, UI cann't scan at will. -}link_detect_t, *plink_detect_t; - -//YJ,modified,080828,end - -//by amy for led -//================================================================================ -// LED customization. -//================================================================================ - -typedef enum _LED_STRATEGY_8185{ - SW_LED_MODE0, // - SW_LED_MODE1, // - HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes) -}LED_STRATEGY_8185, *PLED_STRATEGY_8185; -//by amy for led -//by amy for power save -typedef enum _LED_CTL_MODE{ - LED_CTL_POWER_ON = 1, - LED_CTL_LINK = 2, - LED_CTL_NO_LINK = 3, - LED_CTL_TX = 4, - LED_CTL_RX = 5, - LED_CTL_SITE_SURVEY = 6, - LED_CTL_POWER_OFF = 7 -}LED_CTL_MODE; - -typedef enum _RT_RF_POWER_STATE -{ - eRfOn, - eRfSleep, - eRfOff -}RT_RF_POWER_STATE; - -enum _ReasonCode{ - unspec_reason = 0x1, - auth_not_valid = 0x2, - deauth_lv_ss = 0x3, - inactivity = 0x4, - ap_overload = 0x5, - class2_err = 0x6, - class3_err = 0x7, - disas_lv_ss = 0x8, - asoc_not_auth = 0x9, - - //----MIC_CHECK - mic_failure = 0xe, - //----END MIC_CHECK - - // Reason code defined in 802.11i D10.0 p.28. - invalid_IE = 0x0d, - four_way_tmout = 0x0f, - two_way_tmout = 0x10, - IE_dismatch = 0x11, +#define KEEP_ALIVE_INTERVAL 20 /* in seconds. */ +#define CHECK_FOR_HANG_PERIOD 2 /* be equal to watchdog check time. */ +#define DEFAULT_KEEP_ALIVE_LEVEL 1 +#define DEFAULT_SLOT_NUM 2 +#define POWER_PROFILE_AC 0 +#define POWER_PROFILE_BATTERY 1 + +struct link_detect_t { + u32 rx_frame_num[MAX_LD_SLOT_NUM]; /* number of Rx Frame. + * CheckForHang_period to determine + * link status. + */ + u16 slot_num; /* number of CheckForHang period to determine link status, + * default is 2. + */ + u16 slot_index; + u32 num_tx_ok_in_period; /* number of packet transmitted during + * CheckForHang. + */ + u32 num_rx_ok_in_period; /* number of packet received during + * CheckForHang. + */ + u8 idle_count; /* (KEEP_ALIVE_INTERVAL / CHECK_FOR_HANG_PERIOD) */ + u32 last_num_tx_unicast; + u32 last_num_rx_unicast; + + bool b_busy_traffic; /* when it is set to 1, UI cann't scan at will. */ +}; + +/* YJ,modified,080828,end */ + +/* by amy for led + * ========================================================================== + * LED customization. + * ========================================================================== + */ +enum led_strategy_8185 { + SW_LED_MODE0, + SW_LED_MODE1, + HW_LED, /* HW control 2 LEDs, LED0 and LED1 (there are 4 different + * control modes). */ +}; + +enum rt_rf_power_state { + RF_ON, + RF_SLEEP, + RF_OFF +}; + +enum _ReasonCode { + unspec_reason = 0x1, + auth_not_valid = 0x2, + deauth_lv_ss = 0x3, + inactivity = 0x4, + ap_overload = 0x5, + class2_err = 0x6, + class3_err = 0x7, + disas_lv_ss = 0x8, + asoc_not_auth = 0x9, + + /* ----MIC_CHECK */ + mic_failure = 0xe, + /* ----END MIC_CHECK */ + + /* Reason code defined in 802.11i D10.0 p.28. */ + invalid_IE = 0x0d, + four_way_tmout = 0x0f, + two_way_tmout = 0x10, + IE_dismatch = 0x11, invalid_Gcipher = 0x12, invalid_Pcipher = 0x13, - invalid_AKMP = 0x14, + invalid_AKMP = 0x14, unsup_RSNIEver = 0x15, - invalid_RSNIE = 0x16, - auth_802_1x_fail= 0x17, - ciper_reject = 0x18, - - // Reason code defined in 7.3.1.7, 802.1e D13.0, p.42. Added by Annie, 2005-11-15. - QoS_unspec = 0x20, // 32 - QAP_bandwidth = 0x21, // 33 - poor_condition = 0x22, // 34 - no_facility = 0x23, // 35 - // Where is 36??? - req_declined = 0x25, // 37 - invalid_param = 0x26, // 38 - req_not_honored= 0x27, // 39 - TS_not_created = 0x2F, // 47 - DL_not_allowed = 0x30, // 48 - dest_not_exist = 0x31, // 49 - dest_not_QSTA = 0x32, // 50 + invalid_RSNIE = 0x16, + auth_802_1x_fail = 0x17, + ciper_reject = 0x18, + + /* Reason code defined in 7.3.1.7, 802.1e D13.0, p.42. Added by Annie, + * 2005-11-15. + */ + QoS_unspec = 0x20, /* 32 */ + QAP_bandwidth = 0x21, /* 33 */ + poor_condition = 0x22, /* 34 */ + no_facility = 0x23, /* 35 */ + /* Where is 36??? */ + req_declined = 0x25, /* 37 */ + invalid_param = 0x26, /* 38 */ + req_not_honored = 0x27, /* 39 */ + TS_not_created = 0x2F, /* 47 */ + DL_not_allowed = 0x30, /* 48 */ + dest_not_exist = 0x31, /* 49 */ + dest_not_QSTA = 0x32, /* 50 */ +}; + +enum rt_ps_mode { + ACTIVE, /* Active/Continuous access. */ + MAX_PS, /* Max power save mode. */ + FAST_PS /* Fast power save mode. */ }; -typedef enum _RT_PS_MODE -{ - eActive, // Active/Continuous access. - eMaxPs, // Max power save mode. - eFastPs // Fast power save mode. -}RT_PS_MODE; -//by amy for power save -typedef struct r8180_priv -{ + +/* by amy for power save. */ +struct r8180_priv { struct pci_dev *pdev; short epromtype; int irq; struct ieee80211_device *ieee80211; - short plcp_preamble_mode; // 0:auto 1:short 2:long + short plcp_preamble_mode; /* 0:auto 1:short 2:long */ spinlock_t irq_th_lock; spinlock_t tx_lock; @@ -339,19 +300,15 @@ typedef struct r8180_priv short chan; short sens; short max_sens; - u8 chtxpwr[15]; //channels from 1 to 14, 0 not used - u8 chtxpwr_ofdm[15]; //channels from 1 to 14, 0 not used - //u8 challow[15]; //channels from 1 to 14, 0 not used - u8 channel_plan; // it's the channel plan index + u8 chtxpwr[15]; /* channels from 1 to 14, 0 not used. */ + u8 chtxpwr_ofdm[15]; /* channels from 1 to 14, 0 not used. */ + u8 channel_plan; /* it's the channel plan index. */ short up; - short crcmon; //if 1 allow bad crc frame reception in monitor mode + short crcmon; /* if 1 allow bad crc frame reception in monitor mode. */ struct timer_list scan_timer; - /*short scanpending; - short stopscan;*/ spinlock_t scan_lock; u8 active_probe; - //u8 active_scan_num; struct semaphore wx_sem; short hw_wep; @@ -359,20 +316,20 @@ typedef struct r8180_priv short antb; short diversity; u32 key0[4]; - short (*rf_set_sens)(struct net_device *dev,short sens); - void (*rf_set_chan)(struct net_device *dev,short ch); + short (*rf_set_sens)(struct net_device *dev, short sens); + void (*rf_set_chan)(struct net_device *dev, short ch); void (*rf_close)(struct net_device *dev); void (*rf_init)(struct net_device *dev); void (*rf_sleep)(struct net_device *dev); void (*rf_wakeup)(struct net_device *dev); - //short rate; + /* short rate; */ short promisc; - /*stats*/ - struct Stats stats; - struct _link_detect_t link_detect; //YJ,add,080828 + /* stats */ + struct stats stats; + struct link_detect_t link_detect; /* YJ,add,080828 */ struct iw_statistics wstats; - /*RX stuff*/ + /* RX stuff. */ u32 *rxring; u32 *rxringtail; dma_addr_t rxringdma; @@ -387,27 +344,6 @@ typedef struct r8180_priv u32 rx_prevlen; - /*TX stuff*/ -/* - u32 *txlpring; - u32 *txhpring; - u32 *txnpring; - dma_addr_t txlpringdma; - dma_addr_t txhpringdma; - dma_addr_t txnpringdma; - u32 *txlpringtail; - u32 *txhpringtail; - u32 *txnpringtail; - u32 *txlpringhead; - u32 *txhpringhead; - u32 *txnpringhead; - struct buffer *txlpbufs; - struct buffer *txhpbufs; - struct buffer *txnpbufs; - struct buffer *txlpbufstail; - struct buffer *txhpbufstail; - struct buffer *txnpbufstail; -*/ u32 *txmapring; u32 *txbkpring; u32 *txbepring; @@ -447,54 +383,47 @@ typedef struct r8180_priv int txringcount; int txbuffsize; - //struct tx_pendingbuf txnp_pending; - //struct tasklet_struct irq_tx_tasklet; struct tasklet_struct irq_rx_tasklet; u8 dma_poll_mask; - //short tx_suspend; - /* adhoc/master mode stuff */ + /* adhoc/master mode stuff. */ u32 *txbeaconringtail; dma_addr_t txbeaconringdma; u32 *txbeaconring; int txbeaconcount; struct buffer *txbeaconbufs; struct buffer *txbeaconbufstail; - //char *master_essid; - //u16 master_beaconinterval; - //u32 master_beaconsize; - //u16 beacon_interval; u8 retry_data; u8 retry_rts; u16 rts; -//by amy for led - LED_STRATEGY_8185 LedStrategy; -//by amy for led + /* by amy for led. */ + enum led_strategy_8185 led_strategy; + /* by amy for led. */ -//by amy for power save + /* by amy for power save. */ struct timer_list watch_dog_timer; bool bInactivePs; bool bSwRfProcessing; - RT_RF_POWER_STATE eInactivePowerState; - RT_RF_POWER_STATE eRFPowerState; + enum rt_rf_power_state eInactivePowerState; + enum rt_rf_power_state eRFPowerState; u32 RfOffReason; bool RFChangeInProgress; bool SetRFPowerStateInProgress; - u8 RFProgType; + u8 RFProgType; bool bLeisurePs; - RT_PS_MODE dot11PowerSaveMode; - //u32 NumRxOkInPeriod; //YJ,del,080828 - //u32 NumTxOkInPeriod; //YJ,del,080828 - u8 TxPollingTimes; + enum rt_ps_mode dot11PowerSaveMode; + u8 TxPollingTimes; - bool bApBufOurFrame;// TRUE if AP buffer our unicast data , we will keep eAwake until receive data or timeout. - u8 WaitBufDataBcnCount; - u8 WaitBufDataTimeOut; + bool bApBufOurFrame; /* TRUE if AP buffer our unicast data , we will + * keep eAwake until receive data or timeout. + */ + u8 WaitBufDataBcnCount; + u8 WaitBufDataTimeOut; -//by amy for power save -//by amy for antenna + /* by amy for power save. */ + /* by amy for antenna. */ u8 EEPROMSwAntennaDiversity; bool EEPROMDefaultAntenna1; u8 RegSwAntennaDiversityMechanism; @@ -503,115 +432,128 @@ typedef struct r8180_priv bool bDefaultAntenna1; u8 SignalStrength; long Stats_SignalStrength; - long LastSignalStrengthInPercent; // In percentage, used for smoothing, e.g. Moving Average. - u8 SignalQuality; // in 0-100 index. + long LastSignalStrengthInPercent; /* In percentage, used for smoothing, + * e.g. Moving Average. + */ + u8 SignalQuality; /* in 0-100 index. */ long Stats_SignalQuality; - long RecvSignalPower; // in dBm. + long RecvSignalPower; /* in dBm. */ long Stats_RecvSignalPower; - u8 LastRxPktAntenna; // +by amy 080312 Antenna which received the lasted packet. 0: Aux, 1:Main. Added by Roger, 2008.01.25. + u8 LastRxPktAntenna; /* +by amy 080312 Antenna which received the lasted + * packet. 0: Aux, 1:Main. Added by Roger, + * 2008.01.25. + */ u32 AdRxOkCnt; long AdRxSignalStrength; - u8 CurrAntennaIndex; // Index to current Antenna (both Tx and Rx). - u8 AdTickCount; // Times of SwAntennaDiversityTimer happened. - u8 AdCheckPeriod; // # of period SwAntennaDiversityTimer to check Rx signal strength for SW Antenna Diversity. - u8 AdMinCheckPeriod; // Min value of AdCheckPeriod. - u8 AdMaxCheckPeriod; // Max value of AdCheckPeriod. - long AdRxSsThreshold; // Signal strength threshold to switch antenna. - long AdMaxRxSsThreshold; // Max value of AdRxSsThreshold. - bool bAdSwitchedChecking; // TRUE if we shall shall check Rx signal strength for last time switching antenna. - long AdRxSsBeforeSwitched; // Rx signal strength before we switched antenna. + u8 CurrAntennaIndex; /* Index to current Antenna (both Tx and Rx). */ + u8 AdTickCount; /* Times of SwAntennaDiversityTimer happened. */ + u8 AdCheckPeriod; /* # of period SwAntennaDiversityTimer to check Rx + * signal strength for SW Antenna Diversity. + */ + u8 AdMinCheckPeriod; /* Min value of AdCheckPeriod. */ + u8 AdMaxCheckPeriod; /* Max value of AdCheckPeriod. */ + long AdRxSsThreshold; /* Signal strength threshold to switch antenna. */ + long AdMaxRxSsThreshold; /* Max value of AdRxSsThreshold. */ + bool bAdSwitchedChecking; /* TRUE if we shall shall check Rx signal + * strength for last time switching antenna. + */ + long AdRxSsBeforeSwitched; /* Rx signal strength before we switched + * antenna. + */ struct timer_list SwAntennaDiversityTimer; -//by amy for antenna -//{by amy 080312 -// - // Crystal calibration. - // Added by Roger, 2007.12.11. - // - bool bXtalCalibration; // Crystal calibration. - u8 XtalCal_Xin; // Crystal calibration for Xin. 0~7.5pF - u8 XtalCal_Xout; // Crystal calibration for Xout. 0~7.5pF - // - // Tx power tracking with thermal meter indication. - // Added by Roger, 2007.12.11. - // - bool bTxPowerTrack; // Tx Power tracking. - u8 ThermalMeter; // Thermal meter reference indication. - // - // Dynamic Initial Gain Adjustment Mechanism. Added by Bruce, 2007-02-14. - // - bool bDigMechanism; // TRUE if DIG is enabled, FALSE ow. - bool bRegHighPowerMechanism; // For High Power Mechanism. 061010, by rcnjko. - u32 FalseAlarmRegValue; - u8 RegDigOfdmFaUpTh; // Upper threshold of OFDM false alarm, which is used in DIG. - u8 DIG_NumberFallbackVote; - u8 DIG_NumberUpgradeVote; - // For HW antenna diversity, added by Roger, 2008.01.30. - u32 AdMainAntennaRxOkCnt; // Main antenna Rx OK count. - u32 AdAuxAntennaRxOkCnt; // Aux antenna Rx OK count. - bool bHWAdSwitched; // TRUE if we has switched default antenna by HW evaluation. - // RF High Power upper/lower threshold. - u8 RegHiPwrUpperTh; - u8 RegHiPwrLowerTh; - // RF RSSI High Power upper/lower Threshold. - u8 RegRSSIHiPwrUpperTh; - u8 RegRSSIHiPwrLowerTh; - // Current CCK RSSI value to determine CCK high power, asked by SD3 DZ, by Bruce, 2007-04-12. - u8 CurCCKRSSI; - bool bCurCCKPkt; - // - // High Power Mechanism. Added by amy, 080312. - // - bool bToUpdateTxPwr; - long UndecoratedSmoothedSS; - long UndercorateSmoothedRxPower; - u8 RSSI; - char RxPower; - u8 InitialGain; - //For adjust Dig Threshold during Legacy/Leisure Power Save Mode - u32 DozePeriodInPast2Sec; - // Don't access BB/RF under disable PLL situation. - u8 InitialGainBackUp; - u8 RegBModeGainStage; -//by amy for rate adaptive - struct timer_list rateadapter_timer; - u32 RateAdaptivePeriod; - bool bEnhanceTxPwr; - bool bUpdateARFR; - int ForcedDataRate; // Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M.) - u32 NumTxUnicast; //YJ,add,080828,for keep alive - u8 keepAliveLevel; //YJ,add,080828,for KeepAlive - unsigned long NumTxOkTotal; - u16 LastRetryCnt; - u16 LastRetryRate; - unsigned long LastTxokCnt; - unsigned long LastRxokCnt; - u16 CurrRetryCnt; - unsigned long LastTxOKBytes; - unsigned long NumTxOkBytesTotal; - u8 LastFailTxRate; - long LastFailTxRateSS; - u8 FailTxRateCount; - u32 LastTxThroughput; - //for up rate - unsigned short bTryuping; - u8 CurrTxRate; //the rate before up - u16 CurrRetryRate; - u16 TryupingCount; - u8 TryDownCountLowData; - u8 TryupingCountNoData; - - u8 CurrentOperaRate; -//by amy for rate adaptive -//by amy 080312} -// short wq_hurryup; -// struct workqueue_struct *workqueue; + /* by amy for antenna {by amy 080312 */ + + /* Crystal calibration. Added by Roger, 2007.12.11. */ + + bool bXtalCalibration; /* Crystal calibration.*/ + u8 XtalCal_Xin; /* Crystal calibration for Xin. 0~7.5pF */ + u8 XtalCal_Xout; /* Crystal calibration for Xout. 0~7.5pF */ + + /* Tx power tracking with thermal meter indication. + * Added by Roger, 2007.12.11. + */ + + bool bTxPowerTrack; /* Tx Power tracking. */ + u8 ThermalMeter; /* Thermal meter reference indication. */ + + /* Dynamic Initial Gain Adjustment Mechanism. Added by Bruce, + * 2007-02-14. + */ + bool bDigMechanism; /* TRUE if DIG is enabled, FALSE ow. */ + bool bRegHighPowerMechanism; /* For High Power Mechanism. 061010, + * by rcnjko. + */ + u32 FalseAlarmRegValue; + u8 RegDigOfdmFaUpTh; /* Upper threshold of OFDM false alarm, which is + * used in DIG. + */ + u8 DIG_NumberFallbackVote; + u8 DIG_NumberUpgradeVote; + /* For HW antenna diversity, added by Roger, 2008.01.30. */ + u32 AdMainAntennaRxOkCnt; /* Main antenna Rx OK count. */ + u32 AdAuxAntennaRxOkCnt; /* Aux antenna Rx OK count. */ + bool bHWAdSwitched; /* TRUE if we has switched default antenna by HW + * evaluation. + */ + /* RF High Power upper/lower threshold. */ + u8 RegHiPwrUpperTh; + u8 RegHiPwrLowerTh; + /* RF RSSI High Power upper/lower Threshold. */ + u8 RegRSSIHiPwrUpperTh; + u8 RegRSSIHiPwrLowerTh; + /* Current CCK RSSI value to determine CCK high power, asked by SD3 DZ, + * by Bruce, 2007-04-12. + */ + u8 CurCCKRSSI; + bool bCurCCKPkt; + /* High Power Mechanism. Added by amy, 080312. */ + bool bToUpdateTxPwr; + long UndecoratedSmoothedSS; + long UndecoratedSmoothedRxPower; + u8 RSSI; + char RxPower; + u8 InitialGain; + /* For adjust Dig Threshold during Legacy/Leisure Power Save Mode. */ + u32 DozePeriodInPast2Sec; + /* Don't access BB/RF under disable PLL situation. */ + u8 InitialGainBackUp; + u8 RegBModeGainStage; + /* by amy for rate adaptive */ + struct timer_list rateadapter_timer; + u32 RateAdaptivePeriod; + bool bEnhanceTxPwr; + bool bUpdateARFR; + int ForcedDataRate; /* Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M.) + */ + u32 NumTxUnicast; /* YJ,add,080828,for keep alive. */ + u8 keepAliveLevel; /*YJ,add,080828,for KeepAlive. */ + unsigned long NumTxOkTotal; + u16 LastRetryCnt; + u16 LastRetryRate; + unsigned long LastTxokCnt; + unsigned long LastRxokCnt; + u16 CurrRetryCnt; + unsigned long LastTxOKBytes; + unsigned long NumTxOkBytesTotal; + u8 LastFailTxRate; + long LastFailTxRateSS; + u8 FailTxRateCount; + u32 LastTxThroughput; + /* for up rate. */ + unsigned short bTryuping; + u8 CurrTxRate; /* the rate before up. */ + u16 CurrRetryRate; + u16 TryupingCount; + u8 TryDownCountLowData; + u8 TryupingCountNoData; + + u8 CurrentOperaRate; struct work_struct reset_wq; struct work_struct watch_dog_wq; short ack_tx_to_ieee; u8 dma_poll_stop_mask; - //u8 RegThreeWireMode; u16 ShortRetryLimit; u16 LongRetryLimit; u16 EarlyRxThreshold; @@ -619,8 +561,8 @@ typedef struct r8180_priv u32 ReceiveConfig; u32 IntrMask; - struct ChnlAccessSetting ChannelAccessSetting; -}r8180_priv; + struct chnl_access_setting ChannelAccessSetting; +}; #define MANAGE_PRIORITY 0 #define BK_PRIORITY 1 @@ -632,14 +574,14 @@ typedef struct r8180_priv #define LOW_PRIORITY VI_PRIORITY #define NORM_PRIORITY VO_PRIORITY -//AC2Queue mapping +/* AC2Queue mapping. */ #define AC2Q(_ac) (((_ac) == WME_AC_VO) ? VO_PRIORITY : \ ((_ac) == WME_AC_VI) ? VI_PRIORITY : \ ((_ac) == WME_AC_BK) ? BK_PRIORITY : \ BE_PRIORITY) short rtl8180_tx(struct net_device *dev, u8 *skbuf, int len, int priority, - short morefrag, short fragdesc, int rate); + bool morefrag, short fragdesc, int rate); u8 read_nic_byte(struct net_device *dev, int x); u32 read_nic_dword(struct net_device *dev, int x); @@ -673,7 +615,6 @@ void UpdateInitialGain(struct net_device *dev); bool SetAntennaConfig87SE(struct net_device *dev, u8 DefaultAnt, bool bAntDiversity); -//#ifdef CONFIG_RTL8185B void rtl8185b_adapter_start(struct net_device *dev); void rtl8185b_rx_enable(struct net_device *dev); void rtl8185b_tx_enable(struct net_device *dev); @@ -682,9 +623,8 @@ void rtl8185b_irq_enable(struct net_device *dev); void fix_rx_fifo(struct net_device *dev); void fix_tx_fifo(struct net_device *dev); void rtl8225z2_SetTXPowerLevel(struct net_device *dev, short ch); -void rtl8180_rate_adapter(struct work_struct * work); -//#endif -bool MgntActSet_RF_State(struct net_device *dev, RT_RF_POWER_STATE StateToSet, +void rtl8180_rate_adapter(struct work_struct *work); +bool MgntActSet_RF_State(struct net_device *dev, enum rt_rf_power_state StateToSet, u32 ChangeSource); #endif |