Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6
[firefly-linux-kernel-4.4.55.git] / drivers / staging / rtl8192e / r819xE_phy.c
index ef23b0eaf6594a255c2f6f8e4602829ace203446..dfa4e112ef4604c347a958fd2dc11f8c1b490034 100644 (file)
@@ -564,8 +564,9 @@ static u32 Rtl8192PciERadioD_Array[RadioD_ArrayLength] = {
 
 /*************************Define local function prototype**********************/
 
-static u32 phy_FwRFSerialRead(struct net_device* dev,RF90_RADIO_PATH_E eRFPath,u32 Offset);
-static void phy_FwRFSerialWrite(struct net_device* dev,RF90_RADIO_PATH_E eRFPath,u32 Offset,u32        Data);
+static u32 phy_FwRFSerialRead(struct r8192_priv *priv, RF90_RADIO_PATH_E eRFPath, u32 Offset);
+static void phy_FwRFSerialWrite(struct r8192_priv *priv, RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data);
+
 /*************************Define local function prototype**********************/
 /******************************************************************************
  *function:  This function read BB parameters from Header file we gen,
@@ -590,10 +591,9 @@ static u32 rtl8192_CalculateBitShift(u32 dwBitMask)
  *  output:  none
  *  return:  0(illegal, false), 1(legal,true)
  * ***************************************************************************/
-u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device* dev, u32 eRFPath)
+u8 rtl8192_phy_CheckIsLegalRFPath(struct r8192_priv *priv, u32 eRFPath)
 {
        u8 ret = 1;
-       struct r8192_priv *priv = ieee80211_priv(dev);
 
        if (priv->rf_type == RF_2T4R)
                ret = 0;
@@ -617,9 +617,8 @@ u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device* dev, u32 eRFPath)
  *  return:  none
  *  notice:
  * ****************************************************************************/
-void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32 dwData)
+void rtl8192_setBBreg(struct r8192_priv *priv, u32 dwRegAddr, u32 dwBitMask, u32 dwData)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32 OriginalValue, BitShift, NewValue;
 
        if(dwBitMask!= bMaskDWord)
@@ -640,9 +639,8 @@ void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32
  *  return:  u32       Data    //the readback register value
  *  notice:
  * ****************************************************************************/
-u32 rtl8192_QueryBBReg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask)
+u32 rtl8192_QueryBBReg(struct r8192_priv *priv, u32 dwRegAddr, u32 dwBitMask)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32 OriginalValue, BitShift;
 
        OriginalValue = read_nic_dword(priv, dwRegAddr);
@@ -658,9 +656,9 @@ u32 rtl8192_QueryBBReg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask)
  *  return:  u32       readback value
  *  notice:  There are three types of serial operations:(1) Software serial write.(2)Hardware LSSI-Low Speed Serial Interface.(3)Hardware HSSI-High speed serial write. Driver here need to implement (1) and (2)---need more spec for this information.
  * ****************************************************************************/
-static u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset)
+static u32 rtl8192_phy_RFSerialRead(struct r8192_priv *priv,
+                                   RF90_RADIO_PATH_E eRFPath, u32 Offset)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32 ret = 0;
        u32 NewOffset = 0;
        BB_REGISTER_DEFINITION_T* pPhyReg = &priv->PHYRegDef[eRFPath];
@@ -670,12 +668,12 @@ static u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eR
 
        //switch page for 8256 RF IC
        //analog to digital off, for protection
-       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0xf00, 0x0);// 0x88c[11:8]
+       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter4, 0xf00, 0x0);// 0x88c[11:8]
        if (Offset >= 31)
        {
                priv->RfReg0Value[eRFPath] |= 0x140;
                //Switch to Reg_Mode2 for Reg 31-45
-               rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) );
+               rtl8192_setBBreg(priv, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) );
                //modify offset
                NewOffset = Offset -30;
        }
@@ -684,7 +682,7 @@ static u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eR
                priv->RfReg0Value[eRFPath] |= 0x100;
                priv->RfReg0Value[eRFPath] &= (~0x40);
                //Switch to Reg_Mode 1 for Reg16-30
-               rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) );
+               rtl8192_setBBreg(priv, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) );
 
                NewOffset = Offset - 15;
        }
@@ -692,30 +690,30 @@ static u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eR
                NewOffset = Offset;
 
        //put desired read addr to LSSI control Register
-       rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, bLSSIReadAddress, NewOffset);
+       rtl8192_setBBreg(priv, pPhyReg->rfHSSIPara2, bLSSIReadAddress, NewOffset);
        //Issue a posedge trigger
        //
-       rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2,  bLSSIReadEdge, 0x0);
-       rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2,  bLSSIReadEdge, 0x1);
+       rtl8192_setBBreg(priv, pPhyReg->rfHSSIPara2,  bLSSIReadEdge, 0x0);
+       rtl8192_setBBreg(priv, pPhyReg->rfHSSIPara2,  bLSSIReadEdge, 0x1);
 
 
        // TODO: we should not delay such a  long time. Ask help from SD3
        msleep(1);
 
-       ret = rtl8192_QueryBBReg(dev, pPhyReg->rfLSSIReadBack, bLSSIReadBackData);
+       ret = rtl8192_QueryBBReg(priv, pPhyReg->rfLSSIReadBack, bLSSIReadBackData);
 
 
        // Switch back to Reg_Mode0;
        priv->RfReg0Value[eRFPath] &= 0xebf;
 
        rtl8192_setBBreg(
-               dev,
+               priv,
                pPhyReg->rf3wireOffset,
                bMaskDWord,
                (priv->RfReg0Value[eRFPath] << 16));
 
        //analog to digital on
-       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0x300, 0x3);// 0x88c[9:8]
+       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter4, 0x300, 0x3);// 0x88c[9:8]
 
        return ret;
 }
@@ -740,28 +738,29 @@ static u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eR
  * Reg_Mode2   1               1                       Reg 31 ~ 45(0x1 ~ 0xf)
  *------------------------------------------------------------------
  * ****************************************************************************/
-static void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data)
+static void rtl8192_phy_RFSerialWrite(struct r8192_priv *priv,
+                                     RF90_RADIO_PATH_E eRFPath, u32 Offset,
+                                     u32 Data)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32 DataAndAddr = 0, NewOffset = 0;
        BB_REGISTER_DEFINITION_T        *pPhyReg = &priv->PHYRegDef[eRFPath];
 
        Offset &= 0x3f;
 
        //analog to digital off, for protection
-       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0xf00, 0x0);// 0x88c[11:8]
+       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter4, 0xf00, 0x0);// 0x88c[11:8]
 
        if (Offset >= 31)
        {
                priv->RfReg0Value[eRFPath] |= 0x140;
-               rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath] << 16));
+               rtl8192_setBBreg(priv, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath] << 16));
                NewOffset = Offset - 30;
        }
        else if (Offset >= 16)
        {
                priv->RfReg0Value[eRFPath] |= 0x100;
                priv->RfReg0Value[eRFPath] &= (~0x40);
-               rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16));
+               rtl8192_setBBreg(priv, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16));
                NewOffset = Offset - 15;
        }
        else
@@ -771,7 +770,7 @@ static void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E
        DataAndAddr = (Data<<16) | (NewOffset&0x3f);
 
        // Write Operation
-       rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr);
+       rtl8192_setBBreg(priv, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr);
 
 
        if(Offset==0x0)
@@ -782,19 +781,18 @@ static void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E
        {
                priv->RfReg0Value[eRFPath] &= 0xebf;
                rtl8192_setBBreg(
-                       dev,
+                       priv,
                        pPhyReg->rf3wireOffset,
                        bMaskDWord,
                        (priv->RfReg0Value[eRFPath] << 16));
        }
        //analog to digital on
-       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0x300, 0x3);// 0x88c[9:8]
+       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter4, 0x300, 0x3);// 0x88c[9:8]
 }
 
 /******************************************************************************
  *function:  This function set specific bits to RF register
- *   input:  net_device dev
- *          RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D
+ *   input:  RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D
  *           u32       RegAddr  //target addr to be modified
  *           u32       BitMask  //taget bit pos in the addr to be modified
  *           u32       Data     //value to be write
@@ -802,15 +800,15 @@ static void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E
  *  return:  none
  *  notice:
  * ****************************************************************************/
-void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
+void rtl8192_phy_SetRFReg(struct r8192_priv *priv, RF90_RADIO_PATH_E eRFPath,
+                         u32 RegAddr, u32 BitMask, u32 Data)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32 Original_Value, BitShift, New_Value;
 //     u8      time = 0;
 
-       if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath))
+       if (!rtl8192_phy_CheckIsLegalRFPath(priv, eRFPath))
                return;
-       if(priv->ieee80211->eRFPowerState != eRfOn && !priv->being_init_adapter)
+       if (priv->eRFPowerState != eRfOn && !priv->being_init_adapter)
                return;
        //down(&priv->rf_sem);
 
@@ -819,13 +817,13 @@ void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32
        {
                if (BitMask != bMask12Bits) // RF data is 12 bits only
                {
-                       Original_Value = phy_FwRFSerialRead(dev, eRFPath, RegAddr);
+                       Original_Value = phy_FwRFSerialRead(priv, eRFPath, RegAddr);
                        BitShift =  rtl8192_CalculateBitShift(BitMask);
                        New_Value = (((Original_Value) & (~BitMask)) | (Data<< BitShift));
 
-                       phy_FwRFSerialWrite(dev, eRFPath, RegAddr, New_Value);
+                       phy_FwRFSerialWrite(priv, eRFPath, RegAddr, New_Value);
                }else
-                       phy_FwRFSerialWrite(dev, eRFPath, RegAddr, Data);
+                       phy_FwRFSerialWrite(priv, eRFPath, RegAddr, Data);
                udelay(200);
 
        }
@@ -833,13 +831,13 @@ void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32
        {
                if (BitMask != bMask12Bits) // RF data is 12 bits only
                {
-                       Original_Value = rtl8192_phy_RFSerialRead(dev, eRFPath, RegAddr);
+                       Original_Value = rtl8192_phy_RFSerialRead(priv, eRFPath, RegAddr);
                        BitShift =  rtl8192_CalculateBitShift(BitMask);
                        New_Value = (((Original_Value) & (~BitMask)) | (Data<< BitShift));
 
-                       rtl8192_phy_RFSerialWrite(dev, eRFPath, RegAddr, New_Value);
+                       rtl8192_phy_RFSerialWrite(priv, eRFPath, RegAddr, New_Value);
                }else
-                       rtl8192_phy_RFSerialWrite(dev, eRFPath, RegAddr, Data);
+                       rtl8192_phy_RFSerialWrite(priv, eRFPath, RegAddr, Data);
        }
        //up(&priv->rf_sem);
 }
@@ -853,23 +851,24 @@ void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32
  *  return:  u32       Data    //the readback register value
  *  notice:
  * ****************************************************************************/
-u32 rtl8192_phy_QueryRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask)
+u32 rtl8192_phy_QueryRFReg(struct r8192_priv *priv, RF90_RADIO_PATH_E eRFPath,
+                          u32 RegAddr, u32 BitMask)
 {
        u32 Original_Value, Readback_Value, BitShift;
-       struct r8192_priv *priv = ieee80211_priv(dev);
-       if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath))
+
+       if (!rtl8192_phy_CheckIsLegalRFPath(priv, eRFPath))
                return 0;
-       if(priv->ieee80211->eRFPowerState != eRfOn && !priv->being_init_adapter)
+       if (priv->eRFPowerState != eRfOn && !priv->being_init_adapter)
                return  0;
        down(&priv->rf_sem);
        if (priv->Rf_Mode == RF_OP_By_FW)
        {
-               Original_Value = phy_FwRFSerialRead(dev, eRFPath, RegAddr);
+               Original_Value = phy_FwRFSerialRead(priv, eRFPath, RegAddr);
                udelay(200);
        }
        else
        {
-               Original_Value = rtl8192_phy_RFSerialRead(dev, eRFPath, RegAddr);
+               Original_Value = rtl8192_phy_RFSerialRead(priv, eRFPath, RegAddr);
 
        }
        BitShift =  rtl8192_CalculateBitShift(BitMask);
@@ -886,12 +885,9 @@ u32 rtl8192_phy_QueryRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u3
  *  return:  none
  *  notice:
  * ***************************************************************************/
-static u32 phy_FwRFSerialRead(
-       struct net_device* dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                             Offset  )
+static u32 phy_FwRFSerialRead(struct r8192_priv *priv,
+                             RF90_RADIO_PATH_E eRFPath, u32 Offset)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32             Data = 0;
        u8              time = 0;
        //DbgPrint("FW RF CTRL\n\r");
@@ -944,14 +940,9 @@ static u32 phy_FwRFSerialRead(
  *  return:  none
  *  notice:
  * ***************************************************************************/
-static void
-phy_FwRFSerialWrite(
-               struct net_device* dev,
-               RF90_RADIO_PATH_E       eRFPath,
-               u32                             Offset,
-               u32                             Data    )
+static void phy_FwRFSerialWrite(struct r8192_priv *priv,
+                               RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u8      time = 0;
 
        //DbgPrint("N FW RF CTRL RF-%d OF%02x DATA=%03x\n\r", eRFPath, Offset, Data);
@@ -1002,11 +993,10 @@ phy_FwRFSerialWrite(
  *  notice:  BB parameters may change all the time, so please make
  *           sure it has been synced with the newest.
  * ***************************************************************************/
-void rtl8192_phy_configmac(struct net_device* dev)
+void rtl8192_phy_configmac(struct r8192_priv *priv)
 {
        u32 dwArrayLen = 0, i = 0;
        u32* pdwArray = NULL;
-       struct r8192_priv *priv = ieee80211_priv(dev);
 #ifdef TO_DO_LIST
 if(Adapter->bInHctTest)
        {
@@ -1038,7 +1028,7 @@ if(Adapter->bInHctTest)
                        //DbgPrint("ptrArray[i], ptrArray[i+1], ptrArray[i+2] = %x, %x, %x\n",
                        //      ptrArray[i], ptrArray[i+1], ptrArray[i+2]);
                }
-               rtl8192_setBBreg(dev, pdwArray[i], pdwArray[i+1], pdwArray[i+2]);
+               rtl8192_setBBreg(priv, pdwArray[i], pdwArray[i+1], pdwArray[i+2]);
        }
 }
 
@@ -1051,14 +1041,13 @@ if(Adapter->bInHctTest)
  *           sure it has been synced with the newest.
  * ***************************************************************************/
 
-void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType)
+void rtl8192_phyConfigBB(struct r8192_priv *priv, u8 ConfigType)
 {
        int i;
        //u8 ArrayLength;
        u32*    Rtl819XPHY_REGArray_Table = NULL;
        u32*    Rtl819XAGCTAB_Array_Table = NULL;
        u16     AGCTAB_ArrayLen, PHY_REGArrayLen = 0;
-       struct r8192_priv *priv = ieee80211_priv(dev);
 #ifdef TO_DO_LIST
        u32 *rtl8192PhyRegArrayTable = NULL, *rtl8192AgcTabArrayTable = NULL;
        if(Adapter->bInHctTest)
@@ -1098,16 +1087,16 @@ void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType)
        {
                for (i=0; i<PHY_REGArrayLen; i+=2)
                {
-                       rtl8192_setBBreg(dev, Rtl819XPHY_REGArray_Table[i], bMaskDWord, Rtl819XPHY_REGArray_Table[i+1]);
-                       RT_TRACE(COMP_DBG, "i: %x, The Rtl819xUsbPHY_REGArray[0] is %x Rtl819xUsbPHY_REGArray[1] is %x \n",i, Rtl819XPHY_REGArray_Table[i], Rtl819XPHY_REGArray_Table[i+1]);
+                       rtl8192_setBBreg(priv, Rtl819XPHY_REGArray_Table[i], bMaskDWord, Rtl819XPHY_REGArray_Table[i+1]);
+                       RT_TRACE(COMP_DBG, "i: %x, The Rtl819xUsbPHY_REGArray[0] is %x Rtl819xUsbPHY_REGArray[1] is %x\n",i, Rtl819XPHY_REGArray_Table[i], Rtl819XPHY_REGArray_Table[i+1]);
                }
        }
        else if (ConfigType == BaseBand_Config_AGC_TAB)
        {
                for (i=0; i<AGCTAB_ArrayLen; i+=2)
                {
-                       rtl8192_setBBreg(dev, Rtl819XAGCTAB_Array_Table[i], bMaskDWord, Rtl819XAGCTAB_Array_Table[i+1]);
-                       RT_TRACE(COMP_DBG, "i:%x, The rtl819XAGCTAB_Array[0] is %x rtl819XAGCTAB_Array[1] is %x \n",i, Rtl819XAGCTAB_Array_Table[i], Rtl819XAGCTAB_Array_Table[i+1]);
+                       rtl8192_setBBreg(priv, Rtl819XAGCTAB_Array_Table[i], bMaskDWord, Rtl819XAGCTAB_Array_Table[i+1]);
+                       RT_TRACE(COMP_DBG, "i:%x, The rtl819XAGCTAB_Array[0] is %x rtl819XAGCTAB_Array[1] is %x\n",i, Rtl819XAGCTAB_Array_Table[i], Rtl819XAGCTAB_Array_Table[i+1]);
                }
        }
 }
@@ -1119,9 +1108,8 @@ void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType)
  *  return:  none
  *  notice:  Initialization value here is constant and it should never be changed
  * ***************************************************************************/
-static void rtl8192_InitBBRFRegDef(struct net_device* dev)
+static void rtl8192_InitBBRFRegDef(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
 // RF Interface Sowrtware Control
        priv->PHYRegDef[RF90_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 LSBs if read 32-bit from 0x870
        priv->PHYRegDef[RF90_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872)
@@ -1234,9 +1222,10 @@ static void rtl8192_InitBBRFRegDef(struct net_device* dev)
  *  return:  return whether BB and RF is ok(0:OK; 1:Fail)
  *  notice:  This function may be removed in the ASIC
  * ***************************************************************************/
-RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlock, RF90_RADIO_PATH_E eRFPath)
+RT_STATUS rtl8192_phy_checkBBAndRF(struct r8192_priv *priv,
+                                  HW90_BLOCK_E CheckBlock,
+                                  RF90_RADIO_PATH_E eRFPath)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
 //     BB_REGISTER_DEFINITION_T *pPhyReg = &priv->PHYRegDef[eRFPath];
        RT_STATUS ret = RT_STATUS_SUCCESS;
        u32 i, CheckTimes = 4, dwRegRead = 0;
@@ -1257,7 +1246,7 @@ RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlo
                switch(CheckBlock)
                {
                case HW90_BLOCK_MAC:
-                       RT_TRACE(COMP_ERR, "PHY_CheckBBRFOK(): Never Write 0x100 here!");
+                       RT_TRACE(COMP_ERR, "PHY_CheckBBRFOK(): Never Write 0x100 here!\n");
                        break;
 
                case HW90_BLOCK_PHY0:
@@ -1268,10 +1257,10 @@ RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlo
 
                case HW90_BLOCK_RF:
                        WriteData[i] &= 0xfff;
-                       rtl8192_phy_SetRFReg(dev, eRFPath, WriteAddr[HW90_BLOCK_RF], bMask12Bits, WriteData[i]);
+                       rtl8192_phy_SetRFReg(priv, eRFPath, WriteAddr[HW90_BLOCK_RF], bMask12Bits, WriteData[i]);
                        // TODO: we should not delay for such a long time. Ask SD3
                        mdelay(10);
-                       dwRegRead = rtl8192_phy_QueryRFReg(dev, eRFPath, WriteAddr[HW90_BLOCK_RF], bMaskDWord);
+                       dwRegRead = rtl8192_phy_QueryRFReg(priv, eRFPath, WriteAddr[HW90_BLOCK_RF], bMaskDWord);
                        mdelay(10);
                        break;
 
@@ -1286,7 +1275,7 @@ RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlo
                //
                if(dwRegRead != WriteData[i])
                {
-                       RT_TRACE(COMP_ERR, "====>error=====dwRegRead: %x, WriteData: %x \n", dwRegRead, WriteData[i]);
+                       RT_TRACE(COMP_ERR, "====>error=====dwRegRead: %x, WriteData: %x\n", dwRegRead, WriteData[i]);
                        ret = RT_STATUS_FAILURE;
                        break;
                }
@@ -1304,10 +1293,10 @@ RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlo
  *  notice:  Initialization value may change all the time, so please make
  *           sure it has been synced with the newest.
  * ***************************************************************************/
-static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
+static RT_STATUS rtl8192_BB_Config_ParaFile(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        RT_STATUS rtStatus = RT_STATUS_SUCCESS;
+
        u8 bRegValue = 0, eCheckItem = 0;
        u32 dwRegValue = 0;
        /**************************************
@@ -1326,7 +1315,7 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
        // TODO: this function should be removed on ASIC , Emily 2007.2.2
        for(eCheckItem=(HW90_BLOCK_E)HW90_BLOCK_PHY0; eCheckItem<=HW90_BLOCK_PHY1; eCheckItem++)
        {
-               rtStatus  = rtl8192_phy_checkBBAndRF(dev, (HW90_BLOCK_E)eCheckItem, (RF90_RADIO_PATH_E)0); //don't care RF path
+               rtStatus  = rtl8192_phy_checkBBAndRF(priv, (HW90_BLOCK_E)eCheckItem, (RF90_RADIO_PATH_E)0); //don't care RF path
                if(rtStatus != RT_STATUS_SUCCESS)
                {
                        RT_TRACE((COMP_ERR | COMP_PHY), "PHY_RF8256_Config():Check PHY%d Fail!!\n", eCheckItem-1);
@@ -1334,10 +1323,10 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
                }
        }
        /*---- Set CCK and OFDM Block "OFF"----*/
-       rtl8192_setBBreg(dev, rFPGA0_RFMOD, bCCKEn|bOFDMEn, 0x0);
+       rtl8192_setBBreg(priv, rFPGA0_RFMOD, bCCKEn|bOFDMEn, 0x0);
        /*----BB Register Initilazation----*/
        //==m==>Set PHY REG From Header<==m==
-       rtl8192_phyConfigBB(dev, BaseBand_Config_PHY_REG);
+       rtl8192_phyConfigBB(priv, BaseBand_Config_PHY_REG);
 
        /*----Set BB reset de-Active----*/
        dwRegValue = read_nic_dword(priv, CPU_GEN);
@@ -1345,7 +1334,7 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
 
        /*----BB AGC table Initialization----*/
        //==m==>Set PHY REG From Header<==m==
-       rtl8192_phyConfigBB(dev, BaseBand_Config_AGC_TAB);
+       rtl8192_phyConfigBB(priv, BaseBand_Config_AGC_TAB);
 
        if (priv->card_8192_version  > VERSION_8190_BD)
        {
@@ -1358,13 +1347,13 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
                }
                else
                        dwRegValue = 0x0;       //Antenna gain offset doesn't make sense in RF 1T2R.
-               rtl8192_setBBreg(dev, rFPGA0_TxGainStage,
+               rtl8192_setBBreg(priv, rFPGA0_TxGainStage,
                        (bXBTxAGC|bXCTxAGC|bXDTxAGC), dwRegValue);
 
 
                //XSTALLCap
                dwRegValue = priv->CrystalCap;
-               rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, bXtalCap92x, dwRegValue);
+               rtl8192_setBBreg(priv, rFPGA0_AnalogParameter1, bXtalCap92x, dwRegValue);
        }
 
        // Check if the CCK HighPower is turned ON.
@@ -1380,12 +1369,12 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev)
  *  notice:  Initialization value may change all the time, so please make
  *           sure it has been synced with the newest.
  * ***************************************************************************/
-RT_STATUS rtl8192_BBConfig(struct net_device* dev)
+RT_STATUS rtl8192_BBConfig(struct r8192_priv *priv)
 {
-       rtl8192_InitBBRFRegDef(dev);
+       rtl8192_InitBBRFRegDef(priv);
        //config BB&RF. As hardCode based initialization has not been well
        //implemented, so use file first.FIXME:should implement it for hardcode?
-       return rtl8192_BB_Config_ParaFile(dev);
+       return rtl8192_BB_Config_ParaFile(priv);
 }
 
 /******************************************************************************
@@ -1394,10 +1383,8 @@ RT_STATUS rtl8192_BBConfig(struct net_device* dev)
  *  output:  none
  *  return:  none
  * ***************************************************************************/
-void rtl8192_phy_getTxPower(struct net_device* dev)
+void rtl8192_phy_getTxPower(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
-
        priv->MCSTxPowerLevelOriginalOffset[0] =
                read_nic_dword(priv, rTxAGC_Rate18_06);
        priv->MCSTxPowerLevelOriginalOffset[1] =
@@ -1416,14 +1403,14 @@ void rtl8192_phy_getTxPower(struct net_device* dev)
        priv->DefaultInitialGain[1] = read_nic_byte(priv, rOFDM0_XBAGCCore1);
        priv->DefaultInitialGain[2] = read_nic_byte(priv, rOFDM0_XCAGCCore1);
        priv->DefaultInitialGain[3] = read_nic_byte(priv, rOFDM0_XDAGCCore1);
-       RT_TRACE(COMP_INIT, "Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x) \n",
+       RT_TRACE(COMP_INIT, "Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x)\n",
                priv->DefaultInitialGain[0], priv->DefaultInitialGain[1],
                priv->DefaultInitialGain[2], priv->DefaultInitialGain[3]);
 
        // read framesync
        priv->framesync = read_nic_byte(priv, rOFDM0_RxDetector3);
        priv->framesyncC34 = read_nic_dword(priv, rOFDM0_RxDetector2);
-       RT_TRACE(COMP_INIT, "Default framesync (0x%x) = 0x%x \n",
+       RT_TRACE(COMP_INIT, "Default framesync (0x%x) = 0x%x\n",
                rOFDM0_RxDetector3, priv->framesync);
        // read SIFS (save the value read fome MACPHY_REG.txt)
        priv->SifsTime = read_nic_word(priv, SIFS);
@@ -1435,9 +1422,8 @@ void rtl8192_phy_getTxPower(struct net_device* dev)
  *  output:  none
  *  return:  none
  * ***************************************************************************/
-void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel)
+void rtl8192_phy_setTxPower(struct r8192_priv *priv, u8 channel)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u8      powerlevel = 0,powerlevelOFDM24G = 0;
        char ant_pwr_diff;
        u32     u4RegValue;
@@ -1465,8 +1451,6 @@ void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel)
                        ant_pwr_diff = priv->TxPowerLevelOFDM24G_C[channel-1]
                                                -priv->TxPowerLevelOFDM24G_A[channel-1];
                        ant_pwr_diff &= 0xf;
-                       //DbgPrint(" ant_pwr_diff = 0x%x", (u8)(ant_pwr_diff));
-                       priv->RF_C_TxPwDiff = ant_pwr_diff;
 
                        priv->AntennaTxPwDiff[2] = 0;// RF-D, don't care
                        priv->AntennaTxPwDiff[1] = (u8)(ant_pwr_diff);// RF-C
@@ -1477,7 +1461,7 @@ void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel)
                                                priv->AntennaTxPwDiff[1]<<4 |
                                                priv->AntennaTxPwDiff[0]);
 
-                       rtl8192_setBBreg(dev, rFPGA0_TxGainStage,
+                       rtl8192_setBBreg(priv, rFPGA0_TxGainStage,
                        (bXBTxAGC|bXCTxAGC|bXDTxAGC), u4RegValue);
                }
        }
@@ -1532,8 +1516,8 @@ void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel)
        pHalData->CurrentCckTxPwrIdx = powerlevel;
        pHalData->CurrentOfdm24GTxPwrIdx = powerlevelOFDM24G;
 #endif
-       PHY_SetRF8256CCKTxPower(dev, powerlevel); //need further implement
-       PHY_SetRF8256OFDMTxPower(dev, powerlevelOFDM24G);
+       PHY_SetRF8256CCKTxPower(priv, powerlevel); //need further implement
+       PHY_SetRF8256OFDMTxPower(priv, powerlevelOFDM24G);
 }
 
 /******************************************************************************
@@ -1542,9 +1526,9 @@ void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel)
  *  output:  none
  *  return:  only 8256 is supported
  * ***************************************************************************/
-RT_STATUS rtl8192_phy_RFConfig(struct net_device* dev)
+RT_STATUS rtl8192_phy_RFConfig(struct r8192_priv *priv)
 {
-       return PHY_RF8256_Config(dev);
+       return PHY_RF8256_Config(priv);
 }
 
 /******************************************************************************
@@ -1553,7 +1537,7 @@ RT_STATUS rtl8192_phy_RFConfig(struct net_device* dev)
  *  output:  none
  *  return:  As Windows has not implemented this, wait for complement
  * ***************************************************************************/
-void rtl8192_phy_updateInitGain(struct net_device* dev)
+void rtl8192_phy_updateInitGain(struct r8192_priv *priv)
 {
 }
 
@@ -1564,7 +1548,8 @@ void rtl8192_phy_updateInitGain(struct net_device* dev)
  *  return:  return code show if RF configuration is successful(0:pass, 1:fail)
  *    Note:  Delay may be required for RF configuration
  * ***************************************************************************/
-u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E        eRFPath)
+u8 rtl8192_phy_ConfigRFWithHeaderFile(struct r8192_priv *priv,
+                                     RF90_RADIO_PATH_E eRFPath)
 {
 
        int i;
@@ -1579,7 +1564,7 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E
                                                msleep(100);
                                                continue;
                                }
-                               rtl8192_phy_SetRFReg(dev, eRFPath, Rtl819XRadioA_Array[i], bMask12Bits, Rtl819XRadioA_Array[i+1]);
+                               rtl8192_phy_SetRFReg(priv, eRFPath, Rtl819XRadioA_Array[i], bMask12Bits, Rtl819XRadioA_Array[i+1]);
                                //msleep(1);
 
                        }
@@ -1591,7 +1576,7 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E
                                                msleep(100);
                                                continue;
                                }
-                               rtl8192_phy_SetRFReg(dev, eRFPath, Rtl819XRadioB_Array[i], bMask12Bits, Rtl819XRadioB_Array[i+1]);
+                               rtl8192_phy_SetRFReg(priv, eRFPath, Rtl819XRadioB_Array[i], bMask12Bits, Rtl819XRadioB_Array[i+1]);
                                //msleep(1);
 
                        }
@@ -1603,7 +1588,7 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E
                                                msleep(100);
                                                continue;
                                }
-                               rtl8192_phy_SetRFReg(dev, eRFPath, Rtl819XRadioC_Array[i], bMask12Bits, Rtl819XRadioC_Array[i+1]);
+                               rtl8192_phy_SetRFReg(priv, eRFPath, Rtl819XRadioC_Array[i], bMask12Bits, Rtl819XRadioC_Array[i+1]);
                                //msleep(1);
 
                        }
@@ -1615,7 +1600,7 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E
                                                msleep(100);
                                                continue;
                                }
-                               rtl8192_phy_SetRFReg(dev, eRFPath, Rtl819XRadioD_Array[i], bMask12Bits, Rtl819XRadioD_Array[i+1]);
+                               rtl8192_phy_SetRFReg(priv, eRFPath, Rtl819XRadioD_Array[i], bMask12Bits, Rtl819XRadioD_Array[i+1]);
                                //msleep(1);
 
                        }
@@ -1635,14 +1620,13 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E
  *  return:  none
  *    Note:
  * ***************************************************************************/
-static void rtl8192_SetTxPowerLevel(struct net_device *dev, u8 channel)
+static void rtl8192_SetTxPowerLevel(struct r8192_priv *priv, u8 channel)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u8      powerlevel = priv->TxPowerLevelCCK[channel-1];
        u8      powerlevelOFDM24G = priv->TxPowerLevelOFDM24G[channel-1];
 
-       PHY_SetRF8256CCKTxPower(dev, powerlevel);
-       PHY_SetRF8256OFDMTxPower(dev, powerlevelOFDM24G);
+       PHY_SetRF8256CCKTxPower(priv, powerlevel);
+       PHY_SetRF8256OFDMTxPower(priv, powerlevelOFDM24G);
 }
 
 /****************************************************************************************
@@ -1701,9 +1685,9 @@ static u8 rtl8192_phy_SetSwChnlCmdArray(
  *  return:  true if finished, false otherwise
  *    Note:  Wait for simpler function to replace it //wb
  * ***************************************************************************/
-static u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8* stage, u8* step, u32* delay)
+static u8 rtl8192_phy_SwChnlStepByStep(struct r8192_priv *priv, u8 channel,
+                                      u8* stage, u8* step, u32* delay)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
 //     PCHANNEL_ACCESS_SETTING pChnlAccessSetting;
        SwChnlCmd                               PreCommonCmd[MAX_PRECMD_CNT];
        u32                                     PreCommonCmdCnt;
@@ -1792,7 +1776,7 @@ static u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8* s
                        {
                        case CmdID_SetTxPowerLevel:
                                if(priv->card_8192_version > (u8)VERSION_8190_BD) //xiong: consider it later!
-                                       rtl8192_SetTxPowerLevel(dev,channel);
+                                       rtl8192_SetTxPowerLevel(priv, channel);
                                break;
                        case CmdID_WritePortUlong:
                                write_nic_dword(priv, CurrentCmd->Para1, CurrentCmd->Para2);
@@ -1805,7 +1789,7 @@ static u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8* s
                                break;
                        case CmdID_RF_WriteReg:
                                for(eRFPath = 0; eRFPath <priv->NumTotalRFPath; eRFPath++)
-                                       rtl8192_phy_SetRFReg(dev, (RF90_RADIO_PATH_E)eRFPath, CurrentCmd->Para1, bMask12Bits, CurrentCmd->Para2<<7);
+                                       rtl8192_phy_SetRFReg(priv, (RF90_RADIO_PATH_E)eRFPath, CurrentCmd->Para1, bMask12Bits, CurrentCmd->Para2<<7);
                                break;
                        default:
                                break;
@@ -1828,12 +1812,11 @@ static u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8* s
  *  return:  noin
  *    Note:  We should not call this function directly
  * ***************************************************************************/
-static void rtl8192_phy_FinishSwChnlNow(struct net_device *dev, u8 channel)
+static void rtl8192_phy_FinishSwChnlNow(struct r8192_priv *priv, u8 channel)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u32     delay = 0;
 
-       while(!rtl8192_phy_SwChnlStepByStep(dev,channel,&priv->SwChnlStage,&priv->SwChnlStep,&delay))
+       while (!rtl8192_phy_SwChnlStepByStep(priv, channel, &priv->SwChnlStage, &priv->SwChnlStep, &delay))
        {
                if(delay>0)
                        msleep(delay);//or mdelay? need further consideration
@@ -1848,16 +1831,13 @@ static void rtl8192_phy_FinishSwChnlNow(struct net_device *dev, u8 channel)
  *  output:  none
  *  return:  noin
  * ***************************************************************************/
-void rtl8192_SwChnl_WorkItem(struct net_device *dev)
+void rtl8192_SwChnl_WorkItem(struct r8192_priv *priv)
 {
-
-       struct r8192_priv *priv = ieee80211_priv(dev);
-
        RT_TRACE(COMP_TRACE, "==> SwChnlCallback819xUsbWorkItem()\n");
 
        RT_TRACE(COMP_TRACE, "=====>--%s(), set chan:%d, priv:%p\n", __FUNCTION__, priv->chan, priv);
 
-       rtl8192_phy_FinishSwChnlNow(dev , priv->chan);
+       rtl8192_phy_FinishSwChnlNow(priv, priv->chan);
 
        RT_TRACE(COMP_TRACE, "<== SwChnlCallback819xUsbWorkItem()\n");
 }
@@ -1870,9 +1850,10 @@ void rtl8192_SwChnl_WorkItem(struct net_device *dev)
  *  return:  return code show if workitem is scheduled(1:pass, 0:fail)
  *    Note:  Delay may be required for RF configuration
  * ***************************************************************************/
-u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel)
+u8 rtl8192_phy_SwChnl(struct ieee80211_device *ieee80211, u8 channel)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
+       struct r8192_priv *priv = ieee80211_priv(ieee80211->dev);
+
        RT_TRACE(COMP_PHY, "=====>%s()\n", __FUNCTION__);
         if(!priv->up)
                return false;
@@ -1888,20 +1869,20 @@ u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel)
        case WIRELESS_MODE_A:
        case WIRELESS_MODE_N_5G:
                if (channel<=14){
-                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_A but channel<=14");
+                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_A but channel<=14\n");
                        return false;
                }
                break;
        case WIRELESS_MODE_B:
                if (channel>14){
-                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_B but channel>14");
+                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_B but channel>14\n");
                        return false;
                }
                break;
        case WIRELESS_MODE_G:
        case WIRELESS_MODE_N_24G:
                if (channel>14){
-                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_G but channel>14");
+                       RT_TRACE(COMP_ERR, "WIRELESS_MODE_G but channel>14\n");
                        return false;
                }
                break;
@@ -1916,20 +1897,15 @@ u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel)
 
        priv->SwChnlStage=0;
        priv->SwChnlStep=0;
-//     schedule_work(&(priv->SwChnlWorkItem));
-//     rtl8192_SwChnl_WorkItem(dev);
-       if(priv->up) {
-//             queue_work(priv->priv_wq,&(priv->SwChnlWorkItem));
-       rtl8192_SwChnl_WorkItem(dev);
-       }
+       if (priv->up)
+               rtl8192_SwChnl_WorkItem(priv);
+
         priv->SwChnlInProgress = false;
        return true;
 }
 
-static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct net_device *dev   )
+static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
-
        switch(priv->CurrentChannelBW)
        {
                /* 20 MHz channel*/
@@ -1948,15 +1924,15 @@ static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct net_device *dev    )
                        if(priv->ieee80211->current_network.channel== 14 && !priv->bcck_in_ch14)
                        {
                                priv->bcck_in_ch14 = TRUE;
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                        }
                        else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
                        {
                                priv->bcck_in_ch14 = FALSE;
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                        }
                        else
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                break;
 
                /* 40 MHz channel*/
@@ -1974,23 +1950,21 @@ static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct net_device *dev    )
                        if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14)
                        {
                                priv->bcck_in_ch14 = TRUE;
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                        }
                        else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
                        {
                                priv->bcck_in_ch14 = FALSE;
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                        }
                        else
-                               dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
+                               dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
                break;
        }
 }
 
-static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct net_device *dev)
+static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
-
        if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14)
                priv->bcck_in_ch14 = TRUE;
        else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
@@ -2013,18 +1987,17 @@ static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct net_device *dev)
                        RT_TRACE(COMP_POWER_TRACKING, "40MHz, CCK_Tx_Power_Track_BW_Switch_ThermalMeter(), CCK_index = %d\n", priv->CCK_index);
                break;
        }
-       dm_cck_txpower_adjust(dev, priv->bcck_in_ch14);
+       dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
 }
 
-static void CCK_Tx_Power_Track_BW_Switch(struct net_device *dev)
+static void CCK_Tx_Power_Track_BW_Switch(struct r8192_priv *priv)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
 
        //if(pHalData->bDcut == TRUE)
        if(priv->IC_Cut >= IC_VersionCut_D)
-               CCK_Tx_Power_Track_BW_Switch_TSSI(dev);
+               CCK_Tx_Power_Track_BW_Switch_TSSI(priv);
        else
-               CCK_Tx_Power_Track_BW_Switch_ThermalMeter(dev);
+               CCK_Tx_Power_Track_BW_Switch_ThermalMeter(priv);
 }
 
 
@@ -2039,10 +2012,8 @@ static void CCK_Tx_Power_Track_BW_Switch(struct net_device *dev)
  *    Note:  I doubt whether SetBWModeInProgress flag is necessary as we can
  *          test whether current work in the queue or not.//do I?
  * ***************************************************************************/
-void rtl8192_SetBWModeWorkItem(struct net_device *dev)
+void rtl8192_SetBWModeWorkItem(struct r8192_priv *priv)
 {
-
-       struct r8192_priv *priv = ieee80211_priv(dev);
        u8 regBwOpMode;
 
        RT_TRACE(COMP_SWBW, "==>rtl8192_SetBWModeWorkItem()  Switch to %s bandwidth\n",
@@ -2081,8 +2052,8 @@ void rtl8192_SetBWModeWorkItem(struct net_device *dev)
        {
                case HT_CHANNEL_WIDTH_20:
                        // Add by Vivi 20071119
-                       rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x0);
-                       rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x0);
+                       rtl8192_setBBreg(priv, rFPGA0_RFMOD, bRFMOD, 0x0);
+                       rtl8192_setBBreg(priv, rFPGA1_RFMOD, bRFMOD, 0x0);
 //                     rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 1);
 
                        // Correct the tx power for CCK rate in 20M. Suggest by YN, 20071207
@@ -2096,14 +2067,14 @@ void rtl8192_SetBWModeWorkItem(struct net_device *dev)
                                write_nic_dword(priv, rCCK0_DebugPort, 0x00000204);
                        }
                        else
-                               CCK_Tx_Power_Track_BW_Switch(dev);
+                               CCK_Tx_Power_Track_BW_Switch(priv);
 
-                       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 1);
+                       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter1, 0x00100000, 1);
                        break;
                case HT_CHANNEL_WIDTH_20_40:
                        // Add by Vivi 20071119
-                       rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x1);
-                       rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x1);
+                       rtl8192_setBBreg(priv, rFPGA0_RFMOD, bRFMOD, 0x1);
+                       rtl8192_setBBreg(priv, rFPGA1_RFMOD, bRFMOD, 0x1);
                        //rtl8192_setBBreg(dev, rCCK0_System, bCCKSideBand, (priv->nCur40MhzPrimeSC>>1));
                     //rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 0);
                        //rtl8192_setBBreg(dev, rOFDM1_LSTF, 0xC00, priv->nCur40MhzPrimeSC);
@@ -2119,14 +2090,14 @@ void rtl8192_SetBWModeWorkItem(struct net_device *dev)
                                write_nic_dword(priv, rCCK0_DebugPort, 0x00000409);
                        }
                        else
-                               CCK_Tx_Power_Track_BW_Switch(dev);
+                               CCK_Tx_Power_Track_BW_Switch(priv);
 
                        // Set Control channel to upper or lower. These settings are required only for 40MHz
-                       rtl8192_setBBreg(dev, rCCK0_System, bCCKSideBand, (priv->nCur40MhzPrimeSC>>1));
-                       rtl8192_setBBreg(dev, rOFDM1_LSTF, 0xC00, priv->nCur40MhzPrimeSC);
+                       rtl8192_setBBreg(priv, rCCK0_System, bCCKSideBand, (priv->nCur40MhzPrimeSC>>1));
+                       rtl8192_setBBreg(priv, rOFDM1_LSTF, 0xC00, priv->nCur40MhzPrimeSC);
 
 
-                       rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 0);
+                       rtl8192_setBBreg(priv, rFPGA0_AnalogParameter1, 0x00100000, 0);
                        break;
                default:
                        RT_TRACE(COMP_ERR, "SetChannelBandwidth819xUsb(): unknown Bandwidth: %#X\n" ,priv->CurrentChannelBW);
@@ -2136,12 +2107,12 @@ void rtl8192_SetBWModeWorkItem(struct net_device *dev)
        //Skip over setting of J-mode in BB register here. Default value is "None J mode". Emily 20070315
 
        //<3>Set RF related register
-       PHY_SetRF8256Bandwidth(dev, priv->CurrentChannelBW);
+       PHY_SetRF8256Bandwidth(priv, priv->CurrentChannelBW);
 
        atomic_dec(&(priv->ieee80211->atm_swbw));
        priv->SetBWModeInProgress= false;
 
-       RT_TRACE(COMP_SWBW, "<==SetBWMode819xUsb()");
+       RT_TRACE(COMP_SWBW, "<==SetBWMode819xUsb()\n");
 }
 
 /******************************************************************************
@@ -2154,9 +2125,9 @@ void rtl8192_SetBWModeWorkItem(struct net_device *dev)
  *    Note:  I doubt whether SetBWModeInProgress flag is necessary as we can
  *          test whether current work in the queue or not.//do I?
  * ***************************************************************************/
-void rtl8192_SetBWMode(struct net_device *dev, HT_CHANNEL_WIDTH        Bandwidth, HT_EXTCHNL_OFFSET Offset)
+void rtl8192_SetBWMode(struct ieee80211_device *ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset)
 {
-       struct r8192_priv *priv = ieee80211_priv(dev);
+       struct r8192_priv *priv = ieee80211_priv(ieee->dev);
 
 
        if(priv->SetBWModeInProgress)
@@ -2176,16 +2147,16 @@ void rtl8192_SetBWMode(struct net_device *dev, HT_CHANNEL_WIDTH Bandwidth, HT_EX
 
        //queue_work(priv->priv_wq, &(priv->SetBWModeWorkItem));
        //      schedule_work(&(priv->SetBWModeWorkItem));
-       rtl8192_SetBWModeWorkItem(dev);
+       rtl8192_SetBWModeWorkItem(priv);
 
 }
 
 
-void InitialGain819xPci(struct net_device *dev, u8 Operation)
+void InitialGain819xPci(struct ieee80211_device *ieee, u8 Operation)
 {
 #define SCAN_RX_INITIAL_GAIN   0x17
 #define POWER_DETECTION_TH     0x08
-       struct r8192_priv *priv = ieee80211_priv(dev);
+       struct r8192_priv *priv = ieee80211_priv(ieee->dev);
        u32                                     BitMask;
        u8                                      initial_gain;
 
@@ -2198,13 +2169,13 @@ void InitialGain819xPci(struct net_device *dev, u8 Operation)
                                initial_gain = SCAN_RX_INITIAL_GAIN;//pHalData->DefaultInitialGain[0];//
                                BitMask = bMaskByte0;
                                if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM)
-                                       rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8);   // FW DIG OFF
-                               priv->initgain_backup.xaagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XAAGCCore1, BitMask);
-                               priv->initgain_backup.xbagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XBAGCCore1, BitMask);
-                               priv->initgain_backup.xcagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XCAGCCore1, BitMask);
-                               priv->initgain_backup.xdagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XDAGCCore1, BitMask);
+                                       rtl8192_setBBreg(priv, UFWP, bMaskByte1, 0x8);  // FW DIG OFF
+                               priv->initgain_backup.xaagccore1 = (u8)rtl8192_QueryBBReg(priv, rOFDM0_XAAGCCore1, BitMask);
+                               priv->initgain_backup.xbagccore1 = (u8)rtl8192_QueryBBReg(priv, rOFDM0_XBAGCCore1, BitMask);
+                               priv->initgain_backup.xcagccore1 = (u8)rtl8192_QueryBBReg(priv, rOFDM0_XCAGCCore1, BitMask);
+                               priv->initgain_backup.xdagccore1 = (u8)rtl8192_QueryBBReg(priv, rOFDM0_XDAGCCore1, BitMask);
                                BitMask  = bMaskByte2;
-                               priv->initgain_backup.cca               = (u8)rtl8192_QueryBBReg(dev, rCCK0_CCA, BitMask);
+                               priv->initgain_backup.cca = (u8)rtl8192_QueryBBReg(priv, rCCK0_CCA, BitMask);
 
                        RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc50 is %x\n",priv->initgain_backup.xaagccore1);
                        RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc58 is %x\n",priv->initgain_backup.xbagccore1);
@@ -2224,14 +2195,14 @@ void InitialGain819xPci(struct net_device *dev, u8 Operation)
                        RT_TRACE(COMP_SCAN, "IG_Restore, restore the initial gain.\n");
                                BitMask = 0x7f; //Bit0~ Bit6
                                if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM)
-                                       rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8);   // FW DIG OFF
+                                       rtl8192_setBBreg(priv, UFWP, bMaskByte1, 0x8);  // FW DIG OFF
 
-                               rtl8192_setBBreg(dev, rOFDM0_XAAGCCore1, BitMask, (u32)priv->initgain_backup.xaagccore1);
-                               rtl8192_setBBreg(dev, rOFDM0_XBAGCCore1, BitMask, (u32)priv->initgain_backup.xbagccore1);
-                               rtl8192_setBBreg(dev, rOFDM0_XCAGCCore1, BitMask, (u32)priv->initgain_backup.xcagccore1);
-                               rtl8192_setBBreg(dev, rOFDM0_XDAGCCore1, BitMask, (u32)priv->initgain_backup.xdagccore1);
+                               rtl8192_setBBreg(priv, rOFDM0_XAAGCCore1, BitMask, (u32)priv->initgain_backup.xaagccore1);
+                               rtl8192_setBBreg(priv, rOFDM0_XBAGCCore1, BitMask, (u32)priv->initgain_backup.xbagccore1);
+                               rtl8192_setBBreg(priv, rOFDM0_XCAGCCore1, BitMask, (u32)priv->initgain_backup.xcagccore1);
+                               rtl8192_setBBreg(priv, rOFDM0_XDAGCCore1, BitMask, (u32)priv->initgain_backup.xdagccore1);
                                BitMask  = bMaskByte2;
-                               rtl8192_setBBreg(dev, rCCK0_CCA, BitMask, (u32)priv->initgain_backup.cca);
+                               rtl8192_setBBreg(priv, rCCK0_CCA, BitMask, (u32)priv->initgain_backup.cca);
 
                        RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc50 is %x\n",priv->initgain_backup.xaagccore1);
                        RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc58 is %x\n",priv->initgain_backup.xbagccore1);
@@ -2239,14 +2210,14 @@ void InitialGain819xPci(struct net_device *dev, u8 Operation)
                        RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc68 is %x\n",priv->initgain_backup.xdagccore1);
                        RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xa0a is %x\n",priv->initgain_backup.cca);
 
-                               rtl8192_phy_setTxPower(dev,priv->ieee80211->current_network.channel);
+                               rtl8192_phy_setTxPower(priv, priv->ieee80211->current_network.channel);
 
 
                                if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM)
-                                       rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x1);   // FW DIG ON
+                                       rtl8192_setBBreg(priv, UFWP, bMaskByte1, 0x1);  // FW DIG ON
                                break;
                        default:
-                       RT_TRACE(COMP_SCAN, "Unknown IG Operation. \n");
+                       RT_TRACE(COMP_SCAN, "Unknown IG Operation.\n");
                                break;
                }
        }