]> Pileus Git - ~andy/linux/blobdiff - drivers/staging/rtl8192e/r8192E.h
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
[~andy/linux] / drivers / staging / rtl8192e / r8192E.h
index 0c20fae493ddc33b14e03c2e513319e95b4a090b..0229031d88d775e91974ed6d00499d2dd14f2f57 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/random.h>
 #include <linux/version.h>
 #include <asm/io.h>
+#include "ieee80211/rtl819x_HT.h"
 #include "ieee80211/ieee80211.h"
 
 
@@ -191,6 +192,87 @@ do { if(rt_global_debug_component & component) \
 #define EEPROM_Default_LegacyHTTxPowerDiff     0x4
 #define IEEE80211_WATCH_DOG_TIME    2000
 
+typedef u32 RT_RF_CHANGE_SOURCE;
+#define RF_CHANGE_BY_SW BIT31
+#define RF_CHANGE_BY_HW BIT30
+#define RF_CHANGE_BY_PS BIT29
+#define RF_CHANGE_BY_IPS BIT28
+#define RF_CHANGE_BY_INIT      0       // Do not change the RFOff reason. Defined by Bruce, 2008-01-17.
+
+// RF state.
+typedef        enum _RT_RF_POWER_STATE {
+       eRfOn,
+       eRfSleep,
+       eRfOff
+} RT_RF_POWER_STATE;
+
+typedef enum _RT_JOIN_ACTION {
+       RT_JOIN_INFRA = 1,
+       RT_JOIN_IBSS  = 2,
+       RT_START_IBSS = 3,
+       RT_NO_ACTION  = 4,
+} RT_JOIN_ACTION;
+
+typedef enum _IPS_CALLBACK_FUNCION {
+       IPS_CALLBACK_NONE = 0,
+       IPS_CALLBACK_MGNT_LINK_REQUEST = 1,
+       IPS_CALLBACK_JOIN_REQUEST = 2,
+} IPS_CALLBACK_FUNCION;
+
+typedef struct _RT_POWER_SAVE_CONTROL {
+       /* Inactive Power Save(IPS) : Disable RF when disconnected */
+       bool                    bInactivePs;
+       bool                    bIPSModeBackup;
+       bool                    bSwRfProcessing;
+       RT_RF_POWER_STATE       eInactivePowerState;
+       struct work_struct      InactivePsWorkItem;
+       struct timer_list       InactivePsTimer;
+
+       /* Return point for join action */
+       IPS_CALLBACK_FUNCION    ReturnPoint;
+
+       /* Recored Parameters for rescheduled JoinRequest */
+       bool                    bTmpBssDesc;
+       RT_JOIN_ACTION          tmpJoinAction;
+       struct ieee80211_network tmpBssDesc;
+
+       /* Recored Parameters for rescheduled MgntLinkRequest */
+       bool                    bTmpScanOnly;
+       bool                    bTmpActiveScan;
+       bool                    bTmpFilterHiddenAP;
+       bool                    bTmpUpdateParms;
+       u8                      tmpSsidBuf[33];
+       OCTET_STRING            tmpSsid2Scan;
+       bool                    bTmpSsid2Scan;
+       u8                      tmpNetworkType;
+       u8                      tmpChannelNumber;
+       u16                     tmpBcnPeriod;
+       u8                      tmpDtimPeriod;
+       u16                     tmpmCap;
+       OCTET_STRING            tmpSuppRateSet;
+       u8                      tmpSuppRateBuf[MAX_NUM_RATES];
+       bool                    bTmpSuppRate;
+       IbssParms               tmpIbpm;
+       bool                    bTmpIbpm;
+
+       /*
+        * Leisure Power Save:
+        * Disable RF if connected but traffic is not busy
+        */
+       bool                    bLeisurePs;
+       u32                     PowerProfile;
+       u8                      LpsIdleCount;
+
+       u32                     CurPsLevel;
+       u32                     RegRfPsLevel;
+
+       bool                    bFwCtrlLPS;
+       u8                      FWCtrlPSMode;
+
+       bool                    LinkReqInIPSRFOffPgs;
+       bool                    BufConnectinfoBefore;
+} RT_POWER_SAVE_CONTROL, *PRT_POWER_SAVE_CONTROL;
+
 /* For rtl819x */
 typedef struct _tx_desc_819x_pci {
         //DWORD 0
@@ -786,6 +868,8 @@ struct rtl8192_tx_ring {
 typedef struct r8192_priv
 {
        struct pci_dev *pdev;
+       u8 *mem_start;
+
        /* maintain info from eeprom */
        short epromtype;
        u16 eeprom_vid;
@@ -793,7 +877,6 @@ typedef struct r8192_priv
        u8  eeprom_CustomerID;
        u16  eeprom_ChannelPlan;
        RT_CUSTOMER_ID CustomerID;
-       LED_STRATEGY_8190       LedStrategy;
        u8      IC_Cut;
        int irq;
        struct ieee80211_device *ieee80211;
@@ -808,7 +891,6 @@ typedef struct r8192_priv
        spinlock_t irq_th_lock;
        spinlock_t rf_ps_lock;
         struct mutex mutex;
-       spinlock_t ps_lock;
 
        short chan;
        short sens;
@@ -820,13 +902,6 @@ typedef struct r8192_priv
        int rxringcount;
        u16 rxbuffersize;
 
-       struct sk_buff *rx_skb;
-       u32 *rxring;
-       u32 *rxringtail;
-       dma_addr_t rxringdma;
-       struct buffer *rxbuffer;
-       struct buffer *rxbufferhead;
-       short rx_skb_complete;
        /* TX stuff */
         struct rtl8192_tx_ring tx_ring[MAX_TX_QUEUE_COUNT];
        int txringcount;
@@ -841,10 +916,8 @@ typedef struct r8192_priv
        struct semaphore rf_sem; //used to lock rf write operation added by wb, modified by david
        u8 rf_type; /* 0 means 1T2R, 1 means 2T4R */
 
-       short (*rf_set_sens)(struct net_device *dev,short sens);
-       u8 (*rf_set_chan)(struct net_device *dev,u8 ch);
-       void (*rf_close)(struct net_device *dev);
-       void (*rf_init)(struct net_device *dev);
+       short (*rf_set_sens)(struct net_device *dev, short sens);
+       u8 (*rf_set_chan)(struct ieee80211_device *ieee80211, u8 ch);
        short promisc;
        /* stats */
        struct Stats stats;
@@ -916,8 +989,6 @@ typedef struct r8192_priv
        u8      TxPowerLevelOFDM24G_A[14];      // RF-A, OFDM 2.4G channel 1~14
        u8      TxPowerLevelOFDM24G_C[14];      // RF-C, OFDM 2.4G channel 1~14
        u8      LegacyHTTxPowerDiff;                    // Legacy to HT rate power diff
-       u8      TxPowerDiff;
-       char    RF_C_TxPwDiff;                                  // Antenna gain offset, rf-c to rf-a
        u8      AntennaTxPwDiff[3];                             // Antenna gain offset, index 0 for B, 1 for C, and 2 for D
        u8      CrystalCap;                                             // CrystalCap.
        u8      ThermalMeter[2];                                // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1
@@ -930,6 +1001,9 @@ typedef struct r8192_priv
        char                            CCKPresentAttentuation_difference;
        char                            CCKPresentAttentuation;
        // Use to calculate PWBD.
+       RT_RF_POWER_STATE               eRFPowerState;
+       RT_RF_CHANGE_SOURCE     RfOffReason;
+       RT_POWER_SAVE_CONTROL   PowerSaveControl;
        u8      bCckHighPower;
        long    undecorated_smoothed_pwdb;
        long    undecorated_smoothed_cck_adc_pwdb[4];
@@ -956,7 +1030,6 @@ typedef struct r8192_priv
 
 //+by amy 080515 for dynamic mechenism
        //Add by amy Tx Power Control for Near/Far Range 2008/05/15
-       bool    bdynamic_txpower;  //bDynamicTxPower
        bool    bDynamicTxHighPower;  // Tx high power state
        bool    bDynamicTxLowPower;  // Tx low power state
        bool    bLastDTPFlag_High;
@@ -1010,7 +1083,6 @@ typedef struct r8192_priv
        //by amy for gpio
        bool bHwRadioOff;
        //by amy for ps
-       bool RFChangeInProgress; // RF Chnage in progress, by Bruce, 2007-10-30
        RT_OP_MODE OpMode;
        //by amy for reset_count
        u32 reset_count;
@@ -1036,7 +1108,7 @@ typedef struct r8192_priv
        struct workqueue_struct *priv_wq;
 }r8192_priv;
 
-bool init_firmware(struct net_device *dev);
+bool init_firmware(struct r8192_priv *priv);
 u32 read_cam(struct r8192_priv *priv, u8 addr);
 void write_cam(struct r8192_priv *priv, u8 addr, u32 data);
 u8 read_nic_byte(struct r8192_priv *priv, int x);
@@ -1048,30 +1120,29 @@ void write_nic_dword(struct r8192_priv *priv, int x,u32 y);
 
 int rtl8192_down(struct net_device *dev);
 int rtl8192_up(struct net_device *dev);
-void rtl8192_commit(struct net_device *dev);
+void rtl8192_commit(struct r8192_priv *priv);
 void write_phy(struct net_device *dev, u8 adr, u8 data);
-void CamResetAllEntry(struct net_device* dev);
-void EnableHWSecurityConfig8192(struct net_device *dev);
-void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent );
-void dm_cck_txpower_adjust(struct net_device *dev, bool binch14);
-void firmware_init_param(struct net_device *dev);
-RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len);
+void CamResetAllEntry(struct r8192_priv *priv);
+void EnableHWSecurityConfig8192(struct r8192_priv *priv);
+void setKey(struct r8192_priv *priv, u8 EntryNo, u8 KeyIndex, u16 KeyType,
+           const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent);
+void firmware_init_param(struct r8192_priv *priv);
+RT_STATUS cmpk_message_handle_tx(struct r8192_priv *priv, u8 *codevirtualaddress, u32 packettype, u32 buffer_len);
 
 #ifdef ENABLE_IPS
-void IPSEnter(struct net_device *dev);
-void IPSLeave(struct net_device *dev);
-void InactivePsWorkItemCallback(struct net_device *dev);
+void IPSEnter(struct r8192_priv *priv);
+void IPSLeave(struct r8192_priv *priv);
 void IPSLeave_wq(struct work_struct *work);
-void ieee80211_ips_leave_wq(struct net_device *dev);
-void ieee80211_ips_leave(struct net_device *dev);
+void ieee80211_ips_leave_wq(struct ieee80211_device *ieee80211);
+void ieee80211_ips_leave(struct ieee80211_device *ieee80211);
 #endif
 #ifdef ENABLE_LPS
-void LeisurePSEnter(struct net_device *dev);
-void LeisurePSLeave(struct net_device *dev);
+void LeisurePSEnter(struct ieee80211_device *ieee80211);
+void LeisurePSLeave(struct ieee80211_device *ieee80211);
 #endif
 
-bool NicIFEnableNIC(struct net_device* dev);
-bool NicIFDisableNIC(struct net_device* dev);
+bool NicIFEnableNIC(struct r8192_priv *priv);
+bool NicIFDisableNIC(struct r8192_priv *priv);
 
-void PHY_SetRtl8192eRfOff(struct net_device* dev);
+void PHY_SetRtl8192eRfOff(struct r8192_priv *priv);
 #endif