Staging: rt28x0: remove private WEXT handlers
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Wed, 21 Oct 2009 20:44:19 +0000 (22:44 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 11 Dec 2009 20:23:11 +0000 (12:23 -0800)
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rt2860/common/cmm_info.c
drivers/staging/rt2860/rtmp.h
drivers/staging/rt2860/sta_ioctl.c

index 0f4aab9394b80f18c6433416e371a1fb62986b9c..3c47b810355fc2541c1afee7981c3a646e3dc85b 100644 (file)
 #include <linux/sched.h>
 #include "../rt_config.h"
 
-INT    Show_SSID_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_WirelessMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_TxBurst_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_TxPreamble_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_TxPower_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_Channel_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_BGProtection_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_RTSThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_FragThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtBw_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtMcs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtGi_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtOpMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtExtcha_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtMpduDensity_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtBaWinSize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtRdg_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtAmsdu_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_HtAutoBa_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_CountryRegion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_CountryRegionABand_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_CountryCode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-#ifdef AGGREGATION_SUPPORT
-INT    Show_PktAggregate_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-#endif // AGGREGATION_SUPPORT //
-
-#ifdef WMM_SUPPORT
-INT    Show_WmmCapable_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-#endif // WMM_SUPPORT //
-
-INT    Show_IEEE80211H_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_NetworkType_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_AuthMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_EncrypType_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_DefaultKeyID_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_Key1_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_Key2_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_Key3_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_Key4_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-INT    Show_WPAPSK_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf);
-
-static struct {
-       PSTRING name;
-       INT (*show_proc)(PRTMP_ADAPTER pAdapter, PSTRING arg);
-} *PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC, RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC[] = {
-       {"SSID",                                        Show_SSID_Proc},
-       {"WirelessMode",                        Show_WirelessMode_Proc},
-       {"TxBurst",                                     Show_TxBurst_Proc},
-       {"TxPreamble",                          Show_TxPreamble_Proc},
-       {"TxPower",                                     Show_TxPower_Proc},
-       {"Channel",                                     Show_Channel_Proc},
-       {"BGProtection",                        Show_BGProtection_Proc},
-       {"RTSThreshold",                        Show_RTSThreshold_Proc},
-       {"FragThreshold",                       Show_FragThreshold_Proc},
-       {"HtBw",                                        Show_HtBw_Proc},
-       {"HtMcs",                                       Show_HtMcs_Proc},
-       {"HtGi",                                        Show_HtGi_Proc},
-       {"HtOpMode",                            Show_HtOpMode_Proc},
-       {"HtExtcha",                            Show_HtExtcha_Proc},
-       {"HtMpduDensity",                       Show_HtMpduDensity_Proc},
-       {"HtBaWinSize",                 Show_HtBaWinSize_Proc},
-       {"HtRdg",                               Show_HtRdg_Proc},
-       {"HtAmsdu",                             Show_HtAmsdu_Proc},
-       {"HtAutoBa",                    Show_HtAutoBa_Proc},
-       {"CountryRegion",                       Show_CountryRegion_Proc},
-       {"CountryRegionABand",          Show_CountryRegionABand_Proc},
-       {"CountryCode",                         Show_CountryCode_Proc},
-#ifdef AGGREGATION_SUPPORT
-       {"PktAggregate",                        Show_PktAggregate_Proc},
-#endif
-
-#ifdef WMM_SUPPORT
-       {"WmmCapable",                          Show_WmmCapable_Proc},
-#endif
-       {"IEEE80211H",                          Show_IEEE80211H_Proc},
-    {"NetworkType",                            Show_NetworkType_Proc},
-       {"AuthMode",                            Show_AuthMode_Proc},
-       {"EncrypType",                          Show_EncrypType_Proc},
-       {"DefaultKeyID",                        Show_DefaultKeyID_Proc},
-       {"Key1",                                        Show_Key1_Proc},
-       {"Key2",                                        Show_Key2_Proc},
-       {"Key3",                                        Show_Key3_Proc},
-       {"Key4",                                        Show_Key4_Proc},
-       {"WPAPSK",                                      Show_WPAPSK_Proc},
-       {NULL, NULL}
-};
-
-/*
-    ==========================================================================
-    Description:
-        Get Driver version.
-
-    Return:
-    ==========================================================================
-*/
-INT Set_DriverVersion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s\n", STA_DRIVER_VERSION));
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Country Region.
-        This command will not work, if the field of CountryRegion in eeprom is programmed.
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_CountryRegion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       int retval;
-
-
-       retval = RT_CfgSetCountryRegion(pAd, arg, BAND_24G);
-       if (retval == FALSE)
-               return FALSE;
-
-       // if set country region, driver needs to be reset
-       BuildChannelList(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_CountryRegion_Proc::(CountryRegion=%d)\n", pAd->CommonCfg.CountryRegion));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Country Region for A band.
-        This command will not work, if the field of CountryRegion in eeprom is programmed.
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_CountryRegionABand_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       int retval;
-
-
-       retval = RT_CfgSetCountryRegion(pAd, arg, BAND_5G);
-       if (retval == FALSE)
-               return FALSE;
-
-       // if set country region, driver needs to be reset
-       BuildChannelList(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_CountryRegionABand_Proc::(CountryRegion=%d)\n", pAd->CommonCfg.CountryRegionForABand));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Wireless Mode
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_WirelessMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       INT             success = TRUE;
-
-       success = RT_CfgSetWirelessMode(pAd, arg);
-       if (success)
-       {
-               {
-                       LONG    WirelessMode = pAd->CommonCfg.PhyMode;
-
-                       RTMPSetPhyMode(pAd, WirelessMode);
-                       if (WirelessMode >= PHY_11ABGN_MIXED)
-                       {
-                               pAd->CommonCfg.BACapability.field.AutoBA = TRUE;
-                               pAd->CommonCfg.REGBACapability.field.AutoBA = TRUE;
-                       }
-                       else
-                       {
-                               pAd->CommonCfg.BACapability.field.AutoBA = FALSE;
-                               pAd->CommonCfg.REGBACapability.field.AutoBA = FALSE;
-                       }
-
-                       // Set AdhocMode rates
-                       if (pAd->StaCfg.BssType == BSS_ADHOC)
-                       {
-                               MlmeUpdateTxRates(pAd, FALSE, 0);
-                               MakeIbssBeacon(pAd);           // re-build BEACON frame
-                               AsicEnableIbssSync(pAd);       // copy to on-chip memory
-                       }
-               }
-
-       // it is needed to set SSID to take effect
-               SetCommonHT(pAd);
-               DBGPRINT(RT_DEBUG_TRACE, ("Set_WirelessMode_Proc::(=%d)\n", pAd->CommonCfg.PhyMode));
-       }
-       else
-       {
-               DBGPRINT(RT_DEBUG_ERROR, ("Set_WirelessMode_Proc::parameters out of range\n"));
-       }
-
-       return success;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Channel
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_Channel_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       INT             success = TRUE;
-       UCHAR   Channel;
-
-       Channel = (UCHAR) simple_strtol(arg, 0, 10);
-
-       // check if this channel is valid
-       if (ChannelSanity(pAd, Channel) == TRUE)
-       {
-               {
-                       pAd->CommonCfg.Channel = Channel;
-
-                       if (MONITOR_ON(pAd))
-                       {
-                               N_ChannelCheck(pAd);
-                               if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
-                                       pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
-                               {
-                                       N_SetCenCh(pAd);
-                                       AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
-                                       AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
-                                       DBGPRINT(RT_DEBUG_TRACE, ("BW_40, control_channel(%d), CentralChannel(%d) \n",
-                                                               pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
-                               }
-                               else
-                               {
-                                       AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
-                                       AsicLockChannel(pAd, pAd->CommonCfg.Channel);
-                                       DBGPRINT(RT_DEBUG_TRACE, ("BW_20, Channel(%d)\n", pAd->CommonCfg.Channel));
-                               }
-                       }
-               }
-               success = TRUE;
-       }
-       else
-       {
-               success = FALSE;
-       }
-
-
-       if (success == TRUE)
-               DBGPRINT(RT_DEBUG_TRACE, ("Set_Channel_Proc::(Channel=%d)\n", pAd->CommonCfg.Channel));
-
-       return success;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Short Slot Time Enable or Disable
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_ShortSlot_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       int retval;
-
-       retval = RT_CfgSetShortSlot(pAd, arg);
-       if (retval == TRUE)
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_ShortSlot_Proc::(ShortSlot=%d)\n", pAd->CommonCfg.bUseShortSlotTime));
-
-       return retval;
-}
-
-
-/*
-    ==========================================================================
-    Description:
-        Set Tx power
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_TxPower_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       LONG TxPower;
-       INT   success = FALSE;
-
-       TxPower = simple_strtol(arg, 0, 10);
-       if (TxPower <= 100)
-       {
-               {
-                       pAd->CommonCfg.TxPowerDefault = TxPower;
-                       pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;
-               }
-               success = TRUE;
-       }
-       else
-               success = FALSE;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_TxPower_Proc::(TxPowerPercentage=%ld)\n", pAd->CommonCfg.TxPowerPercentage));
-
-       return success;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set 11B/11G Protection
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_BGProtection_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       switch (simple_strtol(arg, 0, 10))
-       {
-               case 0: //AUTO
-                       pAd->CommonCfg.UseBGProtection = 0;
-                       break;
-               case 1: //Always On
-                       pAd->CommonCfg.UseBGProtection = 1;
-                       break;
-               case 2: //Always OFF
-                       pAd->CommonCfg.UseBGProtection = 2;
-                       break;
-               default:  //Invalid argument
-                       return FALSE;
-       }
-
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_BGProtection_Proc::(BGProtection=%ld)\n", pAd->CommonCfg.UseBGProtection));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set TxPreamble
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_TxPreamble_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       RT_802_11_PREAMBLE      Preamble;
-
-       Preamble = simple_strtol(arg, 0, 10);
-
-
-       switch (Preamble)
-       {
-               case Rt802_11PreambleShort:
-                       pAd->CommonCfg.TxPreamble = Preamble;
-
-                       MlmeSetTxPreamble(pAd, Rt802_11PreambleShort);
-                       break;
-               case Rt802_11PreambleLong:
-               case Rt802_11PreambleAuto:
-                       // if user wants AUTO, initialize to LONG here, then change according to AP's
-                       // capability upon association.
-                       pAd->CommonCfg.TxPreamble = Preamble;
-
-                       MlmeSetTxPreamble(pAd, Rt802_11PreambleLong);
-                       break;
-               default: //Invalid argument
-                       return FALSE;
-       }
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_TxPreamble_Proc::(TxPreamble=%ld)\n", pAd->CommonCfg.TxPreamble));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set RTS Threshold
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_RTSThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-        NDIS_802_11_RTS_THRESHOLD           RtsThresh;
-
-       RtsThresh = simple_strtol(arg, 0, 10);
-
-       if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD))
-               pAd->CommonCfg.RtsThreshold  = (USHORT)RtsThresh;
-       else if (RtsThresh == 0)
-               pAd->CommonCfg.RtsThreshold = MAX_RTS_THRESHOLD;
-       else
-               return FALSE; //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_RTSThreshold_Proc::(RTSThreshold=%d)\n", pAd->CommonCfg.RtsThreshold));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Fragment Threshold
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_FragThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-        NDIS_802_11_FRAGMENTATION_THRESHOLD     FragThresh;
-
-       FragThresh = simple_strtol(arg, 0, 10);
-
-       if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD)
-       {
-               //Illegal FragThresh so we set it to default
-               pAd->CommonCfg.FragmentThreshold = MAX_FRAG_THRESHOLD;
-       }
-       else if (FragThresh % 2 == 1)
-       {
-               // The length of each fragment shall always be an even number of octets, except for the last fragment
-               // of an MSDU or MMPDU, which may be either an even or an odd number of octets.
-               pAd->CommonCfg.FragmentThreshold = (USHORT)(FragThresh - 1);
-       }
-       else
-       {
-               pAd->CommonCfg.FragmentThreshold = (USHORT)FragThresh;
-       }
-
-       {
-               if (pAd->CommonCfg.FragmentThreshold == MAX_FRAG_THRESHOLD)
-                       pAd->CommonCfg.bUseZeroToDisableFragment = TRUE;
-               else
-                       pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;
-       }
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_FragThreshold_Proc::(FragThreshold=%d)\n", pAd->CommonCfg.FragmentThreshold));
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set TxBurst
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_TxBurst_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       LONG TxBurst;
-
-       TxBurst = simple_strtol(arg, 0, 10);
-       if (TxBurst == 1)
-               pAd->CommonCfg.bEnableTxBurst = TRUE;
-       else if (TxBurst == 0)
-               pAd->CommonCfg.bEnableTxBurst = FALSE;
-       else
-               return FALSE;  //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_TxBurst_Proc::(TxBurst=%d)\n", pAd->CommonCfg.bEnableTxBurst));
-
-       return TRUE;
-}
-
-#ifdef AGGREGATION_SUPPORT
-/*
-    ==========================================================================
-    Description:
-        Set TxBurst
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_PktAggregate_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       LONG aggre;
-
-       aggre = simple_strtol(arg, 0, 10);
-
-       if (aggre == 1)
-               pAd->CommonCfg.bAggregationCapable = TRUE;
-       else if (aggre == 0)
-               pAd->CommonCfg.bAggregationCapable = FALSE;
-       else
-               return FALSE;  //Invalid argument
-
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_PktAggregate_Proc::(AGGRE=%d)\n", pAd->CommonCfg.bAggregationCapable));
-
-       return TRUE;
-}
-#endif
-
-/*
-    ==========================================================================
-    Description:
-        Set IEEE80211H.
-        This parameter is 1 when needs radar detection, otherwise 0
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_IEEE80211H_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-    LONG ieee80211h;
-
-       ieee80211h = simple_strtol(arg, 0, 10);
-
-       if (ieee80211h == 1)
-               pAd->CommonCfg.bIEEE80211H = TRUE;
-       else if (ieee80211h == 0)
-               pAd->CommonCfg.bIEEE80211H = FALSE;
-       else
-               return FALSE;  //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_IEEE80211H_Proc::(IEEE80211H=%d)\n", pAd->CommonCfg.bIEEE80211H));
-
-       return TRUE;
-}
-
-
-#ifdef DBG
-/*
-    ==========================================================================
-    Description:
-        For Debug information
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_Debug_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       DBGPRINT(RT_DEBUG_TRACE, ("==> Set_Debug_Proc *******************\n"));
-
-    if(simple_strtol(arg, 0, 10) <= RT_DEBUG_LOUD)
-        RTDebugLevel = simple_strtol(arg, 0, 10);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("<== Set_Debug_Proc(RTDebugLevel = %ld)\n", RTDebugLevel));
-
-       return TRUE;
-}
-#endif
-
-INT    Show_DescInfo_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-#ifdef RTMP_MAC_PCI
-       INT i, QueIdx=0;
-//  ULONG      RegValue;
-       PRT28XX_RXD_STRUC pRxD;
-    PTXD_STRUC pTxD;
-       PRTMP_TX_RING   pTxRing = &pAd->TxRing[QueIdx];
-       PRTMP_MGMT_RING pMgmtRing = &pAd->MgmtRing;
-       PRTMP_RX_RING   pRxRing = &pAd->RxRing;
-
-       for(i=0;i<TX_RING_SIZE;i++)
-       {
-           pTxD = (PTXD_STRUC) pTxRing->Cell[i].AllocVa;
-           DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
-           hex_dump("Tx Descriptor", (PUCHAR)pTxD, 16);
-           DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE));
-       }
-       DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n"));
-       for(i=0;i<MGMT_RING_SIZE;i++)
-       {
-           pTxD = (PTXD_STRUC) pMgmtRing->Cell[i].AllocVa;
-           DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
-           hex_dump("Mgmt Descriptor", (PUCHAR)pTxD, 16);
-           DBGPRINT(RT_DEBUG_OFF, ("pMgmt->DMADONE = %x\n", pTxD->DMADONE));
-       }
-       DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n"));
-       for(i=0;i<RX_RING_SIZE;i++)
-       {
-           pRxD = (PRT28XX_RXD_STRUC) pRxRing->Cell[i].AllocVa;
-           DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
-           hex_dump("Rx Descriptor", (PUCHAR)pRxD, 16);
-           DBGPRINT(RT_DEBUG_OFF, ("pRxD->DDONE = %x\n", pRxD->DDONE));
-       }
-#endif // RTMP_MAC_PCI //
-
-       return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Reset statistics counter
-
-    Arguments:
-        pAdapter            Pointer to our adapter
-        arg
-
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_ResetStatCounter_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       //UCHAR           i;
-       //MAC_TABLE_ENTRY *pEntry;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("==>Set_ResetStatCounter_Proc\n"));
-
-       // add the most up-to-date h/w raw counters into software counters
-       NICUpdateRawCounters(pAd);
-
-       NdisZeroMemory(&pAd->WlanCounters, sizeof(COUNTER_802_11));
-       NdisZeroMemory(&pAd->Counters8023, sizeof(COUNTER_802_3));
-       NdisZeroMemory(&pAd->RalinkCounters, sizeof(COUNTER_RALINK));
-
-       // Reset HotSpot counter
-
-
-       return TRUE;
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Add WPA key process.
-               In Adhoc WPANONE, bPairwise = 0;  KeyIdx = 0;
-
-       Arguments:
-               pAd                                     Pointer to our adapter
-               pBuf                                                    Pointer to the where the key stored
-
-       Return Value:
-               NDIS_SUCCESS                                    Add key successfully
-
-       IRQL = DISPATCH_LEVEL
-
-       Note:
-
-       ========================================================================
-*/
-
-BOOLEAN RTMPCheckStrPrintAble(
-    IN  CHAR *pInPutStr,
-    IN  UCHAR strLen)
-{
-    UCHAR i=0;
-
-    for (i=0; i<strLen; i++)
-    {
-        if ((pInPutStr[i] < 0x21) ||
-            (pInPutStr[i] > 0x7E))
-            return FALSE;
-    }
-
-    return TRUE;
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Remove WPA Key process
-
-       Arguments:
-               pAd                                     Pointer to our adapter
-               pBuf                                                    Pointer to the where the key stored
-
-       Return Value:
-               NDIS_SUCCESS                                    Add key successfully
-
-       IRQL = DISPATCH_LEVEL
-
-       Note:
-
-       ========================================================================
-*/
-VOID    RTMPSetDesiredRates(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  LONG            Rates)
-{
-    NDIS_802_11_RATES aryRates;
-
-    memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES));
-    switch (pAdapter->CommonCfg.PhyMode)
-    {
-        case PHY_11A: // A only
-            switch (Rates)
-            {
-                case 6000000: //6M
-                    aryRates[0] = 0x0c; // 6M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
-                    break;
-                case 9000000: //9M
-                    aryRates[0] = 0x12; // 9M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
-                    break;
-                case 12000000: //12M
-                    aryRates[0] = 0x18; // 12M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
-                    break;
-                case 18000000: //18M
-                    aryRates[0] = 0x24; // 18M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
-                    break;
-                case 24000000: //24M
-                    aryRates[0] = 0x30; // 24M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
-                    break;
-                case 36000000: //36M
-                    aryRates[0] = 0x48; // 36M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
-                    break;
-                case 48000000: //48M
-                    aryRates[0] = 0x60; // 48M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
-                    break;
-                case 54000000: //54M
-                    aryRates[0] = 0x6c; // 54M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
-                    break;
-                case -1: //Auto
-                default:
-                    aryRates[0] = 0x6c; // 54Mbps
-                    aryRates[1] = 0x60; // 48Mbps
-                    aryRates[2] = 0x48; // 36Mbps
-                    aryRates[3] = 0x30; // 24Mbps
-                    aryRates[4] = 0x24; // 18M
-                    aryRates[5] = 0x18; // 12M
-                    aryRates[6] = 0x12; // 9M
-                    aryRates[7] = 0x0c; // 6M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
-                    break;
-            }
-            break;
-        case PHY_11BG_MIXED: // B/G Mixed
-        case PHY_11B: // B only
-        case PHY_11ABG_MIXED: // A/B/G Mixed
-        default:
-            switch (Rates)
-            {
-                case 1000000: //1M
-                    aryRates[0] = 0x02;
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
-                    break;
-                case 2000000: //2M
-                    aryRates[0] = 0x04;
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
-                    break;
-                case 5000000: //5.5M
-                    aryRates[0] = 0x0b; // 5.5M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
-                    break;
-                case 11000000: //11M
-                    aryRates[0] = 0x16; // 11M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
-                    break;
-                case 6000000: //6M
-                    aryRates[0] = 0x0c; // 6M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
-                    break;
-                case 9000000: //9M
-                    aryRates[0] = 0x12; // 9M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
-                    break;
-                case 12000000: //12M
-                    aryRates[0] = 0x18; // 12M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
-                    break;
-                case 18000000: //18M
-                    aryRates[0] = 0x24; // 18M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
-                    break;
-                case 24000000: //24M
-                    aryRates[0] = 0x30; // 24M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
-                    break;
-                case 36000000: //36M
-                    aryRates[0] = 0x48; // 36M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
-                    break;
-                case 48000000: //48M
-                    aryRates[0] = 0x60; // 48M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
-                    break;
-                case 54000000: //54M
-                    aryRates[0] = 0x6c; // 54M
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
-                    break;
-                case -1: //Auto
-                default:
-                    if (pAdapter->CommonCfg.PhyMode == PHY_11B)
-                    { //B Only
-                        aryRates[0] = 0x16; // 11Mbps
-                        aryRates[1] = 0x0b; // 5.5Mbps
-                        aryRates[2] = 0x04; // 2Mbps
-                        aryRates[3] = 0x02; // 1Mbps
-                    }
-                    else
-                    { //(B/G) Mixed or (A/B/G) Mixed
-                        aryRates[0] = 0x6c; // 54Mbps
-                        aryRates[1] = 0x60; // 48Mbps
-                        aryRates[2] = 0x48; // 36Mbps
-                        aryRates[3] = 0x30; // 24Mbps
-                        aryRates[4] = 0x16; // 11Mbps
-                        aryRates[5] = 0x0b; // 5.5Mbps
-                        aryRates[6] = 0x04; // 2Mbps
-                        aryRates[7] = 0x02; // 1Mbps
-                    }
-                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
-                    break;
-            }
-            break;
-    }
-
-    NdisZeroMemory(pAdapter->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
-    NdisMoveMemory(pAdapter->CommonCfg.DesireRate, &aryRates, sizeof(NDIS_802_11_RATES));
-    DBGPRINT(RT_DEBUG_TRACE, (" RTMPSetDesiredRates (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n",
-        pAdapter->CommonCfg.DesireRate[0],pAdapter->CommonCfg.DesireRate[1],
-        pAdapter->CommonCfg.DesireRate[2],pAdapter->CommonCfg.DesireRate[3],
-        pAdapter->CommonCfg.DesireRate[4],pAdapter->CommonCfg.DesireRate[5],
-        pAdapter->CommonCfg.DesireRate[6],pAdapter->CommonCfg.DesireRate[7] ));
-    // Changing DesiredRate may affect the MAX TX rate we used to TX frames out
-    MlmeUpdateTxRates(pAdapter, FALSE, 0);
-}
-
-NDIS_STATUS RTMPWPARemoveKeyProc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PVOID                   pBuf)
-{
-       PNDIS_802_11_REMOVE_KEY pKey;
-       ULONG                                   KeyIdx;
-       NDIS_STATUS                     Status = NDIS_STATUS_FAILURE;
-       BOOLEAN         bTxKey;                 // Set the key as transmit key
-       BOOLEAN         bPairwise;              // Indicate the key is pairwise key
-       BOOLEAN         bKeyRSC;                // indicate the receive  SC set by KeyRSC value.
-                                                               // Otherwise, it will set by the NIC.
-       BOOLEAN         bAuthenticator; // indicate key is set by authenticator.
-       INT             i;
-
-       DBGPRINT(RT_DEBUG_TRACE,("---> RTMPWPARemoveKeyProc\n"));
-
-       pKey = (PNDIS_802_11_REMOVE_KEY) pBuf;
-       KeyIdx = pKey->KeyIndex & 0xff;
-       // Bit 31 of Add-key, Tx Key
-       bTxKey             = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE;
-       // Bit 30 of Add-key PairwiseKey
-       bPairwise          = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE;
-       // Bit 29 of Add-key KeyRSC
-       bKeyRSC            = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE;
-       // Bit 28 of Add-key Authenticator
-       bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE;
-
-       // 1. If bTx is TRUE, return failure information
-       if (bTxKey == TRUE)
-               return(NDIS_STATUS_INVALID_DATA);
-
-       // 2. Check Pairwise Key
-       if (bPairwise)
-       {
-               // a. If BSSID is broadcast, remove all pairwise keys.
-               // b. If not broadcast, remove the pairwise specified by BSSID
-               for (i = 0; i < SHARE_KEY_NUM; i++)
-               {
-                       if (MAC_ADDR_EQUAL(pAd->SharedKey[BSS0][i].BssId, pKey->BSSID))
-                       {
-                               DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%d)\n", i));
-                               pAd->SharedKey[BSS0][i].KeyLen = 0;
-                               pAd->SharedKey[BSS0][i].CipherAlg = CIPHER_NONE;
-                               AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)i);
-                               Status = NDIS_STATUS_SUCCESS;
-                               break;
-                       }
-               }
-       }
-       // 3. Group Key
-       else
-       {
-               // a. If BSSID is broadcast, remove all group keys indexed
-               // b. If BSSID matched, delete the group key indexed.
-               DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%ld)\n", KeyIdx));
-               pAd->SharedKey[BSS0][KeyIdx].KeyLen = 0;
-               pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_NONE;
-               AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)KeyIdx);
-               Status = NDIS_STATUS_SUCCESS;
-       }
-
-       return (Status);
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Remove All WPA Keys
-
-       Arguments:
-               pAd                                     Pointer to our adapter
-
-       Return Value:
-               None
-
-       IRQL = DISPATCH_LEVEL
-
-       Note:
-
-       ========================================================================
-*/
-VOID   RTMPWPARemoveAllKeys(
-       IN      PRTMP_ADAPTER   pAd)
-{
-
-       UCHAR   i;
-
-       DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveAllKeys(AuthMode=%d, WepStatus=%d)\n", pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus));
-       RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
-       // For WEP/CKIP, there is no need to remove it, since WinXP won't set it again after
-       // Link up. And it will be replaced if user changed it.
-       if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
-               return;
-
-       // For WPA-None, there is no need to remove it, since WinXP won't set it again after
-       // Link up. And it will be replaced if user changed it.
-       if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
-               return;
-
-       // set BSSID wcid entry of the Pair-wise Key table as no-security mode
-       AsicRemovePairwiseKeyEntry(pAd, BSS0, BSSID_WCID);
-
-       // set all shared key mode as no-security.
-       for (i = 0; i < SHARE_KEY_NUM; i++)
-    {
-               DBGPRINT(RT_DEBUG_TRACE,("remove %s key #%d\n", CipherName[pAd->SharedKey[BSS0][i].CipherAlg], i));
-               NdisZeroMemory(&pAd->SharedKey[BSS0][i], sizeof(CIPHER_KEY));
-
-               AsicRemoveSharedKeyEntry(pAd, BSS0, i);
-       }
-       RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
-}
-
-
-/*
-       ========================================================================
-
-       Routine Description:
-               As STA's BSSID is a WC too, it uses shared key table.
-               This function write correct unicast TX key to ASIC WCID.
-               And we still make a copy in our MacTab.Content[BSSID_WCID].PairwiseKey.
-               Caller guarantee TKIP/AES always has keyidx = 0. (pairwise key)
-               Caller guarantee WEP calls this function when set Txkey,  default key index=0~3.
-
-       Arguments:
-               pAd                                     Pointer to our adapter
-               pKey                                                    Pointer to the where the key stored
-
-       Return Value:
-               NDIS_SUCCESS                                    Add key successfully
-
-       IRQL = DISPATCH_LEVEL
-
-       Note:
-
-       ========================================================================
-*/
-/*
-       ========================================================================
-       Routine Description:
-               Change NIC PHY mode. Re-association may be necessary. possible settings
-               include - PHY_11B, PHY_11BG_MIXED, PHY_11A, and PHY_11ABG_MIXED
-
-       Arguments:
-               pAd - Pointer to our adapter
-               phymode  -
-
-       IRQL = PASSIVE_LEVEL
-       IRQL = DISPATCH_LEVEL
-
-       ========================================================================
-*/
-VOID   RTMPSetPhyMode(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      ULONG phymode)
-{
-       INT i;
-       // the selected phymode must be supported by the RF IC encoded in E2PROM
-
-       // if no change, do nothing
-       /* bug fix
-       if (pAd->CommonCfg.PhyMode == phymode)
-               return;
-    */
-       pAd->CommonCfg.PhyMode = (UCHAR)phymode;
-
-       DBGPRINT(RT_DEBUG_TRACE,("RTMPSetPhyMode : PhyMode=%d, channel=%d \n", pAd->CommonCfg.PhyMode, pAd->CommonCfg.Channel));
-
-       BuildChannelList(pAd);
-
-       // sanity check user setting
-       for (i = 0; i < pAd->ChannelListNum; i++)
-       {
-               if (pAd->CommonCfg.Channel == pAd->ChannelList[i].Channel)
-                       break;
-       }
-
-       if (i == pAd->ChannelListNum)
-       {
-               pAd->CommonCfg.Channel = FirstChannel(pAd);
-               DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetPhyMode: channel is out of range, use first channel=%d \n", pAd->CommonCfg.Channel));
-       }
-
-       NdisZeroMemory(pAd->CommonCfg.SupRate, MAX_LEN_OF_SUPPORTED_RATES);
-       NdisZeroMemory(pAd->CommonCfg.ExtRate, MAX_LEN_OF_SUPPORTED_RATES);
-       NdisZeroMemory(pAd->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
-       switch (phymode) {
-               case PHY_11B:
-                       pAd->CommonCfg.SupRate[0]  = 0x82;        // 1 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[1]  = 0x84;        // 2 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[2]  = 0x8B;        // 5.5 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[3]  = 0x96;        // 11 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRateLen  = 4;
-                       pAd->CommonCfg.ExtRateLen  = 0;
-                       pAd->CommonCfg.DesireRate[0]  = 2;         // 1 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[1]  = 4;         // 2 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
-                       //pAd->CommonCfg.HTPhyMode.field.MODE = MODE_CCK; // This MODE is only FYI. not use
-                       break;
-
-               case PHY_11G:
-               case PHY_11BG_MIXED:
-               case PHY_11ABG_MIXED:
-               case PHY_11N_2_4G:
-               case PHY_11ABGN_MIXED:
-               case PHY_11BGN_MIXED:
-               case PHY_11GN_MIXED:
-                       pAd->CommonCfg.SupRate[0]  = 0x82;        // 1 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[1]  = 0x84;        // 2 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[2]  = 0x8B;        // 5.5 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[3]  = 0x96;        // 11 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[4]  = 0x12;        // 9 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[5]  = 0x24;        // 18 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[6]  = 0x48;        // 36 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[7]  = 0x6c;        // 54 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRateLen  = 8;
-                       pAd->CommonCfg.ExtRate[0]  = 0x0C;        // 6 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.ExtRate[1]  = 0x18;        // 12 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.ExtRate[2]  = 0x30;        // 24 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.ExtRate[3]  = 0x60;        // 48 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.ExtRateLen  = 4;
-                       pAd->CommonCfg.DesireRate[0]  = 2;         // 1 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[1]  = 4;         // 2 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[4]  = 12;    // 6 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[5]  = 18;    // 9 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[6]  = 24;    // 12 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[7]  = 36;    // 18 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[8]  = 48;    // 24 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[9]  = 72;    // 36 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[10] = 96;    // 48 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[11] = 108;   // 54 mbps, in units of 0.5 Mbps
-                       break;
-
-               case PHY_11A:
-               case PHY_11AN_MIXED:
-               case PHY_11AGN_MIXED:
-               case PHY_11N_5G:
-                       pAd->CommonCfg.SupRate[0]  = 0x8C;        // 6 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[1]  = 0x12;        // 9 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[2]  = 0x98;        // 12 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[3]  = 0x24;        // 18 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[4]  = 0xb0;        // 24 mbps, in units of 0.5 Mbps, basic rate
-                       pAd->CommonCfg.SupRate[5]  = 0x48;        // 36 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[6]  = 0x60;        // 48 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRate[7]  = 0x6c;        // 54 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.SupRateLen  = 8;
-                       pAd->CommonCfg.ExtRateLen  = 0;
-                       pAd->CommonCfg.DesireRate[0]  = 12;    // 6 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[1]  = 18;    // 9 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[2]  = 24;    // 12 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[3]  = 36;    // 18 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[4]  = 48;    // 24 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[5]  = 72;    // 36 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[6]  = 96;    // 48 mbps, in units of 0.5 Mbps
-                       pAd->CommonCfg.DesireRate[7]  = 108;   // 54 mbps, in units of 0.5 Mbps
-                       //pAd->CommonCfg.HTPhyMode.field.MODE = MODE_OFDM; // This MODE is only FYI. not use
-                       break;
-
-               default:
-                       break;
-       }
-
-
-       pAd->CommonCfg.BandState = UNKNOWN_BAND;
-}
-
-/*
-       ========================================================================
-       Routine Description:
-               Caller ensures we has 802.11n support.
-               Calls at setting HT from AP/STASetinformation
-
-       Arguments:
-               pAd - Pointer to our adapter
-               phymode  -
-
-       ========================================================================
-*/
-VOID   RTMPSetHT(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      OID_SET_HT_PHYMODE *pHTPhyMode)
-{
-       //ULONG *pmcs;
-       UINT32  Value = 0;
-       UCHAR   BBPValue = 0;
-       UCHAR   BBP3Value = 0;
-       UCHAR   RxStream = pAd->CommonCfg.RxStream;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : HT_mode(%d), ExtOffset(%d), MCS(%d), BW(%d), STBC(%d), SHORTGI(%d)\n",
-                                                                               pHTPhyMode->HtMode, pHTPhyMode->ExtOffset,
-                                                                               pHTPhyMode->MCS, pHTPhyMode->BW,
-                                                                               pHTPhyMode->STBC, pHTPhyMode->SHORTGI));
-
-       // Don't zero supportedHyPhy structure.
-       RTMPZeroMemory(&pAd->CommonCfg.HtCapability, sizeof(pAd->CommonCfg.HtCapability));
-       RTMPZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
-       RTMPZeroMemory(&pAd->CommonCfg.NewExtChanOffset, sizeof(pAd->CommonCfg.NewExtChanOffset));
-       RTMPZeroMemory(&pAd->CommonCfg.DesiredHtPhy, sizeof(pAd->CommonCfg.DesiredHtPhy));
-
-       if (pAd->CommonCfg.bRdg)
-       {
-               pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 1;
-               pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 1;
-       }
-       else
-       {
-               pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 0;
-               pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 0;
-       }
-
-       pAd->CommonCfg.HtCapability.HtCapParm.MaxRAmpduFactor = 3;
-       pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor = 3;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : RxBAWinLimit = %d\n", pAd->CommonCfg.BACapability.field.RxBAWinLimit));
-
-       // Mimo power save, A-MSDU size,
-       pAd->CommonCfg.DesiredHtPhy.AmsduEnable = (USHORT)pAd->CommonCfg.BACapability.field.AmsduEnable;
-       pAd->CommonCfg.DesiredHtPhy.AmsduSize = (UCHAR)pAd->CommonCfg.BACapability.field.AmsduSize;
-       pAd->CommonCfg.DesiredHtPhy.MimoPs = (UCHAR)pAd->CommonCfg.BACapability.field.MMPSmode;
-       pAd->CommonCfg.DesiredHtPhy.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
-
-       pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = (USHORT)pAd->CommonCfg.BACapability.field.AmsduSize;
-       pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = (USHORT)pAd->CommonCfg.BACapability.field.MMPSmode;
-       pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : AMsduSize = %d, MimoPs = %d, MpduDensity = %d, MaxRAmpduFactor = %d\n",
-                                                                                                       pAd->CommonCfg.DesiredHtPhy.AmsduSize,
-                                                                                                       pAd->CommonCfg.DesiredHtPhy.MimoPs,
-                                                                                                       pAd->CommonCfg.DesiredHtPhy.MpduDensity,
-                                                                                                       pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor));
-
-       if(pHTPhyMode->HtMode == HTMODE_GF)
-       {
-               pAd->CommonCfg.HtCapability.HtCapInfo.GF = 1;
-               pAd->CommonCfg.DesiredHtPhy.GF = 1;
-       }
-       else
-               pAd->CommonCfg.DesiredHtPhy.GF = 0;
-
-       // Decide Rx MCSSet
-       switch (RxStream)
-       {
-               case 1:
-                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
-                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0x00;
-                       break;
-
-               case 2:
-                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
-                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
-                       break;
-
-               case 3: // 3*3
-                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
-                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
-                       pAd->CommonCfg.HtCapability.MCSSet[2] =  0xff;
-                       break;
-       }
-
-       if (pAd->CommonCfg.bForty_Mhz_Intolerant && (pAd->CommonCfg.Channel <= 14) && (pHTPhyMode->BW == BW_40) )
-       {
-               pHTPhyMode->BW = BW_20;
-               pAd->CommonCfg.HtCapability.HtCapInfo.Forty_Mhz_Intolerant = 1;
-       }
-
-       if(pHTPhyMode->BW == BW_40)
-       {
-               pAd->CommonCfg.HtCapability.MCSSet[4] = 0x1; // MCS 32
-               pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 1;
-               if (pAd->CommonCfg.Channel <= 14)
-                       pAd->CommonCfg.HtCapability.HtCapInfo.CCKmodein40 = 1;
-
-               pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 1;
-               pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 1;
-               pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = (pHTPhyMode->ExtOffset == EXTCHA_BELOW)? (EXTCHA_BELOW): EXTCHA_ABOVE;
-               // Set Regsiter for extension channel position.
-               RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
-               RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBP3Value);
-               if ((pHTPhyMode->ExtOffset == EXTCHA_BELOW))
-               {
-                       Value |= 0x1;
-                       BBP3Value |= (0x20);
-                       RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
-               }
-               else if ((pHTPhyMode->ExtOffset == EXTCHA_ABOVE))
-               {
-                       Value &= 0xfe;
-                       BBP3Value &= (~0x20);
-                       RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
-               }
-
-               // Turn on BBP 40MHz mode now only as AP .
-               // Sta can turn on BBP 40MHz after connection with 40MHz AP. Sta only broadcast 40MHz capability before connection.
-               if ((pAd->OpMode == OPMODE_AP) || INFRA_ON(pAd) || ADHOC_ON(pAd)
-                       )
-               {
-                       RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
-                       BBPValue &= (~0x18);
-                       BBPValue |= 0x10;
-                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
-
-                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBP3Value);
-                       pAd->CommonCfg.BBPCurrentBW = BW_40;
-               }
-       }
-       else
-       {
-               pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 0;
-               pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 0;
-               pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 0;
-               pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = EXTCHA_NONE;
-               pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
-               // Turn on BBP 20MHz mode by request here.
-               {
-                       RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
-                       BBPValue &= (~0x18);
-                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
-                       pAd->CommonCfg.BBPCurrentBW = BW_20;
-               }
-       }
-
-       if(pHTPhyMode->STBC == STBC_USE)
-       {
-               pAd->CommonCfg.HtCapability.HtCapInfo.TxSTBC = 1;
-               pAd->CommonCfg.DesiredHtPhy.TxSTBC = 1;
-               pAd->CommonCfg.HtCapability.HtCapInfo.RxSTBC = 1;
-               pAd->CommonCfg.DesiredHtPhy.RxSTBC = 1;
-       }
-       else
-       {
-               pAd->CommonCfg.DesiredHtPhy.TxSTBC = 0;
-               pAd->CommonCfg.DesiredHtPhy.RxSTBC = 0;
-       }
-
-       if(pHTPhyMode->SHORTGI == GI_400)
-       {
-               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 1;
-               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 1;
-               pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 1;
-               pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 1;
-       }
-       else
-       {
-               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 0;
-               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 0;
-               pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 0;
-               pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 0;
-       }
-
-       // We support link adaptation for unsolicit MCS feedback, set to 2.
-       pAd->CommonCfg.HtCapability.ExtHtCapInfo.MCSFeedback = MCSFBK_NONE; //MCSFBK_UNSOLICIT;
-       pAd->CommonCfg.AddHTInfo.ControlChan = pAd->CommonCfg.Channel;
-       // 1, the extension channel above the control channel.
-
-       // EDCA parameters used for AP's own transmission
-       if (pAd->CommonCfg.APEdcaParm.bValid == FALSE)
-       {
-               pAd->CommonCfg.APEdcaParm.bValid = TRUE;
-               pAd->CommonCfg.APEdcaParm.Aifsn[0] = 3;
-               pAd->CommonCfg.APEdcaParm.Aifsn[1] = 7;
-               pAd->CommonCfg.APEdcaParm.Aifsn[2] = 1;
-               pAd->CommonCfg.APEdcaParm.Aifsn[3] = 1;
-
-               pAd->CommonCfg.APEdcaParm.Cwmin[0] = 4;
-               pAd->CommonCfg.APEdcaParm.Cwmin[1] = 4;
-               pAd->CommonCfg.APEdcaParm.Cwmin[2] = 3;
-               pAd->CommonCfg.APEdcaParm.Cwmin[3] = 2;
-
-               pAd->CommonCfg.APEdcaParm.Cwmax[0] = 6;
-               pAd->CommonCfg.APEdcaParm.Cwmax[1] = 10;
-               pAd->CommonCfg.APEdcaParm.Cwmax[2] = 4;
-               pAd->CommonCfg.APEdcaParm.Cwmax[3] = 3;
-
-               pAd->CommonCfg.APEdcaParm.Txop[0]  = 0;
-               pAd->CommonCfg.APEdcaParm.Txop[1]  = 0;
-               pAd->CommonCfg.APEdcaParm.Txop[2]  = 94;
-               pAd->CommonCfg.APEdcaParm.Txop[3]  = 47;
-       }
-       AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm);
-
-               {
-       RTMPSetIndividualHT(pAd, 0);
-               }
-
-}
-
-/*
-       ========================================================================
-       Routine Description:
-               Caller ensures we has 802.11n support.
-               Calls at setting HT from AP/STASetinformation
-
-       Arguments:
-               pAd - Pointer to our adapter
-               phymode  -
-
-       ========================================================================
-*/
-VOID   RTMPSetIndividualHT(
-       IN      PRTMP_ADAPTER           pAd,
-       IN      UCHAR                           apidx)
-{
-       PRT_HT_PHY_INFO         pDesired_ht_phy = NULL;
-       UCHAR   TxStream = pAd->CommonCfg.TxStream;
-       UCHAR   DesiredMcs      = MCS_AUTO;
-
-       do
-       {
-               {
-                       pDesired_ht_phy = &pAd->StaCfg.DesiredHtPhyInfo;
-                       DesiredMcs = pAd->StaCfg.DesiredTransmitSetting.field.MCS;
-                       //pAd->StaCfg.bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
-                               break;
-               }
-       } while (FALSE);
-
-       if (pDesired_ht_phy == NULL)
-       {
-               DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetIndividualHT: invalid apidx(%d)\n", apidx));
-               return;
-       }
-       RTMPZeroMemory(pDesired_ht_phy, sizeof(RT_HT_PHY_INFO));
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetIndividualHT : Desired MCS = %d\n", DesiredMcs));
-       // Check the validity of MCS
-       if ((TxStream == 1) && ((DesiredMcs >= MCS_8) && (DesiredMcs <= MCS_15)))
-       {
-               DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS(%d) is invalid in 1S, reset it as MCS_7\n", DesiredMcs));
-               DesiredMcs = MCS_7;
-       }
-
-       if ((pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_20) && (DesiredMcs == MCS_32))
-       {
-               DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS_32 is only supported in 40-MHz, reset it as MCS_0\n"));
-               DesiredMcs = MCS_0;
-       }
-
-       pDesired_ht_phy->bHtEnable = TRUE;
-
-       // Decide desired Tx MCS
-       switch (TxStream)
-       {
-               case 1:
-                       if (DesiredMcs == MCS_AUTO)
-                       {
-                               pDesired_ht_phy->MCSSet[0]= 0xff;
-                               pDesired_ht_phy->MCSSet[1]= 0x00;
-                       }
-                       else if (DesiredMcs <= MCS_7)
-                       {
-                               pDesired_ht_phy->MCSSet[0]= 1<<DesiredMcs;
-                               pDesired_ht_phy->MCSSet[1]= 0x00;
-                       }
-                       break;
-
-               case 2:
-                       if (DesiredMcs == MCS_AUTO)
-                       {
-                               pDesired_ht_phy->MCSSet[0]= 0xff;
-                               pDesired_ht_phy->MCSSet[1]= 0xff;
-                       }
-                       else if (DesiredMcs <= MCS_15)
-                       {
-                               ULONG mode;
-
-                               mode = DesiredMcs / 8;
-                               if (mode < 2)
-                                       pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
-                       }
-                       break;
-
-               case 3: // 3*3
-                       if (DesiredMcs == MCS_AUTO)
-                       {
-                               /* MCS0 ~ MCS23, 3 bytes */
-                               pDesired_ht_phy->MCSSet[0]= 0xff;
-                               pDesired_ht_phy->MCSSet[1]= 0xff;
-                               pDesired_ht_phy->MCSSet[2]= 0xff;
-                       }
-                       else if (DesiredMcs <= MCS_23)
-                       {
-                               ULONG mode;
-
-                               mode = DesiredMcs / 8;
-                               if (mode < 3)
-                                       pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
-                       }
-                       break;
-       }
-
-       if(pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_40)
-       {
-               if (DesiredMcs == MCS_AUTO || DesiredMcs == MCS_32)
-                       pDesired_ht_phy->MCSSet[4] = 0x1;
-       }
-
-       // update HT Rate setting
-    if (pAd->OpMode == OPMODE_STA)
-        MlmeUpdateHtTxRates(pAd, BSS0);
-    else
-           MlmeUpdateHtTxRates(pAd, apidx);
-}
-
-
-/*
-       ========================================================================
-       Routine Description:
-               Update HT IE from our capability.
-
-       Arguments:
-               Send all HT IE in beacon/probe rsp/assoc rsp/action frame.
-
-
-       ========================================================================
-*/
-VOID   RTMPUpdateHTIE(
-       IN      RT_HT_CAPABILITY        *pRtHt,
-       IN              UCHAR                           *pMcsSet,
-       OUT             HT_CAPABILITY_IE *pHtCapability,
-       OUT             ADD_HT_INFO_IE          *pAddHtInfo)
-{
-       RTMPZeroMemory(pHtCapability, sizeof(HT_CAPABILITY_IE));
-       RTMPZeroMemory(pAddHtInfo, sizeof(ADD_HT_INFO_IE));
-
-               pHtCapability->HtCapInfo.ChannelWidth = pRtHt->ChannelWidth;
-               pHtCapability->HtCapInfo.MimoPs = pRtHt->MimoPs;
-               pHtCapability->HtCapInfo.GF = pRtHt->GF;
-               pHtCapability->HtCapInfo.ShortGIfor20 = pRtHt->ShortGIfor20;
-               pHtCapability->HtCapInfo.ShortGIfor40 = pRtHt->ShortGIfor40;
-               pHtCapability->HtCapInfo.TxSTBC = pRtHt->TxSTBC;
-               pHtCapability->HtCapInfo.RxSTBC = pRtHt->RxSTBC;
-               pHtCapability->HtCapInfo.AMsduSize = pRtHt->AmsduSize;
-               pHtCapability->HtCapParm.MaxRAmpduFactor = pRtHt->MaxRAmpduFactor;
-               pHtCapability->HtCapParm.MpduDensity = pRtHt->MpduDensity;
-
-               pAddHtInfo->AddHtInfo.ExtChanOffset = pRtHt->ExtChanOffset ;
-               pAddHtInfo->AddHtInfo.RecomWidth = pRtHt->RecomWidth;
-               pAddHtInfo->AddHtInfo2.OperaionMode = pRtHt->OperaionMode;
-               pAddHtInfo->AddHtInfo2.NonGfPresent = pRtHt->NonGfPresent;
-               RTMPMoveMemory(pAddHtInfo->MCSSet, /*pRtHt->MCSSet*/pMcsSet, 4); // rt2860 only support MCS max=32, no need to copy all 16 uchar.
-
-        DBGPRINT(RT_DEBUG_TRACE,("RTMPUpdateHTIE <== \n"));
-}
-
-/*
-       ========================================================================
-       Description:
-               Add Client security information into ASIC WCID table and IVEIV table.
-    Return:
-       ========================================================================
-*/
-VOID   RTMPAddWcidAttributeEntry(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      UCHAR                   BssIdx,
-       IN      UCHAR                   KeyIdx,
-       IN      UCHAR                   CipherAlg,
-       IN      MAC_TABLE_ENTRY *pEntry)
-{
-       UINT32          WCIDAttri = 0;
-       USHORT          offset;
-       UCHAR           IVEIV = 0;
-       USHORT          Wcid = 0;
-
-       {
-               {
-                       if (BssIdx > BSS0)
-                       {
-                               DBGPRINT(RT_DEBUG_ERROR, ("RTMPAddWcidAttributeEntry: The BSS-index(%d) is out of range for Infra link. \n", BssIdx));
-                               return;
-                       }
-
-                       // 1.   In ADHOC mode, the AID is wcid number. And NO mesh link exists.
-                       // 2.   In Infra mode, the AID:1 MUST be wcid of infra STA.
-                       //                                         the AID:2~ assign to mesh link entry.
-                       if (pEntry)
-                               Wcid = pEntry->Aid;
-                       else
-                               Wcid = MCAST_WCID;
-               }
-       }
-
-       // Update WCID attribute table
-       offset = MAC_WCID_ATTRIBUTE_BASE + (Wcid * HW_WCID_ATTRI_SIZE);
-
-       {
-               if (pEntry && pEntry->ValidAsMesh)
-                       WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
-               else
-                       WCIDAttri = (CipherAlg<<1) | SHAREDKEYTABLE;
-       }
-
-       RTMP_IO_WRITE32(pAd, offset, WCIDAttri);
-
-
-       // Update IV/EIV table
-       offset = MAC_IVEIV_TABLE_BASE + (Wcid * HW_IVEIV_ENTRY_SIZE);
-
-       // WPA mode
-       if ((CipherAlg == CIPHER_TKIP) || (CipherAlg == CIPHER_TKIP_NO_MIC) || (CipherAlg == CIPHER_AES))
-       {
-               // Eiv bit on. keyid always is 0 for pairwise key
-               IVEIV = (KeyIdx <<6) | 0x20;
-       }
-       else
-       {
-               // WEP KeyIdx is default tx key.
-               IVEIV = (KeyIdx << 6);
-       }
-
-       // For key index and ext IV bit, so only need to update the position(offset+3).
-#ifdef RTMP_MAC_PCI
-       RTMP_IO_WRITE8(pAd, offset+3, IVEIV);
-#endif // RTMP_MAC_PCI //
-#ifdef RTMP_MAC_USB
-       RTUSBMultiWrite_OneByte(pAd, offset+3, &IVEIV);
-#endif // RTMP_MAC_USB //
-
-       DBGPRINT(RT_DEBUG_TRACE,("RTMPAddWcidAttributeEntry: WCID #%d, KeyIndex #%d, Alg=%s\n",Wcid, KeyIdx, CipherName[CipherAlg]));
-       DBGPRINT(RT_DEBUG_TRACE,("      WCIDAttri = 0x%x \n",  WCIDAttri));
-
-}
-
-/*
-    ==========================================================================
-    Description:
-        Parse encryption type
-Arguments:
-    pAdapter                    Pointer to our adapter
-    wrq                         Pointer to the ioctl argument
-
-    Return Value:
-        None
-
-    Note:
-    ==========================================================================
-*/
-PSTRING GetEncryptType(CHAR enc)
-{
-    if(enc == Ndis802_11WEPDisabled)
-        return "NONE";
-    if(enc == Ndis802_11WEPEnabled)
-       return "WEP";
-    if(enc == Ndis802_11Encryption2Enabled)
-       return "TKIP";
-    if(enc == Ndis802_11Encryption3Enabled)
-       return "AES";
-       if(enc == Ndis802_11Encryption4Enabled)
-       return "TKIPAES";
-    else
-       return "UNKNOW";
-}
-
-PSTRING GetAuthMode(CHAR auth)
-{
-    if(auth == Ndis802_11AuthModeOpen)
-       return "OPEN";
-    if(auth == Ndis802_11AuthModeShared)
-       return "SHARED";
-       if(auth == Ndis802_11AuthModeAutoSwitch)
-       return "AUTOWEP";
-    if(auth == Ndis802_11AuthModeWPA)
-       return "WPA";
-    if(auth == Ndis802_11AuthModeWPAPSK)
-       return "WPAPSK";
-    if(auth == Ndis802_11AuthModeWPANone)
-       return "WPANONE";
-    if(auth == Ndis802_11AuthModeWPA2)
-       return "WPA2";
-    if(auth == Ndis802_11AuthModeWPA2PSK)
-       return "WPA2PSK";
-       if(auth == Ndis802_11AuthModeWPA1WPA2)
-       return "WPA1WPA2";
-       if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)
-       return "WPA1PSKWPA2PSK";
-
-       return "UNKNOW";
-}
-
-/*
-    ==========================================================================
-    Description:
-        Get site survey results
-       Arguments:
-           pAdapter                    Pointer to our adapter
-           wrq                         Pointer to the ioctl argument
-
-    Return Value:
-        None
-
-    Note:
-        Usage:
-                       1.) UI needs to wait 4 seconds after issue a site survey command
-                       2.) iwpriv ra0 get_site_survey
-                       3.) UI needs to prepare at least 4096bytes to get the results
-    ==========================================================================
-*/
-#define        LINE_LEN        (4+33+20+23+9+7+7+3)    // Channel+SSID+Bssid+Security+Signal+WiressMode+ExtCh+NetworkType
-VOID   RTMPCommSiteSurveyData(
-       IN  PSTRING             msg,
-       IN  PBSS_ENTRY  pBss)
-{
-       INT         Rssi = 0;
-       UINT        Rssi_Quality = 0;
-       NDIS_802_11_NETWORK_TYPE    wireless_mode;
-       CHAR            Ssid[MAX_LEN_OF_SSID +1];
-       STRING          SecurityStr[32] = {0};
-       NDIS_802_11_ENCRYPTION_STATUS   ap_cipher = Ndis802_11EncryptionDisabled;
-       NDIS_802_11_AUTHENTICATION_MODE ap_auth_mode = Ndis802_11AuthModeOpen;
-
-       memset(Ssid, 0 ,(MAX_LEN_OF_SSID +1));
-
-               //Channel
-               sprintf(msg+strlen(msg),"%-4d", pBss->Channel);
-               //SSID
-               memcpy(Ssid, pBss->Ssid, pBss->SsidLen);
-               Ssid[pBss->SsidLen] = '\0';
-               sprintf(msg+strlen(msg),"%-33s", Ssid);
-               //BSSID
-               sprintf(msg+strlen(msg),"%02x:%02x:%02x:%02x:%02x:%02x   ",
-                       pBss->Bssid[0],
-                       pBss->Bssid[1],
-                       pBss->Bssid[2],
-                       pBss->Bssid[3],
-                       pBss->Bssid[4],
-                       pBss->Bssid[5]);
-
-       //Security
-       if ((Ndis802_11AuthModeWPA <= pBss->AuthMode) &&
-               (pBss->AuthMode <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
-       {
-               if (pBss->AuthModeAux == Ndis802_11AuthModeWPANone)
-               {
-                       ap_auth_mode = pBss->AuthMode;
-                       if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)
-                               ap_cipher = pBss->WPA.PairCipher;
-                       else
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-       }
-               else if (pBss->AuthModeAux == Ndis802_11AuthModeOpen)
-               {
-                       ap_auth_mode = pBss->AuthMode;
-                       if ((ap_auth_mode == Ndis802_11AuthModeWPA) ||
-                               (ap_auth_mode == Ndis802_11AuthModeWPAPSK))
-                       {
-                               if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)
-                                       ap_cipher = pBss->WPA.PairCipher;
-                               else
-                                       ap_cipher = Ndis802_11Encryption4Enabled;
-                       }
-                       else if ((ap_auth_mode == Ndis802_11AuthModeWPA2) ||
-                                        (ap_auth_mode == Ndis802_11AuthModeWPA2PSK))
-                       {
-                               if (pBss->WPA2.PairCipherAux == Ndis802_11WEPDisabled)
-                                       ap_cipher = pBss->WPA2.PairCipher;
-                               else
-                                       ap_cipher = Ndis802_11Encryption4Enabled;
-                       }
-               }
-               else if ((pBss->AuthMode == Ndis802_11AuthModeWPAPSK) ||
-                                (pBss->AuthMode == Ndis802_11AuthModeWPA2PSK))
-               {
-                       if ((pBss->AuthModeAux == Ndis802_11AuthModeWPAPSK) ||
-                               (pBss->AuthModeAux == Ndis802_11AuthModeWPA2PSK))
-                               ap_auth_mode = Ndis802_11AuthModeWPA1PSKWPA2PSK;
-                       else
-                               ap_auth_mode = pBss->AuthMode;
-
-                       if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher)
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux))
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
-                                        (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled))
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
-                                        (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled))
-                               ap_cipher = pBss->WPA.PairCipher;
-               }
-               else if ((pBss->AuthMode == Ndis802_11AuthModeWPA) ||
-                                (pBss->AuthMode == Ndis802_11AuthModeWPA2))
-               {
-                       if ((pBss->AuthModeAux == Ndis802_11AuthModeWPA) ||
-                               (pBss->AuthMode == Ndis802_11AuthModeWPA2))
-                               ap_auth_mode = Ndis802_11AuthModeWPA1WPA2;
-                       else
-                               ap_auth_mode = pBss->AuthMode;
-
-                       if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher)
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux))
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
-                                        (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled))
-                               ap_cipher = Ndis802_11Encryption4Enabled;
-                       else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
-                                        (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
-                                        (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled))
-                               ap_cipher = pBss->WPA.PairCipher;
-               }
-
-               sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
-       }
-       else
-       {
-               ap_auth_mode = pBss->AuthMode;
-               ap_cipher = pBss->WepStatus;
-               if (ap_cipher == Ndis802_11WEPDisabled)
-                       sprintf(SecurityStr, "NONE");
-               else if (ap_cipher == Ndis802_11WEPEnabled)
-                       sprintf(SecurityStr, "WEP");
-               else
-                       sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
-       }
-
-       sprintf(msg+strlen(msg), "%-23s", SecurityStr);
-
-               // Rssi
-               Rssi = (INT)pBss->Rssi;
-               if (Rssi >= -50)
-                       Rssi_Quality = 100;
-               else if (Rssi >= -80)    // between -50 ~ -80dbm
-                       Rssi_Quality = (UINT)(24 + ((Rssi + 80) * 26)/10);
-               else if (Rssi >= -90)   // between -80 ~ -90dbm
-                       Rssi_Quality = (UINT)(((Rssi + 90) * 26)/10);
-               else    // < -84 dbm
-                       Rssi_Quality = 0;
-               sprintf(msg+strlen(msg),"%-9d", Rssi_Quality);
-               // Wireless Mode
-               wireless_mode = NetworkTypeInUseSanity(pBss);
-               if (wireless_mode == Ndis802_11FH ||
-                       wireless_mode == Ndis802_11DS)
-                       sprintf(msg+strlen(msg),"%-7s", "11b");
-               else if (wireless_mode == Ndis802_11OFDM5)
-                       sprintf(msg+strlen(msg),"%-7s", "11a");
-               else if (wireless_mode == Ndis802_11OFDM5_N)
-                       sprintf(msg+strlen(msg),"%-7s", "11a/n");
-               else if (wireless_mode == Ndis802_11OFDM24)
-                       sprintf(msg+strlen(msg),"%-7s", "11b/g");
-               else if (wireless_mode == Ndis802_11OFDM24_N)
-                       sprintf(msg+strlen(msg),"%-7s", "11b/g/n");
-               else
-                       sprintf(msg+strlen(msg),"%-7s", "unknow");
-
-               // Ext Channel
-               if (pBss->AddHtInfoLen > 0)
-               {
-                       if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE)
-                               sprintf(msg+strlen(msg),"%-7s", " ABOVE");
-                       else if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW)
-                               sprintf(msg+strlen(msg),"%-7s", " BELOW");
-                       else
-                               sprintf(msg+strlen(msg),"%-7s", " NONE");
-               }
-               else
-               {
-                       sprintf(msg+strlen(msg),"%-7s", " NONE");
-               }
-
-               //Network Type
-               if (pBss->BssType == BSS_ADHOC)
-                       sprintf(msg+strlen(msg),"%-3s", " Ad");
-               else
-                       sprintf(msg+strlen(msg),"%-3s", " In");
-
-        sprintf(msg+strlen(msg),"\n");
-
-       return;
-}
-
-#define        MAC_LINE_LEN    (14+4+4+10+10+10+6+6)   // Addr+aid+psm+datatime+rxbyte+txbyte+current tx rate+last tx rate
-VOID RTMPIoctlGetMacTable(
-       IN PRTMP_ADAPTER pAd,
-       IN struct iwreq *wrq)
-{
-       INT i;
-       RT_802_11_MAC_TABLE MacTab;
-       char *msg;
-
-       MacTab.Num = 0;
-       for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
-       {
-               if (pAd->MacTab.Content[i].ValidAsCLI && (pAd->MacTab.Content[i].Sst == SST_ASSOC))
-               {
-                       COPY_MAC_ADDR(MacTab.Entry[MacTab.Num].Addr, &pAd->MacTab.Content[i].Addr);
-                       MacTab.Entry[MacTab.Num].Aid = (UCHAR)pAd->MacTab.Content[i].Aid;
-                       MacTab.Entry[MacTab.Num].Psm = pAd->MacTab.Content[i].PsMode;
-                       MacTab.Entry[MacTab.Num].MimoPs = pAd->MacTab.Content[i].MmpsMode;
-
-                       // Fill in RSSI per entry
-                       MacTab.Entry[MacTab.Num].AvgRssi0 = pAd->MacTab.Content[i].RssiSample.AvgRssi0;
-                       MacTab.Entry[MacTab.Num].AvgRssi1 = pAd->MacTab.Content[i].RssiSample.AvgRssi1;
-                       MacTab.Entry[MacTab.Num].AvgRssi2 = pAd->MacTab.Content[i].RssiSample.AvgRssi2;
-
-                       // the connected time per entry
-                       MacTab.Entry[MacTab.Num].ConnectedTime = pAd->MacTab.Content[i].StaConnectTime;
-                       MacTab.Entry[MacTab.Num].TxRate.field.MCS = pAd->MacTab.Content[i].HTPhyMode.field.MCS;
-                       MacTab.Entry[MacTab.Num].TxRate.field.BW = pAd->MacTab.Content[i].HTPhyMode.field.BW;
-                       MacTab.Entry[MacTab.Num].TxRate.field.ShortGI = pAd->MacTab.Content[i].HTPhyMode.field.ShortGI;
-                       MacTab.Entry[MacTab.Num].TxRate.field.STBC = pAd->MacTab.Content[i].HTPhyMode.field.STBC;
-                       MacTab.Entry[MacTab.Num].TxRate.field.rsv = pAd->MacTab.Content[i].HTPhyMode.field.rsv;
-                       MacTab.Entry[MacTab.Num].TxRate.field.MODE = pAd->MacTab.Content[i].HTPhyMode.field.MODE;
-                       MacTab.Entry[MacTab.Num].TxRate.word = pAd->MacTab.Content[i].HTPhyMode.word;
-
-                       MacTab.Num += 1;
-               }
-       }
-       wrq->u.data.length = sizeof(RT_802_11_MAC_TABLE);
-       if (copy_to_user(wrq->u.data.pointer, &MacTab, wrq->u.data.length))
-       {
-               DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __func__));
-       }
-
-       msg = kmalloc(sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN), MEM_ALLOC_FLAG);
-       if (msg == NULL)
-       {
-               DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __func__));
-               return;
-       }
-       memset(msg, 0 ,MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN );
-       sprintf(msg,"%s","\n");
-       sprintf(msg+strlen(msg),"%-14s%-4s%-4s%-10s%-10s%-10s%-6s%-6s\n",
-               "MAC", "AID", "PSM", "LDT", "RxB", "TxB","CTxR", "LTxR");
-
-       for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
-       {
-               PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
-               if (pEntry->ValidAsCLI && (pEntry->Sst == SST_ASSOC))
-               {
-                       if((strlen(msg)+MAC_LINE_LEN ) >= (MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN) )
-                               break;
-                       sprintf(msg+strlen(msg),"%02x%02x%02x%02x%02x%02x  ",
-                               pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
-                               pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
-                       sprintf(msg+strlen(msg),"%-4d", (int)pEntry->Aid);
-                       sprintf(msg+strlen(msg),"%-4d", (int)pEntry->PsMode);
-                       sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/); // ToDo
-                       sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/); // ToDo
-                       sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/); // ToDo
-                       sprintf(msg+strlen(msg),"%-6d",RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
-                       sprintf(msg+strlen(msg),"%-6d\n",0/*RateIdToMbps[pAd->MacTab.Content[i].LastTxRate]*/); // ToDo
-               }
-       }
-       // for compatible with old API just do the printk to console
-       //wrq->u.data.length = strlen(msg);
-       //if (copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length))
-       {
-               DBGPRINT(RT_DEBUG_TRACE, ("%s", msg));
-       }
-
-       kfree(msg);
-}
-
-
-INT    Set_BASetup_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-    UCHAR mac[6], tid;
-       PSTRING token;
-       STRING sepValue[] = ":", DASH = '-';
-       INT i;
-    MAC_TABLE_ENTRY *pEntry;
-
-/*
-       The BASetup inupt string format should be xx:xx:xx:xx:xx:xx-d,
-               =>The six 2 digit hex-decimal number previous are the Mac address,
-               =>The seventh decimal number is the tid value.
-*/
-       //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
-
-       if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
-               return FALSE;
-
-       token = strchr(arg, DASH);
-       if ((token != NULL) && (strlen(token)>1))
-       {
-               tid = (UCHAR) simple_strtol((token+1), 0, 10);
-               if (tid > 15)
-                       return FALSE;
-
-               *token = '\0';
-               for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
-               {
-                       if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
-                               return FALSE;
-                       AtoH(token, (&mac[i]), 1);
-               }
-               if(i != 6)
-                       return FALSE;
-
-               DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x\n",
-                                                               mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
-
-           pEntry = MacTableLookup(pAd, (PUCHAR) mac);
-
-       if (pEntry) {
-               DBGPRINT(RT_DEBUG_OFF, ("\nSetup BA Session: Tid = %d\n", tid));
-               BAOriSessionSetUp(pAd, pEntry, tid, 0, 100, TRUE);
-       }
-
-               return TRUE;
-       }
-
-       return FALSE;
-
-}
-
-INT    Set_BADecline_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG bBADecline;
-
-       bBADecline = simple_strtol(arg, 0, 10);
-
-       if (bBADecline == 0)
-       {
-               pAd->CommonCfg.bBADecline = FALSE;
-       }
-       else if (bBADecline == 1)
-       {
-               pAd->CommonCfg.bBADecline = TRUE;
-       }
-       else
-       {
-               return FALSE; //Invalid argument
-       }
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_BADecline_Proc::(BADecline=%d)\n", pAd->CommonCfg.bBADecline));
-
-       return TRUE;
-}
-
-INT    Set_BAOriTearDown_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-    UCHAR mac[6], tid;
-       PSTRING token;
-       STRING sepValue[] = ":", DASH = '-';
-       INT i;
-    MAC_TABLE_ENTRY *pEntry;
-
-    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
-/*
-       The BAOriTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d,
-               =>The six 2 digit hex-decimal number previous are the Mac address,
-               =>The seventh decimal number is the tid value.
-*/
-    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
-               return FALSE;
-
-       token = strchr(arg, DASH);
-       if ((token != NULL) && (strlen(token)>1))
-       {
-               tid = simple_strtol((token+1), 0, 10);
-               if (tid > NUM_OF_TID)
-                       return FALSE;
-
-               *token = '\0';
-               for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
-               {
-                       if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
-                               return FALSE;
-                       AtoH(token, (&mac[i]), 1);
-               }
-               if(i != 6)
-                       return FALSE;
-
-           DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x",
-                                                               mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
-
-           pEntry = MacTableLookup(pAd, (PUCHAR) mac);
-
-           if (pEntry) {
-               DBGPRINT(RT_DEBUG_OFF, ("\nTear down Ori BA Session: Tid = %d\n", tid));
-        BAOriSessionTearDown(pAd, pEntry->Aid, tid, FALSE, TRUE);
-           }
-
-               return TRUE;
-       }
-
-       return FALSE;
-
-}
-
-INT    Set_BARecTearDown_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-    UCHAR mac[6], tid;
-       PSTRING token;
-       STRING sepValue[] = ":", DASH = '-';
-       INT i;
-    MAC_TABLE_ENTRY *pEntry;
-
-    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
-/*
-       The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d,
-               =>The six 2 digit hex-decimal number previous are the Mac address,
-               =>The seventh decimal number is the tid value.
-*/
-    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
-               return FALSE;
-
-       token = strchr(arg, DASH);
-       if ((token != NULL) && (strlen(token)>1))
-       {
-               tid = simple_strtol((token+1), 0, 10);
-               if (tid > NUM_OF_TID)
-                       return FALSE;
-
-               *token = '\0';
-               for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
-               {
-                       if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
-                               return FALSE;
-                       AtoH(token, (&mac[i]), 1);
-               }
-               if(i != 6)
-                       return FALSE;
-
-               DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x",
-                                                               mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
-
-               pEntry = MacTableLookup(pAd, (PUCHAR) mac);
-
-               if (pEntry) {
-                   DBGPRINT(RT_DEBUG_OFF, ("\nTear down Rec BA Session: Tid = %d\n", tid));
-                   BARecSessionTearDown(pAd, pEntry->Aid, tid, FALSE);
-               }
-
-               return TRUE;
-       }
-
-       return FALSE;
-
-}
-
-INT    Set_HtBw_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG HtBw;
-
-       HtBw = simple_strtol(arg, 0, 10);
-       if (HtBw == BW_40)
-               pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_40;
-       else if (HtBw == BW_20)
-               pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
-       else
-               return FALSE;  //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtBw_Proc::(HtBw=%d)\n", pAd->CommonCfg.RegTransmitSetting.field.BW));
-
-       return TRUE;
-}
-
-INT    Set_HtMcs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG HtMcs, Mcs_tmp;
-    BOOLEAN bAutoRate = FALSE;
-
-       Mcs_tmp = simple_strtol(arg, 0, 10);
-
-       if (Mcs_tmp <= 15 || Mcs_tmp == 32)
-               HtMcs = Mcs_tmp;
-       else
-               HtMcs = MCS_AUTO;
-
-       {
-               pAd->StaCfg.DesiredTransmitSetting.field.MCS = HtMcs;
-               pAd->StaCfg.bAutoTxRateSwitch = (HtMcs == MCS_AUTO) ? TRUE:FALSE;
-               DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMcs_Proc::(HtMcs=%d, bAutoTxRateSwitch = %d)\n",
-                                               pAd->StaCfg.DesiredTransmitSetting.field.MCS, pAd->StaCfg.bAutoTxRateSwitch));
-
-               if ((pAd->CommonCfg.PhyMode < PHY_11ABGN_MIXED) ||
-                       (pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE < MODE_HTMIX))
-               {
-               if ((pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO) &&
-                               (HtMcs >= 0 && HtMcs <= 3) &&
-                   (pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode == FIXED_TXMODE_CCK))
-                       {
-                               RTMPSetDesiredRates(pAd, (LONG) (RateIdToMbps[HtMcs] * 1000000));
-                       }
-               else if ((pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO) &&
-                                       (HtMcs >= 0 && HtMcs <= 7) &&
-                       (pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode == FIXED_TXMODE_OFDM))
-                       {
-                               RTMPSetDesiredRates(pAd, (LONG) (RateIdToMbps[HtMcs+4] * 1000000));
-                       }
-                       else
-                               bAutoRate = TRUE;
-
-                       if (bAutoRate)
-                       {
-                   pAd->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
-                               RTMPSetDesiredRates(pAd, -1);
-                       }
-               DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMcs_Proc::(FixedTxMode=%d)\n",pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode));
-               }
-        if (ADHOC_ON(pAd))
-            return TRUE;
-       }
-
-       SetCommonHT(pAd);
-
-       return TRUE;
-}
-
-INT    Set_HtGi_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG HtGi;
-
-       HtGi = simple_strtol(arg, 0, 10);
-
-       if ( HtGi == GI_400)
-               pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_400;
-       else if ( HtGi == GI_800 )
-               pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_800;
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtGi_Proc::(ShortGI=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.ShortGI));
-
-       return TRUE;
-}
-
-
-INT    Set_HtTxBASize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       UCHAR Size;
-
-       Size = simple_strtol(arg, 0, 10);
-
-       if (Size <=0 || Size >=64)
-       {
-               Size = 8;
-       }
-       pAd->CommonCfg.TxBASize = Size-1;
-       DBGPRINT(RT_DEBUG_ERROR, ("Set_HtTxBASize ::(TxBASize= %d)\n", Size));
-
-       return TRUE;
-}
-
-INT    Set_HtDisallowTKIP_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value == 1)
-       {
-               pAd->CommonCfg.HT_DisallowTKIP = TRUE;
-       }
-       else
-       {
-               pAd->CommonCfg.HT_DisallowTKIP = FALSE;
-       }
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtDisallowTKIP_Proc ::%s\n",
-                               (pAd->CommonCfg.HT_DisallowTKIP == TRUE) ? "enabled" : "disabled"));
-
-       return TRUE;
-}
-
-INT    Set_HtOpMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value == HTMODE_GF)
-               pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_GF;
-       else if ( Value == HTMODE_MM )
-               pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_MM;
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtOpMode_Proc::(HtOpMode=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.HTMODE));
-
-       return TRUE;
-
-}
-
-INT    Set_HtStbc_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value == STBC_USE)
-               pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_USE;
-       else if ( Value == STBC_NONE )
-               pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_NONE;
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_Stbc_Proc::(HtStbc=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.STBC));
-
-       return TRUE;
-}
-
-INT    Set_HtHtc_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->HTCEnable = FALSE;
-       else if ( Value ==1 )
-               pAd->HTCEnable = TRUE;
-       else
-               return FALSE; //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtHtc_Proc::(HtHtc=%d)\n",pAd->HTCEnable));
-
-       return TRUE;
-}
-
-INT    Set_HtExtcha_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value == 0)
-               pAd->CommonCfg.RegTransmitSetting.field.EXTCHA  = EXTCHA_BELOW;
-       else if ( Value ==1 )
-        pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtExtcha_Proc::(HtExtcha=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.EXTCHA));
-
-       return TRUE;
-}
-
-INT    Set_HtMpduDensity_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value <=7 && Value >= 0)
-               pAd->CommonCfg.BACapability.field.MpduDensity = Value;
-       else
-               pAd->CommonCfg.BACapability.field.MpduDensity = 4;
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMpduDensity_Proc::(HtMpduDensity=%d)\n",pAd->CommonCfg.BACapability.field.MpduDensity));
-
-       return TRUE;
-}
-
-INT    Set_HtBaWinSize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-
-       if (Value >=1 && Value <= 64)
-       {
-               pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = Value;
-               pAd->CommonCfg.BACapability.field.RxBAWinLimit = Value;
-       }
-       else
-       {
-        pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = 64;
-               pAd->CommonCfg.BACapability.field.RxBAWinLimit = 64;
-       }
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtBaWinSize_Proc::(HtBaWinSize=%d)\n",pAd->CommonCfg.BACapability.field.RxBAWinLimit));
-
-       return TRUE;
-}
-
-INT    Set_HtRdg_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-
-       if (Value == 0)
-               pAd->CommonCfg.bRdg = FALSE;
-       else if ( Value ==1 )
-       {
-               pAd->HTCEnable = TRUE;
-               pAd->CommonCfg.bRdg = TRUE;
-       }
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtRdg_Proc::(HtRdg=%d)\n",pAd->CommonCfg.bRdg));
-
-       return TRUE;
-}
-
-INT    Set_HtLinkAdapt_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->bLinkAdapt = FALSE;
-       else if ( Value ==1 )
-       {
-                       pAd->HTCEnable = TRUE;
-                       pAd->bLinkAdapt = TRUE;
-       }
-       else
-               return FALSE; //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtLinkAdapt_Proc::(HtLinkAdapt=%d)\n",pAd->bLinkAdapt));
-
-       return TRUE;
-}
-
-INT    Set_HtAmsdu_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->CommonCfg.BACapability.field.AmsduEnable = FALSE;
-       else if ( Value == 1 )
-        pAd->CommonCfg.BACapability.field.AmsduEnable = TRUE;
-       else
-               return FALSE; //Invalid argument
-
-       SetCommonHT(pAd);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtAmsdu_Proc::(HtAmsdu=%d)\n",pAd->CommonCfg.BACapability.field.AmsduEnable));
-
-       return TRUE;
-}
-
-INT    Set_HtAutoBa_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-       {
-               pAd->CommonCfg.BACapability.field.AutoBA = FALSE;
-               pAd->CommonCfg.BACapability.field.Policy = BA_NOTUSE;
-       }
-    else if (Value == 1)
-       {
-               pAd->CommonCfg.BACapability.field.AutoBA = TRUE;
-               pAd->CommonCfg.BACapability.field.Policy = IMMED_BA;
-       }
-       else
-               return FALSE; //Invalid argument
+/*
+       ========================================================================
 
-    pAd->CommonCfg.REGBACapability.field.AutoBA = pAd->CommonCfg.BACapability.field.AutoBA;
-    pAd->CommonCfg.REGBACapability.field.Policy = pAd->CommonCfg.BACapability.field.Policy;
+       Routine Description:
+               Remove WPA Key process
 
-       SetCommonHT(pAd);
+       Arguments:
+               pAd                                     Pointer to our adapter
+               pBuf                                                    Pointer to the where the key stored
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtAutoBa_Proc::(HtAutoBa=%d)\n",pAd->CommonCfg.BACapability.field.AutoBA));
+       Return Value:
+               NDIS_SUCCESS                                    Add key successfully
 
-       return TRUE;
+       IRQL = DISPATCH_LEVEL
 
-}
+       Note:
 
-INT    Set_HtProtect_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
+       ========================================================================
+*/
+VOID    RTMPSetDesiredRates(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  LONG            Rates)
 {
-       ULONG Value;
-
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->CommonCfg.bHTProtect = FALSE;
-    else if (Value == 1)
-               pAd->CommonCfg.bHTProtect = TRUE;
-       else
-               return FALSE; //Invalid argument
+    NDIS_802_11_RATES aryRates;
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtProtect_Proc::(HtProtect=%d)\n",pAd->CommonCfg.bHTProtect));
+    memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES));
+    switch (pAdapter->CommonCfg.PhyMode)
+    {
+        case PHY_11A: // A only
+            switch (Rates)
+            {
+                case 6000000: //6M
+                    aryRates[0] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 9000000: //9M
+                    aryRates[0] = 0x12; // 9M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 12000000: //12M
+                    aryRates[0] = 0x18; // 12M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 18000000: //18M
+                    aryRates[0] = 0x24; // 18M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 24000000: //24M
+                    aryRates[0] = 0x30; // 24M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
+                    break;
+                case 36000000: //36M
+                    aryRates[0] = 0x48; // 36M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
+                    break;
+                case 48000000: //48M
+                    aryRates[0] = 0x60; // 48M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
+                    break;
+                case 54000000: //54M
+                    aryRates[0] = 0x6c; // 54M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
+                    break;
+                case -1: //Auto
+                default:
+                    aryRates[0] = 0x6c; // 54Mbps
+                    aryRates[1] = 0x60; // 48Mbps
+                    aryRates[2] = 0x48; // 36Mbps
+                    aryRates[3] = 0x30; // 24Mbps
+                    aryRates[4] = 0x24; // 18M
+                    aryRates[5] = 0x18; // 12M
+                    aryRates[6] = 0x12; // 9M
+                    aryRates[7] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+                    break;
+            }
+            break;
+        case PHY_11BG_MIXED: // B/G Mixed
+        case PHY_11B: // B only
+        case PHY_11ABG_MIXED: // A/B/G Mixed
+        default:
+            switch (Rates)
+            {
+                case 1000000: //1M
+                    aryRates[0] = 0x02;
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 2000000: //2M
+                    aryRates[0] = 0x04;
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 5000000: //5.5M
+                    aryRates[0] = 0x0b; // 5.5M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 11000000: //11M
+                    aryRates[0] = 0x16; // 11M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 6000000: //6M
+                    aryRates[0] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 9000000: //9M
+                    aryRates[0] = 0x12; // 9M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 12000000: //12M
+                    aryRates[0] = 0x18; // 12M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 18000000: //18M
+                    aryRates[0] = 0x24; // 18M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 24000000: //24M
+                    aryRates[0] = 0x30; // 24M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
+                    break;
+                case 36000000: //36M
+                    aryRates[0] = 0x48; // 36M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
+                    break;
+                case 48000000: //48M
+                    aryRates[0] = 0x60; // 48M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
+                    break;
+                case 54000000: //54M
+                    aryRates[0] = 0x6c; // 54M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
+                    break;
+                case -1: //Auto
+                default:
+                    if (pAdapter->CommonCfg.PhyMode == PHY_11B)
+                    { //B Only
+                        aryRates[0] = 0x16; // 11Mbps
+                        aryRates[1] = 0x0b; // 5.5Mbps
+                        aryRates[2] = 0x04; // 2Mbps
+                        aryRates[3] = 0x02; // 1Mbps
+                    }
+                    else
+                    { //(B/G) Mixed or (A/B/G) Mixed
+                        aryRates[0] = 0x6c; // 54Mbps
+                        aryRates[1] = 0x60; // 48Mbps
+                        aryRates[2] = 0x48; // 36Mbps
+                        aryRates[3] = 0x30; // 24Mbps
+                        aryRates[4] = 0x16; // 11Mbps
+                        aryRates[5] = 0x0b; // 5.5Mbps
+                        aryRates[6] = 0x04; // 2Mbps
+                        aryRates[7] = 0x02; // 1Mbps
+                    }
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+                    break;
+            }
+            break;
+    }
 
-       return TRUE;
+    NdisZeroMemory(pAdapter->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
+    NdisMoveMemory(pAdapter->CommonCfg.DesireRate, &aryRates, sizeof(NDIS_802_11_RATES));
+    DBGPRINT(RT_DEBUG_TRACE, (" RTMPSetDesiredRates (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n",
+        pAdapter->CommonCfg.DesireRate[0],pAdapter->CommonCfg.DesireRate[1],
+        pAdapter->CommonCfg.DesireRate[2],pAdapter->CommonCfg.DesireRate[3],
+        pAdapter->CommonCfg.DesireRate[4],pAdapter->CommonCfg.DesireRate[5],
+        pAdapter->CommonCfg.DesireRate[6],pAdapter->CommonCfg.DesireRate[7] ));
+    // Changing DesiredRate may affect the MAX TX rate we used to TX frames out
+    MlmeUpdateTxRates(pAdapter, FALSE, 0);
 }
 
-INT    Set_SendPSMPAction_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-    UCHAR mac[6], mode;
-       PSTRING token;
-       STRING sepValue[] = ":", DASH = '-';
-       INT i;
-    MAC_TABLE_ENTRY *pEntry;
-
-    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
 /*
-       The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d,
-               =>The six 2 digit hex-decimal number previous are the Mac address,
-               =>The seventh decimal number is the mode value.
-*/
-    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and mode value in decimal format.
-               return FALSE;
-
-       token = strchr(arg, DASH);
-       if ((token != NULL) && (strlen(token)>1))
-       {
-               mode = simple_strtol((token+1), 0, 10);
-               if (mode > MMPS_ENABLE)
-                       return FALSE;
+       ========================================================================
 
-               *token = '\0';
-               for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
-               {
-                       if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
-                               return FALSE;
-                       AtoH(token, (&mac[i]), 1);
-               }
-               if(i != 6)
-                       return FALSE;
+       Routine Description:
+               Remove All WPA Keys
 
-               DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x",
-                                                               mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], mode));
+       Arguments:
+               pAd                                     Pointer to our adapter
 
-               pEntry = MacTableLookup(pAd, mac);
+       Return Value:
+               None
 
-               if (pEntry) {
-                   DBGPRINT(RT_DEBUG_OFF, ("\nSendPSMPAction MIPS mode = %d\n", mode));
-                   SendPSMPAction(pAd, pEntry->Aid, mode);
-               }
+       IRQL = DISPATCH_LEVEL
 
-               return TRUE;
-       }
+       Note:
 
-       return FALSE;
+       ========================================================================
+*/
+VOID   RTMPWPARemoveAllKeys(
+       IN      PRTMP_ADAPTER   pAd)
+{
 
+       UCHAR   i;
 
-}
+       DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveAllKeys(AuthMode=%d, WepStatus=%d)\n", pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus));
+       RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+       // For WEP/CKIP, there is no need to remove it, since WinXP won't set it again after
+       // Link up. And it will be replaced if user changed it.
+       if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
+               return;
 
-INT    Set_HtMIMOPSmode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
+       // For WPA-None, there is no need to remove it, since WinXP won't set it again after
+       // Link up. And it will be replaced if user changed it.
+       if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+               return;
 
-       Value = simple_strtol(arg, 0, 10);
+       // set BSSID wcid entry of the Pair-wise Key table as no-security mode
+       AsicRemovePairwiseKeyEntry(pAd, BSS0, BSSID_WCID);
 
-       if (Value <=3 && Value >= 0)
-               pAd->CommonCfg.BACapability.field.MMPSmode = Value;
-       else
-               pAd->CommonCfg.BACapability.field.MMPSmode = 3;
+       // set all shared key mode as no-security.
+       for (i = 0; i < SHARE_KEY_NUM; i++)
+    {
+               DBGPRINT(RT_DEBUG_TRACE,("remove %s key #%d\n", CipherName[pAd->SharedKey[BSS0][i].CipherAlg], i));
+               NdisZeroMemory(&pAd->SharedKey[BSS0][i], sizeof(CIPHER_KEY));
 
-       SetCommonHT(pAd);
+               AsicRemoveSharedKeyEntry(pAd, BSS0, i);
+       }
+       RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+}
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMIMOPSmode_Proc::(MIMOPS mode=%d)\n",pAd->CommonCfg.BACapability.field.MMPSmode));
 
-       return TRUE;
-}
+/*
+       ========================================================================
 
+       Routine Description:
+               As STA's BSSID is a WC too, it uses shared key table.
+               This function write correct unicast TX key to ASIC WCID.
+               And we still make a copy in our MacTab.Content[BSSID_WCID].PairwiseKey.
+               Caller guarantee TKIP/AES always has keyidx = 0. (pairwise key)
+               Caller guarantee WEP calls this function when set Txkey,  default key index=0~3.
 
-INT    Set_ForceShortGI_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
+       Arguments:
+               pAd                                     Pointer to our adapter
+               pKey                                                    Pointer to the where the key stored
 
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->WIFItestbed.bShortGI = FALSE;
-       else if (Value == 1)
-               pAd->WIFItestbed.bShortGI = TRUE;
-       else
-               return FALSE; //Invalid argument
+       Return Value:
+               NDIS_SUCCESS                                    Add key successfully
 
-       SetCommonHT(pAd);
+       IRQL = DISPATCH_LEVEL
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_ForceShortGI_Proc::(ForceShortGI=%d)\n", pAd->WIFItestbed.bShortGI));
+       Note:
 
-       return TRUE;
-}
+       ========================================================================
+*/
+/*
+       ========================================================================
+       Routine Description:
+               Change NIC PHY mode. Re-association may be necessary. possible settings
+               include - PHY_11B, PHY_11BG_MIXED, PHY_11A, and PHY_11ABG_MIXED
 
+       Arguments:
+               pAd - Pointer to our adapter
+               phymode  -
 
+       IRQL = PASSIVE_LEVEL
+       IRQL = DISPATCH_LEVEL
 
-INT    Set_ForceGF_Proc(
+       ========================================================================
+*/
+VOID   RTMPSetPhyMode(
        IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
+       IN      ULONG phymode)
 {
-       ULONG Value;
+       INT i;
+       // the selected phymode must be supported by the RF IC encoded in E2PROM
 
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->WIFItestbed.bGreenField = FALSE;
-       else if (Value == 1)
-               pAd->WIFItestbed.bGreenField = TRUE;
-       else
-               return FALSE; //Invalid argument
+       // if no change, do nothing
+       /* bug fix
+       if (pAd->CommonCfg.PhyMode == phymode)
+               return;
+    */
+       pAd->CommonCfg.PhyMode = (UCHAR)phymode;
 
-       SetCommonHT(pAd);
+       DBGPRINT(RT_DEBUG_TRACE,("RTMPSetPhyMode : PhyMode=%d, channel=%d \n", pAd->CommonCfg.PhyMode, pAd->CommonCfg.Channel));
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_ForceGF_Proc::(ForceGF=%d)\n", pAd->WIFItestbed.bGreenField));
+       BuildChannelList(pAd);
 
-       return TRUE;
-}
+       // sanity check user setting
+       for (i = 0; i < pAd->ChannelListNum; i++)
+       {
+               if (pAd->CommonCfg.Channel == pAd->ChannelList[i].Channel)
+                       break;
+       }
 
-INT    Set_HtMimoPs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       ULONG Value;
+       if (i == pAd->ChannelListNum)
+       {
+               pAd->CommonCfg.Channel = FirstChannel(pAd);
+               DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetPhyMode: channel is out of range, use first channel=%d \n", pAd->CommonCfg.Channel));
+       }
 
-       Value = simple_strtol(arg, 0, 10);
-       if (Value == 0)
-               pAd->CommonCfg.bMIMOPSEnable = FALSE;
-       else if (Value == 1)
-               pAd->CommonCfg.bMIMOPSEnable = TRUE;
-       else
-               return FALSE; //Invalid argument
+       NdisZeroMemory(pAd->CommonCfg.SupRate, MAX_LEN_OF_SUPPORTED_RATES);
+       NdisZeroMemory(pAd->CommonCfg.ExtRate, MAX_LEN_OF_SUPPORTED_RATES);
+       NdisZeroMemory(pAd->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
+       switch (phymode) {
+               case PHY_11B:
+                       pAd->CommonCfg.SupRate[0]  = 0x82;        // 1 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[1]  = 0x84;        // 2 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[2]  = 0x8B;        // 5.5 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[3]  = 0x96;        // 11 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRateLen  = 4;
+                       pAd->CommonCfg.ExtRateLen  = 0;
+                       pAd->CommonCfg.DesireRate[0]  = 2;         // 1 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[1]  = 4;         // 2 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
+                       //pAd->CommonCfg.HTPhyMode.field.MODE = MODE_CCK; // This MODE is only FYI. not use
+                       break;
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMimoPs_Proc::(HtMimoPs=%d)\n",pAd->CommonCfg.bMIMOPSEnable));
+               case PHY_11G:
+               case PHY_11BG_MIXED:
+               case PHY_11ABG_MIXED:
+               case PHY_11N_2_4G:
+               case PHY_11ABGN_MIXED:
+               case PHY_11BGN_MIXED:
+               case PHY_11GN_MIXED:
+                       pAd->CommonCfg.SupRate[0]  = 0x82;        // 1 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[1]  = 0x84;        // 2 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[2]  = 0x8B;        // 5.5 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[3]  = 0x96;        // 11 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[4]  = 0x12;        // 9 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[5]  = 0x24;        // 18 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[6]  = 0x48;        // 36 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[7]  = 0x6c;        // 54 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRateLen  = 8;
+                       pAd->CommonCfg.ExtRate[0]  = 0x0C;        // 6 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.ExtRate[1]  = 0x18;        // 12 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.ExtRate[2]  = 0x30;        // 24 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.ExtRate[3]  = 0x60;        // 48 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.ExtRateLen  = 4;
+                       pAd->CommonCfg.DesireRate[0]  = 2;         // 1 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[1]  = 4;         // 2 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[4]  = 12;    // 6 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[5]  = 18;    // 9 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[6]  = 24;    // 12 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[7]  = 36;    // 18 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[8]  = 48;    // 24 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[9]  = 72;    // 36 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[10] = 96;    // 48 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[11] = 108;   // 54 mbps, in units of 0.5 Mbps
+                       break;
 
-       return TRUE;
-}
+               case PHY_11A:
+               case PHY_11AN_MIXED:
+               case PHY_11AGN_MIXED:
+               case PHY_11N_5G:
+                       pAd->CommonCfg.SupRate[0]  = 0x8C;        // 6 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[1]  = 0x12;        // 9 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[2]  = 0x98;        // 12 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[3]  = 0x24;        // 18 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[4]  = 0xb0;        // 24 mbps, in units of 0.5 Mbps, basic rate
+                       pAd->CommonCfg.SupRate[5]  = 0x48;        // 36 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[6]  = 0x60;        // 48 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRate[7]  = 0x6c;        // 54 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.SupRateLen  = 8;
+                       pAd->CommonCfg.ExtRateLen  = 0;
+                       pAd->CommonCfg.DesireRate[0]  = 12;    // 6 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[1]  = 18;    // 9 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[2]  = 24;    // 12 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[3]  = 36;    // 18 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[4]  = 48;    // 24 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[5]  = 72;    // 36 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[6]  = 96;    // 48 mbps, in units of 0.5 Mbps
+                       pAd->CommonCfg.DesireRate[7]  = 108;   // 54 mbps, in units of 0.5 Mbps
+                       //pAd->CommonCfg.HTPhyMode.field.MODE = MODE_OFDM; // This MODE is only FYI. not use
+                       break;
 
-INT    SetCommonHT(
-       IN      PRTMP_ADAPTER   pAd)
-{
-       OID_SET_HT_PHYMODE              SetHT;
+               default:
+                       break;
+       }
 
-       if (pAd->CommonCfg.PhyMode < PHY_11ABGN_MIXED)
-               return FALSE;
 
-       SetHT.PhyMode = pAd->CommonCfg.PhyMode;
-       SetHT.TransmitNo = ((UCHAR)pAd->Antenna.field.TxPath);
-       SetHT.HtMode = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.HTMODE;
-       SetHT.ExtOffset = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
-       SetHT.MCS = MCS_AUTO;
-       SetHT.BW = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW;
-       SetHT.STBC = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.STBC;
-       SetHT.SHORTGI = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.ShortGI;
+       pAd->CommonCfg.BandState = UNKNOWN_BAND;
+}
 
-       RTMPSetHT(pAd, &SetHT);
+/*
+       ========================================================================
+       Routine Description:
+               Caller ensures we has 802.11n support.
+               Calls at setting HT from AP/STASetinformation
 
-       return TRUE;
-}
+       Arguments:
+               pAd - Pointer to our adapter
+               phymode  -
 
-INT    Set_FixedTxMode_Proc(
+       ========================================================================
+*/
+VOID   RTMPSetHT(
        IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
+       IN      OID_SET_HT_PHYMODE *pHTPhyMode)
 {
-       UCHAR   fix_tx_mode = FIXED_TXMODE_HT;
+       //ULONG *pmcs;
+       UINT32  Value = 0;
+       UCHAR   BBPValue = 0;
+       UCHAR   BBP3Value = 0;
+       UCHAR   RxStream = pAd->CommonCfg.RxStream;
 
-       if (strcmp(arg, "OFDM") == 0 || strcmp(arg, "ofdm") == 0)
+       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : HT_mode(%d), ExtOffset(%d), MCS(%d), BW(%d), STBC(%d), SHORTGI(%d)\n",
+                                                                               pHTPhyMode->HtMode, pHTPhyMode->ExtOffset,
+                                                                               pHTPhyMode->MCS, pHTPhyMode->BW,
+                                                                               pHTPhyMode->STBC, pHTPhyMode->SHORTGI));
+
+       // Don't zero supportedHyPhy structure.
+       RTMPZeroMemory(&pAd->CommonCfg.HtCapability, sizeof(pAd->CommonCfg.HtCapability));
+       RTMPZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
+       RTMPZeroMemory(&pAd->CommonCfg.NewExtChanOffset, sizeof(pAd->CommonCfg.NewExtChanOffset));
+       RTMPZeroMemory(&pAd->CommonCfg.DesiredHtPhy, sizeof(pAd->CommonCfg.DesiredHtPhy));
+
+       if (pAd->CommonCfg.bRdg)
        {
-               fix_tx_mode = FIXED_TXMODE_OFDM;
+               pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 1;
+               pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 1;
        }
-       else if (strcmp(arg, "CCK") == 0 || strcmp(arg, "cck") == 0)
+       else
        {
-        fix_tx_mode = FIXED_TXMODE_CCK;
+               pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 0;
+               pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 0;
        }
 
-       pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode = fix_tx_mode;
+       pAd->CommonCfg.HtCapability.HtCapParm.MaxRAmpduFactor = 3;
+       pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor = 3;
 
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_FixedTxMode_Proc::(FixedTxMode=%d)\n", fix_tx_mode));
+       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : RxBAWinLimit = %d\n", pAd->CommonCfg.BACapability.field.RxBAWinLimit));
 
-       return TRUE;
-}
+       // Mimo power save, A-MSDU size,
+       pAd->CommonCfg.DesiredHtPhy.AmsduEnable = (USHORT)pAd->CommonCfg.BACapability.field.AmsduEnable;
+       pAd->CommonCfg.DesiredHtPhy.AmsduSize = (UCHAR)pAd->CommonCfg.BACapability.field.AmsduSize;
+       pAd->CommonCfg.DesiredHtPhy.MimoPs = (UCHAR)pAd->CommonCfg.BACapability.field.MMPSmode;
+       pAd->CommonCfg.DesiredHtPhy.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
 
-#if defined(RT305x)||defined(RT3070)
-INT Set_HiPower_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-       pAdapter->CommonCfg.HighPowerPatchDisabled = !(simple_strtol(arg, 0, 10));
+       pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = (USHORT)pAd->CommonCfg.BACapability.field.AmsduSize;
+       pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = (USHORT)pAd->CommonCfg.BACapability.field.MMPSmode;
+       pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
 
-       if (pAdapter->CommonCfg.HighPowerPatchDisabled != 0)
+       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : AMsduSize = %d, MimoPs = %d, MpduDensity = %d, MaxRAmpduFactor = %d\n",
+                                                                                                       pAd->CommonCfg.DesiredHtPhy.AmsduSize,
+                                                                                                       pAd->CommonCfg.DesiredHtPhy.MimoPs,
+                                                                                                       pAd->CommonCfg.DesiredHtPhy.MpduDensity,
+                                                                                                       pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor));
+
+       if(pHTPhyMode->HtMode == HTMODE_GF)
        {
-               RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R82, 0x62);
-               RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R67, 0x20);
-#ifdef RT3070
-               if ((IS_RT3070(pAdapter) && ((pAdapter->MACVersion & 0xffff) < 0x0201)))
-#endif // RT3070 //
-               RT30xxWriteRFRegister(pAdapter, RF_R27, 0x23);
+               pAd->CommonCfg.HtCapability.HtCapInfo.GF = 1;
+               pAd->CommonCfg.DesiredHtPhy.GF = 1;
        }
-       return TRUE;
-}
-#endif
-
-INT Set_LongRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg)
-{
-       TX_RTY_CFG_STRUC        tx_rty_cfg;
-       UCHAR                           LongRetryLimit = (UCHAR)simple_strtol(arg, 0, 10);
-
-       RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word);
-       tx_rty_cfg.field.LongRtyLimit = LongRetryLimit;
-       RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word);
-       DBGPRINT(RT_DEBUG_TRACE, ("IF Set_LongRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word));
-       return TRUE;
-}
+       else
+               pAd->CommonCfg.DesiredHtPhy.GF = 0;
 
-INT Set_ShortRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg)
-{
-       TX_RTY_CFG_STRUC        tx_rty_cfg;
-       UCHAR                           ShortRetryLimit = (UCHAR)simple_strtol(arg, 0, 10);
+       // Decide Rx MCSSet
+       switch (RxStream)
+       {
+               case 1:
+                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0x00;
+                       break;
 
-       RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word);
-       tx_rty_cfg.field.ShortRtyLimit = ShortRetryLimit;
-       RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word);
-       DBGPRINT(RT_DEBUG_TRACE, ("IF Set_ShortRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word));
-       return TRUE;
-}
+               case 2:
+                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
+                       break;
 
+               case 3: // 3*3
+                       pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+                       pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
+                       pAd->CommonCfg.HtCapability.MCSSet[2] =  0xff;
+                       break;
+       }
 
-/////////////////////////////////////////////////////////////////////////
-PSTRING RTMPGetRalinkAuthModeStr(
-    IN  NDIS_802_11_AUTHENTICATION_MODE authMode)
-{
-       switch(authMode)
+       if (pAd->CommonCfg.bForty_Mhz_Intolerant && (pAd->CommonCfg.Channel <= 14) && (pHTPhyMode->BW == BW_40) )
        {
-               case Ndis802_11AuthModeOpen:
-                       return "OPEN";
-               case Ndis802_11AuthModeWPAPSK:
-                       return "WPAPSK";
-               case Ndis802_11AuthModeShared:
-                       return "SHARED";
-               case Ndis802_11AuthModeWPA:
-                       return "WPA";
-               case Ndis802_11AuthModeWPA2:
-                       return "WPA2";
-               case Ndis802_11AuthModeWPA2PSK:
-                       return "WPA2PSK";
-        case Ndis802_11AuthModeWPA1PSKWPA2PSK:
-                       return "WPAPSKWPA2PSK";
-        case Ndis802_11AuthModeWPA1WPA2:
-                       return "WPA1WPA2";
-               case Ndis802_11AuthModeWPANone:
-                       return "WPANONE";
-               default:
-                       return "UNKNOW";
+               pHTPhyMode->BW = BW_20;
+               pAd->CommonCfg.HtCapability.HtCapInfo.Forty_Mhz_Intolerant = 1;
        }
-}
 
-PSTRING RTMPGetRalinkEncryModeStr(
-    IN  USHORT encryMode)
-{
-       switch(encryMode)
+       if(pHTPhyMode->BW == BW_40)
        {
-               case Ndis802_11WEPDisabled:
-                       return "NONE";
-               case Ndis802_11WEPEnabled:
-                       return "WEP";
-               case Ndis802_11Encryption2Enabled:
-                       return "TKIP";
-               case Ndis802_11Encryption3Enabled:
-                       return "AES";
-        case Ndis802_11Encryption4Enabled:
-                       return "TKIPAES";
-               default:
-                       return "UNKNOW";
-       }
-}
+               pAd->CommonCfg.HtCapability.MCSSet[4] = 0x1; // MCS 32
+               pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 1;
+               if (pAd->CommonCfg.Channel <= 14)
+                       pAd->CommonCfg.HtCapability.HtCapInfo.CCKmodein40 = 1;
+
+               pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 1;
+               pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 1;
+               pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = (pHTPhyMode->ExtOffset == EXTCHA_BELOW)? (EXTCHA_BELOW): EXTCHA_ABOVE;
+               // Set Regsiter for extension channel position.
+               RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+               RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBP3Value);
+               if ((pHTPhyMode->ExtOffset == EXTCHA_BELOW))
+               {
+                       Value |= 0x1;
+                       BBP3Value |= (0x20);
+                       RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+               }
+               else if ((pHTPhyMode->ExtOffset == EXTCHA_ABOVE))
+               {
+                       Value &= 0xfe;
+                       BBP3Value &= (~0x20);
+                       RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+               }
 
-INT RTMPShowCfgValue(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 pName,
-       IN      PSTRING                 pBuf)
-{
-       INT     Status = 0;
+               // Turn on BBP 40MHz mode now only as AP .
+               // Sta can turn on BBP 40MHz after connection with 40MHz AP. Sta only broadcast 40MHz capability before connection.
+               if ((pAd->OpMode == OPMODE_AP) || INFRA_ON(pAd) || ADHOC_ON(pAd)
+                       )
+               {
+                       RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+                       BBPValue &= (~0x18);
+                       BBPValue |= 0x10;
+                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
 
-       for (PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC = RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC++)
+                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBP3Value);
+                       pAd->CommonCfg.BBPCurrentBW = BW_40;
+               }
+       }
+       else
        {
-               if (!strcmp(pName, PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name))
+               pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 0;
+               pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 0;
+               pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 0;
+               pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = EXTCHA_NONE;
+               pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+               // Turn on BBP 20MHz mode by request here.
                {
-                       if(PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->show_proc(pAd, pBuf))
-                               Status = -EINVAL;
-                       break;  //Exit for loop.
+                       RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+                       BBPValue &= (~0x18);
+                       RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+                       pAd->CommonCfg.BBPCurrentBW = BW_20;
                }
        }
 
-       if(PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name == NULL)
+       if(pHTPhyMode->STBC == STBC_USE)
+       {
+               pAd->CommonCfg.HtCapability.HtCapInfo.TxSTBC = 1;
+               pAd->CommonCfg.DesiredHtPhy.TxSTBC = 1;
+               pAd->CommonCfg.HtCapability.HtCapInfo.RxSTBC = 1;
+               pAd->CommonCfg.DesiredHtPhy.RxSTBC = 1;
+       }
+       else
        {
-               sprintf(pBuf, "\n");
-               for (PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC = RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC++)
-                       sprintf(pBuf + strlen(pBuf), "%s\n", PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name);
+               pAd->CommonCfg.DesiredHtPhy.TxSTBC = 0;
+               pAd->CommonCfg.DesiredHtPhy.RxSTBC = 0;
        }
 
-       return Status;
-}
+       if(pHTPhyMode->SHORTGI == GI_400)
+       {
+               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 1;
+               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 1;
+               pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 1;
+               pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 1;
+       }
+       else
+       {
+               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 0;
+               pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 0;
+               pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 0;
+               pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 0;
+       }
 
-INT    Show_SSID_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.Ssid);
-       return 0;
-}
+       // We support link adaptation for unsolicit MCS feedback, set to 2.
+       pAd->CommonCfg.HtCapability.ExtHtCapInfo.MCSFeedback = MCSFBK_NONE; //MCSFBK_UNSOLICIT;
+       pAd->CommonCfg.AddHTInfo.ControlChan = pAd->CommonCfg.Channel;
+       // 1, the extension channel above the control channel.
 
-INT    Show_WirelessMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.PhyMode)
+       // EDCA parameters used for AP's own transmission
+       if (pAd->CommonCfg.APEdcaParm.bValid == FALSE)
        {
-               case PHY_11BG_MIXED:
-                       sprintf(pBuf, "\t11B/G");
-                       break;
-               case PHY_11B:
-                       sprintf(pBuf, "\t11B");
-                       break;
-               case PHY_11A:
-                       sprintf(pBuf, "\t11A");
-                       break;
-               case PHY_11ABG_MIXED:
-                       sprintf(pBuf, "\t11A/B/G");
-                       break;
-               case PHY_11G:
-                       sprintf(pBuf, "\t11G");
-                       break;
-               case PHY_11ABGN_MIXED:
-                       sprintf(pBuf, "\t11A/B/G/N");
-                       break;
-               case PHY_11N_2_4G:
-                       sprintf(pBuf, "\t11N only with 2.4G");
-                       break;
-               case PHY_11GN_MIXED:
-                       sprintf(pBuf, "\t11G/N");
-                       break;
-               case PHY_11AN_MIXED:
-                       sprintf(pBuf, "\t11A/N");
-                       break;
-               case PHY_11BGN_MIXED:
-                       sprintf(pBuf, "\t11B/G/N");
-                       break;
-               case PHY_11AGN_MIXED:
-                       sprintf(pBuf, "\t11A/G/N");
-                       break;
-               case PHY_11N_5G:
-                       sprintf(pBuf, "\t11N only with 5G");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%d)", pAd->CommonCfg.PhyMode);
-                       break;
-       }
-       return 0;
-}
+               pAd->CommonCfg.APEdcaParm.bValid = TRUE;
+               pAd->CommonCfg.APEdcaParm.Aifsn[0] = 3;
+               pAd->CommonCfg.APEdcaParm.Aifsn[1] = 7;
+               pAd->CommonCfg.APEdcaParm.Aifsn[2] = 1;
+               pAd->CommonCfg.APEdcaParm.Aifsn[3] = 1;
 
+               pAd->CommonCfg.APEdcaParm.Cwmin[0] = 4;
+               pAd->CommonCfg.APEdcaParm.Cwmin[1] = 4;
+               pAd->CommonCfg.APEdcaParm.Cwmin[2] = 3;
+               pAd->CommonCfg.APEdcaParm.Cwmin[3] = 2;
 
-INT    Show_TxBurst_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.bEnableTxBurst ? "TRUE":"FALSE");
-       return 0;
-}
+               pAd->CommonCfg.APEdcaParm.Cwmax[0] = 6;
+               pAd->CommonCfg.APEdcaParm.Cwmax[1] = 10;
+               pAd->CommonCfg.APEdcaParm.Cwmax[2] = 4;
+               pAd->CommonCfg.APEdcaParm.Cwmax[3] = 3;
 
-INT    Show_TxPreamble_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.TxPreamble)
-       {
-               case Rt802_11PreambleShort:
-                       sprintf(pBuf, "\tShort");
-                       break;
-               case Rt802_11PreambleLong:
-                       sprintf(pBuf, "\tLong");
-                       break;
-               case Rt802_11PreambleAuto:
-                       sprintf(pBuf, "\tAuto");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%lu)", pAd->CommonCfg.TxPreamble);
-                       break;
+               pAd->CommonCfg.APEdcaParm.Txop[0]  = 0;
+               pAd->CommonCfg.APEdcaParm.Txop[1]  = 0;
+               pAd->CommonCfg.APEdcaParm.Txop[2]  = 94;
+               pAd->CommonCfg.APEdcaParm.Txop[3]  = 47;
        }
+       AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm);
 
-       return 0;
-}
-
-INT    Show_TxPower_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%lu", pAd->CommonCfg.TxPowerPercentage);
-       return 0;
-}
+               {
+       RTMPSetIndividualHT(pAd, 0);
+               }
 
-INT    Show_Channel_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%d", pAd->CommonCfg.Channel);
-       return 0;
 }
 
-INT    Show_BGProtection_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.UseBGProtection)
-       {
-               case 1: //Always On
-                       sprintf(pBuf, "\tON");
-                       break;
-               case 2: //Always OFF
-                       sprintf(pBuf, "\tOFF");
-                       break;
-               case 0: //AUTO
-                       sprintf(pBuf, "\tAuto");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%lu)", pAd->CommonCfg.UseBGProtection);
-                       break;
-       }
-       return 0;
-}
+/*
+       ========================================================================
+       Routine Description:
+               Caller ensures we has 802.11n support.
+               Calls at setting HT from AP/STASetinformation
 
-INT    Show_RTSThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%u", pAd->CommonCfg.RtsThreshold);
-       return 0;
-}
+       Arguments:
+               pAd - Pointer to our adapter
+               phymode  -
 
-INT    Show_FragThreshold_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
+       ========================================================================
+*/
+VOID   RTMPSetIndividualHT(
+       IN      PRTMP_ADAPTER           pAd,
+       IN      UCHAR                           apidx)
 {
-       sprintf(pBuf, "\t%u", pAd->CommonCfg.FragmentThreshold);
-       return 0;
-}
+       PRT_HT_PHY_INFO         pDesired_ht_phy = NULL;
+       UCHAR   TxStream = pAd->CommonCfg.TxStream;
+       UCHAR   DesiredMcs      = MCS_AUTO;
 
-INT    Show_HtBw_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
+       do
        {
-               sprintf(pBuf, "\t40 MHz");
-       }
-       else
+               {
+                       pDesired_ht_phy = &pAd->StaCfg.DesiredHtPhyInfo;
+                       DesiredMcs = pAd->StaCfg.DesiredTransmitSetting.field.MCS;
+                       //pAd->StaCfg.bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
+                               break;
+               }
+       } while (FALSE);
+
+       if (pDesired_ht_phy == NULL)
        {
-        sprintf(pBuf, "\t20 MHz");
+               DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetIndividualHT: invalid apidx(%d)\n", apidx));
+               return;
        }
-       return 0;
-}
-
-INT    Show_HtMcs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%u", pAd->StaCfg.DesiredTransmitSetting.field.MCS);
-       return 0;
-}
+       RTMPZeroMemory(pDesired_ht_phy, sizeof(RT_HT_PHY_INFO));
 
-INT    Show_HtGi_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.RegTransmitSetting.field.ShortGI)
+       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetIndividualHT : Desired MCS = %d\n", DesiredMcs));
+       // Check the validity of MCS
+       if ((TxStream == 1) && ((DesiredMcs >= MCS_8) && (DesiredMcs <= MCS_15)))
        {
-               case GI_400:
-                       sprintf(pBuf, "\tGI_400");
-                       break;
-               case GI_800:
-                       sprintf(pBuf, "\tGI_800");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.ShortGI);
-                       break;
+               DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS(%d) is invalid in 1S, reset it as MCS_7\n", DesiredMcs));
+               DesiredMcs = MCS_7;
        }
-       return 0;
-}
 
-INT    Show_HtOpMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.RegTransmitSetting.field.HTMODE)
+       if ((pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_20) && (DesiredMcs == MCS_32))
        {
-               case HTMODE_GF:
-                       sprintf(pBuf, "\tGF");
-                       break;
-               case HTMODE_MM:
-                       sprintf(pBuf, "\tMM");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.HTMODE);
-                       break;
+               DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS_32 is only supported in 40-MHz, reset it as MCS_0\n"));
+               DesiredMcs = MCS_0;
        }
-       return 0;
-}
 
-INT    Show_HtExtcha_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA)
+       pDesired_ht_phy->bHtEnable = TRUE;
+
+       // Decide desired Tx MCS
+       switch (TxStream)
        {
-               case EXTCHA_BELOW:
-                       sprintf(pBuf, "\tBelow");
+               case 1:
+                       if (DesiredMcs == MCS_AUTO)
+                       {
+                               pDesired_ht_phy->MCSSet[0]= 0xff;
+                               pDesired_ht_phy->MCSSet[1]= 0x00;
+                       }
+                       else if (DesiredMcs <= MCS_7)
+                       {
+                               pDesired_ht_phy->MCSSet[0]= 1<<DesiredMcs;
+                               pDesired_ht_phy->MCSSet[1]= 0x00;
+                       }
                        break;
-               case EXTCHA_ABOVE:
-                       sprintf(pBuf, "\tAbove");
+
+               case 2:
+                       if (DesiredMcs == MCS_AUTO)
+                       {
+                               pDesired_ht_phy->MCSSet[0]= 0xff;
+                               pDesired_ht_phy->MCSSet[1]= 0xff;
+                       }
+                       else if (DesiredMcs <= MCS_15)
+                       {
+                               ULONG mode;
+
+                               mode = DesiredMcs / 8;
+                               if (mode < 2)
+                                       pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+                       }
                        break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.EXTCHA);
+
+               case 3: // 3*3
+                       if (DesiredMcs == MCS_AUTO)
+                       {
+                               /* MCS0 ~ MCS23, 3 bytes */
+                               pDesired_ht_phy->MCSSet[0]= 0xff;
+                               pDesired_ht_phy->MCSSet[1]= 0xff;
+                               pDesired_ht_phy->MCSSet[2]= 0xff;
+                       }
+                       else if (DesiredMcs <= MCS_23)
+                       {
+                               ULONG mode;
+
+                               mode = DesiredMcs / 8;
+                               if (mode < 3)
+                                       pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+                       }
                        break;
        }
-       return 0;
-}
 
+       if(pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_40)
+       {
+               if (DesiredMcs == MCS_AUTO || DesiredMcs == MCS_32)
+                       pDesired_ht_phy->MCSSet[4] = 0x1;
+       }
 
-INT    Show_HtMpduDensity_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.MpduDensity);
-       return 0;
+       // update HT Rate setting
+    if (pAd->OpMode == OPMODE_STA)
+        MlmeUpdateHtTxRates(pAd, BSS0);
+    else
+           MlmeUpdateHtTxRates(pAd, apidx);
 }
 
-INT    Show_HtBaWinSize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.RxBAWinLimit);
-       return 0;
-}
 
-INT    Show_HtRdg_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.bRdg ? "TRUE":"FALSE");
-       return 0;
-}
+/*
+       ========================================================================
+       Routine Description:
+               Update HT IE from our capability.
 
-INT    Show_HtAmsdu_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AmsduEnable ? "TRUE":"FALSE");
-       return 0;
-}
+       Arguments:
+               Send all HT IE in beacon/probe rsp/assoc rsp/action frame.
 
-INT    Show_HtAutoBa_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AutoBA ? "TRUE":"FALSE");
-       return 0;
-}
 
-INT    Show_CountryRegion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
+       ========================================================================
+*/
+VOID   RTMPUpdateHTIE(
+       IN      RT_HT_CAPABILITY        *pRtHt,
+       IN              UCHAR                           *pMcsSet,
+       OUT             HT_CAPABILITY_IE *pHtCapability,
+       OUT             ADD_HT_INFO_IE          *pAddHtInfo)
 {
-       sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegion);
-       return 0;
-}
+       RTMPZeroMemory(pHtCapability, sizeof(HT_CAPABILITY_IE));
+       RTMPZeroMemory(pAddHtInfo, sizeof(ADD_HT_INFO_IE));
 
-INT    Show_CountryRegionABand_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegionForABand);
-       return 0;
-}
+               pHtCapability->HtCapInfo.ChannelWidth = pRtHt->ChannelWidth;
+               pHtCapability->HtCapInfo.MimoPs = pRtHt->MimoPs;
+               pHtCapability->HtCapInfo.GF = pRtHt->GF;
+               pHtCapability->HtCapInfo.ShortGIfor20 = pRtHt->ShortGIfor20;
+               pHtCapability->HtCapInfo.ShortGIfor40 = pRtHt->ShortGIfor40;
+               pHtCapability->HtCapInfo.TxSTBC = pRtHt->TxSTBC;
+               pHtCapability->HtCapInfo.RxSTBC = pRtHt->RxSTBC;
+               pHtCapability->HtCapInfo.AMsduSize = pRtHt->AmsduSize;
+               pHtCapability->HtCapParm.MaxRAmpduFactor = pRtHt->MaxRAmpduFactor;
+               pHtCapability->HtCapParm.MpduDensity = pRtHt->MpduDensity;
 
-INT    Show_CountryCode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.CountryCode);
-       return 0;
-}
+               pAddHtInfo->AddHtInfo.ExtChanOffset = pRtHt->ExtChanOffset ;
+               pAddHtInfo->AddHtInfo.RecomWidth = pRtHt->RecomWidth;
+               pAddHtInfo->AddHtInfo2.OperaionMode = pRtHt->OperaionMode;
+               pAddHtInfo->AddHtInfo2.NonGfPresent = pRtHt->NonGfPresent;
+               RTMPMoveMemory(pAddHtInfo->MCSSet, /*pRtHt->MCSSet*/pMcsSet, 4); // rt2860 only support MCS max=32, no need to copy all 16 uchar.
 
-#ifdef AGGREGATION_SUPPORT
-INT    Show_PktAggregate_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.bAggregationCapable ? "TRUE":"FALSE");
-       return 0;
+        DBGPRINT(RT_DEBUG_TRACE,("RTMPUpdateHTIE <== \n"));
 }
-#endif // AGGREGATION_SUPPORT //
 
-#ifdef WMM_SUPPORT
-INT    Show_WmmCapable_Proc(
+/*
+       ========================================================================
+       Description:
+               Add Client security information into ASIC WCID table and IVEIV table.
+    Return:
+       ========================================================================
+*/
+VOID   RTMPAddWcidAttributeEntry(
        IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
+       IN      UCHAR                   BssIdx,
+       IN      UCHAR                   KeyIdx,
+       IN      UCHAR                   CipherAlg,
+       IN      MAC_TABLE_ENTRY *pEntry)
 {
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.bWmmCapable ? "TRUE":"FALSE");
+       UINT32          WCIDAttri = 0;
+       USHORT          offset;
+       UCHAR           IVEIV = 0;
+       USHORT          Wcid = 0;
 
-       return 0;
-}
-#endif // WMM_SUPPORT //
+       {
+               {
+                       if (BssIdx > BSS0)
+                       {
+                               DBGPRINT(RT_DEBUG_ERROR, ("RTMPAddWcidAttributeEntry: The BSS-index(%d) is out of range for Infra link. \n", BssIdx));
+                               return;
+                       }
 
-INT    Show_IEEE80211H_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       sprintf(pBuf, "\t%s", pAd->CommonCfg.bIEEE80211H ? "TRUE":"FALSE");
-       return 0;
-}
+                       // 1.   In ADHOC mode, the AID is wcid number. And NO mesh link exists.
+                       // 2.   In Infra mode, the AID:1 MUST be wcid of infra STA.
+                       //                                         the AID:2~ assign to mesh link entry.
+                       if (pEntry)
+                               Wcid = pEntry->Aid;
+                       else
+                               Wcid = MCAST_WCID;
+               }
+       }
+
+       // Update WCID attribute table
+       offset = MAC_WCID_ATTRIBUTE_BASE + (Wcid * HW_WCID_ATTRI_SIZE);
 
-INT    Show_NetworkType_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       switch(pAd->StaCfg.BssType)
        {
-               case BSS_ADHOC:
-                       sprintf(pBuf, "\tAdhoc");
-                       break;
-               case BSS_INFRA:
-                       sprintf(pBuf, "\tInfra");
-                       break;
-               case BSS_ANY:
-                       sprintf(pBuf, "\tAny");
-                       break;
-               case BSS_MONITOR:
-                       sprintf(pBuf, "\tMonitor");
-                       break;
-               default:
-                       sprintf(pBuf, "\tUnknow Value(%d)", pAd->StaCfg.BssType);
-                       break;
+               if (pEntry && pEntry->ValidAsMesh)
+                       WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
+               else
+                       WCIDAttri = (CipherAlg<<1) | SHAREDKEYTABLE;
        }
-       return 0;
-}
-
 
+       RTMP_IO_WRITE32(pAd, offset, WCIDAttri);
 
-INT    Show_AuthMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       NDIS_802_11_AUTHENTICATION_MODE AuthMode = Ndis802_11AuthModeOpen;
 
-       AuthMode = pAd->StaCfg.AuthMode;
+       // Update IV/EIV table
+       offset = MAC_IVEIV_TABLE_BASE + (Wcid * HW_IVEIV_ENTRY_SIZE);
 
-       if ((AuthMode >= Ndis802_11AuthModeOpen) &&
-               (AuthMode <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
-               sprintf(pBuf, "\t%s", RTMPGetRalinkAuthModeStr(AuthMode));
+       // WPA mode
+       if ((CipherAlg == CIPHER_TKIP) || (CipherAlg == CIPHER_TKIP_NO_MIC) || (CipherAlg == CIPHER_AES))
+       {
+               // Eiv bit on. keyid always is 0 for pairwise key
+               IVEIV = (KeyIdx <<6) | 0x20;
+       }
        else
-               sprintf(pBuf, "\tUnknow Value(%d)", AuthMode);
-
-       return 0;
-}
-
-INT    Show_EncrypType_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       NDIS_802_11_WEP_STATUS  WepStatus = Ndis802_11WEPDisabled;
+       {
+               // WEP KeyIdx is default tx key.
+               IVEIV = (KeyIdx << 6);
+       }
 
-       WepStatus = pAd->StaCfg.WepStatus;
+       // For key index and ext IV bit, so only need to update the position(offset+3).
+#ifdef RTMP_MAC_PCI
+       RTMP_IO_WRITE8(pAd, offset+3, IVEIV);
+#endif // RTMP_MAC_PCI //
+#ifdef RTMP_MAC_USB
+       RTUSBMultiWrite_OneByte(pAd, offset+3, &IVEIV);
+#endif // RTMP_MAC_USB //
 
-       if ((WepStatus >= Ndis802_11WEPEnabled) &&
-               (WepStatus <= Ndis802_11Encryption4KeyAbsent))
-               sprintf(pBuf, "\t%s", RTMPGetRalinkEncryModeStr(WepStatus));
-       else
-               sprintf(pBuf, "\tUnknow Value(%d)", WepStatus);
+       DBGPRINT(RT_DEBUG_TRACE,("RTMPAddWcidAttributeEntry: WCID #%d, KeyIndex #%d, Alg=%s\n",Wcid, KeyIdx, CipherName[CipherAlg]));
+       DBGPRINT(RT_DEBUG_TRACE,("      WCIDAttri = 0x%x \n",  WCIDAttri));
 
-       return 0;
 }
 
-INT    Show_DefaultKeyID_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       UCHAR DefaultKeyId = 0;
-
-       DefaultKeyId = pAd->StaCfg.DefaultKeyId;
-
-       sprintf(pBuf, "\t%d", DefaultKeyId);
+/*
+    ==========================================================================
+    Description:
+        Parse encryption type
+Arguments:
+    pAdapter                    Pointer to our adapter
+    wrq                         Pointer to the ioctl argument
 
-       return 0;
-}
+    Return Value:
+        None
 
-INT    Show_WepKey_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN  INT                         KeyIdx,
-       OUT     PSTRING                 pBuf)
+    Note:
+    ==========================================================================
+*/
+PSTRING GetEncryptType(CHAR enc)
 {
-       UCHAR   Key[16] = {0}, KeyLength = 0;
-       INT             index = BSS0;
-
-       KeyLength = pAd->SharedKey[index][KeyIdx].KeyLen;
-       NdisMoveMemory(Key, pAd->SharedKey[index][KeyIdx].Key, KeyLength);
-
-       //check key string is ASCII or not
-    if (RTMPCheckStrPrintAble((PCHAR)Key, KeyLength))
-        sprintf(pBuf, "\t%s", Key);
+    if(enc == Ndis802_11WEPDisabled)
+        return "NONE";
+    if(enc == Ndis802_11WEPEnabled)
+       return "WEP";
+    if(enc == Ndis802_11Encryption2Enabled)
+       return "TKIP";
+    if(enc == Ndis802_11Encryption3Enabled)
+       return "AES";
+       if(enc == Ndis802_11Encryption4Enabled)
+       return "TKIPAES";
     else
-    {
-        int idx;
-        sprintf(pBuf, "\t");
-        for (idx = 0; idx < KeyLength; idx++)
-            sprintf(pBuf+strlen(pBuf), "%02X", Key[idx]);
-    }
-       return 0;
-}
-
-INT    Show_Key1_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       Show_WepKey_Proc(pAd, 0, pBuf);
-       return 0;
+       return "UNKNOW";
 }
 
-INT    Show_Key2_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
+PSTRING GetAuthMode(CHAR auth)
 {
-       Show_WepKey_Proc(pAd, 1, pBuf);
-       return 0;
-}
+    if(auth == Ndis802_11AuthModeOpen)
+       return "OPEN";
+    if(auth == Ndis802_11AuthModeShared)
+       return "SHARED";
+       if(auth == Ndis802_11AuthModeAutoSwitch)
+       return "AUTOWEP";
+    if(auth == Ndis802_11AuthModeWPA)
+       return "WPA";
+    if(auth == Ndis802_11AuthModeWPAPSK)
+       return "WPAPSK";
+    if(auth == Ndis802_11AuthModeWPANone)
+       return "WPANONE";
+    if(auth == Ndis802_11AuthModeWPA2)
+       return "WPA2";
+    if(auth == Ndis802_11AuthModeWPA2PSK)
+       return "WPA2PSK";
+       if(auth == Ndis802_11AuthModeWPA1WPA2)
+       return "WPA1WPA2";
+       if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)
+       return "WPA1PSKWPA2PSK";
 
-INT    Show_Key3_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       Show_WepKey_Proc(pAd, 2, pBuf);
-       return 0;
+       return "UNKNOW";
 }
 
-INT    Show_Key4_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
+INT    SetCommonHT(
+       IN      PRTMP_ADAPTER   pAd)
 {
-       Show_WepKey_Proc(pAd, 3, pBuf);
-       return 0;
-}
+       OID_SET_HT_PHYMODE              SetHT;
 
-INT    Show_WPAPSK_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       OUT     PSTRING                 pBuf)
-{
-       INT     idx;
-       UCHAR   PMK[32] = {0};
+       if (pAd->CommonCfg.PhyMode < PHY_11ABGN_MIXED)
+               return FALSE;
 
-       NdisMoveMemory(PMK, pAd->StaCfg.PMK, 32);
+       SetHT.PhyMode = pAd->CommonCfg.PhyMode;
+       SetHT.TransmitNo = ((UCHAR)pAd->Antenna.field.TxPath);
+       SetHT.HtMode = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.HTMODE;
+       SetHT.ExtOffset = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
+       SetHT.MCS = MCS_AUTO;
+       SetHT.BW = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW;
+       SetHT.STBC = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.STBC;
+       SetHT.SHORTGI = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.ShortGI;
 
-    sprintf(pBuf, "\tPMK = ");
-    for (idx = 0; idx < 32; idx++)
-        sprintf(pBuf+strlen(pBuf), "%02X", PMK[idx]);
+       RTMPSetHT(pAd, &SetHT);
 
-       return 0;
+       return TRUE;
 }
 
+PSTRING RTMPGetRalinkEncryModeStr(
+    IN  USHORT encryMode)
+{
+       switch(encryMode)
+       {
+               case Ndis802_11WEPDisabled:
+                       return "NONE";
+               case Ndis802_11WEPEnabled:
+                       return "WEP";
+               case Ndis802_11Encryption2Enabled:
+                       return "TKIP";
+               case Ndis802_11Encryption3Enabled:
+                       return "AES";
+        case Ndis802_11Encryption4Enabled:
+                       return "TKIPAES";
+               default:
+                       return "UNKNOW";
+       }
+}
index 32e553a946b4a463174641f887af76b3102cae64..59fd05bf98049149b7ccf9abf76c2d7504f056d6 100644 (file)
@@ -4237,17 +4237,9 @@ INT RT_CfgSetWPAPSKKey(
 //
 // Prototypes of function definition in cmm_info.c
 //
-NDIS_STATUS RTMPWPARemoveKeyProc(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  PVOID           pBuf);
-
 VOID    RTMPWPARemoveAllKeys(
        IN  PRTMP_ADAPTER   pAd);
 
-BOOLEAN RTMPCheckStrPrintAble(
-    IN  CHAR *pInPutStr,
-    IN  UCHAR strLen);
-
 VOID    RTMPSetPhyMode(
        IN  PRTMP_ADAPTER   pAd,
        IN  ULONG phymode);
@@ -4683,183 +4675,9 @@ int rtinet_aton(
        unsigned int *addr);
 
 ////////// common ioctl functions //////////
-INT Set_DriverVersion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_CountryRegion_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_CountryRegionABand_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_WirelessMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_Channel_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_ShortSlot_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_TxPower_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_BGProtection_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-
-INT Set_TxPreamble_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-
-INT Set_RTSThreshold_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-
-INT Set_FragThreshold_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-
-INT Set_TxBurst_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-
-#ifdef AGGREGATION_SUPPORT
-INT    Set_PktAggregate_Proc(
-       IN  PRTMP_ADAPTER               pAd,
-       IN  PSTRING                     arg);
-#endif // AGGREGATION_SUPPORT //
-
-INT    Set_IEEE80211H_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-#ifdef DBG
-INT    Set_Debug_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-#endif
-
-INT    Show_DescInfo_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_ResetStatCounter_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_BASetup_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_BADecline_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_BAOriTearDown_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_BARecTearDown_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtBw_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtMcs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtGi_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtOpMode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtStbc_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtHtc_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtExtcha_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtMpduDensity_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtBaWinSize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtRdg_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtLinkAdapt_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtAmsdu_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtAutoBa_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtProtect_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtMimoPs_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-
-INT    Set_ForceShortGI_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_ForceGF_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
 INT    SetCommonHT(
        IN      PRTMP_ADAPTER   pAd);
 
-INT    Set_SendPSMPAction_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtMIMOPSmode_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-
-INT    Set_HtTxBASize_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT    Set_HtDisallowTKIP_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
 INT        WpaCheckEapCode(
        IN  PRTMP_ADAPTER       pAd,
        IN  PUCHAR                              pFrame,
@@ -5103,15 +4921,6 @@ INT      Set_FixedTxMode_Proc(
        IN      PRTMP_ADAPTER   pAd,
        IN      PSTRING                 arg);
 
-
-INT Set_LongRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg);
-
-INT Set_ShortRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg);
-
 BOOLEAN RT28XXChipsetCheck(
        IN void *_dev_p);
 
@@ -5661,19 +5470,6 @@ void RtmpTimerQInit(
        IN RTMP_ADAPTER *pAd);
 #endif // RTMP_TIMER_TASK_SUPPORT //
 
-///////////////////////////////////////
-INT RTMPShowCfgValue(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 pName,
-       IN      PSTRING                 pBuf);
-
-PSTRING RTMPGetRalinkAuthModeStr(
-    IN  NDIS_802_11_AUTHENTICATION_MODE authMode);
-
-PSTRING RTMPGetRalinkEncryModeStr(
-    IN  USHORT encryMode);
-//////////////////////////////////////
-
 VOID AsicStaBbpTuning(
        IN PRTMP_ADAPTER pAd);
 
index a3aeb1ea63a35de78471e828e93c7e85d82a8b06..df6130c981cd79522ea175e009441675920d3465 100644 (file)
@@ -61,42 +61,6 @@ typedef struct PACKED _RT_VERSION_INFO{
     UINT        DriverBuildDay;
 } RT_VERSION_INFO, *PRT_VERSION_INFO;
 
-struct iw_priv_args privtab[] = {
-{ RTPRIV_IOCTL_SET,
-  IW_PRIV_TYPE_CHAR | 1024, 0,
-  "set"},
-
-{ RTPRIV_IOCTL_SHOW, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
-  ""},
-/* --- sub-ioctls definitions --- */
-    { SHOW_CONN_STATUS,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "connStatus" },
-       { SHOW_DRVIER_VERION,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "driverVer" },
-    { SHOW_BA_INFO,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "bainfo" },
-       { SHOW_DESC_INFO,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "descinfo" },
-    { RAIO_OFF,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_off" },
-       { RAIO_ON,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_on" },
-       { SHOW_CFG_VALUE,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "show" },
-       { SHOW_ADHOC_ENTRY_INFO,
-         IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "adhocEntry" },
-/* --- sub-ioctls relations --- */
-
-{ RTPRIV_IOCTL_STATISTICS,
-  0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
-  "stat"},
-{ RTPRIV_IOCTL_GSITESURVEY,
-  0, IW_PRIV_TYPE_CHAR | 1024,
-  "get_site_survey"},
-
-
-};
-
 static __s32 ralinkrate[] =
        {2,  4,   11,  22, // CCK
        12, 18,   24,  36, 48, 72, 96, 108, // OFDM
@@ -113,190 +77,10 @@ INT Set_SSID_Proc(
     IN  PRTMP_ADAPTER   pAdapter,
     IN  PSTRING          arg);
 
-#ifdef WMM_SUPPORT
-INT    Set_WmmCapable_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-#endif
-
 INT Set_NetworkType_Proc(
     IN  PRTMP_ADAPTER   pAdapter,
     IN  PSTRING          arg);
 
-INT Set_AuthMode_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_EncrypType_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_DefaultKeyID_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_Key1_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_Key2_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_Key3_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_Key4_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_WPAPSK_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-
-INT Set_PSMode_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-#ifdef RT3090
-INT Set_PCIePSLevel_Proc(
-IN  PRTMP_ADAPTER   pAdapter,
-IN  PUCHAR          arg);
-#endif // RT3090 //
-
-INT Set_Wpa_Support(
-    IN PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-NDIS_STATUS RTMPWPANoneAddKeyProc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN PVOID                   pBuf);
-
-INT Set_FragTest_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg);
-
-INT Set_TGnWifiTest_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING          arg);
-
-INT Set_LongRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg);
-
-INT Set_ShortRetryLimit_Proc(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PSTRING                 arg);
-
-
-
-INT    Show_Adhoc_MacTable_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 extra);
-
-INT Set_BeaconLostTime_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg);
-
-INT Set_AutoRoaming_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg);
-
-INT Set_SiteSurvey_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg);
-
-INT Set_ForceTxBurst_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg);
-
-static struct {
-       PSTRING name;
-       INT (*set_proc)(PRTMP_ADAPTER pAdapter, PSTRING arg);
-} *PRTMP_PRIVATE_SET_PROC, RTMP_PRIVATE_SUPPORT_PROC[] = {
-       {"DriverVersion",                               Set_DriverVersion_Proc},
-       {"CountryRegion",                               Set_CountryRegion_Proc},
-       {"CountryRegionABand",                  Set_CountryRegionABand_Proc},
-       {"SSID",                                                Set_SSID_Proc},
-       {"WirelessMode",                                Set_WirelessMode_Proc},
-       {"TxBurst",                                     Set_TxBurst_Proc},
-       {"TxPreamble",                          Set_TxPreamble_Proc},
-       {"TxPower",                                     Set_TxPower_Proc},
-       {"Channel",                                     Set_Channel_Proc},
-       {"BGProtection",                                Set_BGProtection_Proc},
-       {"RTSThreshold",                                Set_RTSThreshold_Proc},
-       {"FragThreshold",                               Set_FragThreshold_Proc},
-       {"HtBw",                                Set_HtBw_Proc},
-       {"HtMcs",                               Set_HtMcs_Proc},
-       {"HtGi",                                Set_HtGi_Proc},
-       {"HtOpMode",                        Set_HtOpMode_Proc},
-       {"HtExtcha",                        Set_HtExtcha_Proc},
-       {"HtMpduDensity",                       Set_HtMpduDensity_Proc},
-       {"HtBaWinSize",                         Set_HtBaWinSize_Proc},
-       {"HtRdg",                                       Set_HtRdg_Proc},
-       {"HtAmsdu",                                     Set_HtAmsdu_Proc},
-       {"HtAutoBa",                            Set_HtAutoBa_Proc},
-       {"HtBaDecline",                                 Set_BADecline_Proc},
-       {"HtProtect",                           Set_HtProtect_Proc},
-       {"HtMimoPs",                            Set_HtMimoPs_Proc},
-       {"HtDisallowTKIP",                              Set_HtDisallowTKIP_Proc},
-#ifdef AGGREGATION_SUPPORT
-       {"PktAggregate",                                Set_PktAggregate_Proc},
-#endif // AGGREGATION_SUPPORT //
-
-#ifdef WMM_SUPPORT
-       {"WmmCapable",                                  Set_WmmCapable_Proc},
-#endif
-       {"IEEE80211H",                                  Set_IEEE80211H_Proc},
-    {"NetworkType",                 Set_NetworkType_Proc},
-       {"AuthMode",                                    Set_AuthMode_Proc},
-       {"EncrypType",                                  Set_EncrypType_Proc},
-       {"DefaultKeyID",                                Set_DefaultKeyID_Proc},
-       {"Key1",                                                Set_Key1_Proc},
-       {"Key2",                                                Set_Key2_Proc},
-       {"Key3",                                                Set_Key3_Proc},
-       {"Key4",                                                Set_Key4_Proc},
-       {"WPAPSK",                                              Set_WPAPSK_Proc},
-       {"ResetCounter",                                Set_ResetStatCounter_Proc},
-       {"PSMode",                      Set_PSMode_Proc},
-#ifdef DBG
-       {"Debug",                                               Set_Debug_Proc},
-#endif // DBG //
-
-
-    {"WpaSupport",                  Set_Wpa_Support},
-
-
-
-
-
-       {"FixedTxMode",                 Set_FixedTxMode_Proc},
-    {"TGnWifiTest",                 Set_TGnWifiTest_Proc},
-    {"ForceGF",                                        Set_ForceGF_Proc},
-       {"LongRetry",                           Set_LongRetryLimit_Proc},
-       {"ShortRetry",                          Set_ShortRetryLimit_Proc},
-
-//2008/09/11:KH add to support efuse<--
-#ifdef RT30xx
-#ifdef RTMP_EFUSE_SUPPORT
-       {"efuseFreeNumber",                             set_eFuseGetFreeBlockCount_Proc},
-       {"efuseDump",                                   set_eFusedump_Proc},
-       {"efuseLoadFromBin",                            set_eFuseLoadFromBin_Proc},
-       {"efuseBufferModeWriteBack",            set_eFuseBufferModeWriteBack_Proc},
-#endif // RTMP_EFUSE_SUPPORT //
-#endif // RT30xx //
-//2008/09/11:KH add to support efuse-->
-       {"BeaconLostTime",                              Set_BeaconLostTime_Proc},
-       {"AutoRoaming",                                 Set_AutoRoaming_Proc},
-       {"SiteSurvey",                                  Set_SiteSurvey_Proc},
-       {"ForceTxBurst",                                Set_ForceTxBurst_Proc},
-
-       {NULL,}
-};
-
-
 VOID RTMPAddKey(
        IN      PRTMP_ADAPTER       pAd,
        IN      PNDIS_802_11_KEY    pKey)
@@ -1656,117 +1440,6 @@ rt_ioctl_giwencode(struct net_device *dev,
 
 }
 
-static int
-rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
-                        void *w, char *extra)
-{
-       PRTMP_ADAPTER pAdapter;
-       POS_COOKIE pObj;
-       PSTRING this_char = extra;
-       PSTRING value;
-       int  Status=0;
-
-       GET_PAD_FROM_NET_DEV(pAdapter, dev);
-
-       pObj = (POS_COOKIE) pAdapter->OS_Cookie;
-       {
-               pObj->ioctl_if_type = INT_MAIN;
-        pObj->ioctl_if = MAIN_MBSSID;
-       }
-
-       //check if the interface is down
-       if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
-       {
-               DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
-                       return -ENETDOWN;
-       }
-
-       if (!*this_char)
-               return -EINVAL;
-
-       if ((value = rtstrchr(this_char, '=')) != NULL)
-           *value++ = 0;
-
-       if (!value && (strcmp(this_char, "SiteSurvey") != 0))
-           return -EINVAL;
-       else
-               goto SET_PROC;
-
-       // reject setting nothing besides ANY ssid(ssidLen=0)
-    if (!*value && (strcmp(this_char, "SSID") != 0))
-        return -EINVAL;
-
-SET_PROC:
-       for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++)
-       {
-           if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0)
-           {
-               if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value))
-               {       //FALSE:Set private failed then return Invalid argument
-                           Status = -EINVAL;
-               }
-                   break;      //Exit for loop.
-           }
-       }
-
-       if(PRTMP_PRIVATE_SET_PROC->name == NULL)
-       {  //Not found argument
-           Status = -EINVAL;
-           DBGPRINT(RT_DEBUG_TRACE, ("===>rt_ioctl_setparam:: (iwpriv) Not Support Set Command [%s=%s]\n", this_char, value));
-       }
-
-    return Status;
-}
-
-
-static int
-rt_private_get_statistics(struct net_device *dev, struct iw_request_info *info,
-               struct iw_point *wrq, char *extra)
-{
-       INT                             Status = 0;
-    PRTMP_ADAPTER   pAd = NULL;
-
-       GET_PAD_FROM_NET_DEV(pAd, dev);
-
-    if (extra == NULL)
-    {
-        wrq->length = 0;
-        return -EIO;
-    }
-
-    memset(extra, 0x00, IW_PRIV_SIZE_MASK);
-    sprintf(extra, "\n\n");
-
-       {
-    sprintf(extra+strlen(extra), "Tx success                      = %ld\n", (ULONG)pAd->WlanCounters.TransmittedFragmentCount.QuadPart);
-    sprintf(extra+strlen(extra), "Tx success without retry        = %ld\n", (ULONG)pAd->WlanCounters.TransmittedFragmentCount.QuadPart - (ULONG)pAd->WlanCounters.RetryCount.QuadPart);
-       }
-    sprintf(extra+strlen(extra), "Tx success after retry          = %ld\n", (ULONG)pAd->WlanCounters.RetryCount.QuadPart);
-    sprintf(extra+strlen(extra), "Tx fail to Rcv ACK after retry  = %ld\n", (ULONG)pAd->WlanCounters.FailedCount.QuadPart);
-    sprintf(extra+strlen(extra), "RTS Success Rcv CTS             = %ld\n", (ULONG)pAd->WlanCounters.RTSSuccessCount.QuadPart);
-    sprintf(extra+strlen(extra), "RTS Fail Rcv CTS                = %ld\n", (ULONG)pAd->WlanCounters.RTSFailureCount.QuadPart);
-
-    sprintf(extra+strlen(extra), "Rx success                      = %ld\n", (ULONG)pAd->WlanCounters.ReceivedFragmentCount.QuadPart);
-    sprintf(extra+strlen(extra), "Rx with CRC                     = %ld\n", (ULONG)pAd->WlanCounters.FCSErrorCount.QuadPart);
-    sprintf(extra+strlen(extra), "Rx drop due to out of resource  = %ld\n", (ULONG)pAd->Counters8023.RxNoBuffer);
-    sprintf(extra+strlen(extra), "Rx duplicate frame              = %ld\n", (ULONG)pAd->WlanCounters.FrameDuplicateCount.QuadPart);
-
-    sprintf(extra+strlen(extra), "False CCA (one second)          = %ld\n", (ULONG)pAd->RalinkCounters.OneSecFalseCCACnt);
-       {
-       sprintf(extra+strlen(extra), "RSSI-A                          = %ld\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi0 - pAd->BbpRssiToDbmDelta));
-        sprintf(extra+strlen(extra), "RSSI-B (if available)           = %ld\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi1 - pAd->BbpRssiToDbmDelta));
-        sprintf(extra+strlen(extra), "RSSI-C (if available)           = %ld\n\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi2 - pAd->BbpRssiToDbmDelta));
-       }
-    sprintf(extra+strlen(extra), "WpaSupplicantUP                 = %d\n\n", pAd->StaCfg.WpaSupplicantUP);
-
-
-
-    wrq->length = strlen(extra) + 1; // 1: size of '\0'
-    DBGPRINT(RT_DEBUG_TRACE, ("<== rt_private_get_statistics, wrq->length = %d\n", wrq->length));
-
-    return Status;
-}
-
 void   getBaInfo(
        IN      PRTMP_ADAPTER   pAd,
        IN      PSTRING                 pOutBuf)
@@ -1814,143 +1487,6 @@ void    getBaInfo(
        return;
 }
 
-static int
-rt_private_show(struct net_device *dev, struct iw_request_info *info,
-               struct iw_point *wrq, PSTRING extra)
-{
-    INT                                Status = 0;
-       PRTMP_ADAPTER   pAd;
-       POS_COOKIE              pObj;
-    u32             subcmd = wrq->flags;
-
-       GET_PAD_FROM_NET_DEV(pAd, dev);
-
-       pObj = (POS_COOKIE) pAd->OS_Cookie;
-    if (extra == NULL)
-    {
-        wrq->length = 0;
-        return -EIO;
-    }
-    memset(extra, 0x00, IW_PRIV_SIZE_MASK);
-
-       {
-               pObj->ioctl_if_type = INT_MAIN;
-        pObj->ioctl_if = MAIN_MBSSID;
-       }
-
-    switch(subcmd)
-    {
-
-        case SHOW_CONN_STATUS:
-            if (MONITOR_ON(pAd))
-            {
-                if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
-                    pAd->CommonCfg.RegTransmitSetting.field.BW)
-                    sprintf(extra, "Monitor Mode(CentralChannel %d)\n", pAd->CommonCfg.CentralChannel);
-                else
-                    sprintf(extra, "Monitor Mode(Channel %d)\n", pAd->CommonCfg.Channel);
-            }
-            else
-            {
-                if (pAd->IndicateMediaState == NdisMediaStateConnected)
-               {
-                   if (INFRA_ON(pAd))
-                    {
-                    sprintf(extra, "Connected(AP: %s[%02X:%02X:%02X:%02X:%02X:%02X])\n",
-                                    pAd->CommonCfg.Ssid,
-                                    pAd->CommonCfg.Bssid[0],
-                                    pAd->CommonCfg.Bssid[1],
-                                    pAd->CommonCfg.Bssid[2],
-                                    pAd->CommonCfg.Bssid[3],
-                                    pAd->CommonCfg.Bssid[4],
-                                    pAd->CommonCfg.Bssid[5]);
-                       DBGPRINT(RT_DEBUG_TRACE ,("Ssid=%s ,Ssidlen = %d\n",pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen));
-               }
-                    else if (ADHOC_ON(pAd))
-                        sprintf(extra, "Connected\n");
-               }
-               else
-               {
-                   sprintf(extra, "Disconnected\n");
-                       DBGPRINT(RT_DEBUG_TRACE ,("ConnStatus is not connected\n"));
-               }
-            }
-            wrq->length = strlen(extra) + 1; // 1: size of '\0'
-            break;
-        case SHOW_DRVIER_VERION:
-            sprintf(extra, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
-            wrq->length = strlen(extra) + 1; // 1: size of '\0'
-            break;
-        case SHOW_BA_INFO:
-            getBaInfo(pAd, extra);
-            wrq->length = strlen(extra) + 1; // 1: size of '\0'
-            break;
-               case SHOW_DESC_INFO:
-                       {
-                               Show_DescInfo_Proc(pAd, NULL);
-                               wrq->length = 0; // 1: size of '\0'
-                       }
-                       break;
-        case RAIO_OFF:
-            if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
-            {
-                if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
-                       {
-                           RTMP_MLME_RESET_STATE_MACHINE(pAd);
-                           DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
-                       }
-            }
-            pAd->StaCfg.bSwRadio = FALSE;
-            if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
-            {
-                pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
-                if (pAd->StaCfg.bRadio == FALSE)
-                {
-                    MlmeRadioOff(pAd);
-                    // Update extra information
-                                       pAd->ExtraInfo = SW_RADIO_OFF;
-                }
-            }
-            sprintf(extra, "Radio Off\n");
-            wrq->length = strlen(extra) + 1; // 1: size of '\0'
-            break;
-        case RAIO_ON:
-            pAd->StaCfg.bSwRadio = TRUE;
-            //if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
-            {
-                pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
-                if (pAd->StaCfg.bRadio == TRUE)
-                {
-                    MlmeRadioOn(pAd);
-                    // Update extra information
-                                       pAd->ExtraInfo = EXTRA_INFO_CLEAR;
-                }
-            }
-            sprintf(extra, "Radio On\n");
-            wrq->length = strlen(extra) + 1; // 1: size of '\0'
-            break;
-
-
-
-               case SHOW_CFG_VALUE:
-                       {
-                               Status = RTMPShowCfgValue(pAd, (PSTRING) wrq->pointer, extra);
-                               if (Status == 0)
-                                       wrq->length = strlen(extra) + 1; // 1: size of '\0'
-                       }
-                       break;
-               case SHOW_ADHOC_ENTRY_INFO:
-                       Show_Adhoc_MacTable_Proc(pAd, extra);
-                       wrq->length = strlen(extra) + 1; // 1: size of '\0'
-                       break;
-        default:
-            DBGPRINT(RT_DEBUG_TRACE, ("%s - unknow subcmd = %d\n", __func__, subcmd));
-            break;
-    }
-
-    return Status;
-}
-
 int rt_ioctl_siwmlme(struct net_device *dev,
                           struct iw_request_info *info,
                           union iwreq_data *wrqu,
@@ -2774,43 +2310,10 @@ static const iw_handler rt_handler[] =
        (iw_handler) rt_ioctl_siwpmksa,         /* SIOCSIWPMKSA  */
 };
 
-static const iw_handler rt_priv_handlers[] = {
-       (iw_handler) NULL, /* + 0x00 */
-       (iw_handler) NULL, /* + 0x01 */
-       (iw_handler) rt_ioctl_setparam, /* + 0x02 */
-       (iw_handler) NULL, /* + 0x03 */
-       (iw_handler) NULL, /* + 0x04 */
-       (iw_handler) NULL, /* + 0x05 */
-       (iw_handler) NULL, /* + 0x06 */
-       (iw_handler) NULL, /* + 0x07 */
-       (iw_handler) NULL, /* + 0x08 */
-       (iw_handler) rt_private_get_statistics, /* + 0x09 */
-       (iw_handler) NULL, /* + 0x0A */
-       (iw_handler) NULL, /* + 0x0B */
-       (iw_handler) NULL, /* + 0x0C */
-       (iw_handler) NULL, /* + 0x0D */
-       (iw_handler) NULL, /* + 0x0E */
-       (iw_handler) NULL, /* + 0x0F */
-       (iw_handler) NULL, /* + 0x10 */
-       (iw_handler) rt_private_show, /* + 0x11 */
-    (iw_handler) NULL, /* + 0x12 */
-       (iw_handler) NULL, /* + 0x13 */
-    (iw_handler) NULL, /* + 0x14 */
-       (iw_handler) NULL, /* + 0x15 */
-    (iw_handler) NULL, /* + 0x16 */
-       (iw_handler) NULL, /* + 0x17 */
-       (iw_handler) NULL, /* + 0x18 */
-};
-
 const struct iw_handler_def rt28xx_iw_handler_def =
 {
-#define        N(a)    (sizeof (a) / sizeof (a[0]))
        .standard       = (iw_handler *) rt_handler,
        .num_standard   = sizeof(rt_handler) / sizeof(iw_handler),
-       .private        = (iw_handler *) rt_priv_handlers,
-       .num_private            = N(rt_priv_handlers),
-       .private_args   = (struct iw_priv_args *) privtab,
-       .num_private_args       = N(privtab),
 #if IW_HANDLER_VERSION >= 7
     .get_wireless_stats = rt28xx_get_wireless_stats,
 #endif
@@ -2980,17 +2483,8 @@ INT rt28xx_sta_ioctl(
                case RT_PRIV_IOCTL_EXT:
                case RTPRIV_IOCTL_SET:
                case RTPRIV_IOCTL_GSITESURVEY:
-                       Status = -EOPNOTSUPP;
-                       break;
                case SIOCGIWPRIV:
-                       if (wrq->u.data.pointer)
-                       {
-                               if ( access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)) != TRUE)
-                                       break;
-                               wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]);
-                               if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab)))
-                                       Status = -EFAULT;
-                       }
+                       Status = -EOPNOTSUPP;
                        break;
         case SIOCETHTOOL:
                 break;
@@ -3087,41 +2581,6 @@ INT Set_SSID_Proc(
     return success;
 }
 
-#ifdef WMM_SUPPORT
-/*
-    ==========================================================================
-    Description:
-        Set WmmCapable Enable or Disable
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT    Set_WmmCapable_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       BOOLEAN bWmmCapable;
-
-       bWmmCapable = simple_strtol(arg, 0, 10);
-
-       if ((bWmmCapable == 1)
-#ifdef RTMP_MAC_USB
-               && (pAd->NumberOfPipes >= 5)
-#endif // RTMP_MAC_USB //
-               )
-               pAd->CommonCfg.bWmmCapable = TRUE;
-       else if (bWmmCapable == 0)
-               pAd->CommonCfg.bWmmCapable = FALSE;
-       else
-               return FALSE;  //Invalid argument
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Set_WmmCapable_Proc::(bWmmCapable=%d)\n",
-               pAd->CommonCfg.bWmmCapable));
-
-       return TRUE;
-}
-#endif // WMM_SUPPORT //
-
 /*
     ==========================================================================
     Description:
@@ -3306,765 +2765,3 @@ INT Set_NetworkType_Proc(
 
     return TRUE;
 }
-
-/*
-    ==========================================================================
-    Description:
-        Set Authentication mode
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_AuthMode_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    if ((strcmp(arg, "WEPAUTO") == 0) || (strcmp(arg, "wepauto") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeAutoSwitch;
-    else if ((strcmp(arg, "OPEN") == 0) || (strcmp(arg, "open") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
-    else if ((strcmp(arg, "SHARED") == 0) || (strcmp(arg, "shared") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeShared;
-    else if ((strcmp(arg, "WPAPSK") == 0) || (strcmp(arg, "wpapsk") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPAPSK;
-    else if ((strcmp(arg, "WPANONE") == 0) || (strcmp(arg, "wpanone") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPANone;
-    else if ((strcmp(arg, "WPA2PSK") == 0) || (strcmp(arg, "wpa2psk") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA2PSK;
-    else if ((strcmp(arg, "WPA") == 0) || (strcmp(arg, "wpa") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA;
-    else if ((strcmp(arg, "WPA2") == 0) || (strcmp(arg, "wpa2") == 0))
-        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA2;
-    else
-        return FALSE;
-
-    pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_AuthMode_Proc::(AuthMode=%d)\n", pAdapter->StaCfg.AuthMode));
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Encryption Type
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_EncrypType_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    if ((strcmp(arg, "NONE") == 0) || (strcmp(arg, "none") == 0))
-    {
-        if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-            return TRUE;    // do nothing
-
-        pAdapter->StaCfg.WepStatus     = Ndis802_11WEPDisabled;
-        pAdapter->StaCfg.PairCipher    = Ndis802_11WEPDisabled;
-           pAdapter->StaCfg.GroupCipher   = Ndis802_11WEPDisabled;
-    }
-    else if ((strcmp(arg, "WEP") == 0) || (strcmp(arg, "wep") == 0))
-    {
-        if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-            return TRUE;    // do nothing
-
-        pAdapter->StaCfg.WepStatus     = Ndis802_11WEPEnabled;
-        pAdapter->StaCfg.PairCipher    = Ndis802_11WEPEnabled;
-           pAdapter->StaCfg.GroupCipher   = Ndis802_11WEPEnabled;
-    }
-    else if ((strcmp(arg, "TKIP") == 0) || (strcmp(arg, "tkip") == 0))
-    {
-        if (pAdapter->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
-            return TRUE;    // do nothing
-
-        pAdapter->StaCfg.WepStatus     = Ndis802_11Encryption2Enabled;
-        pAdapter->StaCfg.PairCipher    = Ndis802_11Encryption2Enabled;
-           pAdapter->StaCfg.GroupCipher   = Ndis802_11Encryption2Enabled;
-    }
-    else if ((strcmp(arg, "AES") == 0) || (strcmp(arg, "aes") == 0))
-    {
-        if (pAdapter->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
-            return TRUE;    // do nothing
-
-        pAdapter->StaCfg.WepStatus     = Ndis802_11Encryption3Enabled;
-        pAdapter->StaCfg.PairCipher    = Ndis802_11Encryption3Enabled;
-           pAdapter->StaCfg.GroupCipher   = Ndis802_11Encryption3Enabled;
-    }
-    else
-        return FALSE;
-
-    pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_EncrypType_Proc::(EncrypType=%d)\n", pAdapter->StaCfg.WepStatus));
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Default Key ID
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_DefaultKeyID_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    ULONG                               KeyIdx;
-
-    KeyIdx = simple_strtol(arg, 0, 10);
-    if((KeyIdx >= 1 ) && (KeyIdx <= 4))
-        pAdapter->StaCfg.DefaultKeyId = (UCHAR) (KeyIdx - 1 );
-    else
-        return FALSE;  //Invalid argument
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_DefaultKeyID_Proc::(DefaultKeyID=%d)\n", pAdapter->StaCfg.DefaultKeyId));
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set WEP KEY1
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_Key1_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    int                                 KeyLen;
-    int                                 i;
-    UCHAR                               CipherAlg=CIPHER_WEP64;
-
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        return TRUE;    // do nothing
-
-    KeyLen = strlen(arg);
-
-    switch (KeyLen)
-    {
-        case 5: //wep 40 Ascii type
-            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][0].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 10: //wep 40 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][0].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"));
-            break;
-        case 13: //wep 104 Ascii type
-            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][0].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 26: //wep 104 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][0].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"));
-            break;
-        default: //Invalid argument
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::Invalid argument (=%s)\n", arg));
-            return FALSE;
-    }
-
-    pAdapter->SharedKey[BSS0][0].CipherAlg = CipherAlg;
-
-    // Set keys (into ASIC)
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        ;   // not support
-    else    // Old WEP stuff
-    {
-        AsicAddSharedKeyEntry(pAdapter,
-                              0,
-                              0,
-                              pAdapter->SharedKey[BSS0][0].CipherAlg,
-                              pAdapter->SharedKey[BSS0][0].Key,
-                              NULL,
-                              NULL);
-    }
-
-    return TRUE;
-}
-/*
-    ==========================================================================
-
-    Description:
-        Set WEP KEY2
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_Key2_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    int                                 KeyLen;
-    int                                 i;
-    UCHAR                               CipherAlg=CIPHER_WEP64;
-
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        return TRUE;    // do nothing
-
-    KeyLen = strlen(arg);
-
-    switch (KeyLen)
-    {
-        case 5: //wep 40 Ascii type
-            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][1].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 10: //wep 40 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][1].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"));
-            break;
-        case 13: //wep 104 Ascii type
-            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][1].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 26: //wep 104 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][1].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"));
-            break;
-        default: //Invalid argument
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::Invalid argument (=%s)\n", arg));
-            return FALSE;
-    }
-    pAdapter->SharedKey[BSS0][1].CipherAlg = CipherAlg;
-
-    // Set keys (into ASIC)
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        ;   // not support
-    else    // Old WEP stuff
-    {
-        AsicAddSharedKeyEntry(pAdapter,
-                              0,
-                              1,
-                              pAdapter->SharedKey[BSS0][1].CipherAlg,
-                              pAdapter->SharedKey[BSS0][1].Key,
-                              NULL,
-                              NULL);
-    }
-
-    return TRUE;
-}
-/*
-    ==========================================================================
-    Description:
-        Set WEP KEY3
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_Key3_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    int                                 KeyLen;
-    int                                 i;
-    UCHAR                               CipherAlg=CIPHER_WEP64;
-
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        return TRUE;    // do nothing
-
-    KeyLen = strlen(arg);
-
-    switch (KeyLen)
-    {
-        case 5: //wep 40 Ascii type
-            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][2].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Ascii)\n", arg));
-            break;
-        case 10: //wep 40 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][2].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Hex)\n", arg));
-            break;
-        case 13: //wep 104 Ascii type
-            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][2].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Ascii)\n", arg));
-            break;
-        case 26: //wep 104 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][2].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Hex)\n", arg));
-            break;
-        default: //Invalid argument
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::Invalid argument (=%s)\n", arg));
-            return FALSE;
-    }
-    pAdapter->SharedKey[BSS0][2].CipherAlg = CipherAlg;
-
-    // Set keys (into ASIC)
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        ;   // not support
-    else    // Old WEP stuff
-    {
-        AsicAddSharedKeyEntry(pAdapter,
-                              0,
-                              2,
-                              pAdapter->SharedKey[BSS0][2].CipherAlg,
-                              pAdapter->SharedKey[BSS0][2].Key,
-                              NULL,
-                              NULL);
-    }
-
-    return TRUE;
-}
-/*
-    ==========================================================================
-    Description:
-        Set WEP KEY4
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_Key4_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    int                                 KeyLen;
-    int                                 i;
-    UCHAR                               CipherAlg=CIPHER_WEP64;
-
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        return TRUE;    // do nothing
-
-    KeyLen = strlen(arg);
-
-    switch (KeyLen)
-    {
-        case 5: //wep 40 Ascii type
-            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][3].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 10: //wep 40 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][3].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP64;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"));
-            break;
-        case 13: //wep 104 Ascii type
-            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen;
-            memcpy(pAdapter->SharedKey[BSS0][3].Key, arg, KeyLen);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"));
-            break;
-        case 26: //wep 104 Hex type
-            for(i=0; i < KeyLen; i++)
-            {
-                if( !isxdigit(*(arg+i)) )
-                    return FALSE;  //Not Hex value;
-            }
-            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen / 2 ;
-            AtoH(arg, pAdapter->SharedKey[BSS0][3].Key, KeyLen / 2);
-            CipherAlg = CIPHER_WEP128;
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"));
-            break;
-        default: //Invalid argument
-            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::Invalid argument (=%s)\n", arg));
-            return FALSE;
-    }
-    pAdapter->SharedKey[BSS0][3].CipherAlg = CipherAlg;
-
-    // Set keys (into ASIC)
-    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-        ;   // not support
-    else    // Old WEP stuff
-    {
-        AsicAddSharedKeyEntry(pAdapter,
-                              0,
-                              3,
-                              pAdapter->SharedKey[BSS0][3].CipherAlg,
-                              pAdapter->SharedKey[BSS0][3].Key,
-                              NULL,
-                              NULL);
-    }
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set WPA PSK key
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_WPAPSK_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING          arg)
-{
-    int status;
-
-    if ((pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPAPSK) &&
-        (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPA2PSK) &&
-           (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone)
-               )
-        return TRUE;    // do nothing
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_WPAPSK_Proc::(WPAPSK=%s)\n", arg));
-
-       status = RT_CfgSetWPAPSKKey(pAd, arg, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, pAd->StaCfg.PMK);
-       if (status == FALSE)
-    {
-               DBGPRINT(RT_DEBUG_TRACE, ("Set_WPAPSK_Proc(): Set key failed!\n"));
-        return FALSE;
-    }
-       NdisZeroMemory(pAd->StaCfg.WpaPassPhrase, 64);
-    NdisMoveMemory(pAd->StaCfg.WpaPassPhrase, arg, strlen(arg));
-    pAd->StaCfg.WpaPassPhraseLen = (UINT)strlen(arg);
-
-
-
-    if(pAd->StaCfg.BssType == BSS_ADHOC &&
-       pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
-    {
-        pAd->StaCfg.WpaState = SS_NOTUSE;
-    }
-    else
-    {
-        // Start STA supplicant state machine
-        pAd->StaCfg.WpaState = SS_START;
-    }
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set Power Saving mode
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_PSMode_Proc(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PSTRING          arg)
-{
-    if (pAdapter->StaCfg.BssType == BSS_INFRA)
-    {
-        if ((strcmp(arg, "Max_PSP") == 0) ||
-                       (strcmp(arg, "max_psp") == 0) ||
-                       (strcmp(arg, "MAX_PSP") == 0))
-        {
-            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
-            // to exclude certain situations.
-            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
-                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeMAX_PSP;
-            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeMAX_PSP;
-            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
-            pAdapter->StaCfg.DefaultListenCount = 5;
-
-        }
-        else if ((strcmp(arg, "Fast_PSP") == 0) ||
-                                (strcmp(arg, "fast_psp") == 0) ||
-                 (strcmp(arg, "FAST_PSP") == 0))
-        {
-            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
-            // to exclude certain situations.
-            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
-            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
-                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeFast_PSP;
-            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeFast_PSP;
-            pAdapter->StaCfg.DefaultListenCount = 3;
-        }
-        else if ((strcmp(arg, "Legacy_PSP") == 0) ||
-                 (strcmp(arg, "legacy_psp") == 0) ||
-                 (strcmp(arg, "LEGACY_PSP") == 0))
-        {
-            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
-            // to exclude certain situations.
-            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
-            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
-                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeLegacy_PSP;
-            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeLegacy_PSP;
-            pAdapter->StaCfg.DefaultListenCount = 3;
-        }
-        else
-        {
-            //Default Ndis802_11PowerModeCAM
-            // clear PSM bit immediately
-            RTMP_SET_PSM_BIT(pAdapter, PWR_ACTIVE);
-            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
-            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
-                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeCAM;
-            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM;
-        }
-
-        DBGPRINT(RT_DEBUG_TRACE, ("Set_PSMode_Proc::(PSMode=%ld)\n", pAdapter->StaCfg.WindowsPowerMode));
-    }
-    else
-        return FALSE;
-
-
-    return TRUE;
-}
-
-/*
-    ==========================================================================
-    Description:
-        Set WpaSupport flag.
-    Value:
-        0: Driver ignore wpa_supplicant.
-        1: wpa_supplicant initiates scanning and AP selection.
-        2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters.
-    Return:
-        TRUE if all parameters are OK, FALSE otherwise
-    ==========================================================================
-*/
-INT Set_Wpa_Support(
-    IN PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-
-    if ( simple_strtol(arg, 0, 10) == 0)
-        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_DISABLE;
-    else if ( simple_strtol(arg, 0, 10) == 1)
-        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_ENABLE;
-    else if ( simple_strtol(arg, 0, 10) == 2)
-        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_ENABLE_WITH_WEB_UI;
-    else
-        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_DISABLE;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_Wpa_Support::(WpaSupplicantUP=%d)\n", pAd->StaCfg.WpaSupplicantUP));
-
-    return TRUE;
-}
-
-INT Set_TGnWifiTest_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING          arg)
-{
-    if (simple_strtol(arg, 0, 10) == 0)
-        pAd->StaCfg.bTGnWifiTest = FALSE;
-    else
-        pAd->StaCfg.bTGnWifiTest = TRUE;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_TGnWifiTest_Proc::(bTGnWifiTest=%d)\n", pAd->StaCfg.bTGnWifiTest));
-       return TRUE;
-}
-
-
-
-
-INT    Show_Adhoc_MacTable_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 extra)
-{
-       INT i;
-
-       sprintf(extra, "\n");
-
-       sprintf(extra + strlen(extra), "HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
-
-       sprintf(extra + strlen(extra), "\n%-19s%-4s%-4s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s\n",
-                       "MAC", "AID", "BSS", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC");
-
-       for (i=1; i<MAX_LEN_OF_MAC_TABLE; i++)
-       {
-               PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
-
-               if (strlen(extra) > (IW_PRIV_SIZE_MASK - 30))
-                   break;
-               if ((pEntry->ValidAsCLI || pEntry->ValidAsApCli) && (pEntry->Sst == SST_ASSOC))
-               {
-                       sprintf(extra + strlen(extra), "%02X:%02X:%02X:%02X:%02X:%02X  ",
-                               pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
-                               pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
-                       sprintf(extra + strlen(extra), "%-4d", (int)pEntry->Aid);
-                       sprintf(extra + strlen(extra), "%-4d", (int)pEntry->apidx);
-                       sprintf(extra + strlen(extra), "%-7d", pEntry->RssiSample.AvgRssi0);
-                       sprintf(extra + strlen(extra), "%-7d", pEntry->RssiSample.AvgRssi1);
-                       sprintf(extra + strlen(extra), "%-7d", pEntry->RssiSample.AvgRssi2);
-                       sprintf(extra + strlen(extra), "%-10s", GetPhyMode(pEntry->HTPhyMode.field.MODE));
-                       sprintf(extra + strlen(extra), "%-6s", GetBW(pEntry->HTPhyMode.field.BW));
-                       sprintf(extra + strlen(extra), "%-6d", pEntry->HTPhyMode.field.MCS);
-                       sprintf(extra + strlen(extra), "%-6d", pEntry->HTPhyMode.field.ShortGI);
-                       sprintf(extra + strlen(extra), "%-6d", pEntry->HTPhyMode.field.STBC);
-                       sprintf(extra + strlen(extra), "%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount,
-                                               (pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0);
-                       sprintf(extra, "%s\n", extra);
-               }
-       }
-
-       return TRUE;
-}
-
-
-INT Set_BeaconLostTime_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg)
-{
-       ULONG ltmp = (ULONG)simple_strtol(arg, 0, 10);
-
-       if ((ltmp != 0) && (ltmp <= 60))
-               pAd->StaCfg.BeaconLostTime = (ltmp * OS_HZ);
-
-    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_BeaconLostTime_Proc::(BeaconLostTime=%ld)\n", pAd->StaCfg.BeaconLostTime));
-       return TRUE;
-}
-
-INT Set_AutoRoaming_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg)
-{
-    if (simple_strtol(arg, 0, 10) == 0)
-        pAd->StaCfg.bAutoRoaming = FALSE;
-    else
-        pAd->StaCfg.bAutoRoaming = TRUE;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_AutoRoaming_Proc::(bAutoRoaming=%d)\n", pAd->StaCfg.bAutoRoaming));
-       return TRUE;
-}
-
-
-/*
-    ==========================================================================
-    Description:
-        Issue a site survey command to driver
-       Arguments:
-           pAdapter                    Pointer to our adapter
-           wrq                         Pointer to the ioctl argument
-
-    Return Value:
-        None
-
-    Note:
-        Usage:
-               1.) iwpriv ra0 set site_survey
-    ==========================================================================
-*/
-INT Set_SiteSurvey_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PSTRING                 arg)
-{
-       NDIS_802_11_SSID Ssid;
-
-       //check if the interface is down
-       if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
-       {
-               DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
-               return -ENETDOWN;
-       }
-
-       if (MONITOR_ON(pAd))
-    {
-        DBGPRINT(RT_DEBUG_TRACE, ("!!! Driver is in Monitor Mode now !!!\n"));
-        return -EINVAL;
-    }
-
-       RTMPZeroMemory(&Ssid, sizeof(NDIS_802_11_SSID));
-       Ssid.SsidLength = 0;
-       if ((arg != NULL) &&
-               (strlen(arg) <= MAX_LEN_OF_SSID))
-    {
-        RTMPMoveMemory(Ssid.Ssid, arg, strlen(arg));
-        Ssid.SsidLength = strlen(arg);
-       }
-
-       pAd->StaCfg.bScanReqIsFromWebUI = TRUE;
-
-       if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
-       {
-               RTMP_MLME_RESET_STATE_MACHINE(pAd);
-               DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
-       }
-
-       // tell CNTL state machine to call NdisMSetInformationComplete() after completing
-       // this request, because this request is initiated by NDIS.
-       pAd->MlmeAux.CurrReqIsFromNdis = FALSE;
-       // Reset allowed scan retries
-       pAd->StaCfg.ScanCnt = 0;
-       NdisGetSystemUpTime(&pAd->StaCfg.LastScanTime);
-
-       MlmeEnqueue(pAd,
-               MLME_CNTL_STATE_MACHINE,
-               OID_802_11_BSSID_LIST_SCAN,
-               Ssid.SsidLength,
-               Ssid.Ssid);
-
-       RTMP_MLME_HANDLER(pAd);
-
-    DBGPRINT(RT_DEBUG_TRACE, ("Set_SiteSurvey_Proc\n"));
-
-    return TRUE;
-}
-
-INT Set_ForceTxBurst_Proc(
-    IN  PRTMP_ADAPTER   pAd,
-    IN  PSTRING         arg)
-{
-    if (simple_strtol(arg, 0, 10) == 0)
-        pAd->StaCfg.bForceTxBurst = FALSE;
-    else
-        pAd->StaCfg.bForceTxBurst = TRUE;
-
-    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_ForceTxBurst_Proc::(bForceTxBurst=%d)\n", pAd->StaCfg.bForceTxBurst));
-       return TRUE;
-}