| /* |
| * 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 |
| |
| #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) |
| |
| #include <linux/module.h> |
| #include <linux/kernel.h> |
| #include <linux/ioport.h> |
| #include <linux/sched.h> |
| #include <linux/types.h> |
| #include <linux/slab.h> |
| #include <linux/netdevice.h> |
| #include <linux/pci.h> |
| #include <linux/etherdevice.h> |
| #include <linux/delay.h> |
| #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/if_arp.h> |
| #include "ieee80211/ieee80211.h" |
| #include <asm/io.h> |
| |
| #define EPROM_93c46 0 |
| #define EPROM_93c56 1 |
| |
| #define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV + 30) |
| |
| #define DEFAULT_FRAG_THRESHOLD 2342U |
| #define MIN_FRAG_THRESHOLD 256U |
| #define DEFAULT_RTS_THRESHOLD 2342U |
| #define MIN_RTS_THRESHOLD 0U |
| #define MAX_RTS_THRESHOLD 2342U |
| #define DEFAULT_BEACONINTERVAL 0x64U |
| |
| #define DEFAULT_RETRY_RTS 7 |
| #define DEFAULT_RETRY_DATA 7 |
| |
| #define BEACON_QUEUE 6 |
| |
| #define aSifsTime 10 |
| |
| #define sCrcLng 4 |
| #define sAckCtsLng 112 /* bits in ACK and CTS frames. */ |
| /* +by amy 080312. */ |
| #define RATE_ADAPTIVE_TIMER_PERIOD 300 |
| |
| enum wireless_mode { |
| WIRELESS_MODE_UNKNOWN = 0x00, |
| WIRELESS_MODE_A = 0x01, |
| WIRELESS_MODE_B = 0x02, |
| WIRELESS_MODE_G = 0x04, |
| WIRELESS_MODE_AUTO = 0x08, |
| }; |
| |
| 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; |
| |
| struct buffer { |
| struct buffer *next; |
| u32 *buf; |
| dma_addr_t dma; |
| }; |
| |
| /* YJ,modified,080828. */ |
| struct stats { |
| unsigned long txrdu; |
| unsigned long rxrdu; |
| unsigned long rxnolast; |
| unsigned long rxnodata; |
| unsigned long rxnopointer; |
| unsigned long txnperr; |
| unsigned long txresumed; |
| unsigned long rxerr; |
| unsigned long rxoverflow; |
| unsigned long rxint; |
| unsigned long txbkpokint; |
| unsigned long txbepoking; |
| unsigned long txbkperr; |
| unsigned long txbeperr; |
| unsigned long txnpokint; |
| unsigned long txhpokint; |
| unsigned long txhperr; |
| unsigned long ints; |
| unsigned long shints; |
| unsigned long txoverflow; |
| unsigned long rxdmafail; |
| unsigned long txbeacon; |
| 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 */ |
| }; |
| |
| #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 |
| |
| 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, |
| 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 */ |
| }; |
| |
| enum rt_ps_mode { |
| ACTIVE, /* Active/Continuous access. */ |
| MAX_PS, /* Max power save mode. */ |
| FAST_PS /* Fast power save mode. */ |
| }; |
| |
| /* 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 */ |
| |
| spinlock_t irq_th_lock; |
| spinlock_t tx_lock; |
| spinlock_t ps_lock; |
| spinlock_t rf_ps_lock; |
| |
| u16 irq_mask; |
| short irq_enabled; |
| struct net_device *dev; |
| 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 channel_plan; /* it's the channel plan index. */ |
| short up; |
| short crcmon; /* if 1 allow bad crc frame reception in monitor mode. */ |
| |
| struct timer_list scan_timer; |
| spinlock_t scan_lock; |
| u8 active_probe; |
| struct semaphore wx_sem; |
| short hw_wep; |
| |
| short digphy; |
| 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); |
| 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 promisc; |
| /* stats */ |
| struct stats stats; |
| struct link_detect_t link_detect; /* YJ,add,080828 */ |
| struct iw_statistics wstats; |
| |
| /* RX stuff. */ |
| u32 *rxring; |
| u32 *rxringtail; |
| dma_addr_t rxringdma; |
| struct buffer *rxbuffer; |
| struct buffer *rxbufferhead; |
| int rxringcount; |
| u16 rxbuffersize; |
| |
| struct sk_buff *rx_skb; |
| |
| short rx_skb_complete; |
| |
| u32 rx_prevlen; |
| |
| u32 *txmapring; |
| u32 *txbkpring; |
| u32 *txbepring; |
| u32 *txvipring; |
| u32 *txvopring; |
| u32 *txhpring; |
| dma_addr_t txmapringdma; |
| dma_addr_t txbkpringdma; |
| dma_addr_t txbepringdma; |
| dma_addr_t txvipringdma; |
| dma_addr_t txvopringdma; |
| dma_addr_t txhpringdma; |
| u32 *txmapringtail; |
| u32 *txbkpringtail; |
| u32 *txbepringtail; |
| u32 *txvipringtail; |
| u32 *txvopringtail; |
| u32 *txhpringtail; |
| u32 *txmapringhead; |
| u32 *txbkpringhead; |
| u32 *txbepringhead; |
| u32 *txvipringhead; |
| u32 *txvopringhead; |
| u32 *txhpringhead; |
| struct buffer *txmapbufs; |
| struct buffer *txbkpbufs; |
| struct buffer *txbepbufs; |
| struct buffer *txvipbufs; |
| struct buffer *txvopbufs; |
| struct buffer *txhpbufs; |
| struct buffer *txmapbufstail; |
| struct buffer *txbkpbufstail; |
| struct buffer *txbepbufstail; |
| struct buffer *txvipbufstail; |
| struct buffer *txvopbufstail; |
| struct buffer *txhpbufstail; |
| |
| int txringcount; |
| int txbuffsize; |
| struct tasklet_struct irq_rx_tasklet; |
| u8 dma_poll_mask; |
| |
| /* adhoc/master mode stuff. */ |
| u32 *txbeaconringtail; |
| dma_addr_t txbeaconringdma; |
| u32 *txbeaconring; |
| int txbeaconcount; |
| struct buffer *txbeaconbufs; |
| struct buffer *txbeaconbufstail; |
| |
| u8 retry_data; |
| u8 retry_rts; |
| u16 rts; |
| |
| /* by amy for led. */ |
| enum led_strategy_8185 led_strategy; |
| /* by amy for led. */ |
| |
| /* by amy for power save. */ |
| struct timer_list watch_dog_timer; |
| bool bInactivePs; |
| bool bSwRfProcessing; |
| enum rt_rf_power_state eInactivePowerState; |
| enum rt_rf_power_state eRFPowerState; |
| u32 RfOffReason; |
| bool RFChangeInProgress; |
| bool SetRFPowerStateInProgress; |
| u8 RFProgType; |
| bool bLeisurePs; |
| 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; |
| |
| /* by amy for power save. */ |
| /* by amy for antenna. */ |
| u8 EEPROMSwAntennaDiversity; |
| bool EEPROMDefaultAntenna1; |
| u8 RegSwAntennaDiversityMechanism; |
| bool bSwAntennaDiverity; |
| u8 RegDefaultAntenna; |
| 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 Stats_SignalQuality; |
| 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. |
| */ |
| 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. |
| */ |
| 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 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; |
| |
| u16 ShortRetryLimit; |
| u16 LongRetryLimit; |
| u16 EarlyRxThreshold; |
| u32 TransmitConfig; |
| u32 ReceiveConfig; |
| u32 IntrMask; |
| |
| struct chnl_access_setting ChannelAccessSetting; |
| }; |
| |
| #define MANAGE_PRIORITY 0 |
| #define BK_PRIORITY 1 |
| #define BE_PRIORITY 2 |
| #define VI_PRIORITY 3 |
| #define VO_PRIORITY 4 |
| #define HI_PRIORITY 5 |
| #define BEACON_PRIORITY 6 |
| |
| #define LOW_PRIORITY VI_PRIORITY |
| #define NORM_PRIORITY VO_PRIORITY |
| /* 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, |
| 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); |
| u16 read_nic_word(struct net_device *dev, int x); |
| void write_nic_byte(struct net_device *dev, int x, u8 y); |
| void write_nic_word(struct net_device *dev, int x, u16 y); |
| void write_nic_dword(struct net_device *dev, int x, u32 y); |
| void force_pci_posting(struct net_device *dev); |
| |
| void rtl8180_rtx_disable(struct net_device *); |
| void rtl8180_set_anaparam(struct net_device *dev, u32 a); |
| void rtl8185_set_anaparam2(struct net_device *dev, u32 a); |
| void rtl8180_set_hw_wep(struct net_device *dev); |
| void rtl8180_no_hw_wep(struct net_device *dev); |
| void rtl8180_update_msr(struct net_device *dev); |
| void rtl8180_beacon_tx_disable(struct net_device *dev); |
| void rtl8180_beacon_rx_disable(struct net_device *dev); |
| int rtl8180_down(struct net_device *dev); |
| int rtl8180_up(struct net_device *dev); |
| void rtl8180_commit(struct net_device *dev); |
| void rtl8180_set_chan(struct net_device *dev, short ch); |
| void write_phy(struct net_device *dev, u8 adr, u8 data); |
| void write_phy_cck(struct net_device *dev, u8 adr, u32 data); |
| void write_phy_ofdm(struct net_device *dev, u8 adr, u32 data); |
| void rtl8185_tx_antenna(struct net_device *dev, u8 ant); |
| void rtl8185_rf_pins_enable(struct net_device *dev); |
| void IPSEnter(struct net_device *dev); |
| void IPSLeave(struct net_device *dev); |
| int get_curr_tx_free_desc(struct net_device *dev, int priority); |
| void UpdateInitialGain(struct net_device *dev); |
| bool SetAntennaConfig87SE(struct net_device *dev, u8 DefaultAnt, |
| bool bAntDiversity); |
| |
| void rtl8185b_adapter_start(struct net_device *dev); |
| void rtl8185b_rx_enable(struct net_device *dev); |
| void rtl8185b_tx_enable(struct net_device *dev); |
| void rtl8180_reset(struct net_device *dev); |
| 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); |
| bool MgntActSet_RF_State(struct net_device *dev, enum rt_rf_power_state StateToSet, |
| u32 ChangeSource); |
| |
| #endif |
| |
| /* fun with the built-in ieee80211 stack... */ |
| extern int ieee80211_crypto_init(void); |
| extern void ieee80211_crypto_deinit(void); |
| extern int ieee80211_crypto_tkip_init(void); |
| extern void ieee80211_crypto_tkip_exit(void); |
| extern int ieee80211_crypto_ccmp_init(void); |
| extern void ieee80211_crypto_ccmp_exit(void); |
| extern int ieee80211_crypto_wep_init(void); |
| extern void ieee80211_crypto_wep_exit(void); |