Home | History | Annotate | Download | only in src
      1 /*
      2  * osRgstry.c
      3  *
      4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  *  * Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  *  * Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *  * Neither the name Texas Instruments nor the names of its
     18  *    contributors may be used to endorse or promote products derived
     19  *    from this software without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 
     35 #if defined(_WINDOWS)
     36 #include <ndis.h>
     37 #elif defined( __LINUX__ )
     38 #include "osRgstry_parser.h"
     39 #elif defined(__ARMCC__)
     40 #include "osRgstry_parser.h"
     41 #include "string.h"
     42 #endif
     43 #include "WlanDrvIf.h"
     44 #include "osRgstry.h"
     45 #include "paramOut.h"
     46 #include "osDot11.h"
     47 #include "osApi.h"
     48 #include "rate.h"
     49 #include "802_11Defs.h"
     50 #include "TWDriver.h"
     51 
     52 
     53 #define MAX_KEY_BUFFER_LEN      256
     54 #define BIT_TO_BYTE_FACTOR      8
     55 #define MAX_SR_PARAM_LEN        14
     56 #define DRPw_MASK_CHECK         0xc0
     57 
     58 #define N_STR(str)              NDIS_STRING_CONST(str)
     59 #define INIT_TBL_OFF(field)     FIELD_OFFSET(TInitTable, field)
     60 
     61 /* Reports */
     62 NDIS_STRING STR_ReportSeverityTable          = NDIS_STRING_CONST( "ReportSeverityTable" );
     63 NDIS_STRING STR_ReportModuleTable            = NDIS_STRING_CONST( "ReportModuleTable" );
     64 
     65 
     66 NDIS_STRING STRFilterEnabled            = NDIS_STRING_CONST( "Mac_Filter_Enabled");
     67 NDIS_STRING STRnumGroupAddrs            = NDIS_STRING_CONST( "numGroupAddrs" );
     68 NDIS_STRING STRGroup_addr0              = NDIS_STRING_CONST( "Group_addr0" );
     69 NDIS_STRING STRGroup_addr1              = NDIS_STRING_CONST( "Group_addr1" );
     70 NDIS_STRING STRGroup_addr2              = NDIS_STRING_CONST( "Group_addr2" );
     71 NDIS_STRING STRGroup_addr3              = NDIS_STRING_CONST( "Group_addr3" );
     72 NDIS_STRING STRGroup_addr4              = NDIS_STRING_CONST( "Group_addr4" );
     73 NDIS_STRING STRGroup_addr5              = NDIS_STRING_CONST( "Group_addr5" );
     74 NDIS_STRING STRGroup_addr6              = NDIS_STRING_CONST( "Group_addr6" );
     75 NDIS_STRING STRGroup_addr7              = NDIS_STRING_CONST( "Group_addr7" );
     76 
     77 /* Beacon timing */
     78 /* If Early Wakeup is Enabled, 1251 wakes-up EARLY_WAKEUP_TIME before expected Beacon reception occasion */
     79 /* If Early Wakeup is Disabled, 1251 wakes-up at the expected Beacon reception occasion. */
     80 NDIS_STRING STREarlyWakeup                 = NDIS_STRING_CONST( "EarlyWakeup" );
     81 
     82 NDIS_STRING STRArp_Ip_Addr              = NDIS_STRING_CONST( "ArpIp_Addr" );
     83 NDIS_STRING STRArp_Ip_Filter_Ena        = NDIS_STRING_CONST( "ArpIp_Filter_ena");
     84 
     85 
     86 NDIS_STRING STRBeaconFilterDesiredState = NDIS_STRING_CONST( "Beacon_Filter_Desired_State");
     87 NDIS_STRING STRBeaconFilterStored       = NDIS_STRING_CONST( "Beacon_Filter_Stored");
     88 
     89 /*this is for configuring table from ini file*/
     90 NDIS_STRING STRBeaconIETableSize            = NDIS_STRING_CONST( "Beacon_IE_Table_Size");
     91 NDIS_STRING STRBeaconIETable                = NDIS_STRING_CONST( "Beacon_IE_Table") ;
     92 NDIS_STRING STRBeaconIETableNumOfElem       = NDIS_STRING_CONST( "Beacon_IE_Num_Of_Elem");
     93 
     94 NDIS_STRING STRCoexActivityTable            = NDIS_STRING_CONST( "Coex_Activity_Table");
     95 NDIS_STRING STRCoexActivityNumOfElem        = NDIS_STRING_CONST( "Coex_Activity_Num_Of_Elem");
     96 
     97 /* ------------------------------------------------------ */
     98 NDIS_STRING STRFirmwareDebug                = NDIS_STRING_CONST( "FirmwareDebug" );
     99 NDIS_STRING STRTraceBufferSize              = NDIS_STRING_CONST( "TraceBufferSize" );
    100 NDIS_STRING STRPrintTrace                   = NDIS_STRING_CONST( "PrintTrace" );
    101 
    102 NDIS_STRING STRHwACXAccessMethod            = NDIS_STRING_CONST( "HwACXAccessMethod" );
    103 NDIS_STRING STRMaxSitesFragCollect          = NDIS_STRING_CONST( "MaxSitesFragCollect" );
    104 
    105 NDIS_STRING STRTxFlashEnable                = NDIS_STRING_CONST( "TxFlashEnable" );
    106 
    107 NDIS_STRING STRBetEnable                    = NDIS_STRING_CONST( "BetEnable");
    108 NDIS_STRING STRBetMaxConsecutive            = NDIS_STRING_CONST( "BetMaxConsecutive");
    109 NDIS_STRING STRMaxFullBeaconInterval        = NDIS_STRING_CONST( "MaxlFullBeaconReceptionInterval" );
    110 NDIS_STRING STRBetEnableThreshold           = NDIS_STRING_CONST( "BetEnableThreshold");
    111 NDIS_STRING STRBetDisableThreshold          = NDIS_STRING_CONST( "BetDisableThreshold");
    112 
    113 NDIS_STRING STRNumHostRxDescriptors         = NDIS_STRING_CONST( "NumHostRxDescriptors" );
    114 NDIS_STRING STRNumHostTxDescriptors         = NDIS_STRING_CONST( "NumHostTxDescriptors" );
    115 
    116 NDIS_STRING STRACXMemoryBlockSize           = NDIS_STRING_CONST( "ACXMemoryBlockSize" );
    117 NDIS_STRING STRACXRxMemoryBlockSize         = NDIS_STRING_CONST( "ACXMemoryBlockSize" );
    118 NDIS_STRING STRACXTxMemoryBlockSize         = NDIS_STRING_CONST( "ACXMemoryBlockSize" );
    119 
    120 NDIS_STRING STRACXUseTxDataInterrupt        = NDIS_STRING_CONST( "ACXUseTxDataInterrupt" );
    121 NDIS_STRING STRACXUseInterruptThreshold     = NDIS_STRING_CONST( "ACXUseInterruptThreshold" );
    122 
    123 NDIS_STRING STRCalibrationChannel2_4        = NDIS_STRING_CONST( "CalibrationChannel24" );
    124 NDIS_STRING STRCalibrationChannel5_0        = NDIS_STRING_CONST( "CalibrationChannel5" );
    125 NDIS_STRING STRdot11RTSThreshold            = NDIS_STRING_CONST( "dot11RTSThreshold" );
    126 NDIS_STRING STRRxDisableBroadcast           = NDIS_STRING_CONST( "RxDisableBroadcast" );
    127 NDIS_STRING STRRecoveryEnable               = NDIS_STRING_CONST( "RecoveryEnable" );
    128 NDIS_STRING STRdot11TxAntenna               = NDIS_STRING_CONST( "dot11TxAntenna" );
    129 NDIS_STRING STRdot11RxAntenna               = NDIS_STRING_CONST( "dot11RxAntenna" );
    130 
    131 NDIS_STRING STRTxCompleteThreshold          = NDIS_STRING_CONST( "TxCompleteThreshold" );
    132 NDIS_STRING STRTxCompleteTimeout            = NDIS_STRING_CONST( "TxCompleteTimeout" );
    133 NDIS_STRING STRRxInterruptThreshold         = NDIS_STRING_CONST( "RxInterruptThreshold" );
    134 NDIS_STRING STRRxInterruptTimeout           = NDIS_STRING_CONST( "RxInterruptTimeout" );
    135 
    136 NDIS_STRING STRRxAggregationPktsLimit       = NDIS_STRING_CONST( "RxAggregationPktsLimit" );
    137 NDIS_STRING STRTxAggregationPktsLimit       = NDIS_STRING_CONST( "TxAggregationPktsLimit" );
    138 
    139 NDIS_STRING STRdot11FragThreshold           = NDIS_STRING_CONST( "dot11FragmentationThreshold" );
    140 NDIS_STRING STRdot11MaxTxMSDULifetime       = NDIS_STRING_CONST( "dot11MaxTransmitMSDULifetime" );
    141 NDIS_STRING STRdot11MaxReceiveLifetime      = NDIS_STRING_CONST( "dot11MaxReceiveLifetime" );
    142 NDIS_STRING STRdot11RateFallBackRetryLimit  = NDIS_STRING_CONST( "dot11RateFallBackRetryLimit");
    143 
    144 NDIS_STRING STRReAuthActivePriority         = NDIS_STRING_CONST( "ReAuthActivePriority" );
    145 
    146 NDIS_STRING STRListenInterval               = NDIS_STRING_CONST( "dot11ListenInterval" );
    147 NDIS_STRING STRExternalMode                 = NDIS_STRING_CONST( "DriverExternalMode" );
    148 NDIS_STRING STRWiFiAdHoc                    = NDIS_STRING_CONST( "WiFiAdhoc" );
    149 NDIS_STRING STRWiFiWmmPS                    = NDIS_STRING_CONST( "WiFiWmmPS" );
    150 NDIS_STRING STRWiFiMode                     = NDIS_STRING_CONST( "WiFiMode" );
    151 NDIS_STRING STRStopNetStackTx               = NDIS_STRING_CONST( "StopNetStackTx" );
    152 NDIS_STRING STRTxSendPaceThresh             = NDIS_STRING_CONST( "TxSendPaceThresh" );
    153 NDIS_STRING STRdot11DesiredChannel          = NDIS_STRING_CONST( "dot11DesiredChannel");
    154 NDIS_STRING STRdot11DesiredSSID             = NDIS_STRING_CONST( "dot11DesiredSSID" );
    155 NDIS_STRING STRdot11DesiredBSSType          = NDIS_STRING_CONST( "dot11DesiredBSSType" );
    156 NDIS_STRING STRdot11BasicRateMask_B           = NDIS_STRING_CONST( "dot11BasicRateMaskB");
    157 NDIS_STRING STRdot11SupportedRateMask_B       = NDIS_STRING_CONST( "dot11SupportedRateMaskB");
    158 NDIS_STRING STRdot11BasicRateMask_G           = NDIS_STRING_CONST( "dot11BasicRateMaskG");
    159 NDIS_STRING STRdot11SupportedRateMask_G       = NDIS_STRING_CONST( "dot11SupportedRateMaskG");
    160 NDIS_STRING STRdot11BasicRateMask_A           = NDIS_STRING_CONST( "dot11BasicRateMaskA");
    161 NDIS_STRING STRdot11SupportedRateMask_A       = NDIS_STRING_CONST( "dot11SupportedRateMaskA");
    162 NDIS_STRING STRdot11BasicRateMask_AG           = NDIS_STRING_CONST( "dot11BasicRateMaskAG");
    163 NDIS_STRING STRdot11SupportedRateMask_AG       = NDIS_STRING_CONST( "dot11SupportedRateMaskAG");
    164 NDIS_STRING STRdot11BasicRateMask_N           = NDIS_STRING_CONST( "dot11BasicRateMaskN");
    165 NDIS_STRING STRdot11SupportedRateMask_N       = NDIS_STRING_CONST( "dot11SupportedRateMaskN");
    166 
    167 NDIS_STRING STRRadio11_RxLevel              = NDIS_STRING_CONST( "Radio11_RxLevel");
    168 NDIS_STRING STRRadio11_LNA                  = NDIS_STRING_CONST( "Radio11_LNA");
    169 NDIS_STRING STRRadio11_RSSI                 = NDIS_STRING_CONST( "Radio11_RSSI");
    170 NDIS_STRING STRRadio0D_RxLevel              = NDIS_STRING_CONST( "Radio0D_RxLevel");
    171 NDIS_STRING STRRadio0D_LNA                  = NDIS_STRING_CONST( "Radio0D_LNA");
    172 NDIS_STRING STRRadio0D_RSSI                 = NDIS_STRING_CONST( "Radio0D_RSSI");
    173 
    174 NDIS_STRING STRdot11DesiredNetworkType      = NDIS_STRING_CONST( "dot11NetworkType");
    175 NDIS_STRING STRdot11DefaultNetworkType      = NDIS_STRING_CONST( "dot11DefaultNetworkType");
    176 NDIS_STRING STRdot11SlotTime                = NDIS_STRING_CONST( "ShortSlotTime");
    177 NDIS_STRING STRdot11IbssProtection          = NDIS_STRING_CONST( "IbssProtectionType");
    178 NDIS_STRING STRdot11RtsCtsProtection        = NDIS_STRING_CONST( "dot11RtsCtsProtection");
    179 
    180 NDIS_STRING STRRxEnergyDetection            = NDIS_STRING_CONST( "RxEnergyDetection" );
    181 NDIS_STRING STRCh14TelecCca                 = NDIS_STRING_CONST( "Ch14TelecCCA" );
    182 NDIS_STRING STRCrtCalibrationInterval       = NDIS_STRING_CONST( "CrtCalibrationInterval" );
    183 NDIS_STRING STRTddCalibrationInterval       = NDIS_STRING_CONST( "TddCalibrationInterval" );
    184 NDIS_STRING STRMacClockRate                 = NDIS_STRING_CONST( "MacClockRate" );
    185 NDIS_STRING STRArmClockRate                 = NDIS_STRING_CONST( "ArmClockRate" );
    186 NDIS_STRING STRg80211DraftNumber            = NDIS_STRING_CONST( "g80211DraftNumber" );
    187 
    188 NDIS_STRING STRdot11ShortPreambleInvoked    = NDIS_STRING_CONST( "dot11ShortPreambleInvoked" );
    189 
    190 NDIS_STRING STRdot11BeaconPeriod            = NDIS_STRING_CONST( "dot11BeaconPeriod" );
    191 NDIS_STRING STRdot11MaxScanTime             = NDIS_STRING_CONST( "dot11MaxScanTime" );
    192 NDIS_STRING STRdot11MinScanTime             = NDIS_STRING_CONST( "dot11MinScanTime" );
    193 NDIS_STRING STRdot11MaxSiteLifetime         = NDIS_STRING_CONST( "dot11MaxSiteLifetime" );
    194 
    195 NDIS_STRING STRdot11MaxAuthRetry            = NDIS_STRING_CONST( "dot11MaxAuthRetry" );
    196 NDIS_STRING STRdot11MaxAssocRetry           = NDIS_STRING_CONST( "dot11MaxAssocRetry" );
    197 NDIS_STRING STRdot11AuthRespTimeout         = NDIS_STRING_CONST( "dot11AuthenticationResponseTimeout" );
    198 NDIS_STRING STRdot11AssocRespTimeout        = NDIS_STRING_CONST( "dot11AssociationResponseTimeout" );
    199 
    200 NDIS_STRING STRConnSelfTimeout              = NDIS_STRING_CONST( "ConnSelfTimeout" );
    201 
    202 NDIS_STRING STRCreditCalcTimout             = NDIS_STRING_CONST( "CreditCalcTimout" );
    203 NDIS_STRING STRCreditCalcTimerEnabled       = NDIS_STRING_CONST( "CreditCalcTimerEnabled" );
    204 
    205 NDIS_STRING STRTrafficAdmControlTimeout     = NDIS_STRING_CONST("TrafficAdmControlTimeout");
    206 NDIS_STRING STRTrafficAdmControlUseFixedMsduSize = NDIS_STRING_CONST("TrafficAdmCtrlUseFixedMsduSize");
    207 NDIS_STRING STRDesiredMaxSpLen              = NDIS_STRING_CONST("DesiredMaxSpLen");
    208 
    209 NDIS_STRING STRCwFromUserEnable             = NDIS_STRING_CONST("CwFromUserEnable");
    210 NDIS_STRING STRDesireCwMin                  = NDIS_STRING_CONST("DesireCwMin");
    211 NDIS_STRING STRDesireCwMax                  = NDIS_STRING_CONST("DesireCwMax");
    212 
    213 NDIS_STRING STRRatePolicyUserShortRetryLimit   = NDIS_STRING_CONST( "RatePolicyUserShortRetryLimit" );
    214 NDIS_STRING STRRatePolicyUserLongRetryLimit    = NDIS_STRING_CONST( "RatePolicyUserLongRetryLimit" );
    215 
    216 NDIS_STRING STRRatePolicyUserEnabledRatesMaskCck     = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskCck" );
    217 NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdm    = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdm" );
    218 NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdmA   = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdmA" );
    219 NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdmN   = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdmN" );
    220 
    221 NDIS_STRING STRdot11AuthenticationMode      = NDIS_STRING_CONST( "dot11AuthenticationMode" );
    222 NDIS_STRING STRdot11WEPStatus               = NDIS_STRING_CONST( "dot11WEPStatus" );
    223 NDIS_STRING STRdot11ExcludeUnencrypted      = NDIS_STRING_CONST( "dot11ExcludeUnencrypted" );
    224 NDIS_STRING STRdot11WEPKeymappingLength     = NDIS_STRING_CONST( "dot11WEPKeymappingLength" );
    225 NDIS_STRING STRdot11WEPDefaultKeyID         = NDIS_STRING_CONST( "dot11WEPDefaultKeyID" );
    226 
    227 NDIS_STRING STRMixedMode                    = NDIS_STRING_CONST( "MixedMode" );
    228 
    229 NDIS_STRING STRWPAMixedMode                 = NDIS_STRING_CONST( "WPAMixedMode");
    230 NDIS_STRING STRRSNPreAuth                   = NDIS_STRING_CONST( "RSNPreAuthentication");
    231 NDIS_STRING STRRSNPreAuthTimeout            = NDIS_STRING_CONST( "RSNPreAuthTimeout" );
    232 
    233 NDIS_STRING STRPairwiseMicFailureFilter     = NDIS_STRING_CONST( "PairwiseMicFailureFilter" );
    234 
    235 NDIS_STRING STRTimeToResetCountryMs         = NDIS_STRING_CONST( "TimeToResetCountryMs" );
    236 NDIS_STRING STRMultiRegulatoryDomainEnabled = NDIS_STRING_CONST( "MultiRegulatoryDomain" );
    237 NDIS_STRING STRSpectrumManagementEnabled    = NDIS_STRING_CONST( "SpectrumManagement" );
    238 NDIS_STRING STRScanControlTable24           = NDIS_STRING_CONST( "AllowedChannelsTable24" );
    239 NDIS_STRING STRScanControlTable5            = NDIS_STRING_CONST( "AllowedChannelsTable5" );
    240 
    241 NDIS_STRING STRBurstModeEnable              = NDIS_STRING_CONST( "BurstModeEnable" );
    242 /* Smart Reflex */
    243 NDIS_STRING STRSRState                      = NDIS_STRING_CONST( "SRState" );
    244 NDIS_STRING STRSRConfigParam1               = NDIS_STRING_CONST( "SRF1" );
    245 NDIS_STRING STRSRConfigParam2               = NDIS_STRING_CONST( "SRF2" );
    246 NDIS_STRING STRSRConfigParam3               = NDIS_STRING_CONST( "SRF3" );
    247 
    248 
    249 /*
    250 Power Manager
    251 */
    252 NDIS_STRING STRPowerMode                    = NDIS_STRING_CONST( "dot11PowerMode" );
    253 NDIS_STRING STRBeaconReceiveTime            = NDIS_STRING_CONST( "BeaconReceiveTime" );
    254 NDIS_STRING STRBaseBandWakeUpTime           = NDIS_STRING_CONST( "BaseBandWakeUpTime" );
    255 NDIS_STRING STRHangoverPeriod               = NDIS_STRING_CONST( "HangoverPeriod" );
    256 NDIS_STRING STRBeaconListenInterval         = NDIS_STRING_CONST( "BeaconListenInterval" );
    257 NDIS_STRING STRDtimListenInterval         = NDIS_STRING_CONST( "DtimListenInterval" );
    258 NDIS_STRING STRNConsecutiveBeaconsMissed    = NDIS_STRING_CONST( "NConsecutiveBeaconsMissed" );
    259 NDIS_STRING STREnterTo802_11PsRetries       = NDIS_STRING_CONST( "EnterTo802_11PsRetries" );
    260 NDIS_STRING STRAutoPowerModeInterval        = NDIS_STRING_CONST( "AutoPowerModeInterval" );
    261 NDIS_STRING STRAutoPowerModeActiveTh        = NDIS_STRING_CONST( "AutoPowerModeActiveTh" );
    262 NDIS_STRING STRAutoPowerModeDozeTh          = NDIS_STRING_CONST( "AutoPowerModeDozeTh" );
    263 NDIS_STRING STRAutoPowerModeDozeMode        = NDIS_STRING_CONST( "AutoPowerModeDozeMode" );
    264 NDIS_STRING STRDefaultPowerLevel            = NDIS_STRING_CONST( "defaultPowerLevel" );
    265 NDIS_STRING STRPowerSavePowerLevel          = NDIS_STRING_CONST( "PowerSavePowerLevel" );
    266 NDIS_STRING STRHostClkSettlingTime          = NDIS_STRING_CONST( "HostClkSettlingTime" );
    267 NDIS_STRING STRHostFastWakeupSupport        = NDIS_STRING_CONST( "HostFastWakeupSupport" );
    268 NDIS_STRING STRDcoItrimEnabled              = NDIS_STRING_CONST( "DcoItrimEnabled" );
    269 NDIS_STRING STRDcoItrimModerationTimeout    = NDIS_STRING_CONST( "DcoItrimModerationTimeout" );
    270 
    271 NDIS_STRING STRPsPollDeliveryFailureRecoveryPeriod     = NDIS_STRING_CONST( "PsPollDeliveryFailureRecoveryPeriod" );
    272 
    273 NDIS_STRING STRPowerMgmtHangOverPeriod      = NDIS_STRING_CONST( "PowerMgmtHangOverPeriod" );
    274 NDIS_STRING STRPowerMgmtMode                = NDIS_STRING_CONST( "PowerMgmtMode" );
    275 NDIS_STRING STRPowerMgmtNeedToSendNullData  = NDIS_STRING_CONST( "PowerMgmtNeedToSendNullData" );
    276 NDIS_STRING STRPowerMgmtNullPktRateModulation = NDIS_STRING_CONST( "PowerMgmtNullPktRateModulation" );
    277 NDIS_STRING STRPowerMgmtNumNullPktRetries   = NDIS_STRING_CONST( "PowerMgmtNumNullPktRetries" );
    278 NDIS_STRING STRPowerMgmtPllLockTime         = NDIS_STRING_CONST( "PllLockTime" );
    279 
    280 NDIS_STRING STRBeaconRxTimeout     = NDIS_STRING_CONST( "BeaconRxTimeout" );
    281 NDIS_STRING STRBroadcastRxTimeout  = NDIS_STRING_CONST( "BroadcastRxTimeout" );
    282 NDIS_STRING STRRxBroadcastInPs     = NDIS_STRING_CONST( "RxBroadcastInPs" );
    283 
    284 NDIS_STRING STRConsecutivePsPollDeliveryFailureThreshold = NDIS_STRING_CONST( "ConsecutivePsPollDeliveryFailureThreshold" );
    285 
    286 NDIS_STRING STRTxPower                      = NDIS_STRING_CONST( "TxPower" );
    287 
    288 /* Scan SRV */
    289 NDIS_STRING STRNumberOfNoScanCompleteToRecovery         = NDIS_STRING_CONST( "NumberOfNoScanCompleteToRecovery" );
    290 NDIS_STRING STRTriggeredScanTimeOut                     = NDIS_STRING_CONST( "TriggeredScanTimeOut" );
    291 
    292 /*-----------------------------------*/
    293 /*   Coexistence params               */
    294 /*-----------------------------------*/
    295 NDIS_STRING STRBThWlanCoexistEnable                = NDIS_STRING_CONST( "BThWlanCoexistEnable" );
    296 
    297 NDIS_STRING STRBThWlanCoexistPerThreshold	    		= NDIS_STRING_CONST( "coexBtPerThreshold" );
    298 NDIS_STRING STRBThWlanCoexistHv3MaxOverride	    = NDIS_STRING_CONST( "coexHv3MaxOverride" );
    299 NDIS_STRING STRBThWlanCoexistParamsBtLoadRatio			= NDIS_STRING_CONST( "coexBtLoadRatio" );
    300 NDIS_STRING STRBThWlanCoexistParamsAutoPsMode			= NDIS_STRING_CONST( "coexAutoPsMode" );
    301 NDIS_STRING STRBThWlanCoexHv3AutoScanEnlargedNumOfProbeReqPercent	= NDIS_STRING_CONST( "coexHv3AutoScanEnlargedNumOfProbeReqPercent" );
    302 NDIS_STRING STRBThWlanCoexHv3AutoScanEnlargedScanWinodowPercent	    = NDIS_STRING_CONST( "coexHv3AutoScanEnlargedScanWinodowPercent" );
    303 NDIS_STRING STRBThWlanCoexistcoexAntennaConfiguration   = NDIS_STRING_CONST( "coexAntennaConfiguration" );
    304 NDIS_STRING STRBThWlanCoexistNfsSampleInterval      	= NDIS_STRING_CONST( "coexBtNfsSampleInterval" );
    305 NDIS_STRING STRBThWlanCoexistcoexMaxConsecutiveBeaconMissPrecent   = NDIS_STRING_CONST( "coexMaxConsecutiveBeaconMissPrecent" );
    306 NDIS_STRING STRBThWlanCoexistcoexAPRateAdapationThr   = NDIS_STRING_CONST( "coexAPRateAdapationThr" );
    307 NDIS_STRING STRBThWlanCoexistcoexAPRateAdapationSnr   = NDIS_STRING_CONST( "coexAPRateAdapationSnr" );
    308 
    309 NDIS_STRING STRBThWlanCoexistUpsdAclMasterMinBR  = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMinBR" );
    310 NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMinBR  = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMinBR" );
    311 NDIS_STRING STRBThWlanCoexistUpsdAclMasterMaxBR  = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMaxBR" );
    312 NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMaxBR  = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMaxBR" );
    313 NDIS_STRING STRBThWlanPsMaxBtAclMasterBR  = NDIS_STRING_CONST( "coexWlanPsMaxBtAclMasterBR" );
    314 NDIS_STRING STRBThWlanPsMaxBtAclSlaveBR  = NDIS_STRING_CONST( "coexWlanPsMaxBtAclSlaveBR" );
    315 NDIS_STRING STRBThWlanCoexistUpsdAclMasterMinEDR  = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMinEDR" );
    316 NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMinEDR  = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMinEDR" );
    317 NDIS_STRING STRBThWlanCoexistUpsdAclMasterMaxEDR  = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMaxEDR" );
    318 NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMaxEDR  = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMaxEDR" );
    319 NDIS_STRING STRBThWlanPsMaxBtAclMasterEDR  = NDIS_STRING_CONST( "coexWlanPsMaxBtAclMasterEDR" );
    320 NDIS_STRING STRBThWlanPsMaxBtAclSlaveEDR  = NDIS_STRING_CONST( "coexWlanPsMaxBtAclSlaveEDR" );
    321 
    322 NDIS_STRING STRBThWlanCoexistRxt  = NDIS_STRING_CONST( "coexRxt" );
    323 NDIS_STRING STRBThWlanCoexistTxt  = NDIS_STRING_CONST( "coexTxt" );
    324 NDIS_STRING STRBThWlanCoexistAdaptiveRxtTxt  = NDIS_STRING_CONST( "coexAdaptiveRxtTxt" );
    325 NDIS_STRING STRBThWlanCoexistPsPollTimeout  = NDIS_STRING_CONST( "coexPsPollTimeout" );
    326 NDIS_STRING STRBThWlanCoexistUpsdTimeout  = NDIS_STRING_CONST( "coexUpsdTimeout" );
    327 
    328 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMasterMinEDR  = NDIS_STRING_CONST( "coexWlanActiveBtAclMasterMinEDR" );
    329 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMasterMaxEDR  = NDIS_STRING_CONST( "coexWlanActiveBtAclMasterMaxEDR" );
    330 NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclMasterEDR  = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclMasterEDR" );
    331 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclSlaveMinEDR  = NDIS_STRING_CONST( "coexWlanActiveBtAclSlaveMinEDR" );
    332 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclSlaveMaxEDR  = NDIS_STRING_CONST( "coexWlanActiveBtAclSlaveMaxEDR" );
    333 NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclSlaveEDR  = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclSlaveEDR" );
    334 
    335 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMinBR  = NDIS_STRING_CONST( "coexWlanActiveBtAclMinBR" );
    336 NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMaxBR  = NDIS_STRING_CONST( "coexWlanActiveBtAclMaxBR" );
    337 NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclBR  = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclBR" );
    338 
    339 NDIS_STRING STRBThWlanCoexHv3AutoEnlargePassiveScanWindowPercent  = NDIS_STRING_CONST( "coexHv3AutoEnlargePassiveScanWindowPercent" );
    340 NDIS_STRING STRBThWlanCoexA2DPAutoEnlargePassiveScanWindowPercent  = NDIS_STRING_CONST( "coexA2DPAutoEnlargePassiveScanWindowPercent" );
    341 NDIS_STRING STRBThWlanCoexPassiveScanA2dpBtTime  = NDIS_STRING_CONST( "coexPassiveScanA2dpBtTime" );
    342 NDIS_STRING STRBThWlanCoexPassiveScanA2dpWlanTime  = NDIS_STRING_CONST( "coexPassiveScanA2dpWlanTime" );
    343 NDIS_STRING STRBThWlancoexDhcpTime  = NDIS_STRING_CONST( "coexDhcpTime" );
    344 NDIS_STRING STRBThWlanCoexHv3MaxServed  = NDIS_STRING_CONST( "CoexHv3MaxServed" );
    345 NDIS_STRING STRBThWlanCoexA2dpAutoScanEnlargedScanWinodowPercent  = NDIS_STRING_CONST( "coexA2dpAutoScanEnlargedScanWinodowPercent" );
    346 NDIS_STRING STRBThWlanCoexTemp1  = NDIS_STRING_CONST( "coexTempParam1" );
    347 NDIS_STRING STRBThWlanCoexTemp2  = NDIS_STRING_CONST( "coexTempParam2" );
    348 NDIS_STRING STRBThWlanCoexTemp3  = NDIS_STRING_CONST( "coexTempParam3" );
    349 NDIS_STRING STRBThWlanCoexTemp4  = NDIS_STRING_CONST( "coexTempParam4" );
    350 NDIS_STRING STRBThWlanCoexTemp5  = NDIS_STRING_CONST( "coexTempParam5" );
    351 
    352 NDIS_STRING STRDisableSsidPending           = NDIS_STRING_CONST( "DisableSsidPending" );
    353 
    354 /*-----------------------------------*/
    355 /*   SME Init Params                 */
    356 /*-----------------------------------*/
    357 NDIS_STRING STRSmeRadioOn                   = NDIS_STRING_CONST( "RadioOn" );
    358 NDIS_STRING STRSmeConnectMode               = NDIS_STRING_CONST( "SmeConnectMode" );
    359 NDIS_STRING STRSmeScanRssiThreshold         = NDIS_STRING_CONST( "SmeScanRssiThreshold" );
    360 NDIS_STRING STRSmeScanSnrThreshold          = NDIS_STRING_CONST( "SmeScanSnrThreshold" );
    361 NDIS_STRING STRSmeScanCycleNumber           = NDIS_STRING_CONST( "SmeScanCycleNumber" );
    362 NDIS_STRING STRSmeScanMaxDwellTime          = NDIS_STRING_CONST( "SmeScanMaxDwellTimeMs" );
    363 NDIS_STRING STRSmeScanMinDwellTime          = NDIS_STRING_CONST( "SmeScanMinDwellTimeMs" );
    364 NDIS_STRING STRSmeScanProbeRequestNumber    = NDIS_STRING_CONST( "SmeScanProbeRequestNumber" );
    365 NDIS_STRING STRSmeScanIntervals             = NDIS_STRING_CONST( "SmeScanIntervalList" );
    366 NDIS_STRING STRSmeScanGChannels             = NDIS_STRING_CONST( "SmeScanGChannelList" );
    367 NDIS_STRING STRSmeScanAChannels             = NDIS_STRING_CONST( "SmeScanAChannelList" );
    368 
    369 
    370 /*-----------------------------------*/
    371 /*  Roaming & Scanning  Init Params  */
    372 /*-----------------------------------*/
    373 NDIS_STRING STRRoamScanEnable           = NDIS_STRING_CONST( "RoamScanEnable" );
    374 
    375 /*-----------------------------------*/
    376 /*   Health Check Init Params        */
    377 /*-----------------------------------*/
    378 NDIS_STRING STRRecoveryEnabledNoScanComplete    = NDIS_STRING_CONST( "RecoveryEnabledNoScanComplete" );
    379 NDIS_STRING STRRecoveryEnabledMboxFailure       = NDIS_STRING_CONST( "RecoveryEnabledMboxFailure" );
    380 NDIS_STRING STRRecoveryEnabledHwAwakeFailure    = NDIS_STRING_CONST( "RecoveryEnabledHwAwakeFailure" );
    381 NDIS_STRING STRRecoveryEnabledTxStuck           = NDIS_STRING_CONST( "RecoveryEnabledTxStuck" );
    382 NDIS_STRING STRRecoveryEnabledDisconnectTimeout = NDIS_STRING_CONST( "RecoveryEnabledDisconnectTimeout" );
    383 NDIS_STRING STRRecoveryEnabledPowerSaveFailure  = NDIS_STRING_CONST( "RecoveryEnabledPowerSaveFailure" );
    384 NDIS_STRING STRRecoveryEnabledMeasurementFailure= NDIS_STRING_CONST( "RecoveryEnabledMeasurementFailure" );
    385 NDIS_STRING STRRecoveryEnabledBusFailure        = NDIS_STRING_CONST( "RecoveryEnabledBusFailure" );
    386 NDIS_STRING STRRecoveryEnabledHwWdExpire        = NDIS_STRING_CONST( "RecoveryEnabledHwWdExpire" );
    387 NDIS_STRING STRRecoveryEnabledRxXferFailure     = NDIS_STRING_CONST( "RecoveryEnabledRxXferFailure" );
    388 
    389 /*-----------------------------------*/
    390 /* Tx Power control with atheros     */
    391 /*-----------------------------------*/
    392 NDIS_STRING STRTxPowerCheckTime                 = NDIS_STRING_CONST("TxPowerCheckTime");
    393 NDIS_STRING STRTxPowerControlOn                 = NDIS_STRING_CONST("TxPowerControlOn");
    394 NDIS_STRING STRTxPowerRssiThresh                = NDIS_STRING_CONST("TxPowerRssiThresh");
    395 NDIS_STRING STRTxPowerRssiRestoreThresh         = NDIS_STRING_CONST("TxPowerRssiRestoreThresh");
    396 NDIS_STRING STRTxPowerTempRecover              = NDIS_STRING_CONST("TxPowerTempRecover");
    397 
    398 
    399 /*-----------------------------------*/
    400 /*-----------------------------------*/
    401 /*        QOS Parameters             */
    402 /*-----------------------------------*/
    403 NDIS_STRING STRWMEEnable                        = NDIS_STRING_CONST("WME_Enable");
    404 NDIS_STRING STRTrafficAdmCtrlEnable             = NDIS_STRING_CONST("TrafficAdmCtrl_Enable");
    405 NDIS_STRING STRdesiredPsMode                    = NDIS_STRING_CONST("desiredPsMode");
    406 NDIS_STRING STRQOSmsduLifeTimeBE                = NDIS_STRING_CONST("QOS_msduLifeTimeBE");
    407 NDIS_STRING STRQOSmsduLifeTimeBK                = NDIS_STRING_CONST("QOS_msduLifeTimeBK");
    408 NDIS_STRING STRQOSmsduLifeTimeVI                = NDIS_STRING_CONST("QOS_msduLifeTimeVI");
    409 NDIS_STRING STRQOSmsduLifeTimeVO                = NDIS_STRING_CONST("QOS_msduLifeTimeVO");
    410 NDIS_STRING STRQOSrxTimeOutPsPoll               = NDIS_STRING_CONST("QOS_rxTimeoutPsPoll");
    411 NDIS_STRING STRQOSrxTimeOutUPSD                 = NDIS_STRING_CONST("QOS_rxTimeoutUPSD");
    412 NDIS_STRING STRQOSwmePsModeBE                   = NDIS_STRING_CONST("QOS_wmePsModeBE");
    413 NDIS_STRING STRQOSwmePsModeBK                   = NDIS_STRING_CONST("QOS_wmePsModeBK");
    414 NDIS_STRING STRQOSwmePsModeVI                   = NDIS_STRING_CONST("QOS_wmePsModeVI");
    415 NDIS_STRING STRQOSwmePsModeVO                   = NDIS_STRING_CONST("QOS_wmePsModeVO");
    416 NDIS_STRING STRQOSShortRetryLimitBE             = NDIS_STRING_CONST("QOS_ShortRetryLimitBE");
    417 NDIS_STRING STRQOSShortRetryLimitBK             = NDIS_STRING_CONST("QOS_ShortRetryLimitBK");
    418 NDIS_STRING STRQOSShortRetryLimitVI             = NDIS_STRING_CONST("QOS_ShortRetryLimitVI");
    419 NDIS_STRING STRQOSShortRetryLimitVO             = NDIS_STRING_CONST("QOS_ShortRetryLimitVO");
    420 NDIS_STRING STRQOSLongRetryLimitBE              = NDIS_STRING_CONST("QOS_LongRetryLimitBE");
    421 NDIS_STRING STRQOSLongRetryLimitBK              = NDIS_STRING_CONST("QOS_LongRetryLimitBK");
    422 NDIS_STRING STRQOSLongRetryLimitVI              = NDIS_STRING_CONST("QOS_LongRetryLimitVI");
    423 NDIS_STRING STRQOSLongRetryLimitVO              = NDIS_STRING_CONST("QOS_LongRetryLimitVO");
    424 
    425 NDIS_STRING STRQOSAckPolicyBE                   = NDIS_STRING_CONST("QOS_AckPolicyBE");
    426 NDIS_STRING STRQOSAckPolicyBK                   = NDIS_STRING_CONST("QOS_AckPolicyBK");
    427 NDIS_STRING STRQOSAckPolicyVI                   = NDIS_STRING_CONST("QOS_AckPolicyVI");
    428 NDIS_STRING STRQOSAckPolicyVO                   = NDIS_STRING_CONST("QOS_AckPolicyVO");
    429 NDIS_STRING STRQoSqueue0OverFlowPolicy          = NDIS_STRING_CONST("QOS_queue0OverFlowPolicy");
    430 NDIS_STRING STRQoSqueue1OverFlowPolicy          = NDIS_STRING_CONST("QOS_queue1OverFlowPolicy");
    431 NDIS_STRING STRQoSqueue2OverFlowPolicy          = NDIS_STRING_CONST("QOS_queue2OverFlowPolicy");
    432 NDIS_STRING STRQoSqueue3OverFlowPolicy          = NDIS_STRING_CONST("QOS_queue3OverFlowPolicy");
    433 /* HP parameters */
    434 NDIS_STRING STR11nEnable                        = NDIS_STRING_CONST("HT_Enable");
    435 NDIS_STRING STRBaPolicyTid_0                    = NDIS_STRING_CONST("BaPolicyTid_0");
    436 NDIS_STRING STRBaPolicyTid_1                    = NDIS_STRING_CONST("BaPolicyTid_1");
    437 NDIS_STRING STRBaPolicyTid_2                    = NDIS_STRING_CONST("BaPolicyTid_2");
    438 NDIS_STRING STRBaPolicyTid_3                    = NDIS_STRING_CONST("BaPolicyTid_3");
    439 NDIS_STRING STRBaPolicyTid_4                    = NDIS_STRING_CONST("BaPolicyTid_4");
    440 NDIS_STRING STRBaPolicyTid_5                    = NDIS_STRING_CONST("BaPolicyTid_5");
    441 NDIS_STRING STRBaPolicyTid_6                    = NDIS_STRING_CONST("BaPolicyTid_6");
    442 NDIS_STRING STRBaPolicyTid_7                    = NDIS_STRING_CONST("BaPolicyTid_7");
    443 NDIS_STRING STRBaInactivityTimeoutTid_0         = NDIS_STRING_CONST("BaInactivityTimeoutTid_0");
    444 NDIS_STRING STRBaInactivityTimeoutTid_1         = NDIS_STRING_CONST("BaInactivityTimeoutTid_1");
    445 NDIS_STRING STRBaInactivityTimeoutTid_2         = NDIS_STRING_CONST("BaInactivityTimeoutTid_2");
    446 NDIS_STRING STRBaInactivityTimeoutTid_3         = NDIS_STRING_CONST("BaInactivityTimeoutTid_3");
    447 NDIS_STRING STRBaInactivityTimeoutTid_4         = NDIS_STRING_CONST("BaInactivityTimeoutTid_4");
    448 NDIS_STRING STRBaInactivityTimeoutTid_5         = NDIS_STRING_CONST("BaInactivityTimeoutTid_5");
    449 NDIS_STRING STRBaInactivityTimeoutTid_6         = NDIS_STRING_CONST("BaInactivityTimeoutTid_6");
    450 NDIS_STRING STRBaInactivityTimeoutTid_7         = NDIS_STRING_CONST("BaInactivityTimeoutTid_7");
    451 
    452 
    453 /* HW Tx queues mem-blocks allocation thresholds */
    454 NDIS_STRING STRQOStxBlksThresholdBE             = NDIS_STRING_CONST("QOS_txBlksThresholdBE");
    455 NDIS_STRING STRQOStxBlksThresholdBK             = NDIS_STRING_CONST("QOS_txBlksThresholdBK");
    456 NDIS_STRING STRQOStxBlksThresholdVI             = NDIS_STRING_CONST("QOS_txBlksThresholdVI");
    457 NDIS_STRING STRQOStxBlksThresholdVO             = NDIS_STRING_CONST("QOS_txBlksThresholdVO");
    458 
    459 /* HW Rx mem-blocks Number */
    460 NDIS_STRING STRRxMemBlksNum                     = NDIS_STRING_CONST("RxMemBlksNum");
    461 
    462 /* Traffic Intensity parameters*/
    463 NDIS_STRING STRTrafficIntensityThresHigh        = NDIS_STRING_CONST("TrafficIntensityThresHigh");
    464 NDIS_STRING STRTrafficIntensityThresLow         = NDIS_STRING_CONST("TrafficIntensityThresLow");
    465 NDIS_STRING STRTrafficIntensityTestInterval     = NDIS_STRING_CONST("TrafficIntensityTestInterval");
    466 NDIS_STRING STRTrafficIntensityThresholdEnabled = NDIS_STRING_CONST("TrafficIntensityThresholdEnabled");
    467 NDIS_STRING STRTrafficMonitorMinIntervalPercentage = NDIS_STRING_CONST("TrafficMonitorMinIntervalPercent");
    468 
    469 /* Packet Burst parameters */
    470 NDIS_STRING STRQOSPacketBurstEnable             = NDIS_STRING_CONST("QOS_PacketBurstEnable");
    471 NDIS_STRING STRQOSPacketBurstTxOpLimit          = NDIS_STRING_CONST("QOS_PacketBurstTxOpLimit");
    472 
    473 /* Performance Boost (for speed or for QoS) */
    474 NDIS_STRING STRPerformanceBoost                 = NDIS_STRING_CONST("PerformanceBoost");
    475 
    476 /* Maximum AMPDU Size */
    477 NDIS_STRING STRMaxAMPDU                         = NDIS_STRING_CONST("MaxAMPDU");
    478 
    479 /*-----------------------------------*/
    480 /*        QOS classifier Parameters  */
    481 /*-----------------------------------*/
    482 NDIS_STRING STRClsfr_Type                       = NDIS_STRING_CONST("Clsfr_Type");
    483 NDIS_STRING STRNumOfCodePoints                  = NDIS_STRING_CONST("NumOfCodePoints");
    484 NDIS_STRING STRNumOfDstPortClassifiers          = NDIS_STRING_CONST("NumOfDstPortClassifiers");
    485 NDIS_STRING STRNumOfDstIPPortClassifiers        = NDIS_STRING_CONST("NumOfDstIPPortClassifiers");
    486 
    487 NDIS_STRING STRDSCPClassifier00_CodePoint       = NDIS_STRING_CONST("DSCPClassifier00_CodePoint");
    488 NDIS_STRING STRDSCPClassifier01_CodePoint       = NDIS_STRING_CONST("DSCPClassifier01_CodePoint");
    489 NDIS_STRING STRDSCPClassifier02_CodePoint       = NDIS_STRING_CONST("DSCPClassifier02_CodePoint");
    490 NDIS_STRING STRDSCPClassifier03_CodePoint       = NDIS_STRING_CONST("DSCPClassifier03_CodePoint");
    491 NDIS_STRING STRDSCPClassifier04_CodePoint       = NDIS_STRING_CONST("DSCPClassifier04_CodePoint");
    492 NDIS_STRING STRDSCPClassifier05_CodePoint       = NDIS_STRING_CONST("DSCPClassifier05_CodePoint");
    493 NDIS_STRING STRDSCPClassifier06_CodePoint       = NDIS_STRING_CONST("DSCPClassifier06_CodePoint");
    494 NDIS_STRING STRDSCPClassifier07_CodePoint       = NDIS_STRING_CONST("DSCPClassifier07_CodePoint");
    495 NDIS_STRING STRDSCPClassifier08_CodePoint       = NDIS_STRING_CONST("DSCPClassifier08_CodePoint");
    496 NDIS_STRING STRDSCPClassifier09_CodePoint       = NDIS_STRING_CONST("DSCPClassifier09_CodePoint");
    497 NDIS_STRING STRDSCPClassifier10_CodePoint       = NDIS_STRING_CONST("DSCPClassifier10_CodePoint");
    498 NDIS_STRING STRDSCPClassifier11_CodePoint       = NDIS_STRING_CONST("DSCPClassifier11_CodePoint");
    499 NDIS_STRING STRDSCPClassifier12_CodePoint       = NDIS_STRING_CONST("DSCPClassifier12_CodePoint");
    500 NDIS_STRING STRDSCPClassifier13_CodePoint       = NDIS_STRING_CONST("DSCPClassifier13_CodePoint");
    501 NDIS_STRING STRDSCPClassifier14_CodePoint       = NDIS_STRING_CONST("DSCPClassifier14_CodePoint");
    502 NDIS_STRING STRDSCPClassifier15_CodePoint       = NDIS_STRING_CONST("DSCPClassifier15_CodePoint");
    503 
    504 NDIS_STRING STRDSCPClassifier00_DTag        = NDIS_STRING_CONST("DSCPClassifier00_DTag");
    505 NDIS_STRING STRDSCPClassifier01_DTag        = NDIS_STRING_CONST("DSCPClassifier01_DTag");
    506 NDIS_STRING STRDSCPClassifier02_DTag        = NDIS_STRING_CONST("DSCPClassifier02_DTag");
    507 NDIS_STRING STRDSCPClassifier03_DTag        = NDIS_STRING_CONST("DSCPClassifier03_DTag");
    508 NDIS_STRING STRDSCPClassifier04_DTag        = NDIS_STRING_CONST("DSCPClassifier04_DTag");
    509 NDIS_STRING STRDSCPClassifier05_DTag        = NDIS_STRING_CONST("DSCPClassifier05_DTag");
    510 NDIS_STRING STRDSCPClassifier06_DTag        = NDIS_STRING_CONST("DSCPClassifier06_DTag");
    511 NDIS_STRING STRDSCPClassifier07_DTag        = NDIS_STRING_CONST("DSCPClassifier07_DTag");
    512 NDIS_STRING STRDSCPClassifier08_DTag        = NDIS_STRING_CONST("DSCPClassifier08_DTag");
    513 NDIS_STRING STRDSCPClassifier09_DTag        = NDIS_STRING_CONST("DSCPClassifier09_DTag");
    514 NDIS_STRING STRDSCPClassifier10_DTag        = NDIS_STRING_CONST("DSCPClassifier10_DTag");
    515 NDIS_STRING STRDSCPClassifier11_DTag        = NDIS_STRING_CONST("DSCPClassifier11_DTag");
    516 NDIS_STRING STRDSCPClassifier12_DTag        = NDIS_STRING_CONST("DSCPClassifier12_DTag");
    517 NDIS_STRING STRDSCPClassifier13_DTag        = NDIS_STRING_CONST("DSCPClassifier13_DTag");
    518 NDIS_STRING STRDSCPClassifier14_DTag        = NDIS_STRING_CONST("DSCPClassifier14_DTag");
    519 NDIS_STRING STRDSCPClassifier15_DTag        = NDIS_STRING_CONST("DSCPClassifier15_DTag");
    520 
    521 
    522 NDIS_STRING STRPortClassifier00_Port            = NDIS_STRING_CONST("PortClassifier00_Port");
    523 NDIS_STRING STRPortClassifier01_Port            = NDIS_STRING_CONST("PortClassifier01_Port");
    524 NDIS_STRING STRPortClassifier02_Port            = NDIS_STRING_CONST("PortClassifier02_Port");
    525 NDIS_STRING STRPortClassifier03_Port            = NDIS_STRING_CONST("PortClassifier03_Port");
    526 NDIS_STRING STRPortClassifier04_Port            = NDIS_STRING_CONST("PortClassifier04_Port");
    527 NDIS_STRING STRPortClassifier05_Port            = NDIS_STRING_CONST("PortClassifier05_Port");
    528 NDIS_STRING STRPortClassifier06_Port            = NDIS_STRING_CONST("PortClassifier06_Port");
    529 NDIS_STRING STRPortClassifier07_Port            = NDIS_STRING_CONST("PortClassifier07_Port");
    530 NDIS_STRING STRPortClassifier08_Port            = NDIS_STRING_CONST("PortClassifier08_Port");
    531 NDIS_STRING STRPortClassifier09_Port            = NDIS_STRING_CONST("PortClassifier09_Port");
    532 NDIS_STRING STRPortClassifier10_Port            = NDIS_STRING_CONST("PortClassifier10_Port");
    533 NDIS_STRING STRPortClassifier11_Port            = NDIS_STRING_CONST("PortClassifier11_Port");
    534 NDIS_STRING STRPortClassifier12_Port            = NDIS_STRING_CONST("PortClassifier12_Port");
    535 NDIS_STRING STRPortClassifier13_Port            = NDIS_STRING_CONST("PortClassifier13_Port");
    536 NDIS_STRING STRPortClassifier14_Port            = NDIS_STRING_CONST("PortClassifier14_Port");
    537 NDIS_STRING STRPortClassifier15_Port            = NDIS_STRING_CONST("PortClassifier15_Port");
    538 
    539 NDIS_STRING STRPortClassifier00_DTag            = NDIS_STRING_CONST("PortClassifier00_DTag");
    540 NDIS_STRING STRPortClassifier01_DTag            = NDIS_STRING_CONST("PortClassifier01_DTag");
    541 NDIS_STRING STRPortClassifier02_DTag            = NDIS_STRING_CONST("PortClassifier02_DTag");
    542 NDIS_STRING STRPortClassifier03_DTag            = NDIS_STRING_CONST("PortClassifier03_DTag");
    543 NDIS_STRING STRPortClassifier04_DTag            = NDIS_STRING_CONST("PortClassifier04_DTag");
    544 NDIS_STRING STRPortClassifier05_DTag            = NDIS_STRING_CONST("PortClassifier05_DTag");
    545 NDIS_STRING STRPortClassifier06_DTag            = NDIS_STRING_CONST("PortClassifier06_DTag");
    546 NDIS_STRING STRPortClassifier07_DTag            = NDIS_STRING_CONST("PortClassifier07_DTag");
    547 NDIS_STRING STRPortClassifier08_DTag            = NDIS_STRING_CONST("PortClassifier08_DTag");
    548 NDIS_STRING STRPortClassifier09_DTag            = NDIS_STRING_CONST("PortClassifier09_DTag");
    549 NDIS_STRING STRPortClassifier10_DTag            = NDIS_STRING_CONST("PortClassifier10_DTag");
    550 NDIS_STRING STRPortClassifier11_DTag            = NDIS_STRING_CONST("PortClassifier11_DTag");
    551 NDIS_STRING STRPortClassifier12_DTag            = NDIS_STRING_CONST("PortClassifier12_DTag");
    552 NDIS_STRING STRPortClassifier13_DTag            = NDIS_STRING_CONST("PortClassifier13_DTag");
    553 NDIS_STRING STRPortClassifier14_DTag            = NDIS_STRING_CONST("PortClassifier14_DTag");
    554 NDIS_STRING STRPortClassifier15_DTag            = NDIS_STRING_CONST("PortClassifier15_DTag");
    555 
    556 NDIS_STRING STRIPPortClassifier00_IPAddress     = NDIS_STRING_CONST("IPPortClassifier00_IPAddress");
    557 NDIS_STRING STRIPPortClassifier01_IPAddress     = NDIS_STRING_CONST("IPPortClassifier01_IPAddress");
    558 NDIS_STRING STRIPPortClassifier02_IPAddress     = NDIS_STRING_CONST("IPPortClassifier02_IPAddress");
    559 NDIS_STRING STRIPPortClassifier03_IPAddress     = NDIS_STRING_CONST("IPPortClassifier03_IPAddress");
    560 NDIS_STRING STRIPPortClassifier04_IPAddress     = NDIS_STRING_CONST("IPPortClassifier04_IPAddress");
    561 NDIS_STRING STRIPPortClassifier05_IPAddress     = NDIS_STRING_CONST("IPPortClassifier05_IPAddress");
    562 NDIS_STRING STRIPPortClassifier06_IPAddress     = NDIS_STRING_CONST("IPPortClassifier06_IPAddress");
    563 NDIS_STRING STRIPPortClassifier07_IPAddress     = NDIS_STRING_CONST("IPPortClassifier07_IPAddress");
    564 NDIS_STRING STRIPPortClassifier08_IPAddress     = NDIS_STRING_CONST("IPPortClassifier08_IPAddress");
    565 NDIS_STRING STRIPPortClassifier09_IPAddress     = NDIS_STRING_CONST("IPPortClassifier09_IPAddress");
    566 NDIS_STRING STRIPPortClassifier10_IPAddress     = NDIS_STRING_CONST("IPPortClassifier10_IPAddress");
    567 NDIS_STRING STRIPPortClassifier11_IPAddress     = NDIS_STRING_CONST("IPPortClassifier11_IPAddress");
    568 NDIS_STRING STRIPPortClassifier12_IPAddress     = NDIS_STRING_CONST("IPPortClassifier12_IPAddress");
    569 NDIS_STRING STRIPPortClassifier13_IPAddress     = NDIS_STRING_CONST("IPPortClassifier13_IPAddress");
    570 NDIS_STRING STRIPPortClassifier14_IPAddress     = NDIS_STRING_CONST("IPPortClassifier14_IPAddress");
    571 NDIS_STRING STRIPPortClassifier15_IPAddress     = NDIS_STRING_CONST("IPPortClassifier15_IPAddress");
    572 
    573 NDIS_STRING STRIPPortClassifier00_Port          = NDIS_STRING_CONST("IPPortClassifier00_Port");
    574 NDIS_STRING STRIPPortClassifier01_Port          = NDIS_STRING_CONST("IPPortClassifier01_Port");
    575 NDIS_STRING STRIPPortClassifier02_Port          = NDIS_STRING_CONST("IPPortClassifier02_Port");
    576 NDIS_STRING STRIPPortClassifier03_Port          = NDIS_STRING_CONST("IPPortClassifier03_Port");
    577 NDIS_STRING STRIPPortClassifier04_Port          = NDIS_STRING_CONST("IPPortClassifier04_Port");
    578 NDIS_STRING STRIPPortClassifier05_Port          = NDIS_STRING_CONST("IPPortClassifier05_Port");
    579 NDIS_STRING STRIPPortClassifier06_Port          = NDIS_STRING_CONST("IPPortClassifier06_Port");
    580 NDIS_STRING STRIPPortClassifier07_Port          = NDIS_STRING_CONST("IPPortClassifier07_Port");
    581 NDIS_STRING STRIPPortClassifier08_Port          = NDIS_STRING_CONST("IPPortClassifier08_Port");
    582 NDIS_STRING STRIPPortClassifier09_Port          = NDIS_STRING_CONST("IPPortClassifier09_Port");
    583 NDIS_STRING STRIPPortClassifier10_Port          = NDIS_STRING_CONST("IPPortClassifier10_Port");
    584 NDIS_STRING STRIPPortClassifier11_Port          = NDIS_STRING_CONST("IPPortClassifier11_Port");
    585 NDIS_STRING STRIPPortClassifier12_Port          = NDIS_STRING_CONST("IPPortClassifier12_Port");
    586 NDIS_STRING STRIPPortClassifier13_Port          = NDIS_STRING_CONST("IPPortClassifier13_Port");
    587 NDIS_STRING STRIPPortClassifier14_Port          = NDIS_STRING_CONST("IPPortClassifier14_Port");
    588 NDIS_STRING STRIPPortClassifier15_Port          = NDIS_STRING_CONST("IPPortClassifier15_Port");
    589 
    590 NDIS_STRING STRIPPortClassifier00_DTag          = NDIS_STRING_CONST("IPPortClassifier00_DTag");
    591 NDIS_STRING STRIPPortClassifier01_DTag          = NDIS_STRING_CONST("IPPortClassifier01_DTag");
    592 NDIS_STRING STRIPPortClassifier02_DTag          = NDIS_STRING_CONST("IPPortClassifier02_DTag");
    593 NDIS_STRING STRIPPortClassifier03_DTag          = NDIS_STRING_CONST("IPPortClassifier03_DTag");
    594 NDIS_STRING STRIPPortClassifier04_DTag          = NDIS_STRING_CONST("IPPortClassifier04_DTag");
    595 NDIS_STRING STRIPPortClassifier05_DTag          = NDIS_STRING_CONST("IPPortClassifier05_DTag");
    596 NDIS_STRING STRIPPortClassifier06_DTag          = NDIS_STRING_CONST("IPPortClassifier06_DTag");
    597 NDIS_STRING STRIPPortClassifier07_DTag          = NDIS_STRING_CONST("IPPortClassifier07_DTag");
    598 NDIS_STRING STRIPPortClassifier08_DTag          = NDIS_STRING_CONST("IPPortClassifier08_DTag");
    599 NDIS_STRING STRIPPortClassifier09_DTag          = NDIS_STRING_CONST("IPPortClassifier09_DTag");
    600 NDIS_STRING STRIPPortClassifier10_DTag          = NDIS_STRING_CONST("IPPortClassifier10_DTag");
    601 NDIS_STRING STRIPPortClassifier11_DTag          = NDIS_STRING_CONST("IPPortClassifier11_DTag");
    602 NDIS_STRING STRIPPortClassifier12_DTag          = NDIS_STRING_CONST("IPPortClassifier12_DTag");
    603 NDIS_STRING STRIPPortClassifier13_DTag          = NDIS_STRING_CONST("IPPortClassifier13_DTag");
    604 NDIS_STRING STRIPPortClassifier14_DTag          = NDIS_STRING_CONST("IPPortClassifier14_DTag");
    605 NDIS_STRING STRIPPortClassifier15_DTag          = NDIS_STRING_CONST("IPPortClassifier15_DTag");
    606 
    607 /*-----------------------------
    608    Rx Data Filter parameters
    609 -----------------------------*/
    610 NDIS_STRING STRRxDataFiltersEnabled             = NDIS_STRING_CONST("RxDataFilters_Enabled");
    611 NDIS_STRING STRRxDataFiltersDefaultAction       = NDIS_STRING_CONST("RxDataFilters_DefaultAction");
    612 
    613 NDIS_STRING STRRxDataFiltersFilter1Offset       = NDIS_STRING_CONST("RxDataFilters_Filter1Offset");
    614 NDIS_STRING STRRxDataFiltersFilter1Mask         = NDIS_STRING_CONST("RxDataFilters_Filter1Mask");
    615 NDIS_STRING STRRxDataFiltersFilter1Pattern      = NDIS_STRING_CONST("RxDataFilters_Filter1Pattern");
    616 
    617 NDIS_STRING STRRxDataFiltersFilter2Offset       = NDIS_STRING_CONST("RxDataFilters_Filter2Offset");
    618 NDIS_STRING STRRxDataFiltersFilter2Mask         = NDIS_STRING_CONST("RxDataFilters_Filter2Mask");
    619 NDIS_STRING STRRxDataFiltersFilter2Pattern      = NDIS_STRING_CONST("RxDataFilters_Filter2Pattern");
    620 
    621 NDIS_STRING STRRxDataFiltersFilter3Offset       = NDIS_STRING_CONST("RxDataFilters_Filter3Offset");
    622 NDIS_STRING STRRxDataFiltersFilter3Mask         = NDIS_STRING_CONST("RxDataFilters_Filter3Mask");
    623 NDIS_STRING STRRxDataFiltersFilter3Pattern      = NDIS_STRING_CONST("RxDataFilters_Filter3Pattern");
    624 
    625 NDIS_STRING STRRxDataFiltersFilter4Offset       = NDIS_STRING_CONST("RxDataFilters_Filter4Offset");
    626 NDIS_STRING STRRxDataFiltersFilter4Mask         = NDIS_STRING_CONST("RxDataFilters_Filter4Mask");
    627 NDIS_STRING STRRxDataFiltersFilter4Pattern      = NDIS_STRING_CONST("RxDataFilters_Filter4Pattern");
    628 
    629 
    630 NDIS_STRING STRReAuthActiveTimeout              = NDIS_STRING_CONST( "ReAuthActiveTimeout" );
    631 
    632 /*---------------------------
    633     Measurement parameters
    634 -----------------------------*/
    635 NDIS_STRING STRMeasurTrafficThreshold           = NDIS_STRING_CONST( "MeasurTrafficThreshold" );
    636 NDIS_STRING STRMeasurMaxDurationOnNonServingChannel = NDIS_STRING_CONST( "MeasurMaxDurationOnNonServingChannel" );
    637 
    638 /*---------------------------
    639       XCC Manager parameters
    640 -----------------------------*/
    641 #ifdef XCC_MODULE_INCLUDED
    642 NDIS_STRING STRXCCModeEnabled                   = NDIS_STRING_CONST( "XCCModeEnabled" );
    643 #endif
    644 
    645 NDIS_STRING STRXCCTestIgnoreDeAuth0             = NDIS_STRING_CONST( "XCCTestRogeAP" );
    646 
    647 /*-----------------------------------*/
    648 /*   EEPROM-less support             */
    649 /*-----------------------------------*/
    650 NDIS_STRING STREEPROMlessModeSupported          = NDIS_STRING_CONST( "EEPROMlessModeSupported" );
    651 NDIS_STRING STRstationMacAddress                = NDIS_STRING_CONST("dot11StationID");
    652 
    653 
    654 /*-----------------------------------*/
    655 /*   INI file to configuration       */
    656 /*-----------------------------------*/
    657 
    658 NDIS_STRING SendINIBufferToUser                 = NDIS_STRING_CONST("SendINIBufferToUserMode");
    659 
    660 /*-------------------------------------------
    661    RSSI/SNR Weights for Average calculations
    662 --------------------------------------------*/
    663 
    664 NDIS_STRING STRRssiBeaconAverageWeight = NDIS_STRING_CONST("RssiBeaconAverageWeight");
    665 NDIS_STRING STRRssiPacketAverageWeight = NDIS_STRING_CONST("RssiPacketAverageWeight");
    666 NDIS_STRING STRSnrBeaconAverageWeight  = NDIS_STRING_CONST("SnrBeaconAverageWeight");
    667 NDIS_STRING STRSnrPacketAverageWeight  = NDIS_STRING_CONST("SnrPacketAverageWeight");
    668 
    669 /*-----------------------------------*/
    670 /*   Scan concentrator parameters    */
    671 /*-----------------------------------*/
    672 NDIS_STRING STRMinimumDurationBetweenOsScans     = NDIS_STRING_CONST( "MinimumDurationBetweenOsScans" );
    673 NDIS_STRING STRDfsPassiveDwellTimeMs             = NDIS_STRING_CONST( "DfsPassiveDwellTimeMs" );
    674 NDIS_STRING STRScanPushMode                      = NDIS_STRING_CONST( "ScanPushMode" );
    675 
    676 NDIS_STRING STRScanResultAging                   = NDIS_STRING_CONST( "ScanResultAging" );
    677 NDIS_STRING STRScanCncnRssiThreshold             = NDIS_STRING_CONST( "ScanCncnRssiThreshold" );
    678 
    679 NDIS_STRING STRParseWSCInBeacons      = NDIS_STRING_CONST( "ParseWSCInBeacons" );
    680 
    681 /*-----------------------------------*/
    682 /*      Current BSS parameters       */
    683 /*-----------------------------------*/
    684 NDIS_STRING STRNullDataKeepAliveDefaultPeriod  = NDIS_STRING_CONST("NullDataKeepAliveDefaultPeriod");
    685 
    686 /*-----------------------------------*/
    687 /*      Context-Engine parameters    */
    688 /*-----------------------------------*/
    689 NDIS_STRING STRContextSwitchRequired  = NDIS_STRING_CONST("ContextSwitchRequired");
    690 
    691 /*-----------------------------------*/
    692 /*      Radio parameters             */
    693 /*-----------------------------------*/
    694 NDIS_STRING STRTXBiPReferencePDvoltage_2_4G =       NDIS_STRING_CONST("TXBiPReferencePDvoltage_2_4G");
    695 NDIS_STRING STRTxBiPReferencePower_2_4G =           NDIS_STRING_CONST("TxBiPReferencePower_2_4G");
    696 NDIS_STRING STRTxBiPOffsetdB_2_4G =                 NDIS_STRING_CONST("TxBiPOffsetdB_2_4G");
    697 NDIS_STRING STRTxPerRatePowerLimits_2_4G_Normal =  	NDIS_STRING_CONST("TxPerRatePowerLimits_2_4G_Normal");
    698 NDIS_STRING STRTxPerRatePowerLimits_2_4G_Degraded = NDIS_STRING_CONST("TxPerRatePowerLimits_2_4G_Degraded");
    699 NDIS_STRING STRTxPerRatePowerLimits_2_4G_Extreme =  NDIS_STRING_CONST("STRTxPerRatePowerLimits_2_4G_Extreme");
    700 NDIS_STRING STRTxPerChannelPowerLimits_2_4G_11b =   NDIS_STRING_CONST("TxPerChannelPowerLimits_2_4G_11b");
    701 NDIS_STRING STRTxPerChannelPowerLimits_2_4G_OFDM =  NDIS_STRING_CONST("TxPerChannelPowerLimits_2_4G_OFDM");
    702 NDIS_STRING STRTxPDVsRateOffsets_2_4G =             NDIS_STRING_CONST("TxPDVsRateOffsets_2_4G");
    703 NDIS_STRING STRTxIbiasTable_2_4G =          	  	NDIS_STRING_CONST("TxIbiasTable_2_4G");
    704 NDIS_STRING STRRxFemInsertionLoss_2_4G =            NDIS_STRING_CONST("RxFemInsertionLoss_2_4G");
    705 
    706 NDIS_STRING STRDegradedLowToNormalThr_2_4G =        NDIS_STRING_CONST("DegradedLowToNormalThr_2_4G");
    707 NDIS_STRING STRNormalToDegradedHighThr_2_4G =       NDIS_STRING_CONST("NormalToDegradedHighThr_2_4G");
    708 
    709 NDIS_STRING STRDegradedLowToNormalThr_5G =          NDIS_STRING_CONST("DegradedLowToNormalThr_5G");
    710 NDIS_STRING STRNormalToDegradedHighThr_5G =         NDIS_STRING_CONST("NormalToDegradedHighThr_5G");
    711 
    712 NDIS_STRING STRRxTraceInsertionLoss_2_4G =          NDIS_STRING_CONST("RxTraceInsertionLoss_2_4G");
    713 NDIS_STRING STRTXTraceLoss_2_4G =                   NDIS_STRING_CONST("TXTraceLoss_2_4G");
    714 NDIS_STRING STRRxRssiAndProcessCompensation_2_4G =  NDIS_STRING_CONST("RxRssiAndProcessCompensation_2_4G");
    715 NDIS_STRING STRTXBiPReferencePDvoltage_5G =         NDIS_STRING_CONST("TXBiPReferencePDvoltage_5G");
    716 NDIS_STRING STRTxBiPReferencePower_5G =             NDIS_STRING_CONST("TxBiPReferencePower_5G");
    717 NDIS_STRING STRTxBiPOffsetdB_5G =                   NDIS_STRING_CONST("TxBiPOffsetdB_5G");
    718 
    719 NDIS_STRING STRTxPerRatePowerLimits_5G_Normal =     NDIS_STRING_CONST("TxPerRatePowerLimits_5G_Normal");
    720 NDIS_STRING STRTxPerRatePowerLimits_5G_Degraded =   NDIS_STRING_CONST("TxPerRatePowerLimits_5G_Degraded");
    721 NDIS_STRING STRTxPerRatePowerLimits_5G_Extreme  =   NDIS_STRING_CONST("TxPerRatePowerLimits_5G_Extreme");
    722 
    723 NDIS_STRING STRTxPerChannelPowerLimits_5G_OFDM =    NDIS_STRING_CONST("TxPerChannelPowerLimits_5G_OFDM");
    724 NDIS_STRING STRTxPDVsRateOffsets_5G =               NDIS_STRING_CONST("TxPDVsRateOffsets_5G");
    725 NDIS_STRING STRTxIbiasTable_5G =                    NDIS_STRING_CONST("TxIbiasTable_5G");
    726 NDIS_STRING STRRxFemInsertionLoss_5G =              NDIS_STRING_CONST("RxFemInsertionLoss_5G");
    727 NDIS_STRING STRRxTraceInsertionLoss_5G =            NDIS_STRING_CONST("RxTraceInsertionLoss_5G");
    728 NDIS_STRING STRTXTraceLoss_5G =                     NDIS_STRING_CONST("TXTraceLoss_5G");
    729 NDIS_STRING STRRxRssiAndProcessCompensation_5G =    NDIS_STRING_CONST("RxRssiAndProcessCompensation_5G");
    730 NDIS_STRING STRFRefClock =    						NDIS_STRING_CONST("STRFRefClock");
    731 NDIS_STRING STRFRefClockSettingTime =    			NDIS_STRING_CONST("STRFRefClockSettingTime");
    732 NDIS_STRING STRFRefClockStatus =    				NDIS_STRING_CONST("FRefClockStatus");
    733 NDIS_STRING STRTXBiPFEMAutoDetect =    				NDIS_STRING_CONST("TXBiPFEMAutoDetect");
    734 NDIS_STRING STRTXBiPFEMManufacturer =    			NDIS_STRING_CONST("TXBiPFEMManufacturer");
    735 NDIS_STRING STRClockValidOnWakeup =    	    		NDIS_STRING_CONST("ClockValidOnWakeup");
    736 NDIS_STRING STRDC2DCMode =    	    	            NDIS_STRING_CONST("DC2DCMode");
    737 NDIS_STRING STRSingle_Dual_Band_Solution =          NDIS_STRING_CONST("Single_Dual_Band_Solution");
    738 NDIS_STRING STRSettings = 							NDIS_STRING_CONST("Settings");
    739 
    740 NDIS_STRING STRTxPerChannelPowerCompensation_2_4G =    NDIS_STRING_CONST("TxPerChannelPowerCompensation_2_4G");
    741 NDIS_STRING STRTxPerChannelPowerCompensation_5G_OFDM =    NDIS_STRING_CONST("TxPerChannelPowerCompensation_5G_OFDM");
    742 
    743 /*-----------------------------------*/
    744 /*      Driver-Main parameters       */
    745 /*-----------------------------------*/
    746 NDIS_STRING STRWlanDrvThreadPriority = NDIS_STRING_CONST("WlanDrvThreadPriority");
    747 NDIS_STRING STRBusDrvThreadPriority  = NDIS_STRING_CONST("BusDrvThreadPriority");
    748 NDIS_STRING STRSdioBlkSizeShift      = NDIS_STRING_CONST("SdioBlkSizeShift");
    749 
    750 
    751 /*-----------------------------------*/
    752 /*      Roaming parameters    */
    753 /*-----------------------------------*/
    754 NDIS_STRING STRRoamingOperationalMode = NDIS_STRING_CONST("RoamingOperationalMode");
    755 NDIS_STRING STRSendTspecInReassPkt    = NDIS_STRING_CONST("SendTspecInReassPkt");
    756 
    757 /*-----------------------------------*/
    758 /*      FM Coexistence parameters    */
    759 /*-----------------------------------*/
    760 NDIS_STRING STRFmCoexEnable               = NDIS_STRING_CONST("FmCoexuEnable");
    761 NDIS_STRING STRFmCoexSwallowPeriod        = NDIS_STRING_CONST("FmCoexuSwallowPeriod");
    762 NDIS_STRING STRFmCoexNDividerFrefSet1     = NDIS_STRING_CONST("FmCoexuNDividerFrefSet1");
    763 NDIS_STRING STRFmCoexNDividerFrefSet2     = NDIS_STRING_CONST("FmCoexuNDividerFrefSet2");
    764 NDIS_STRING STRFmCoexMDividerFrefSet1     = NDIS_STRING_CONST("FmCoexuMDividerFrefSet1");
    765 NDIS_STRING STRFmCoexMDividerFrefSet2     = NDIS_STRING_CONST("FmCoexuMDividerFrefSet2");
    766 NDIS_STRING STRFmCoexPllStabilizationTime = NDIS_STRING_CONST("FmCoexuPllStabilizationTime");
    767 NDIS_STRING STRFmCoexLdoStabilizationTime = NDIS_STRING_CONST("FmCoexuLdoStabilizationTime");
    768 NDIS_STRING STRFmCoexDisturbedBandMargin  = NDIS_STRING_CONST("FmCoexuDisturbedBandMargin");
    769 NDIS_STRING STRFmCoexSwallowClkDif        = NDIS_STRING_CONST("FmCoexSwallowClkDif");
    770 
    771 /*----------------------------------------*/
    772 /*      Rate Management Parameters        */
    773 /*----------------------------------------*/
    774 
    775 
    776 NDIS_STRING STRRateMngRateRetryScore      = NDIS_STRING_CONST("RateMngRateRetryScore");
    777 NDIS_STRING STRRateMngPerAdd              = NDIS_STRING_CONST("RateMngPerAdd");
    778 NDIS_STRING STRRateMngPerTh1              = NDIS_STRING_CONST("RateMngPerTh1");
    779 NDIS_STRING STRRateMngPerTh2              = NDIS_STRING_CONST("RateMngPerTh2");
    780 NDIS_STRING STRRateMngMaxPer              = NDIS_STRING_CONST("RateMngMaxPer");
    781 NDIS_STRING STRRateMngInverseCuriosityFactor = NDIS_STRING_CONST("RateMngInverseCuriosityFactor");
    782 NDIS_STRING STRRateMngTxFailLowTh         = NDIS_STRING_CONST("RateMngTxFailLowTh");
    783 NDIS_STRING STRRateMngTxFailHighTh        = NDIS_STRING_CONST("RateMngTxFailHighTh");
    784 NDIS_STRING STRRateMngPerAlphaShift       = NDIS_STRING_CONST("RateMngPerAlphaShift");
    785 NDIS_STRING STRRateMngPerAddShift         = NDIS_STRING_CONST("RateMngPerAddShift");
    786 NDIS_STRING STRRateMngPerBeta1Shift       = NDIS_STRING_CONST("RateMngPerBeta1Shift");
    787 NDIS_STRING STRRateMngPerBeta2Shift       = NDIS_STRING_CONST("RateMngPerBeta2Shift");
    788 NDIS_STRING STRRateMngRateCheckUp         = NDIS_STRING_CONST("RateMngRateCheckUp");
    789 NDIS_STRING STRRateMngRateCheckDown       = NDIS_STRING_CONST("RateMngRateCheckDown");
    790 NDIS_STRING STRRateMngRateRetryPolicy     = NDIS_STRING_CONST("RateMngRateRetryPolicy");
    791 
    792 NDIS_STRING STRincludeWSCinProbeReq                 = NDIS_STRING_CONST("IncludeWSCinProbeReq");
    793 
    794 
    795 static void parseTwoDigitsSequenceHex (TI_UINT8 *sInString, TI_UINT8 *uOutArray, TI_UINT8 uSize);
    796 
    797 static void regConvertStringtoCoexActivityTable(TI_UINT8 *strCoexActivityTable, TI_UINT32 numOfElements, TCoexActivity *CoexActivityArray, TI_UINT8 strSize);
    798 
    799 static int decryptWEP( TI_INT8* pSrc, TI_INT8* pDst, TI_UINT32 len);
    800 static short _btoi ( char *sptr, short slen, int *pi, short base );
    801 static void initValusFromRgstryString(  TI_INT8* pSrc,  TI_INT8* pDst,  TI_UINT32 len);
    802 
    803 
    804 
    805 static void readRates(TWlanDrvIfObjPtr pAdapter, TInitTable *pInitTable);
    806 static void decryptScanControlTable(TI_UINT8* src, TI_UINT8* dst, USHORT len);
    807 
    808 static TI_UINT32 regReadIntegerTable(TWlanDrvIfObjPtr   pAdapter,
    809                                 PNDIS_STRING        pParameterName,
    810                                 TI_INT8*               pDefaultValue,
    811                                 USHORT              defaultLen,
    812                                 TI_UINT8*              pUnsignedParameter,
    813                                 TI_INT8*               pSignedParameter,
    814                                 TI_UINT32*             pEntriesNumber,
    815                                 TI_UINT8               uParameterSize,
    816                                 TI_BOOL                bHex);
    817 
    818 static void assignRegValue(TI_UINT32* lValue, PNDIS_CONFIGURATION_PARAMETER ndisParameter);
    819 
    820 static void parse_filter_request(TRxDataFilterRequest* request, TI_UINT8 offset, char * mask, TI_UINT8 maskLength, char * pattern, TI_UINT8 patternLength);
    821 
    822 static void regReadIntegerParameter (
    823                  TWlanDrvIfObjPtr       pAdapter,
    824                  PNDIS_STRING           pParameterName,
    825                  TI_UINT32              defaultValue,
    826                  TI_UINT32              minValue,
    827                  TI_UINT32              maxValue,
    828                  TI_UINT8               parameterSize,
    829                  TI_UINT8*              pParameter);
    830 
    831 static void regReadIntegerParameterHex (
    832                  TWlanDrvIfObjPtr       pAdapter,
    833                  PNDIS_STRING           pParameterName,
    834                  TI_UINT32              defaultValue,
    835                  TI_UINT32              minValue,
    836                  TI_UINT32              maxValue,
    837                  TI_UINT8               defaultSize,
    838                  TI_UINT8 *             pParameter);
    839 
    840 static void regReadStringParameter (
    841                  TWlanDrvIfObjPtr       pAdapter,
    842                  PNDIS_STRING           pParameterName,
    843                  TI_INT8*               pDefaultValue,
    844                  USHORT                 defaultLen,
    845                  TI_UINT8*              pParameter,
    846                  void*                  pParameterSize);
    847 
    848 static void regReadWepKeyParameter (TWlanDrvIfObjPtr pAdapter, TI_UINT8 *pKeysStructure, TI_UINT8 defaultKeyId);
    849 
    850 
    851 /* ---------------------------------------------------------------------------*/
    852 /* Converts a string to a signed int. Assumes base 10. Assumes positive*/
    853 /*    number*/
    854 /**/
    855 /* Returns value on success, -1 on failure*/
    856 /**/
    857 /* ---------------------------------------------------------------------------*/
    858 static TI_UINT32 tiwlnstrtoi (char *num, TI_UINT32 length)
    859 {
    860   TI_UINT32 value;
    861 
    862   if(num == NULL || length == 0 )
    863   {
    864     return 0;
    865   }
    866 
    867   for(value=0;length&&*num;num++,length--)
    868   {
    869     if(*num<='9'&&*num>= '0')
    870     {
    871       value=(value*10)+(*num - '0');
    872     }
    873     else { /* Out of range*/
    874       break;
    875     }
    876   }
    877   return value;
    878 }
    879 
    880 /* ---------------------------------------------------------------------------*/
    881 /* Converts a string to a signed int. Assumes base 16. Assumes positive*/
    882 /*    number*/
    883 /**/
    884 /* Returns value on success, -1 on failure*/
    885 /**/
    886 /* ---------------------------------------------------------------------------*/
    887 static TI_UINT32 tiwlnstrtoi_hex (TI_UINT8 *num, TI_UINT32 length)
    888 {
    889   TI_UINT32 value = 0;
    890 
    891   if (num == NULL || length == 0)
    892   {
    893       return 0;
    894   }
    895 
    896   for (value = 0; length && *num; num++, length--)
    897   {
    898     if (*num <= '9' && *num >= '0')
    899     {
    900       value = (value * 16) + (*num - '0');
    901     }
    902     else if (*num <= 'f' && *num >= 'a')
    903     {
    904         value = (value * 16) + (*num - (TI_UINT8)'a' + 10);
    905     }
    906     else if (*num <= 'F' && *num >= 'A')
    907     {
    908         value = (value * 16) + (*num - (TI_UINT8)'A' + 10);
    909     }
    910     else
    911     { /* Out of range*/
    912         break;
    913     }
    914   }
    915 
    916   return value;
    917 }
    918 
    919 
    920 /*-----------------------------------------------------------------------------
    921 
    922 Routine Name:
    923 
    924     regFillInitTable
    925 
    926 Routine Description:
    927 
    928 
    929 Arguments:
    930 
    931 
    932 Return Value:
    933 
    934     None
    935 
    936 -----------------------------------------------------------------------------*/
    937 void
    938 regFillInitTable(
    939                 TWlanDrvIfObjPtr pAdapter,
    940                 void* pInitTable
    941                 )
    942 {
    943     static TI_UINT8 *ClsfrIp = "0a 03 01 c9";
    944     static TI_UINT8 ClsfrIpString[16];
    945     static TI_UINT8 ClsfrIpStringSize;
    946 
    947     /* EEPROM-less : MAC address */
    948     static TI_UINT8 regMACstrLen = REG_MAC_ADDR_STR_LEN;
    949     static TI_UINT8 staMACAddress[REG_MAC_ADDR_STR_LEN];
    950     static TI_UINT8 defStaMacAddress0[]= "10 01 02 03 04 05";
    951     static TI_UINT8 regArpIpStrLen = REG_ARP_IP_ADDR_STR_LEN;
    952     static TI_UINT8 staArpIpAddress[REG_ARP_IP_ADDR_STR_LEN];
    953     static TI_UINT8 defArpIpAddress[] =  "0a 02 0a b7" ;       /*value by default*/
    954 
    955     /*defaults values for beacon IE table*/
    956     /*TI_UINT8 defBeaconIETableSize = 0 ;*/
    957     static    TI_UINT8 defBeaconIETable[] = "00 01 01 01 32 01 2a 01 03 01 06 01 07 01 20 01 25 01 23 01 30 01 28 01 2e 01 3d 01 85 01 dd 01 00 52 f2 02 00 01";
    958     /*TI_UINT8 tmpIeTable[BEACON_FILTER_TABLE_MAX_SIZE] ;*/
    959     static    TI_UINT8 tmpIeTableSize = 37;
    960     static    TI_UINT8 strSize = 113;
    961 
    962     /* defaults values for CoexActivity table*/
    963     /* example: WLAN(0), BT_VOICE(0), defPrio(20), raisePrio(25), minServ(0), maxServ(1ms) */
    964     static    TI_UINT8 defCoexActivityTable[] = ""; /* Sample "01 00 14 19 0000 0001 " */
    965 
    966     static    TI_UINT32 filterOffset = 0;
    967     static    char filterMask[16];
    968     static    TI_UINT8 filterMaskLength;
    969     static    char filterPattern[16];
    970     static    TI_UINT8 filterPatternLength;
    971 
    972     static    USHORT  tableLen = 0;
    973     static    USHORT  loopIndex = 0;
    974     static    TI_UINT8   ScanControlTable24Tmp[2 * NUM_OF_CHANNELS_24];
    975     static    TI_UINT8   ScanControlTable5Tmp[2 * NUM_OF_CHANNELS_5];
    976     static    TI_UINT8   ScanControlTable24Def[2* NUM_OF_CHANNELS_24] = "FFFFFFFFFFFFFFFFFFFFFFFFFFFF";
    977     static    TI_UINT8   ScanControlTable5Def[2 * NUM_OF_CHANNELS_5] = "FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000FF000000FF000000FF000000FF000000FF000000000000000000000000000000";
    978     static    TI_UINT8   reportSeverityTableDefaults[REPORT_SEVERITY_MAX+1] = "00001101";
    979     static    TI_UINT16  reportSeverityTableLen;
    980 
    981     static    TI_UINT32  uWiFiMode = 0;
    982     static    TI_UINT32  uPerformanceBoostMode = PERFORMANCE_BOOST_MODE_DEF;
    983     TI_INT8    SRConfigParams[MAX_SMART_REFLEX_PARAM];
    984     static    TI_UINT32   len,TempSRCnt;
    985     static    TI_UINT8   uTempRatePolicyList[RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN];
    986     static    TI_UINT32  uTempRatePolicyCnt=0;
    987 
    988     TInitTable *p = (TInitTable *)pInitTable;
    989     TI_UINT32  uTempEntriesCount, uIndex;
    990 
    991     PRINT(DBG_REGISTRY_LOUD, "TIWL: Reading InitTable parameters\n");
    992 
    993     if (!p)
    994         return;
    995 
    996     /* Reset structure */
    997     NdisZeroMemory(p, sizeof(TInitTable));
    998 
    999     regReadIntegerParameter(pAdapter, &STRincludeWSCinProbeReq,
   1000                             WSC_INCLUDE_IN_BEACON_DEF,WSC_INCLUDE_IN_BEACON_MIN,WSC_INCLUDE_IN_BEACON_MAX,
   1001                             sizeof p->siteMgrInitParams.includeWSCinProbeReq,
   1002                             (TI_UINT8*)&p->siteMgrInitParams.includeWSCinProbeReq);
   1003 
   1004     /* Beacon filter*/
   1005     /*is the desired state ENABLED ?*/
   1006     regReadIntegerParameter(pAdapter, &STRBeaconFilterDesiredState,
   1007                             DEF_BEACON_FILTER_ENABLE_VALUE, MIN_BEACON_FILTER_ENABLE_VALUE, MAX_BEACON_FILTER_ENABLE_VALUE,
   1008                             sizeof p->siteMgrInitParams.beaconFilterParams.desiredState,
   1009                             (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.desiredState );
   1010 
   1011     regReadIntegerParameter(pAdapter, &STRBeaconFilterStored,
   1012                             DEF_NUM_STORED_FILTERS, MIN_NUM_STORED_FILTERS, MAX_NUM_STORED_FILTERS,
   1013                             sizeof p->siteMgrInitParams.beaconFilterParams.numOfStored,
   1014                             (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.numOfStored );
   1015 
   1016     /*Read the beacon filter IE table*/
   1017     /*Read the size of the table*/
   1018     regReadIntegerParameter(pAdapter, &STRBeaconIETableSize,
   1019                             BEACON_FILTER_IE_TABLE_DEF_SIZE, BEACON_FILTER_IE_TABLE_MIN_SIZE,
   1020                             BEACON_FILTER_IE_TABLE_MAX_SIZE,
   1021                             sizeof p->siteMgrInitParams.beaconFilterParams.IETableSize,
   1022                             (TI_UINT8*)(&p->siteMgrInitParams.beaconFilterParams.IETableSize) );
   1023 
   1024     tmpIeTableSize = p->siteMgrInitParams.beaconFilterParams.IETableSize;
   1025 
   1026     /*Read the number of elements in the table ( this is because 221 has 5 values following it )*/
   1027     regReadIntegerParameter(pAdapter, &STRBeaconIETableNumOfElem,
   1028                             DEF_BEACON_FILTER_IE_TABLE_NUM, BEACON_FILTER_IE_TABLE_MIN_NUM,
   1029                             BEACON_FILTER_IE_TABLE_MAX_NUM,
   1030                             sizeof p->siteMgrInitParams.beaconFilterParams.numOfElements,
   1031                             (TI_UINT8*)(&p->siteMgrInitParams.beaconFilterParams.numOfElements) );
   1032 
   1033     /*printk("\n  OsRgstr tmpIeTableSize = %d numOfElems = %d" , tmpIeTableSize , p->siteMgrInitParams.beaconFilterParams.numOfElements) ;*/
   1034     strSize = 3 * tmpIeTableSize - 1 ; /*includes spaces between bytes*/
   1035     if ( ( tmpIeTableSize  > 0 ) && ( tmpIeTableSize <= BEACON_FILTER_IE_TABLE_MAX_SIZE) )
   1036     {
   1037         TI_UINT8 *staBeaconFilterIETable;
   1038 
   1039         staBeaconFilterIETable = os_memoryAlloc(pAdapter, BEACON_FILTER_STRING_MAX_LEN);
   1040         if (staBeaconFilterIETable) {
   1041             regReadStringParameter(pAdapter, &STRBeaconIETable ,
   1042                             (TI_INT8*)(defBeaconIETable), strSize,
   1043                             (TI_UINT8*)staBeaconFilterIETable, &strSize);
   1044 
   1045             parseTwoDigitsSequenceHex (staBeaconFilterIETable, (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.IETable[0], tmpIeTableSize);
   1046             os_memoryFree(pAdapter, staBeaconFilterIETable, BEACON_FILTER_STRING_MAX_LEN);
   1047         }
   1048     }
   1049 
   1050     /* MAC ADDRESSES FILTER*/
   1051     regReadIntegerParameter(pAdapter, &STRFilterEnabled,
   1052                             DEF_FILTER_ENABLE_VALUE, MIN_FILTER_ENABLE_VALUE,
   1053                             MAX_FILTER_ENABLE_VALUE,
   1054                             sizeof p->twdInitParams.tMacAddrFilter.isFilterEnabled,
   1055                             (TI_UINT8*) &p->twdInitParams.tMacAddrFilter.isFilterEnabled);
   1056 
   1057     regReadIntegerParameter(pAdapter, &STRnumGroupAddrs,
   1058                             NUM_GROUP_ADDRESS_VALUE_DEF, NUM_GROUP_ADDRESS_VALUE_MIN,
   1059                             NUM_GROUP_ADDRESS_VALUE_MAX,
   1060                             sizeof p->twdInitParams.tMacAddrFilter.numOfMacAddresses,
   1061                             (TI_UINT8*) &p->twdInitParams.tMacAddrFilter.numOfMacAddresses);
   1062 
   1063     /*printk("\nOsRgstry Num Of Group Addr:%d \n" , p->twdInitParams.tMacAddrFilter.numOfMacAddresses) ;*/
   1064     {
   1065         TI_UINT8 defStaMacAddress1[]= "11 11 12 13 14 15";
   1066         TI_UINT8 defStaMacAddress2[]= "12 21 22 23 24 25";
   1067         TI_UINT8 defStaMacAddress3[]= "13 31 32 33 34 35";
   1068         TI_UINT8 defStaMacAddress4[]= "14 41 42 43 44 45";
   1069         TI_UINT8 defStaMacAddress5[]= "15 51 52 53 54 55";
   1070         TI_UINT8 defStaMacAddress6[]= "16 61 62 63 64 65";
   1071         TI_UINT8 defStaMacAddress7[]= "17 71 72 73 74 75";
   1072         int macIndex ; /*used for group address filtering*/
   1073 
   1074         macIndex = p->twdInitParams.tMacAddrFilter.numOfMacAddresses - 1;
   1075         switch( macIndex )
   1076         {
   1077         case 7:
   1078             {
   1079 
   1080             regReadStringParameter(pAdapter, &STRGroup_addr7,
   1081                                 (TI_INT8*)(defStaMacAddress7), REG_MAC_ADDR_STR_LEN,
   1082                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1083 
   1084             parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[7], MAC_ADDR_LEN);
   1085             --macIndex;
   1086             }
   1087 
   1088         case 6:
   1089             {
   1090 
   1091             regReadStringParameter(pAdapter, &STRGroup_addr6,
   1092                                 (TI_INT8*)(defStaMacAddress6), REG_MAC_ADDR_STR_LEN,
   1093                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1094 
   1095         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[6], MAC_ADDR_LEN);
   1096             --macIndex;
   1097             }
   1098 
   1099         case 5:
   1100             {
   1101 
   1102             regReadStringParameter(pAdapter, &STRGroup_addr5,
   1103                                 (TI_INT8*)(defStaMacAddress5), REG_MAC_ADDR_STR_LEN,
   1104                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1105 
   1106         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[5], MAC_ADDR_LEN);
   1107             --macIndex;
   1108             }
   1109 
   1110         case 4:
   1111             {
   1112 
   1113             regReadStringParameter(pAdapter, &STRGroup_addr4,
   1114                                 (TI_INT8*)(defStaMacAddress4), REG_MAC_ADDR_STR_LEN,
   1115                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1116 
   1117         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[4], MAC_ADDR_LEN);
   1118             --macIndex;
   1119             }
   1120 
   1121         case 3:
   1122             {
   1123 
   1124             regReadStringParameter(pAdapter, &STRGroup_addr3,
   1125                                 (TI_INT8*)(defStaMacAddress3), REG_MAC_ADDR_STR_LEN,
   1126                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1127 
   1128         parseTwoDigitsSequenceHex (staMACAddress, (TI_UINT8*)&p->twdInitParams.tMacAddrFilter.macAddrTable[3], MAC_ADDR_LEN);
   1129             --macIndex;
   1130             }
   1131 
   1132         case 2:
   1133             {
   1134 
   1135             regReadStringParameter(pAdapter, &STRGroup_addr2,
   1136                                 (TI_INT8*)(defStaMacAddress2), REG_MAC_ADDR_STR_LEN,
   1137                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1138 
   1139         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[2], MAC_ADDR_LEN);
   1140             --macIndex;
   1141             }
   1142 
   1143         case 1:
   1144             {
   1145 
   1146             regReadStringParameter(pAdapter, &STRGroup_addr1,
   1147                                 (TI_INT8*)(defStaMacAddress1), REG_MAC_ADDR_STR_LEN,
   1148                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1149 
   1150         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[1], MAC_ADDR_LEN);
   1151             --macIndex;
   1152             }
   1153 
   1154         case 0:
   1155             {
   1156 
   1157             regReadStringParameter(pAdapter, &STRGroup_addr0,
   1158                                 (TI_INT8*)(defStaMacAddress0), REG_MAC_ADDR_STR_LEN,
   1159                                 (TI_UINT8*)staMACAddress, &regMACstrLen);
   1160 
   1161         parseTwoDigitsSequenceHex (staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[0], MAC_ADDR_LEN);
   1162             }
   1163 
   1164         default:
   1165             {
   1166 
   1167             }
   1168         }
   1169     }
   1170 
   1171     /************************/
   1172     /* Read severity table */
   1173     /**********************/
   1174 
   1175     regReadStringParameter(pAdapter, &STR_ReportSeverityTable,
   1176                     (TI_INT8*)reportSeverityTableDefaults,
   1177                     (TI_UINT8)REPORT_SEVERITY_MAX,
   1178                     (TI_UINT8*)p->tReport.aSeverityTable,
   1179                     (TI_UINT8*)&reportSeverityTableLen);
   1180 
   1181 
   1182     /***********************/
   1183     /* Read modules table */
   1184     /*********************/
   1185     {
   1186         TI_UINT8 *reportModuleTableDefaults;
   1187         TI_UINT16  reportModuleTableLen;
   1188 
   1189         reportModuleTableDefaults = os_memoryAlloc(pAdapter, REPORT_FILES_NUM);
   1190         if (!reportModuleTableDefaults)
   1191             return;
   1192 
   1193         /*set all report modules.as default*/
   1194         memset(reportModuleTableDefaults, '1', REPORT_FILES_NUM );
   1195 
   1196         regReadStringParameter(pAdapter, &STR_ReportModuleTable,
   1197                         (TI_INT8*)reportModuleTableDefaults,
   1198                         (TI_UINT8)REPORT_FILES_NUM,
   1199                         (TI_UINT8*)p->tReport.aFileEnable,
   1200                         (TI_UINT8*)&reportModuleTableLen);
   1201         os_memoryFree(pAdapter, reportModuleTableDefaults, REPORT_FILES_NUM);
   1202     }
   1203     /* rate Policy Params */
   1204     regReadIntegerParameter(pAdapter, &STRRatePolicyUserShortRetryLimit,
   1205                             CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_DEF,
   1206                             CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_MIN,
   1207                             CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_MAX,
   1208                             sizeof p->ctrlDataInitParams.ctrlDataTxRatePolicy.shortRetryLimit,
   1209                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTxRatePolicy.shortRetryLimit);
   1210 
   1211     regReadIntegerParameter(pAdapter, &STRRatePolicyUserLongRetryLimit,
   1212                             CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_DEF,
   1213                             CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_MIN,
   1214                             CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_MAX,
   1215                             sizeof p->ctrlDataInitParams.ctrlDataTxRatePolicy.longRetryLimit,
   1216                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTxRatePolicy.longRetryLimit);
   1217 
   1218     regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskCck,
   1219 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_CCK_DEF,
   1220 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN,
   1221 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX,
   1222 							 sizeof p->ctrlDataInitParams.policyEnabledRatesMaskCck,
   1223                             (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskCck);
   1224 
   1225     regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdm,
   1226 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDM_DEF,
   1227 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN,
   1228 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX,
   1229 							 sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdm,
   1230                             (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdm);
   1231 
   1232     regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdmA,
   1233 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDMA_DEF,
   1234 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN,
   1235 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX,
   1236 							 sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdmA,
   1237                             (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdmA);
   1238 
   1239     regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdmN,
   1240 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDMN_DEF,
   1241 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN,
   1242 							 CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX,
   1243 							 sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdmN,
   1244                             (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdmN);
   1245 
   1246 
   1247     regReadIntegerParameter(pAdapter, &STRRxEnergyDetection,
   1248             TI_FALSE, TI_FALSE, TI_TRUE,
   1249             sizeof p->twdInitParams.tGeneral.halCtrlRxEnergyDetection,
   1250             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxEnergyDetection);
   1251 
   1252    regReadIntegerParameter(pAdapter, &STRCh14TelecCca,
   1253             TI_FALSE, TI_FALSE, TI_TRUE,
   1254             sizeof p->twdInitParams.tGeneral.halCtrlCh14TelecCca,
   1255             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlCh14TelecCca);
   1256 
   1257     regReadIntegerParameter(pAdapter, &STRTddCalibrationInterval,
   1258             300, 1, 0xFFFFFFFF,
   1259             sizeof p->twdInitParams.tGeneral.tddRadioCalTimout,
   1260             (TI_UINT8*)&p->twdInitParams.tGeneral.tddRadioCalTimout);
   1261 
   1262     regReadIntegerParameter(pAdapter, &STRCrtCalibrationInterval,
   1263             2, 1, 0xFFFFFFFF,
   1264             sizeof p->twdInitParams.tGeneral.CrtRadioCalTimout,
   1265             (TI_UINT8*)&p->twdInitParams.tGeneral.CrtRadioCalTimout);
   1266 
   1267     regReadIntegerParameter(pAdapter, &STRMacClockRate,
   1268             80, 0, 255,
   1269             sizeof p->twdInitParams.tGeneral.halCtrlMacClock,
   1270             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMacClock);
   1271 
   1272     regReadIntegerParameter(pAdapter, &STRArmClockRate,
   1273             80, 0, 255,
   1274             sizeof p->twdInitParams.tGeneral.halCtrlArmClock,
   1275             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlArmClock);
   1276 
   1277     regReadIntegerParameter(pAdapter, &STRg80211DraftNumber,
   1278             DRAFT_6_AND_LATER, DRAFT_5_AND_EARLIER, DRAFT_6_AND_LATER,
   1279             sizeof p->siteMgrInitParams.siteMgrUseDraftNum,
   1280             (TI_UINT8*)&p->siteMgrInitParams.siteMgrUseDraftNum);
   1281 
   1282     regReadIntegerParameter(pAdapter, &STRTraceBufferSize,
   1283             /*1024, 0, 1024, sizeof(TI_UINT32), */
   1284             16, 16, 16,
   1285             sizeof p->twdInitParams.tGeneral.TraceBufferSize,
   1286             (TI_UINT8*)&p->twdInitParams.tGeneral.TraceBufferSize);
   1287 
   1288     regReadIntegerParameter(pAdapter, &STRPrintTrace,
   1289             TI_FALSE, TI_FALSE, TI_TRUE,
   1290             sizeof p->twdInitParams.tGeneral.bDoPrint,
   1291             (TI_UINT8*)&p->twdInitParams.tGeneral.bDoPrint);
   1292 
   1293     regReadIntegerParameter(pAdapter, &STRFirmwareDebug,
   1294             TI_FALSE, TI_FALSE, TI_TRUE,
   1295             sizeof p->twdInitParams.tGeneral.halCtrlFirmwareDebug,
   1296             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlFirmwareDebug);
   1297 
   1298 
   1299 #ifndef TIWLN_WINCE30
   1300     regReadIntegerParameter(pAdapter, &STRHwACXAccessMethod,
   1301                             TWD_HW_ACCESS_METHOD_DEF, TWD_HW_ACCESS_METHOD_MIN,
   1302                             TWD_HW_ACCESS_METHOD_MAX,
   1303                             sizeof p->twdInitParams.tGeneral.hwAccessMethod,
   1304                             (TI_UINT8*)&p->twdInitParams.tGeneral.hwAccessMethod);
   1305 #else
   1306         /* Slave indirect*/
   1307     p->twdInitParams.tGeneral.hwAccessMethod = 0;
   1308 #endif
   1309     regReadIntegerParameter(pAdapter, &STRMaxSitesFragCollect,
   1310                             TWD_SITE_FRAG_COLLECT_DEF, TWD_SITE_FRAG_COLLECT_MIN,
   1311                             TWD_SITE_FRAG_COLLECT_MAX,
   1312                             sizeof p->twdInitParams.tGeneral.maxSitesFragCollect,
   1313                             (TI_UINT8*)&p->twdInitParams.tGeneral.maxSitesFragCollect);
   1314 
   1315     regReadIntegerParameter(pAdapter, &STRBetEnable,
   1316                             POWER_MGMNT_BET_ENABLE_DEF, POWER_MGMNT_BET_ENABLE_MIN,
   1317                             POWER_MGMNT_BET_ENABLE_MAX,
   1318                             sizeof p->PowerMgrInitParams.BetEnable,
   1319                             (TI_UINT8*)&p->PowerMgrInitParams.BetEnable);
   1320 
   1321     regReadIntegerParameter(pAdapter, &STRBetMaxConsecutive,
   1322                             POWER_MGMNT_BET_MAX_CONSC_DEF, POWER_MGMNT_BET_MAX_CONSC_MIN,
   1323                             POWER_MGMNT_BET_MAX_CONSC_MAX,
   1324                             sizeof p->PowerMgrInitParams.MaximumConsecutiveET,
   1325                             (TI_UINT8*)&p->PowerMgrInitParams.MaximumConsecutiveET);
   1326 
   1327     /*--------------- Maximal time between full beacon reception ------------------*/
   1328     regReadIntegerParameter(pAdapter, &STRMaxFullBeaconInterval,
   1329                             POWER_MGMNT_MAX_FULL_BEACON_DEF, POWER_MGMNT_MAX_FULL_BEACON_MIN,
   1330                             POWER_MGMNT_MAX_FULL_BEACON_MAX,
   1331                             sizeof p->PowerMgrInitParams.MaximalFullBeaconReceptionInterval,
   1332                             (TI_UINT8*)&p->PowerMgrInitParams.MaximalFullBeaconReceptionInterval);
   1333 
   1334     regReadIntegerParameter(pAdapter, &STRBetEnableThreshold,
   1335                             POWER_MGMNT_BET_DISABLE_THRESHOLD_DEF, POWER_MGMNT_BET_DISABLE_THRESHOLD_MIN,
   1336                             POWER_MGMNT_BET_DISABLE_THRESHOLD_MAX,
   1337                             sizeof p->PowerMgrInitParams.BetEnableThreshold,
   1338                             (TI_UINT8*)&p->PowerMgrInitParams.BetEnableThreshold);
   1339 
   1340     regReadIntegerParameter(pAdapter, &STRBetDisableThreshold,
   1341                             HAL_CTRL_BET_DISABLE_THRESHOLD_DEF, HAL_CTRL_BET_DISABLE_THRESHOLD_MIN,
   1342                             HAL_CTRL_BET_DISABLE_THRESHOLD_MAX,
   1343                             sizeof p->PowerMgrInitParams.BetDisableThreshold,
   1344                             (TI_UINT8*)&p->PowerMgrInitParams.BetDisableThreshold);
   1345 
   1346     regReadIntegerParameter(pAdapter, &STRTxFlashEnable,
   1347                             TWD_TX_FLASH_ENABLE_DEF, TWD_TX_FLASH_ENABLE_MIN,
   1348                             TWD_TX_FLASH_ENABLE_MAX,
   1349                             sizeof p->twdInitParams.tGeneral.TxFlashEnable,
   1350                             (TI_UINT8*)&p->twdInitParams.tGeneral.TxFlashEnable);
   1351 
   1352 
   1353     p->twdInitParams.tGeneral.beaconTemplateSize = sizeof(probeRspTemplate_t);
   1354     p->twdInitParams.tGeneral.probeRequestTemplateSize = sizeof(probeReqTemplate_t);
   1355     p->twdInitParams.tGeneral.probeResponseTemplateSize = sizeof(probeRspTemplate_t);
   1356     p->twdInitParams.tGeneral.nullTemplateSize = sizeof(nullDataTemplate_t);
   1357     p->twdInitParams.tGeneral.disconnTemplateSize = sizeof(disconnTemplate_t);
   1358     p->twdInitParams.tGeneral.PsPollTemplateSize = sizeof(psPollTemplate_t);
   1359     p->twdInitParams.tGeneral.qosNullDataTemplateSize = sizeof(QosNullDataTemplate_t);
   1360     p->twdInitParams.tGeneral.ArpRspTemplateSize = sizeof(ArpRspTemplate_t);
   1361 
   1362     regReadIntegerParameter(pAdapter,
   1363                             &STRBeaconRxTimeout,
   1364                             BCN_RX_TIMEOUT_DEF_VALUE,
   1365                             BCN_RX_TIMEOUT_MIN_VALUE,
   1366                             BCN_RX_TIMEOUT_MAX_VALUE,
   1367                             sizeof p->twdInitParams.tGeneral.BeaconRxTimeout,
   1368                             (TI_UINT8*)&p->twdInitParams.tGeneral.BeaconRxTimeout);
   1369 
   1370     regReadIntegerParameter(pAdapter,
   1371                             &STRBroadcastRxTimeout,
   1372                             BROADCAST_RX_TIMEOUT_DEF_VALUE,
   1373                             BROADCAST_RX_TIMEOUT_MIN_VALUE,
   1374                             BROADCAST_RX_TIMEOUT_MAX_VALUE,
   1375                             sizeof p->twdInitParams.tGeneral.BroadcastRxTimeout,
   1376                             (TI_UINT8*)&p->twdInitParams.tGeneral.BroadcastRxTimeout);
   1377 
   1378     regReadIntegerParameter(pAdapter,
   1379                             &STRRxBroadcastInPs,
   1380                             RX_BROADCAST_IN_PS_DEF_VALUE,
   1381                             RX_BROADCAST_IN_PS_MIN_VALUE,
   1382                             RX_BROADCAST_IN_PS_MAX_VALUE,
   1383                             sizeof p->twdInitParams.tGeneral.RxBroadcastInPs,
   1384                             (TI_UINT8*)&p->twdInitParams.tGeneral.RxBroadcastInPs);
   1385 
   1386     regReadIntegerParameter(pAdapter, &STRCalibrationChannel2_4,
   1387                             TWD_CALIBRATION_CHANNEL_2_4_DEF, TWD_CALIBRATION_CHANNEL_2_4_MIN,
   1388                             TWD_CALIBRATION_CHANNEL_2_4_MAX,
   1389                             sizeof p->twdInitParams.tGeneral.halCtrlCalibrationChannel2_4,
   1390                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlCalibrationChannel2_4);
   1391 
   1392     regReadIntegerParameter(pAdapter, &STRCalibrationChannel5_0,
   1393                             TWD_CALIBRATION_CHANNEL_5_0_DEF, TWD_CALIBRATION_CHANNEL_5_0_MIN,
   1394                             TWD_CALIBRATION_CHANNEL_5_0_MAX,
   1395                             sizeof p->twdInitParams.tGeneral.halCtrlCalibrationChannel5_0,
   1396                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlCalibrationChannel5_0);
   1397 
   1398     regReadIntegerParameter(pAdapter,
   1399                             &STRConsecutivePsPollDeliveryFailureThreshold,
   1400                             CONSECUTIVE_PS_POLL_FAILURE_DEF,
   1401                             CONSECUTIVE_PS_POLL_FAILURE_MIN,
   1402                             CONSECUTIVE_PS_POLL_FAILURE_MAX,
   1403                             sizeof p->twdInitParams.tGeneral.ConsecutivePsPollDeliveryFailureThreshold,
   1404                             (TI_UINT8*)&p->twdInitParams.tGeneral.ConsecutivePsPollDeliveryFailureThreshold);
   1405 
   1406 
   1407     regReadIntegerParameter(pAdapter, &STRdot11RTSThreshold,
   1408                             TWD_RTS_THRESHOLD_DEF, TWD_RTS_THRESHOLD_MIN,
   1409                             TWD_RTS_THRESHOLD_MAX,
   1410                             sizeof p->twdInitParams.tGeneral.halCtrlRtsThreshold,
   1411                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRtsThreshold);
   1412 
   1413     regReadIntegerParameter(pAdapter, &STRRxDisableBroadcast,
   1414                             TWD_RX_DISABLE_BROADCAST_DEF, TWD_RX_DISABLE_BROADCAST_MIN,
   1415                             TWD_RX_DISABLE_BROADCAST_MAX,
   1416                             sizeof p->twdInitParams.tGeneral.halCtrlRxDisableBroadcast,
   1417                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxDisableBroadcast);
   1418 
   1419     regReadIntegerParameter(pAdapter, &STRRecoveryEnable,
   1420                             TWD_RECOVERY_ENABLE_DEF, TWD_RECOVERY_ENABLE_MIN,
   1421                             TWD_RECOVERY_ENABLE_MAX,
   1422                             sizeof p->twdInitParams.tGeneral.halCtrlRecoveryEnable,
   1423                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRecoveryEnable);
   1424 
   1425     p->healthMonitorInitParams.FullRecoveryEnable = (TI_BOOL)p->twdInitParams.tGeneral.halCtrlRecoveryEnable;
   1426 
   1427     regReadIntegerParameter(pAdapter, &STRdot11FragThreshold,
   1428                             TWD_FRAG_THRESHOLD_DEF, TWD_FRAG_THRESHOLD_MIN,
   1429                             TWD_FRAG_THRESHOLD_MAX,
   1430                             sizeof p->twdInitParams.tGeneral.halCtrlFragThreshold,
   1431                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlFragThreshold);
   1432 
   1433     regReadIntegerParameter(pAdapter, &STRdot11MaxTxMSDULifetime,
   1434                             TWD_MAX_TX_MSDU_LIFETIME_DEF, TWD_MAX_TX_MSDU_LIFETIME_MIN,
   1435                             TWD_MAX_TX_MSDU_LIFETIME_MAX,
   1436                             sizeof p->twdInitParams.tGeneral.halCtrlMaxTxMsduLifetime,
   1437                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMaxTxMsduLifetime);
   1438 
   1439     regReadIntegerParameter(pAdapter, &STRdot11MaxReceiveLifetime,
   1440                             TWD_MAX_RX_MSDU_LIFETIME_DEF, TWD_MAX_RX_MSDU_LIFETIME_MIN,
   1441                             TWD_MAX_RX_MSDU_LIFETIME_MAX,
   1442                             sizeof p->twdInitParams.tGeneral.halCtrlMaxRxMsduLifetime,
   1443                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMaxRxMsduLifetime);
   1444 
   1445     regReadIntegerParameter(pAdapter, &STRdot11RateFallBackRetryLimit,
   1446                             TWD_RATE_FB_RETRY_LIMIT_DEF, TWD_RATE_FB_RETRY_LIMIT_MIN,
   1447                             TWD_RATE_FB_RETRY_LIMIT_MAX,
   1448                             sizeof p->twdInitParams.tGeneral.halCtrlRateFallbackRetry,
   1449                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRateFallbackRetry);
   1450 
   1451     regReadIntegerParameter(pAdapter, &STRListenInterval,
   1452                             TWD_LISTEN_INTERVAL_DEF, TWD_LISTEN_INTERVAL_MIN,
   1453                             TWD_LISTEN_INTERVAL_MAX,
   1454                             sizeof p->twdInitParams.tGeneral.halCtrlListenInterval,
   1455                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlListenInterval);
   1456 
   1457     regReadIntegerParameter(pAdapter, &STRdot11TxAntenna,
   1458                             TWD_TX_ANTENNA_DEF, TWD_TX_ANTENNA_MIN,
   1459                             TWD_TX_ANTENNA_MAX,
   1460                             sizeof p->twdInitParams.tGeneral.halCtrlTxAntenna,
   1461                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlTxAntenna);
   1462     /* reverse tx antenna value - ACX and utility have reversed values */
   1463     if (p->twdInitParams.tGeneral.halCtrlTxAntenna == TX_ANTENNA_2)
   1464        p->twdInitParams.tGeneral.halCtrlTxAntenna = TX_ANTENNA_1;
   1465     else
   1466        p->twdInitParams.tGeneral.halCtrlTxAntenna = TX_ANTENNA_2;
   1467 
   1468 
   1469     regReadIntegerParameter(pAdapter, &STRdot11RxAntenna,
   1470                             TWD_RX_ANTENNA_DEF, TWD_RX_ANTENNA_MIN,
   1471                             TWD_RX_ANTENNA_MAX,
   1472                             sizeof p->twdInitParams.tGeneral.halCtrlRxAntenna,
   1473                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxAntenna);
   1474 
   1475 
   1476     regReadIntegerParameter(pAdapter, &STRTxCompleteThreshold,
   1477                             TWD_TX_CMPLT_THRESHOLD_DEF, TWD_TX_CMPLT_THRESHOLD_MIN,
   1478                             TWD_TX_CMPLT_THRESHOLD_MAX,
   1479                             sizeof p->twdInitParams.tGeneral.TxCompletePacingThreshold,
   1480                             (TI_UINT8*)&(p->twdInitParams.tGeneral.TxCompletePacingThreshold));
   1481 
   1482     regReadIntegerParameter(pAdapter, &STRTxCompleteTimeout,
   1483                             TWD_TX_CMPLT_TIMEOUT_DEF, TWD_TX_CMPLT_TIMEOUT_MIN,
   1484                             TWD_TX_CMPLT_TIMEOUT_MAX,
   1485                             sizeof p->twdInitParams.tGeneral.TxCompletePacingTimeout,
   1486                             (TI_UINT8*)&(p->twdInitParams.tGeneral.TxCompletePacingTimeout));
   1487 
   1488     regReadIntegerParameter(pAdapter, &STRRxInterruptThreshold,
   1489                             TWD_RX_INTR_THRESHOLD_DEF, TWD_RX_INTR_THRESHOLD_MIN,
   1490                             TWD_RX_INTR_THRESHOLD_MAX,
   1491                             sizeof p->twdInitParams.tGeneral.RxIntrPacingThreshold,
   1492                             (TI_UINT8*)&(p->twdInitParams.tGeneral.RxIntrPacingThreshold));
   1493 
   1494     regReadIntegerParameter(pAdapter, &STRRxInterruptTimeout,
   1495                             TWD_RX_INTR_TIMEOUT_DEF, TWD_RX_INTR_TIMEOUT_MIN,
   1496                             TWD_RX_INTR_TIMEOUT_MAX,
   1497                             sizeof p->twdInitParams.tGeneral.RxIntrPacingTimeout,
   1498                             (TI_UINT8*)&(p->twdInitParams.tGeneral.RxIntrPacingTimeout));
   1499 
   1500 
   1501     regReadIntegerParameter(pAdapter, &STRRxAggregationPktsLimit,
   1502                             TWD_RX_AGGREG_PKTS_LIMIT_DEF, TWD_RX_AGGREG_PKTS_LIMIT_MIN,
   1503                             TWD_RX_AGGREG_PKTS_LIMIT_MAX,
   1504                             sizeof p->twdInitParams.tGeneral.uRxAggregPktsLimit,
   1505                             (TI_UINT8*)&(p->twdInitParams.tGeneral.uRxAggregPktsLimit));
   1506 
   1507     regReadIntegerParameter(pAdapter, &STRTxAggregationPktsLimit,
   1508                             TWD_TX_AGGREG_PKTS_LIMIT_DEF, TWD_TX_AGGREG_PKTS_LIMIT_MIN,
   1509                             TWD_TX_AGGREG_PKTS_LIMIT_MAX,
   1510                             sizeof p->twdInitParams.tGeneral.uTxAggregPktsLimit,
   1511                             (TI_UINT8*)&(p->twdInitParams.tGeneral.uTxAggregPktsLimit));
   1512 
   1513     regReadIntegerParameter(pAdapter, &STRdot11DesiredChannel,
   1514                         SITE_MGR_CHANNEL_DEF, SITE_MGR_CHANNEL_MIN, SITE_MGR_CHANNEL_MAX,
   1515                         sizeof p->siteMgrInitParams.siteMgrDesiredChannel,
   1516                         (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredChannel);
   1517 
   1518     /* NOTE: desired BSSID and SSID (and BSS type, later on) are currently set both to the SME and the site manager!!! */
   1519     {
   1520         TI_UINT8 bssidBroadcast[MAC_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
   1521 
   1522         MAC_COPY (p->siteMgrInitParams.siteMgrDesiredBSSID, bssidBroadcast);
   1523         MAC_COPY (p->tSmeModifiedInitParams.tDesiredBssid, bssidBroadcast);
   1524     }
   1525 
   1526     {
   1527         static char dummySsidString[MAX_SSID_LEN];
   1528 
   1529         /*
   1530             Default SSID should be non-Valid SSID, hence the STA will not try to connect
   1531         */
   1532         for(loopIndex = 0; loopIndex < MAX_SSID_LEN; loopIndex++)
   1533                 dummySsidString[loopIndex] = (loopIndex+1);
   1534 
   1535         regReadStringParameter(pAdapter, &STRdot11DesiredSSID,
   1536                         (TI_INT8*)dummySsidString,
   1537                         (TI_UINT8)MAX_SSID_LEN,
   1538                         (TI_UINT8*)p->siteMgrInitParams.siteMgrDesiredSSID.str,
   1539                         (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredSSID.len);
   1540 
   1541         /* in case no SSID desired at the init file set dummy len */
   1542         for(loopIndex = 0; loopIndex < MAX_SSID_LEN; loopIndex++)
   1543         {
   1544             if(dummySsidString[loopIndex] != p->siteMgrInitParams.siteMgrDesiredSSID.str[loopIndex])
   1545                 break;
   1546         }
   1547 
   1548         p->siteMgrInitParams.siteMgrDesiredSSID.len = (TI_UINT8)loopIndex;
   1549     }
   1550 
   1551     NdisMoveMemory(&p->tSmeModifiedInitParams.tDesiredSsid,
   1552                    &p->siteMgrInitParams.siteMgrDesiredSSID,
   1553                    sizeof(TSsid));
   1554 
   1555     regReadIntegerParameter(pAdapter, &STRdot11DesiredNetworkType,
   1556                             SITE_MGR_DOT_11_MODE_DEF, SITE_MGR_DOT_11_MODE_MIN, SITE_MGR_DOT_11_MODE_MAX,
   1557                             sizeof p->siteMgrInitParams.siteMgrDesiredDot11Mode,
   1558                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredDot11Mode);
   1559 
   1560     regReadIntegerParameter(pAdapter, &STRdot11SlotTime,
   1561         PHY_SLOT_TIME_SHORT, PHY_SLOT_TIME_LONG, PHY_SLOT_TIME_SHORT,
   1562         sizeof p->siteMgrInitParams.siteMgrDesiredSlotTime,
   1563         (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredSlotTime);
   1564 
   1565     regReadIntegerParameter(pAdapter, &STRdot11RtsCtsProtection,
   1566         0, 0, 1,
   1567         sizeof p->ctrlDataInitParams.ctrlDataDesiredCtsRtsStatus,
   1568         (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataDesiredCtsRtsStatus);
   1569 
   1570     regReadIntegerParameter(pAdapter, &STRdot11IbssProtection,
   1571         ERP_PROTECTION_STANDARD, ERP_PROTECTION_NONE, ERP_PROTECTION_STANDARD,
   1572         sizeof p->ctrlDataInitParams.ctrlDataDesiredIbssProtection,
   1573         (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataDesiredIbssProtection);
   1574 
   1575     /* When working in band A, minimum channel is 36 and not 1*/
   1576     if (p->siteMgrInitParams.siteMgrDesiredDot11Mode  == DOT11_A_MODE)
   1577     {
   1578         if (p->siteMgrInitParams.siteMgrDesiredChannel < SITE_MGR_CHANNEL_A_MIN)
   1579             p->siteMgrInitParams.siteMgrDesiredChannel = SITE_MGR_CHANNEL_A_MIN;
   1580     }
   1581 
   1582     {
   1583         static TI_UINT32 Freq2ChannelTable[] = {0,2412000,2417000,2422000,2427000,2432000,2437000,
   1584                                       2442000,2447000,2452000,2457000,
   1585                                       2462000,2467000,2472000,2484000};
   1586 
   1587         memcpy(p->siteMgrInitParams.siteMgrFreq2ChannelTable,
   1588                Freq2ChannelTable,
   1589                sizeof(Freq2ChannelTable));
   1590     }
   1591 
   1592     /* read TX rates from registry */
   1593     readRates(pAdapter, p);
   1594 
   1595     /* Note: desired BSS type is set both to the SME and site manager */
   1596     regReadIntegerParameter(pAdapter, &STRdot11DesiredBSSType,
   1597                             SITE_MGR_BSS_TYPE_DEF, BSS_INDEPENDENT, BSS_ANY,
   1598                             sizeof p->siteMgrInitParams.siteMgrDesiredBSSType,
   1599                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredBSSType);
   1600     p->tSmeModifiedInitParams.eDesiredBssType = p->siteMgrInitParams.siteMgrDesiredBSSType;
   1601 
   1602     regReadIntegerParameter(pAdapter, &STRdot11BeaconPeriod,
   1603                             SITE_MGR_BEACON_INTERVAL_DEF, SITE_MGR_BEACON_INTERVAL_MIN,
   1604                             SITE_MGR_BEACON_INTERVAL_MAX,
   1605                             sizeof p->siteMgrInitParams.siteMgrDesiredBeaconInterval,
   1606                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredBeaconInterval);
   1607 
   1608     regReadIntegerParameter(pAdapter, &STRdot11ShortPreambleInvoked,
   1609                             SITE_MGR_PREAMBLE_TYPE_DEF, PREAMBLE_LONG, PREAMBLE_SHORT,
   1610                             sizeof p->siteMgrInitParams.siteMgrDesiredPreambleType,
   1611                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredPreambleType);
   1612 
   1613 	regReadIntegerParameter(pAdapter, &STRReAuthActivePriority,
   1614 							POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_DEF_VALUE, POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_MIN_VALUE,
   1615 							POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_MAX_VALUE,
   1616 							sizeof p->PowerMgrInitParams.reAuthActivePriority,
   1617 							(TI_UINT8*)&p->PowerMgrInitParams.reAuthActivePriority);
   1618 
   1619     regReadIntegerParameter(pAdapter, &STRExternalMode,
   1620                             SITE_MGR_EXTERNAL_MODE_DEF, SITE_MGR_EXTERNAL_MODE_MIN,
   1621                             SITE_MGR_EXTERNAL_MODE_MAX,
   1622                             sizeof p->siteMgrInitParams.siteMgrExternalConfiguration,
   1623                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrExternalConfiguration);
   1624 
   1625     regReadIntegerParameter(pAdapter, &STRWiFiAdHoc,
   1626                             SITE_MGR_WiFiAdHoc_DEF, SITE_MGR_WiFiAdHoc_MIN, SITE_MGR_WiFiAdHoc_MAX,
   1627                             sizeof p->siteMgrInitParams.siteMgrWiFiAdhoc,
   1628                             (TI_UINT8*)&p->siteMgrInitParams.siteMgrWiFiAdhoc);
   1629 
   1630     regReadIntegerParameter(pAdapter, &STRWiFiWmmPS,
   1631                             WIFI_WMM_PS_DEF, WIFI_WMM_PS_MIN, WIFI_WMM_PS_MAX,
   1632                             sizeof p->twdInitParams.tGeneral.WiFiWmmPS,
   1633                             (TI_UINT8*)&p->twdInitParams.tGeneral.WiFiWmmPS);
   1634 
   1635     regReadIntegerParameter(pAdapter, &STRConnSelfTimeout,
   1636                             CONN_SELF_TIMEOUT_DEF, CONN_SELF_TIMEOUT_MIN, CONN_SELF_TIMEOUT_MAX,
   1637                             sizeof p->connInitParams.connSelfTimeout,
   1638                             (TI_UINT8*)&p->connInitParams.connSelfTimeout);
   1639 
   1640     regReadIntegerParameter(pAdapter, &STRdot11AuthRespTimeout,
   1641                             AUTH_RESPONSE_TIMEOUT_DEF, AUTH_RESPONSE_TIMEOUT_MIN, AUTH_RESPONSE_TIMEOUT_MAX,
   1642                             sizeof p->authInitParams.authResponseTimeout,
   1643                             (TI_UINT8*)&p->authInitParams.authResponseTimeout);
   1644 
   1645     regReadIntegerParameter(pAdapter, &STRdot11MaxAuthRetry,
   1646                             AUTH_MAX_RETRY_COUNT_DEF, AUTH_MAX_RETRY_COUNT_MIN, AUTH_MAX_RETRY_COUNT_MAX,
   1647                             sizeof p->authInitParams.authMaxRetryCount,
   1648                             (TI_UINT8*)&p->authInitParams.authMaxRetryCount);
   1649 
   1650     regReadIntegerParameter(pAdapter, &STRdot11AssocRespTimeout,
   1651                             ASSOC_RESPONSE_TIMEOUT_DEF, ASSOC_RESPONSE_TIMEOUT_MIN, ASSOC_RESPONSE_TIMEOUT_MAX,
   1652                             sizeof p->assocInitParams.assocResponseTimeout,
   1653                             (TI_UINT8*)&p->assocInitParams.assocResponseTimeout);
   1654 
   1655     regReadIntegerParameter(pAdapter, &STRdot11MaxAssocRetry,
   1656                             ASSOC_MAX_RETRY_COUNT_DEF, ASSOC_MAX_RETRY_COUNT_MIN, ASSOC_MAX_RETRY_COUNT_MAX,
   1657                             sizeof p->assocInitParams.assocMaxRetryCount,
   1658                             (TI_UINT8*)&p->assocInitParams.assocMaxRetryCount);
   1659 
   1660     regReadIntegerParameter(pAdapter, &STRRxDataFiltersEnabled,
   1661                             RX_DATA_FILTERS_ENABLED_DEF, RX_DATA_FILTERS_ENABLED_MIN, RX_DATA_FILTERS_ENABLED_MAX,
   1662                             sizeof p->rxDataInitParams.rxDataFiltersEnabled,
   1663                             (TI_UINT8*)&p->rxDataInitParams.rxDataFiltersEnabled);
   1664 
   1665     regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter1Offset,
   1666                             RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX,
   1667                             sizeof filterOffset,
   1668                             (TI_UINT8*) &filterOffset);
   1669 
   1670     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter1Mask,
   1671                             RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF,
   1672                             (TI_UINT8*) filterMask,
   1673                             (TI_UINT8*) &filterMaskLength);
   1674 
   1675     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter1Pattern,
   1676                             RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF,
   1677                             (TI_UINT8*) filterPattern,
   1678                             (TI_UINT8*) &filterPatternLength);
   1679 
   1680     parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[0], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength);
   1681 
   1682     regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter2Offset,
   1683                             RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX,
   1684                             sizeof filterOffset,
   1685                             (TI_UINT8*) &filterOffset);
   1686 
   1687     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter2Mask,
   1688                             RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF,
   1689                             (TI_UINT8*) filterMask,
   1690                             (TI_UINT8*) &filterMaskLength);
   1691 
   1692     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter2Pattern,
   1693                             RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF,
   1694                             (TI_UINT8*) filterPattern,
   1695                             (TI_UINT8*) &filterPatternLength);
   1696 
   1697     parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[1], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength);
   1698 
   1699     regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter3Offset,
   1700                             RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX,
   1701                             sizeof filterOffset,
   1702                             (TI_UINT8*) &filterOffset);
   1703 
   1704     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter3Mask,
   1705                             RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF,
   1706                             (TI_UINT8*) filterMask,
   1707                             (TI_UINT8*) &filterMaskLength);
   1708 
   1709     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter3Pattern,
   1710                             RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF,
   1711                             (TI_UINT8*) filterPattern,
   1712                             (TI_UINT8*) &filterPatternLength);
   1713 
   1714     parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[2], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength);
   1715 
   1716     regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter4Offset,
   1717                             RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX,
   1718                             sizeof filterOffset,
   1719                             (TI_UINT8*) &filterOffset);
   1720 
   1721     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter4Mask,
   1722                             RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF,
   1723                             (TI_UINT8*) filterMask,
   1724                             (TI_UINT8*) &filterMaskLength);
   1725 
   1726     regReadStringParameter(pAdapter, &STRRxDataFiltersFilter4Pattern,
   1727                             RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF,
   1728                             (TI_UINT8*) filterPattern,
   1729                             (TI_UINT8*) &filterPatternLength);
   1730 
   1731     parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[3], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength);
   1732 
   1733     regReadIntegerParameter(pAdapter, &STRRxDataFiltersDefaultAction,
   1734                             RX_DATA_FILTERS_DEFAULT_ACTION_DEF, RX_DATA_FILTERS_DEFAULT_ACTION_MIN,
   1735                             RX_DATA_FILTERS_DEFAULT_ACTION_MAX,
   1736                             sizeof p->rxDataInitParams.rxDataFiltersDefaultAction,
   1737                             (TI_UINT8*)&p->rxDataInitParams.rxDataFiltersDefaultAction);
   1738 
   1739 	regReadIntegerParameter(pAdapter, &STRReAuthActiveTimeout,
   1740                             RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_DEF, RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_MIN,
   1741 							RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_MAX,
   1742                             sizeof p->rxDataInitParams.reAuthActiveTimeout,
   1743 							(TI_UINT8*)&p->rxDataInitParams.reAuthActiveTimeout);
   1744 
   1745     regReadIntegerParameter(pAdapter, &STRCreditCalcTimout,
   1746                             TX_DATA_CREDIT_CALC_TIMOEUT_DEF, TX_DATA_CREDIT_CALC_TIMOEUT_MIN,
   1747                             TX_DATA_CREDIT_CALC_TIMOEUT_MAX,
   1748                             sizeof p->txDataInitParams.creditCalculationTimeout,
   1749                             (TI_UINT8*)&p->txDataInitParams.creditCalculationTimeout);
   1750 
   1751 	regReadIntegerParameter(pAdapter, &STRCreditCalcTimerEnabled,
   1752                             TI_FALSE, TI_FALSE, TI_TRUE,
   1753 							sizeof p->txDataInitParams.bCreditCalcTimerEnabled,
   1754 							(TI_UINT8*)&p->txDataInitParams.bCreditCalcTimerEnabled);
   1755 
   1756     regReadIntegerParameter(pAdapter, &STRTrafficAdmControlTimeout,
   1757                     TRAFFIC_ADM_CONTROL_TIMEOUT_DEF, TRAFFIC_ADM_CONTROL_TIMEOUT_MIN,
   1758                     TRAFFIC_ADM_CONTROL_TIMEOUT_MAX,
   1759                     sizeof p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlResponseTimeout,
   1760                     (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlResponseTimeout);
   1761 
   1762     regReadIntegerParameter(pAdapter, &STRTrafficAdmControlUseFixedMsduSize,
   1763                     TI_FALSE, TI_FALSE, TI_TRUE,
   1764                     sizeof p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlUseFixedMsduSize,
   1765                     (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlUseFixedMsduSize);
   1766 
   1767     regReadIntegerParameter(pAdapter, &STRDesiredMaxSpLen,
   1768                     QOS_MAX_SP_LEN_DEF, QOS_MAX_SP_LEN_MIN,
   1769                     QOS_MAX_SP_LEN_MAX,
   1770                     sizeof p->qosMngrInitParams.desiredMaxSpLen,
   1771                     (TI_UINT8*)&p->qosMngrInitParams.desiredMaxSpLen);
   1772 
   1773     regReadIntegerParameter(pAdapter, &STRCwFromUserEnable,
   1774                     QOS_CW_USER_ENABLE_DEF, QOS_CW_USER_ENABLE_MIN,
   1775                     QOS_CW_USER_ENABLE_MAX,
   1776                     sizeof p->qosMngrInitParams.bCwFromUserEnable,
   1777                     (TI_UINT8*)&p->qosMngrInitParams.bCwFromUserEnable);
   1778 
   1779     regReadIntegerParameter(pAdapter, &STRDesireCwMin,
   1780                     QOS_CW_CWMIN_DEF, QOS_CW_CWMIN_MIN,
   1781                     QOS_CW_CWMIN_MAX,
   1782                     sizeof p->qosMngrInitParams.uDesireCwMin,
   1783                     (TI_UINT8*)&p->qosMngrInitParams.uDesireCwMin);
   1784 
   1785     regReadIntegerParameter(pAdapter, &STRDesireCwMax,
   1786                     QOS_CW_CWMAX_DEF, QOS_CW_CWMAX_MIN,
   1787                     QOS_CW_CWMAX_MAX,
   1788                     sizeof p->qosMngrInitParams.uDesireCwMax,
   1789                     (TI_UINT8*)&p->qosMngrInitParams.uDesireCwMax);
   1790 
   1791 /*                              SME Initialization Parameters                           */
   1792 /*                          ====================================                        */
   1793 
   1794     regReadIntegerParameter(pAdapter, &STRSmeRadioOn,
   1795                             TI_TRUE, TI_FALSE, TI_TRUE,
   1796                             sizeof p->tSmeModifiedInitParams.bRadioOn,
   1797                             (TI_UINT8*)&p->tSmeModifiedInitParams.bRadioOn);
   1798     regReadIntegerParameter(pAdapter, &STRSmeConnectMode,
   1799                             CONNECT_MODE_AUTO, CONNECT_MODE_AUTO, CONNECT_MODE_MANUAL,
   1800                             sizeof p->tSmeModifiedInitParams.eConnectMode,
   1801                             (TI_UINT8*)&p->tSmeModifiedInitParams.eConnectMode);
   1802 
   1803     {
   1804         /* due to the fact that two following init keys has negative values, we read them as table */
   1805         TI_UINT32   uEntriesNumber = 1;
   1806 
   1807         regReadIntegerTable(pAdapter ,&STRSmeScanRssiThreshold,
   1808                             SME_SCAN_RSSI_THRESHOLD_DEF, sizeof(TI_INT8) * 3,
   1809                             (TI_UINT8*)&p->tSmeInitParams.iRssiThreshold, NULL, &uEntriesNumber,
   1810                             sizeof(TI_INT8),TI_FALSE);
   1811 
   1812         if ( (p->tSmeInitParams.iRssiThreshold < SME_SCAN_RSSI_THRESHOLD_MIN) ||
   1813              (p->tSmeInitParams.iRssiThreshold > SME_SCAN_RSSI_THRESHOLD_MAX))
   1814         {
   1815             p->tSmeInitParams.iRssiThreshold = SME_SCAN_RSSI_THRESHOLD_DEF_NUM;
   1816         }
   1817 
   1818         regReadIntegerTable(pAdapter ,&STRSmeScanSnrThreshold,
   1819                                SME_SCAN_SNR_THRESHOLD_DEF, sizeof(TI_INT8),
   1820                                (TI_UINT8*)&p->tSmeInitParams.iSnrThreshold, NULL, &uEntriesNumber, sizeof(TI_INT8),TI_FALSE);
   1821 
   1822         if ( (p->tSmeInitParams.iSnrThreshold < SME_SCAN_SNR_THRESHOLD_MIN) ||
   1823              (p->tSmeInitParams.iSnrThreshold > SME_SCAN_SNR_THRESHOLD_MAX))
   1824         {
   1825             p->tSmeInitParams.iSnrThreshold = SME_SCAN_SNR_THRESHOLD_DEF_NUM;
   1826         }
   1827     }
   1828 
   1829 
   1830     regReadIntegerParameter(pAdapter ,&STRRoamScanEnable,
   1831                         0, 0, 1, sizeof(p->tRoamScanMngrInitParams.RoamingScanning_2_4G_enable),
   1832                         (TI_UINT8*)&p->tRoamScanMngrInitParams.RoamingScanning_2_4G_enable);
   1833 
   1834     regReadIntegerParameter(pAdapter, &STRSmeScanCycleNumber,
   1835                             SME_SCAN_CYCLES_DEF, SME_SCAN_CYCLES_MIN, SME_SCAN_CYCLES_MAX,
   1836                             sizeof p->tSmeInitParams.uCycleNum,
   1837                             (TI_UINT8*)&p->tSmeInitParams.uCycleNum);
   1838     regReadIntegerParameter(pAdapter, &STRSmeScanMaxDwellTime,
   1839                             SME_SCAN_MAX_DWELL_DEF, SME_SCAN_MAX_DWELL_MIN, SME_SCAN_MAX_DWELL_MAX,
   1840                             sizeof p->tSmeInitParams.uMaxScanDuration,
   1841                             (TI_UINT8*)&p->tSmeInitParams.uMaxScanDuration);
   1842     regReadIntegerParameter(pAdapter, &STRSmeScanMinDwellTime,
   1843                             SME_SCAN_MIN_DWELL_DEF, SME_SCAN_MIN_DWELL_MIN, SME_SCAN_MIN_DWELL_MAX,
   1844                             sizeof p->tSmeInitParams.uMinScanDuration,
   1845                             (TI_UINT8*)&p->tSmeInitParams.uMinScanDuration);
   1846     regReadIntegerParameter(pAdapter, &STRSmeScanProbeRequestNumber,
   1847                             SME_SCAN_PROBE_REQ_DEF, SME_SCAN_PROBE_REQ_MIN, SME_SCAN_PROBE_REQ_MAX,
   1848                             sizeof p->tSmeInitParams.uProbeReqNum,
   1849                             (TI_UINT8*)&p->tSmeInitParams.uProbeReqNum);
   1850 
   1851     {
   1852         TI_UINT32 *uSmeScanIntervalsTempList;
   1853 
   1854         uSmeScanIntervalsTempList = os_memoryAlloc(pAdapter, SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE * sizeof(TI_UINT32));
   1855         if (!uSmeScanIntervalsTempList) {
   1856             return;
   1857         }
   1858         regReadIntegerTable(pAdapter, &STRSmeScanIntervals, SME_SCAN_INTERVALS_LIST_VAL_DEF,
   1859                         SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE,
   1860                         (TI_UINT8 *)uSmeScanIntervalsTempList, NULL, &uTempEntriesCount,
   1861                         sizeof (TI_UINT32),TI_FALSE);
   1862         /* sanity check */
   1863         if (uTempEntriesCount > PERIODIC_SCAN_MAX_INTERVAL_NUM)
   1864         {
   1865             uTempEntriesCount = PERIODIC_SCAN_MAX_INTERVAL_NUM;
   1866         }
   1867         /* convert from TI_UINT8 to TI_UINT32 */
   1868         for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++)
   1869         {
   1870             p->tSmeInitParams.uScanIntervals[ uIndex ] = uSmeScanIntervalsTempList[ uIndex ];
   1871         }
   1872         os_memoryFree(pAdapter, uSmeScanIntervalsTempList, SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE * sizeof(TI_UINT32));
   1873     }
   1874     {
   1875         TI_UINT8  *uSmeTempList;
   1876         TI_UINT32  uSmeGChannelsCount;
   1877 
   1878         uSmeTempList = os_memoryAlloc(pAdapter, SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE);
   1879         if (!uSmeTempList) {
   1880             return;
   1881         }
   1882         regReadIntegerTable(pAdapter, &STRSmeScanGChannels, SME_SCAN_CHANNELS_LIST_G_VAL_DEF,
   1883                             SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE,
   1884                             (TI_UINT8 *)uSmeTempList, NULL, &uTempEntriesCount,
   1885                             sizeof (TI_UINT8),TI_FALSE);
   1886 
   1887 
   1888         /* convert to channel list */
   1889         for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++)
   1890         {
   1891             p->tSmeInitParams.tChannelList[ uIndex ].eBand = RADIO_BAND_2_4_GHZ;
   1892             p->tSmeInitParams.tChannelList[ uIndex ].uChannel = uSmeTempList[ uIndex ];
   1893         }
   1894         uSmeGChannelsCount = uTempEntriesCount;
   1895 
   1896         /*
   1897          * Add A_MODE channels to scan list only if it enabled
   1898          * NOTE: Don't use empty channel list string
   1899          */
   1900         if ((p->siteMgrInitParams.siteMgrDesiredDot11Mode  == DOT11_A_MODE) ||
   1901             (p->siteMgrInitParams.siteMgrDesiredDot11Mode  == DOT11_DUAL_MODE))
   1902         {
   1903             regReadIntegerTable(pAdapter, &STRSmeScanAChannels, SME_SCAN_CHANNELS_LIST_A_VAL_DEF,
   1904                                 SME_SCAN_CHANNELS_LIST_A_STRING_MAX_SIZE,
   1905                                 (TI_UINT8*)&uSmeTempList, NULL, &uTempEntriesCount,
   1906                                 sizeof (TI_UINT8),TI_FALSE);
   1907 
   1908             /* convert to channel list */
   1909             for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++)
   1910             {
   1911                 p->tSmeInitParams.tChannelList[ uSmeGChannelsCount + uIndex ].eBand = RADIO_BAND_5_0_GHZ;
   1912                 p->tSmeInitParams.tChannelList[ uSmeGChannelsCount + uIndex ].uChannel = uSmeTempList[ uIndex ];
   1913             }
   1914 
   1915             p->tSmeInitParams.uChannelNum = uSmeGChannelsCount + uIndex;
   1916         }
   1917         else
   1918         {
   1919             p->tSmeInitParams.uChannelNum = uSmeGChannelsCount;
   1920         }
   1921         os_memoryFree(pAdapter, uSmeTempList, SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE);
   1922     }
   1923 
   1924     regReadIntegerParameter(pAdapter, &STRdot11AuthenticationMode,
   1925                             RSN_AUTH_SUITE_DEF, RSN_AUTH_SUITE_MIN, RSN_AUTH_SUITE_MAX,
   1926                             sizeof p->rsnInitParams.authSuite,
   1927                             (TI_UINT8*)&p->rsnInitParams.authSuite);
   1928 
   1929     /* Soft Gemini Section */
   1930 
   1931     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistEnable,
   1932                             SOFT_GEMINI_ENABLED_DEF, SOFT_GEMINI_ENABLED_MIN, SOFT_GEMINI_ENABLED_MAX,
   1933                             sizeof p->SoftGeminiInitParams.SoftGeminiEnable,
   1934                             (TI_UINT8*)&p->SoftGeminiInitParams.SoftGeminiEnable);
   1935 
   1936     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsBtLoadRatio,
   1937                             SOFT_GEMINI_PARAMS_LOAD_RATIO_DEF, SOFT_GEMINI_PARAMS_LOAD_RATIO_MIN, SOFT_GEMINI_PARAMS_LOAD_RATIO_MAX,
   1938                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_LOAD_RATIO],
   1939                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_LOAD_RATIO]);
   1940 
   1941 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsAutoPsMode,
   1942                             SOFT_GEMINI_PARAMS_AUTO_PS_MODE_DEF, SOFT_GEMINI_PARAMS_AUTO_PS_MODE_MIN, SOFT_GEMINI_PARAMS_AUTO_PS_MODE_MAX,
   1943                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_PS_MODE],
   1944                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_PS_MODE]);
   1945 
   1946 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexHv3AutoScanEnlargedNumOfProbeReqPercent,
   1947                             SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_DEF, SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_MIN, SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_MAX,
   1948                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_PROBE_REQ],
   1949                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_PROBE_REQ]);
   1950 
   1951 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexHv3AutoScanEnlargedScanWinodowPercent,
   1952                             SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_HV3_DEF, SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_HV3_MIN, SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_HV3_MAX,
   1953                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_HV3],
   1954                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_HV3]);
   1955 
   1956 
   1957 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexA2dpAutoScanEnlargedScanWinodowPercent,
   1958                             SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_A2DP_DEF, SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_A2DP_MIN, SOFT_GEMINI_PARAMS_ACTIVE_SCAN_DURATION_FACTOR_A2DP_MAX,
   1959                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_A2DP],
   1960                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_A2DP]);
   1961 
   1962 
   1963 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistHv3MaxOverride,
   1964 							SOFT_GEMINI_HV3_MAX_OVERRIDE_DEF, SOFT_GEMINI_HV3_MAX_OVERRIDE_MIN, SOFT_GEMINI_HV3_MAX_OVERRIDE_MAX,
   1965 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_HV3_MAX_OVERRIDE],
   1966 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_HV3_MAX_OVERRIDE]);
   1967 
   1968 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistPerThreshold,
   1969 							SOFT_GEMINI_PARAMS_PER_THRESHOLD_DEF, SOFT_GEMINI_PARAMS_PER_THRESHOLD_MIN, SOFT_GEMINI_PARAMS_PER_THRESHOLD_MAX,
   1970 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_PER_THRESHOLD],
   1971 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_PER_THRESHOLD]);
   1972 
   1973 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistNfsSampleInterval,
   1974 							SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_DEF, SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_MIN, SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_MAX,
   1975 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL],
   1976 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL]);
   1977 
   1978 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAntennaConfiguration,
   1979 							SOFT_GEMINI_ANTENNA_CONFIGURATION_DEF, SOFT_GEMINI_ANTENNA_CONFIGURATION_MIN, SOFT_GEMINI_ANTENNA_CONFIGURATION_MAX,
   1980 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ANTENNA_CONFIGURATION],
   1981 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ANTENNA_CONFIGURATION]);
   1982 
   1983 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexMaxConsecutiveBeaconMissPrecent,
   1984 							SOFT_GEMINI_BEACON_MISS_PERCENT_DEF, SOFT_GEMINI_BEACON_MISS_PERCENT_MIN, SOFT_GEMINI_BEACON_MISS_PERCENT_MAX,
   1985 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BEACON_MISS_PERCENT],
   1986 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BEACON_MISS_PERCENT]);
   1987 
   1988 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAPRateAdapationThr,
   1989 							SOFT_GEMINI_RATE_ADAPT_THRESH_DEF, SOFT_GEMINI_RATE_ADAPT_THRESH_MIN, SOFT_GEMINI_RATE_ADAPT_THRESH_MAX,
   1990 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH],
   1991 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH]);
   1992 
   1993 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAPRateAdapationSnr,
   1994 							SOFT_GEMINI_RATE_ADAPT_SNR_DEF, SOFT_GEMINI_RATE_ADAPT_SNR_MIN, SOFT_GEMINI_RATE_ADAPT_SNR_MAX,
   1995 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_SNR],
   1996 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_SNR]);
   1997 
   1998 
   1999     /* BR section */
   2000 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMinBR,
   2001 							SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR_MAX,
   2002 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR],
   2003 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR]);
   2004 
   2005     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMinBR,
   2006 							SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR_MAX,
   2007 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR],
   2008 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR]);
   2009 
   2010 
   2011     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMaxBR,
   2012 							SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR_MAX,
   2013 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR],
   2014 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR]);
   2015 
   2016     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMaxBR,
   2017 							SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR_MAX,
   2018 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR],
   2019 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR]);
   2020 
   2021 
   2022     regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclMasterBR,
   2023 							SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR_DEF, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR_MIN, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR_MAX,
   2024 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR],
   2025 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR]);
   2026 
   2027 
   2028      regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclSlaveBR,
   2029 							SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR_DEF, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR_MIN, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR_MAX,
   2030 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR],
   2031 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR]);
   2032 
   2033 
   2034 
   2035    /* EDR section */
   2036    regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMinEDR,
   2037 							SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR_MAX,
   2038 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR],
   2039 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR]);
   2040 
   2041     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMinEDR,
   2042 							SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR_MAX,
   2043 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR],
   2044 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR]);
   2045 
   2046     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMaxEDR,
   2047 							SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR_MAX,
   2048 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR],
   2049 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR]);
   2050 
   2051     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMaxEDR,
   2052 							SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR_DEF, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR_MIN, SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR_MAX,
   2053 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR],
   2054 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR]);
   2055 
   2056     regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclMasterEDR,
   2057 							SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR_DEF, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR_MIN, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR_MAX,
   2058 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR],
   2059 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR]);
   2060 
   2061    regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclSlaveEDR,
   2062 							SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR_DEF, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR_MIN, SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR_MAX,
   2063 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR],
   2064 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR]);
   2065 
   2066 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistRxt,
   2067 							SOFT_GEMINI_RXT_DEF, SOFT_GEMINI_RXT_MIN, SOFT_GEMINI_RXT_MAX,
   2068 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RXT],
   2069 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RXT]);
   2070 
   2071 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistTxt,
   2072 							SOFT_GEMINI_TXT_DEF, SOFT_GEMINI_TXT_MIN, SOFT_GEMINI_TXT_MAX,
   2073 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TXT],
   2074 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TXT]);
   2075 
   2076 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistAdaptiveRxtTxt,
   2077 							SOFT_GEMINI_ADAPTIVE_RXT_TXT_DEF, SOFT_GEMINI_ADAPTIVE_RXT_TXT_MIN, SOFT_GEMINI_ADAPTIVE_RXT_TXT_MAX,
   2078 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ADAPTIVE_RXT_TXT],
   2079 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ADAPTIVE_RXT_TXT]);
   2080 
   2081 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistPsPollTimeout,
   2082 							SOFT_GEMINI_PS_POLL_TIMEOUT_DEF, SOFT_GEMINI_PS_POLL_TIMEOUT_MIN, SOFT_GEMINI_PS_POLL_TIMEOUT_MAX,
   2083 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PS_POLL_TIMEOUT],
   2084 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PS_POLL_TIMEOUT]);
   2085 
   2086 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdTimeout,
   2087 							SOFT_GEMINI_UPSD_TIMEOUT_DEF, SOFT_GEMINI_UPSD_TIMEOUT_MIN, SOFT_GEMINI_UPSD_TIMEOUT_MAX,
   2088 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_UPSD_TIMEOUT],
   2089 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_UPSD_TIMEOUT]);
   2090 
   2091 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMasterMinEDR,
   2092 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR_MAX,
   2093 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR],
   2094 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR]);
   2095 
   2096     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclSlaveMinEDR,
   2097 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR_MAX,
   2098 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR],
   2099 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR]);
   2100 
   2101 
   2102 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMasterMaxEDR,
   2103 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR_MAX,
   2104 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR],
   2105 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR]);
   2106 
   2107     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclSlaveMaxEDR,
   2108 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR_MAX,
   2109 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR],
   2110 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR]);
   2111 
   2112 
   2113 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclMasterEDR,
   2114 							SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR_MAX,
   2115 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR],
   2116 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR]);
   2117 
   2118     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclSlaveEDR,
   2119 							SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR_DEF, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR_MIN, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR_MAX,
   2120 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR],
   2121 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR]);
   2122 
   2123     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMinBR,
   2124 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR_MAX,
   2125 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MIN_BR],
   2126 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MIN_BR]);
   2127 
   2128 
   2129     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMaxBR,
   2130 							SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR_DEF, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR_MIN, SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR_MAX,
   2131 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MAX_BR],
   2132 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MAX_BR]);
   2133 
   2134     regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclBR,
   2135 							SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR_DEF, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR_MIN, SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR_MAX,
   2136 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_BR],
   2137 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_BR]);
   2138 
   2139     regReadIntegerParameter(pAdapter, &STRBThWlanCoexHv3AutoEnlargePassiveScanWindowPercent,
   2140                             SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3_DEF, SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3_MIN, SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3_MAX,
   2141                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3],
   2142                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3]);
   2143 
   2144     regReadIntegerParameter(pAdapter, &STRBThWlanCoexA2DPAutoEnlargePassiveScanWindowPercent,
   2145                             SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP_DEF, SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP_MIN, SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP_MAX,
   2146                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP],
   2147                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP]);
   2148 
   2149     regReadIntegerParameter(pAdapter, &STRBThWlanCoexPassiveScanA2dpBtTime,
   2150                             SOFT_GEMINI_PASSIVE_SCAN_A2DP_BT_TIME_DEF, SOFT_GEMINI_PASSIVE_SCAN_A2DP_BT_TIME_MIN, SOFT_GEMINI_PASSIVE_SCAN_A2DP_BT_TIME_MAX,
   2151                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_A2DP_BT_TIME],
   2152                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_A2DP_BT_TIME]);
   2153 
   2154     regReadIntegerParameter(pAdapter, &STRBThWlanCoexPassiveScanA2dpWlanTime,
   2155                             SOFT_GEMINI_PASSIVE_SCAN_A2DP_WLAN_TIME_DEF, SOFT_GEMINI_PASSIVE_SCAN_A2DP_WLAN_TIME_MIN, SOFT_GEMINI_PASSIVE_SCAN_A2DP_WLAN_TIME_MAX,
   2156                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_A2DP_WLAN_TIME],
   2157                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PASSIVE_SCAN_A2DP_WLAN_TIME]);
   2158 
   2159 	regReadIntegerParameter(pAdapter, &STRBThWlancoexDhcpTime,
   2160 							SOFT_GEMINI_DHCP_TIME_DEF, SOFT_GEMINI_DHCP_TIME_MIN, SOFT_GEMINI_DHCP_TIME_MAX,
   2161 							sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_DHCP_TIME],
   2162 							(TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_DHCP_TIME]);
   2163 
   2164 	regReadIntegerParameter(pAdapter, &STRBThWlanCoexHv3MaxServed,
   2165                             SOFT_GEMINI_HV3_MAX_SERVED_DEF, SOFT_GEMINI_HV3_MAX_SERVED_MIN, SOFT_GEMINI_HV3_MAX_SERVED_MAX,
   2166                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_HV3_MAX_SERVED],
   2167                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_HV3_MAX_SERVED]);
   2168     regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp1,
   2169                             SOFT_GEMINI_TEMP_PARAM_1_DEF, SOFT_GEMINI_TEMP_PARAM_1_MIN, SOFT_GEMINI_TEMP_PARAM_1_MAX,
   2170                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_1],
   2171                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_1]);
   2172 
   2173     regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp2,
   2174                             SOFT_GEMINI_TEMP_PARAM_2_DEF, SOFT_GEMINI_TEMP_PARAM_2_MIN, SOFT_GEMINI_TEMP_PARAM_2_MAX,
   2175                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_2],
   2176                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_2]);
   2177 
   2178     regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp3,
   2179                             SOFT_GEMINI_TEMP_PARAM_3_DEF, SOFT_GEMINI_TEMP_PARAM_3_MIN, SOFT_GEMINI_TEMP_PARAM_3_MAX,
   2180                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_3],
   2181                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_3]);
   2182 
   2183     regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp4,
   2184                             SOFT_GEMINI_TEMP_PARAM_4_DEF, SOFT_GEMINI_TEMP_PARAM_4_MIN, SOFT_GEMINI_TEMP_PARAM_4_MAX,
   2185                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_4],
   2186                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_4]);
   2187 
   2188     regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp5,
   2189                             SOFT_GEMINI_TEMP_PARAM_5_DEF, SOFT_GEMINI_TEMP_PARAM_5_MIN, SOFT_GEMINI_TEMP_PARAM_5_MAX,
   2190                             sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_5],
   2191                             (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_5]);
   2192 
   2193 
   2194     /*
   2195      * CoexActivity table
   2196      */
   2197 
   2198     /* Read the number of elements in the table ( this is because table entry has 5 values following it )*/
   2199     regReadIntegerParameter(pAdapter, &STRCoexActivityNumOfElem,
   2200                             COEX_ACTIVITY_TABLE_DEF_NUM, COEX_ACTIVITY_TABLE_MIN_NUM, COEX_ACTIVITY_TABLE_MAX_NUM,
   2201                             sizeof p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements,
   2202                             (TI_UINT8*)(&p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements) );
   2203 
   2204     /* Read the CoexActivity table string */
   2205     {
   2206         TI_UINT8 *strCoexActivityTable;
   2207         TI_UINT8 strCoexActivitySize = 0;
   2208 
   2209         strCoexActivityTable = os_memoryAlloc(pAdapter, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE);
   2210         if (strCoexActivityTable) {
   2211             regReadStringParameter(pAdapter, &STRCoexActivityTable ,
   2212                             (TI_INT8*)(defCoexActivityTable), strCoexActivitySize,
   2213                             (TI_UINT8*)strCoexActivityTable, &strCoexActivitySize);
   2214 
   2215             /* Convert the CoexActivity table string */
   2216             regConvertStringtoCoexActivityTable(strCoexActivityTable , p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements, &p->twdInitParams.tGeneral.halCoexActivityTable.entry[0] , strCoexActivitySize);
   2217             os_memoryFree(pAdapter, strCoexActivityTable, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE);
   2218         }
   2219     }
   2220 
   2221     /*
   2222     Power Manager
   2223     */
   2224     regReadIntegerParameter(pAdapter,
   2225                             &STRPowerMode,
   2226                             POWER_MODE_DEF_VALUE,
   2227                             POWER_MODE_MIN_VALUE,
   2228                             POWER_MODE_MAX_VALUE,
   2229                             sizeof p->PowerMgrInitParams.powerMode,
   2230                             (TI_UINT8*)&p->PowerMgrInitParams.powerMode);
   2231 
   2232     regReadIntegerParameter(pAdapter,
   2233                             &STRBeaconReceiveTime,
   2234                             BEACON_RECEIVE_TIME_DEF_VALUE,
   2235                             BEACON_RECEIVE_TIME_MIN_VALUE,
   2236                             BEACON_RECEIVE_TIME_MAX_VALUE,
   2237                             sizeof p->PowerMgrInitParams.beaconReceiveTime,
   2238                             (TI_UINT8*)&p->PowerMgrInitParams.beaconReceiveTime);
   2239 
   2240     regReadIntegerParameter(pAdapter,
   2241                             &STRBaseBandWakeUpTime,
   2242                             BASE_BAND_WAKE_UP_TIME_DEF_VALUE,
   2243                             BASE_BAND_WAKE_UP_TIME_MIN_VALUE,
   2244                             BASE_BAND_WAKE_UP_TIME_MAX_VALUE,
   2245                             sizeof p->PowerMgrInitParams.BaseBandWakeUpTime,
   2246                             (TI_UINT8*)&p->PowerMgrInitParams.BaseBandWakeUpTime);
   2247 
   2248     regReadIntegerParameter(pAdapter,
   2249                             &STRHangoverPeriod,
   2250                             HANGOVER_PERIOD_DEF_VALUE,
   2251                             HANGOVER_PERIOD_MIN_VALUE,
   2252                             HANGOVER_PERIOD_MAX_VALUE,
   2253                             sizeof p->PowerMgrInitParams.hangoverPeriod,
   2254                             (TI_UINT8*)&p->PowerMgrInitParams.hangoverPeriod);
   2255 
   2256     regReadIntegerParameter(pAdapter,
   2257                             &STRBeaconListenInterval,
   2258                             BEACON_LISTEN_INTERVAL_DEF_VALUE,
   2259                             BEACON_LISTEN_INTERVAL_MIN_VALUE,
   2260                             BEACON_LISTEN_INTERVAL_MAX_VALUE,
   2261                             sizeof p->PowerMgrInitParams.beaconListenInterval,
   2262                             (TI_UINT8*)&p->PowerMgrInitParams.beaconListenInterval);
   2263 
   2264     regReadIntegerParameter(pAdapter,
   2265                             &STRDtimListenInterval,
   2266                             DTIM_LISTEN_INTERVAL_DEF_VALUE,
   2267                             DTIM_LISTEN_INTERVAL_MIN_VALUE,
   2268                             DTIM_LISTEN_INTERVAL_MAX_VALUE,
   2269                             sizeof p->PowerMgrInitParams.dtimListenInterval,
   2270                             (TI_UINT8*)&p->PowerMgrInitParams.dtimListenInterval);
   2271 
   2272     regReadIntegerParameter(pAdapter,
   2273                             &STRNConsecutiveBeaconsMissed,
   2274                             N_CONSECUTIVE_BEACONS_MISSED_DEF_VALUE,
   2275                             N_CONSECUTIVE_BEACONS_MISSED_MIN_VALUE,
   2276                             N_CONSECUTIVE_BEACONS_MISSED_MAX_VALUE,
   2277                             sizeof p->PowerMgrInitParams.nConsecutiveBeaconsMissed,
   2278                             (TI_UINT8*)&p->PowerMgrInitParams.nConsecutiveBeaconsMissed);
   2279 
   2280     regReadIntegerParameter(pAdapter,
   2281                             &STREnterTo802_11PsRetries,
   2282                             ENTER_TO_802_11_POWER_SAVE_RETRIES_DEF_VALUE,
   2283                             ENTER_TO_802_11_POWER_SAVE_RETRIES_MIN_VALUE,
   2284                             ENTER_TO_802_11_POWER_SAVE_RETRIES_MAX_VALUE,
   2285                             sizeof p->PowerMgrInitParams.EnterTo802_11PsRetries,
   2286                             (TI_UINT8*)&p->PowerMgrInitParams.EnterTo802_11PsRetries);
   2287 
   2288     regReadIntegerParameter(pAdapter,
   2289                             &STRAutoPowerModeInterval,
   2290                             AUTO_POWER_MODE_INTERVAL_DEF_VALUE,
   2291                             AUTO_POWER_MODE_INTERVAL_MIN_VALUE,
   2292                             AUTO_POWER_MODE_INTERVAL_MAX_VALUE,
   2293                             sizeof p->PowerMgrInitParams.autoModeInterval,
   2294                             (TI_UINT8*)&p->PowerMgrInitParams.autoModeInterval);
   2295 
   2296     regReadIntegerParameter(pAdapter,
   2297                             &STRAutoPowerModeActiveTh,
   2298                             AUTO_POWER_MODE_ACTIVE_TH_DEF_VALUE,
   2299                             AUTO_POWER_MODE_ACTIVE_TH_MIN_VALUE,
   2300                             AUTO_POWER_MODE_ACTIVE_TH_MAX_VALUE,
   2301                             sizeof p->PowerMgrInitParams.autoModeActiveTH,
   2302                             (TI_UINT8*)&p->PowerMgrInitParams.autoModeActiveTH);
   2303 
   2304     regReadIntegerParameter(pAdapter,
   2305                             &STRAutoPowerModeDozeTh,
   2306                             AUTO_POWER_MODE_DOZE_TH_DEF_VALUE,
   2307                             AUTO_POWER_MODE_DOZE_TH_MIN_VALUE,
   2308                             AUTO_POWER_MODE_DOZE_TH_MAX_VALUE,
   2309                             sizeof p->PowerMgrInitParams.autoModeDozeTH,
   2310                             (TI_UINT8*)&p->PowerMgrInitParams.autoModeDozeTH);
   2311 
   2312     regReadIntegerParameter(pAdapter,
   2313                             &STRAutoPowerModeDozeMode,
   2314                             AUTO_POWER_MODE_DOZE_MODE_DEF_VALUE,
   2315                             AUTO_POWER_MODE_DOZE_MODE_MIN_VALUE,
   2316                             AUTO_POWER_MODE_DOZE_MODE_MAX_VALUE,
   2317                             sizeof p->PowerMgrInitParams.autoModeDozeMode,
   2318                             (TI_UINT8*)&p->PowerMgrInitParams.autoModeDozeMode);
   2319 
   2320     regReadIntegerParameter(pAdapter,
   2321                             &STRDefaultPowerLevel,
   2322                             POWERAUTHO_POLICY_ELP,
   2323                             POWERAUTHO_POLICY_ELP,
   2324                             POWERAUTHO_POLICY_AWAKE,
   2325                             sizeof p->PowerMgrInitParams.defaultPowerLevel,
   2326                             (TI_UINT8*)&p->PowerMgrInitParams.defaultPowerLevel);
   2327 
   2328     regReadIntegerParameter(pAdapter,
   2329                             &STRPowerSavePowerLevel,
   2330                             POWERAUTHO_POLICY_ELP,
   2331                             POWERAUTHO_POLICY_ELP,
   2332                             POWERAUTHO_POLICY_AWAKE,
   2333                             sizeof p->PowerMgrInitParams.PowerSavePowerLevel,
   2334                             (TI_UINT8*)&p->PowerMgrInitParams.PowerSavePowerLevel);
   2335 
   2336 
   2337   regReadIntegerParameter(pAdapter,
   2338                             &STRBurstModeEnable,
   2339                             BURST_MODE_ENABLE_DEF,
   2340                             BURST_MODE_ENABLE_MIN,
   2341                             BURST_MODE_ENABLE_MAX,
   2342                             sizeof p->qosMngrInitParams.bEnableBurstMode,
   2343                             (TI_UINT8*)&p->qosMngrInitParams.bEnableBurstMode);
   2344 
   2345   regReadIntegerParameter(pAdapter,
   2346                           &STRDcoItrimEnabled,
   2347                           TWD_DCO_ITRIM_ENABLE_DEF,
   2348                           TWD_DCO_ITRIM_ENABLE_MIN,
   2349                           TWD_DCO_ITRIM_ENABLE_MAX,
   2350                           sizeof p->twdInitParams.tDcoItrimParams.enable,
   2351                           (TI_UINT8*)&p->twdInitParams.tDcoItrimParams.enable);
   2352 
   2353   regReadIntegerParameter(pAdapter,
   2354                           &STRDcoItrimModerationTimeout,
   2355                           TWD_DCO_ITRIM_MODERATION_TIMEOUT_DEF,
   2356                           TWD_DCO_ITRIM_MODERATION_TIMEOUT_MIN,
   2357                           TWD_DCO_ITRIM_MODERATION_TIMEOUT_MAX,
   2358                           sizeof p->twdInitParams.tDcoItrimParams.moderationTimeoutUsec,
   2359                           (TI_UINT8*)&p->twdInitParams.tDcoItrimParams.moderationTimeoutUsec);
   2360 
   2361 /*----------------------------------
   2362  TX power adjust
   2363 ------------------------------------*/
   2364 
   2365     regReadIntegerParameter(pAdapter, &STRTxPowerCheckTime,
   2366                             1, 1, 1200,  /* in units of 5000 ms */
   2367                             sizeof p->siteMgrInitParams.TxPowerCheckTime,
   2368                             (TI_UINT8*)&p->siteMgrInitParams.TxPowerCheckTime);
   2369 
   2370 
   2371     regReadIntegerParameter(pAdapter, &STRTxPowerControlOn,
   2372                             0, 0, 1,  /* on/off (1/0) default is off */
   2373                             sizeof p->siteMgrInitParams.TxPowerControlOn,
   2374                             (TI_UINT8*)&p->siteMgrInitParams.TxPowerControlOn);
   2375 
   2376     regReadIntegerParameter(pAdapter, &STRTxPowerRssiThresh,
   2377                             38, 0, 200,  /* the value is positive and will be translated by driver */
   2378                             sizeof p->siteMgrInitParams.TxPowerRssiThresh,
   2379                             (TI_UINT8*)&p->siteMgrInitParams.TxPowerRssiThresh);
   2380 
   2381     regReadIntegerParameter(pAdapter, &STRTxPowerRssiRestoreThresh,
   2382                             45, 0, 200,  /* the value is positive and will be translated by driver */
   2383                             sizeof p->siteMgrInitParams.TxPowerRssiRestoreThresh,
   2384                             (TI_UINT8*)&p->siteMgrInitParams.TxPowerRssiRestoreThresh);
   2385 
   2386     regReadIntegerParameter(pAdapter, &STRTxPowerTempRecover,
   2387                             MIN_TX_POWER, MIN_TX_POWER, MAX_TX_POWER,
   2388                             sizeof p->regulatoryDomainInitParams.uTemporaryTxPower,
   2389                             (TI_UINT8*)&p->regulatoryDomainInitParams.uTemporaryTxPower);
   2390 
   2391 /*----------------------------------
   2392  end of TX power adjust
   2393 ------------------------------------*/
   2394 
   2395 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_2_4G_Extreme, RADIO_TX_PER_POWER_LIMITS_2_4_EXTREME_DEF_TABLE,
   2396                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_2_4G_Extreme,
   2397                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_INT8),TI_TRUE);
   2398 
   2399 regReadIntegerParameter(pAdapter, &STRDegradedLowToNormalThr_2_4G,
   2400                         RADIO_DEGRADED_LOW_TO_NORMAL_THR_2_4G_DEF,RADIO_DEGRADED_LOW_TO_NORMAL_THR_2_4G_MIN,RADIO_DEGRADED_LOW_TO_NORMAL_THR_2_4G_MAX,sizeof (TI_UINT8),
   2401                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.DegradedLowToNormalThr_2_4G);
   2402 
   2403 regReadIntegerParameter(pAdapter, &STRNormalToDegradedHighThr_2_4G,
   2404                         RADIO_NORMAL_TO_DEGRADED_HIGH_THR_2_4G_DEF,RADIO_NORMAL_TO_DEGRADED_HIGH_THR_2_4G_MIN,RADIO_NORMAL_TO_DEGRADED_HIGH_THR_2_4G_MAX,sizeof (TI_UINT8),
   2405                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.NormalToDegradedHighThr_2_4G);
   2406 
   2407 regReadIntegerParameter(pAdapter, &STRDegradedLowToNormalThr_5G,
   2408                         RADIO_DEGRADED_LOW_TO_NORMAL_THR_5G_DEF,RADIO_DEGRADED_LOW_TO_NORMAL_THR_5G_MIN,RADIO_DEGRADED_LOW_TO_NORMAL_THR_5G_MAX,sizeof (TI_UINT8),
   2409                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.DegradedLowToNormalThr_5G);
   2410 
   2411 regReadIntegerParameter(pAdapter, &STRNormalToDegradedHighThr_5G,
   2412                         RADIO_NORMAL_TO_DEGRADED_HIGH_THR_5G_DEF,RADIO_NORMAL_TO_DEGRADED_HIGH_THR_5G_MIN,RADIO_NORMAL_TO_DEGRADED_HIGH_THR_5G_MAX,sizeof (TI_UINT8),
   2413                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.NormalToDegradedHighThr_5G);
   2414 
   2415 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_5G_Extreme, RADIO_TX_PER_POWER_LIMITS_5_EXTREME_DEF_TABLE,
   2416                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_5G_Extreme,
   2417                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   2418 
   2419 /*--------------- Extended Radio Parameters --------------------------*/
   2420 
   2421 regReadIntegerTable (pAdapter, &STRTxPerChannelPowerCompensation_2_4G, RADIO_TX_PER_CH_POWER_COMPENSATION_2_4_DEF,
   2422                      HALF_NUMBER_OF_2_4_G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileExtRadioParams.TxPerChannelPowerCompensation_2_4G,
   2423                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   2424 
   2425 regReadIntegerTable (pAdapter, &STRTxPerChannelPowerCompensation_5G_OFDM, RADIO_TX_PER_CH_POWER_COMPENSATION_5_DEF,
   2426                      HALF_NUMBER_OF_5G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileExtRadioParams.TxPerChannelPowerCompensation_5G_OFDM,
   2427                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   2428 
   2429 
   2430 regReadIntegerParameter(pAdapter, &STRSettings,
   2431 						65,0,255,
   2432                         sizeof p->twdInitParams.tPlatformGenParams.GeneralSettings,
   2433                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.GeneralSettings);
   2434 
   2435 /*---------------------- Smart Reflex Configration -----------------------*/
   2436     regReadIntegerParameter(pAdapter, &STRSRState,
   2437                           SMART_REFLEX_STATE_DEF, SMART_REFLEX_STATE_MIN, SMART_REFLEX_STATE_MAX,
   2438                           sizeof p->twdInitParams.tPlatformGenParams.SRState,
   2439                           (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.SRState);
   2440 
   2441     NdisZeroMemory(&SRConfigParams[0],MAX_SMART_REFLEX_PARAM );
   2442     regReadIntegerTable (pAdapter, &STRSRConfigParam1, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF1,
   2443                          MAX_SMART_REFLEX_PARAM, NULL, (TI_INT8*)&SRConfigParams,
   2444                         (TI_UINT32*)&TempSRCnt, sizeof (TI_INT8),TI_TRUE);
   2445     len = SRConfigParams[0];
   2446     NdisZeroMemory(&(p->twdInitParams.tPlatformGenParams.SRF1[0]),MAX_SMART_REFLEX_PARAM);
   2447     if ((len < MAX_SMART_REFLEX_PARAM) && ((TempSRCnt <= len + 1) || (TempSRCnt == MAX_SMART_REFLEX_PARAM)))
   2448     {
   2449         memcpy(&(p->twdInitParams.tPlatformGenParams.SRF1[0]), &SRConfigParams[0],TempSRCnt);
   2450     }
   2451 
   2452     NdisZeroMemory(&SRConfigParams[0],MAX_SMART_REFLEX_PARAM );
   2453     regReadIntegerTable (pAdapter, &STRSRConfigParam2, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF2,
   2454                          MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&SRConfigParams,
   2455                          (TI_UINT32*)&TempSRCnt, sizeof (TI_INT8),TI_TRUE);
   2456     len = SRConfigParams[0];
   2457     if ((len > MAX_SR_PARAM_LEN) || (TempSRCnt > len + 1))
   2458     {
   2459         NdisZeroMemory(&(p->twdInitParams.tPlatformGenParams.SRF2[0]),MAX_SMART_REFLEX_PARAM);
   2460     }
   2461     else
   2462     {
   2463        memcpy(&(p->twdInitParams.tPlatformGenParams.SRF2[0]), &SRConfigParams[0],TempSRCnt);
   2464     }
   2465 
   2466     NdisZeroMemory(&SRConfigParams[0],MAX_SMART_REFLEX_PARAM);
   2467     regReadIntegerTable (pAdapter, &STRSRConfigParam3, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF3,
   2468                          MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&SRConfigParams,
   2469                          (TI_UINT32*)&TempSRCnt, sizeof (TI_INT8), TI_TRUE);
   2470     len = SRConfigParams[0];
   2471     if ((len > MAX_SR_PARAM_LEN)|| (TempSRCnt > len + 1))
   2472     {
   2473         NdisZeroMemory(&(p->twdInitParams.tPlatformGenParams.SRF3[0]),MAX_SMART_REFLEX_PARAM );
   2474     }
   2475     else
   2476     {
   2477         memcpy(&(p->twdInitParams.tPlatformGenParams.SRF3[0]), &SRConfigParams[0],TempSRCnt);
   2478     }
   2479 
   2480 /*---------------------- Power Management Configuration -----------------------*/
   2481     regReadIntegerParameter(pAdapter,
   2482                             &STRPowerMgmtHangOverPeriod,
   2483                             HANGOVER_PERIOD_DEF_VALUE,
   2484                             HANGOVER_PERIOD_MIN_VALUE,
   2485                             HANGOVER_PERIOD_MAX_VALUE,
   2486                             sizeof p->PowerMgrInitParams.hangOverPeriod,
   2487                             (TI_UINT8*)&p->PowerMgrInitParams.hangOverPeriod);
   2488 
   2489     regReadIntegerParameter(pAdapter,
   2490                             &STRPowerMgmtNeedToSendNullData,
   2491                             POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_DEF_VALUE,
   2492                             POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_MIN_VALUE,
   2493                             POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_MAX_VALUE,
   2494                             sizeof p->PowerMgrInitParams.needToSendNullData,
   2495                             (TI_UINT8*)&p->PowerMgrInitParams.needToSendNullData);
   2496 
   2497     regReadIntegerParameter(pAdapter,
   2498                             &STRPowerMgmtNullPktRateModulation,
   2499                             POWER_MGMNT_NULL_PACKET_RATE_MOD_DEF_VALUE,
   2500                             POWER_MGMNT_NULL_PACKET_RATE_MOD_MIN_VALUE,
   2501                             POWER_MGMNT_NULL_PACKET_RATE_MOD_MAX_VALUE,
   2502                             sizeof p->PowerMgrInitParams.NullPktRateModulation,
   2503                             (TI_UINT8*)&p->PowerMgrInitParams.NullPktRateModulation);
   2504 
   2505     regReadIntegerParameter(pAdapter,
   2506                             &STRPowerMgmtNumNullPktRetries,
   2507                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_DEF_VALUE,
   2508                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_MIN_VALUE,
   2509                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_MAX_VALUE,
   2510                             sizeof p->PowerMgrInitParams.numNullPktRetries,
   2511                             (TI_UINT8*)&p->PowerMgrInitParams.numNullPktRetries);
   2512 
   2513     regReadIntegerParameter(pAdapter,
   2514                             &STRPowerMgmtPllLockTime,
   2515                             PLL_LOCK_TIME_DEF_VALUE,
   2516                             PLL_LOCK_TIME_MIN_VALUE,
   2517                             PLL_LOCK_TIME_MAX_VALUE,
   2518                             sizeof p->PowerMgrInitParams.PLLlockTime,
   2519                             (TI_UINT8*)&p->PowerMgrInitParams.PLLlockTime);
   2520 
   2521     regReadIntegerParameter(pAdapter,
   2522                             &STRPsPollDeliveryFailureRecoveryPeriod,
   2523                             PS_POLL_FAILURE_PERIOD_DEF,
   2524                             PS_POLL_FAILURE_PERIOD_MIN,
   2525                             PS_POLL_FAILURE_PERIOD_MAX,
   2526                             sizeof p->PowerMgrInitParams.PsPollDeliveryFailureRecoveryPeriod,
   2527                             (TI_UINT8*)&p->PowerMgrInitParams.PsPollDeliveryFailureRecoveryPeriod);
   2528 
   2529     regReadIntegerParameter(pAdapter,
   2530                             &STRHostClkSettlingTime,
   2531                             HOST_CLK_SETTLE_TIME_USEC_DEF,
   2532                             HOST_CLK_SETTLE_TIME_USEC_MIN,
   2533                             HOST_CLK_SETTLE_TIME_USEC_MAX,
   2534                             sizeof p->twdInitParams.tGeneral.uHostClkSettlingTime,
   2535                             (TI_UINT8*)&p->twdInitParams.tGeneral.uHostClkSettlingTime);
   2536 
   2537     regReadIntegerParameter(pAdapter,
   2538                             &STRHostFastWakeupSupport,
   2539                             HOST_FAST_WAKE_SUPPORT_DEF,
   2540                             HOST_FAST_WAKE_SUPPORT_MIN,
   2541                             HOST_FAST_WAKE_SUPPORT_MAX,
   2542                             sizeof p->twdInitParams.tGeneral.uHostFastWakeupSupport,
   2543                             (TI_UINT8*)&p->twdInitParams.tGeneral.uHostFastWakeupSupport);
   2544 
   2545     /*--------------- Power Management Wake up conditions ------------------*/
   2546 
   2547     regReadIntegerParameter(pAdapter, &STRListenInterval,
   2548                             TWD_LISTEN_INTERVAL_DEF, TWD_LISTEN_INTERVAL_MIN,
   2549                             TWD_LISTEN_INTERVAL_MAX,
   2550                             sizeof p->PowerMgrInitParams.listenInterval,
   2551                             (TI_UINT8*)&p->PowerMgrInitParams.listenInterval);
   2552 
   2553     /*-----------------------------------------------------------------------*/
   2554 
   2555     /*--------------- Power Server Init Parameters ------------------*/
   2556     regReadIntegerParameter(pAdapter,
   2557                             &STRPowerMgmtNumNullPktRetries,
   2558                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_DEF_VALUE,
   2559                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_MIN_VALUE,
   2560                             POWER_MGMNT_NUM_NULL_PACKET_RETRY_MAX_VALUE,
   2561                             sizeof p->twdInitParams.tPowerSrv.numNullPktRetries,
   2562                             (TI_UINT8*)&p->twdInitParams.tPowerSrv.numNullPktRetries);
   2563 
   2564         regReadIntegerParameter(pAdapter,
   2565                             &STRPowerMgmtHangOverPeriod,
   2566                             HANGOVER_PERIOD_DEF_VALUE,
   2567                             HANGOVER_PERIOD_MIN_VALUE,
   2568                             HANGOVER_PERIOD_MAX_VALUE,
   2569                             sizeof p->twdInitParams.tPowerSrv.hangOverPeriod,
   2570                             (TI_UINT8*)&p->twdInitParams.tPowerSrv.hangOverPeriod);
   2571     /*-----------------------------------------------------------------------*/
   2572 
   2573 
   2574     /* Scan SRV */
   2575     regReadIntegerParameter(pAdapter, &STRNumberOfNoScanCompleteToRecovery,
   2576                             SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_DEF,
   2577                             SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_MIN,
   2578                             SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_MAX,
   2579                             sizeof (p->twdInitParams.tScanSrv.numberOfNoScanCompleteToRecovery),
   2580                             (TI_UINT8*)&(p->twdInitParams.tScanSrv.numberOfNoScanCompleteToRecovery) );
   2581 
   2582         regReadIntegerParameter(pAdapter, &STRTriggeredScanTimeOut,
   2583             SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_DEF,
   2584             SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_MIN,
   2585             SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_MAX,
   2586             sizeof (p->twdInitParams.tScanSrv.uTriggeredScanTimeOut),
   2587             (TI_UINT8*)&(p->twdInitParams.tScanSrv.uTriggeredScanTimeOut) );
   2588 
   2589 
   2590     /* Regulatory Domain */
   2591 
   2592     /* Indicate the time in which the STA didn't receive any country code and was not connected, and therefore
   2593        will delete its current country code */
   2594     regReadIntegerParameter(pAdapter, &STRTimeToResetCountryMs,
   2595                         REGULATORY_DOMAIN_COUNTRY_TIME_RESET_DEF, REGULATORY_DOMAIN_COUNTRY_TIME_RESET_MIN,
   2596                         REGULATORY_DOMAIN_COUNTRY_TIME_RESET_MAX,
   2597                         sizeof p->regulatoryDomainInitParams.uTimeOutToResetCountryMs,
   2598                         (TI_UINT8*)&(p->regulatoryDomainInitParams.uTimeOutToResetCountryMs));
   2599 
   2600     /* 802.11d/h */
   2601     regReadIntegerParameter(pAdapter, &STRMultiRegulatoryDomainEnabled,
   2602                             MULTI_REGULATORY_DOMAIN_ENABLED_DEF, MULTI_REGULATORY_DOMAIN_ENABLED_MIN,
   2603                             MULTI_REGULATORY_DOMAIN_ENABLED_MAX,
   2604                             sizeof p->regulatoryDomainInitParams.multiRegulatoryDomainEnabled,
   2605                             (TI_UINT8*)&(p->regulatoryDomainInitParams.multiRegulatoryDomainEnabled));
   2606 
   2607     regReadIntegerParameter(pAdapter, &STRSpectrumManagementEnabled,
   2608                             SPECTRUM_MANAGEMENT_ENABLED_DEF, SPECTRUM_MANAGEMENT_ENABLED_MIN,
   2609                             SPECTRUM_MANAGEMENT_ENABLED_MAX,
   2610                             sizeof p->regulatoryDomainInitParams.spectrumManagementEnabled,
   2611                             (TI_UINT8*)&(p->regulatoryDomainInitParams.spectrumManagementEnabled));
   2612 
   2613     regReadIntegerParameter(pAdapter, &STRSpectrumManagementEnabled,
   2614                             SPECTRUM_MANAGEMENT_ENABLED_DEF, SPECTRUM_MANAGEMENT_ENABLED_MIN,
   2615                             SPECTRUM_MANAGEMENT_ENABLED_MAX,
   2616                             sizeof p->SwitchChannelInitParams.dot11SpectrumManagementRequired,
   2617                             (TI_UINT8*)&(p->SwitchChannelInitParams.dot11SpectrumManagementRequired));
   2618 
   2619 
   2620     /* Scan Control Tables */
   2621     regReadStringParameter(pAdapter, &STRScanControlTable24,
   2622                            (TI_INT8*)&ScanControlTable24Def[0],(USHORT)(2 * NUM_OF_CHANNELS_24),
   2623                             (TI_UINT8*)&(ScanControlTable24Tmp[0]),
   2624                             (PUSHORT)&tableLen);
   2625 
   2626     for( loopIndex = tableLen ; loopIndex < 2 * NUM_OF_CHANNELS_24 ; loopIndex++)
   2627         ScanControlTable24Tmp[loopIndex] = '0';
   2628 
   2629     decryptScanControlTable(ScanControlTable24Tmp,(TI_UINT8*)&(p->regulatoryDomainInitParams.desiredScanControlTable.ScanControlTable24.tableString[0]),2 * NUM_OF_CHANNELS_24);
   2630 
   2631 
   2632     /* Scan Control Tables for 5 Ghz*/
   2633     regReadStringParameter(pAdapter, &STRScanControlTable5,
   2634                            (TI_INT8*)&ScanControlTable5Def[0],(USHORT)(2 * A_5G_BAND_NUM_CHANNELS),
   2635                             (TI_UINT8*)&(ScanControlTable5Tmp[0]),
   2636                             (PUSHORT)&tableLen);
   2637 
   2638 
   2639     for( loopIndex = tableLen ; loopIndex < 2 * A_5G_BAND_NUM_CHANNELS ; loopIndex++)
   2640         ScanControlTable5Tmp[loopIndex] = '0';
   2641 
   2642     decryptScanControlTable(ScanControlTable5Tmp,(TI_UINT8*)&(p->regulatoryDomainInitParams.desiredScanControlTable.ScanControlTable5.tableString[0]),2 * A_5G_BAND_NUM_CHANNELS);
   2643 
   2644 
   2645     /* Tx Power */
   2646     regReadIntegerParameter(pAdapter, &STRTxPower,
   2647                             DEF_TX_POWER, MIN_TX_POWER, MAX_TX_POWER,
   2648                             sizeof p->regulatoryDomainInitParams.desiredTxPower,
   2649                             (TI_UINT8*)&p->regulatoryDomainInitParams.desiredTxPower);
   2650 
   2651     regReadIntegerParameter(pAdapter, &STRdot11WEPStatus,
   2652                             RSN_WEP_STATUS_DEF, RSN_WEP_STATUS_MIN, RSN_WEP_STATUS_MAX,
   2653                             sizeof p->rsnInitParams.privacyOn,
   2654                             (TI_UINT8*)&p->rsnInitParams.privacyOn);
   2655     /* reverse privacy value - windows is setting 1 as off */
   2656     /*
   2657         p->rsnInitParams.privacyMode = !(p->rsnInitParams.privacyOn);
   2658         p->rsnInitParams.privacyOn = !(p->rsnInitParams.privacyOn);
   2659     */
   2660 
   2661     regReadIntegerParameter(pAdapter, &STRdot11WEPDefaultKeyID,
   2662                             RSN_DEFAULT_KEY_ID_DEF, RSN_DEFAULT_KEY_ID_MIN,
   2663                             RSN_DEFAULT_KEY_ID_MAX,
   2664                             sizeof p->rsnInitParams.defaultKeyId,
   2665                             (TI_UINT8*)&p->rsnInitParams.defaultKeyId);
   2666 
   2667 
   2668     regReadIntegerParameter(pAdapter, &STRMixedMode,
   2669                             RSN_WEPMIXEDMODE_ENABLED_DEF, RSN_WEPMIXEDMODE_ENABLED_MIN,
   2670                             RSN_WEPMIXEDMODE_ENABLED_MAX,
   2671                             sizeof p->rsnInitParams.mixedMode,
   2672                             (TI_UINT8*)&p->rsnInitParams.mixedMode);
   2673 
   2674     regReadIntegerParameter(pAdapter, &STRWPAMixedMode,
   2675                             RSN_WPAMIXEDMODE_ENABLE_DEF, RSN_WPAMIXEDMODE_ENABLE_MIN,
   2676                             RSN_WPAMIXEDMODE_ENABLE_MAX,
   2677                             sizeof p->rsnInitParams.WPAMixedModeEnable,
   2678                             (TI_UINT8*)&p->rsnInitParams.WPAMixedModeEnable);
   2679 
   2680     regReadIntegerParameter(pAdapter, &STRRSNPreAuth,
   2681                             RSN_PREAUTH_ENABLE_DEF, RSN_PREAUTH_ENABLE_MIN,
   2682                             RSN_PREAUTH_ENABLE_MAX,
   2683                             sizeof p->rsnInitParams.preAuthSupport,
   2684                             (TI_UINT8*)&p->rsnInitParams.preAuthSupport);
   2685 
   2686     regReadIntegerParameter(pAdapter, &STRRSNPreAuthTimeout,
   2687                             RSN_PREAUTH_TIMEOUT_DEF, RSN_PREAUTH_TIMEOUT_MIN,
   2688                             RSN_PREAUTH_TIMEOUT_MAX,
   2689                             sizeof p->rsnInitParams.preAuthTimeout,
   2690                             (TI_UINT8*)&p->rsnInitParams.preAuthTimeout);
   2691 
   2692 	regReadIntegerParameter(pAdapter, &STRPairwiseMicFailureFilter,
   2693                             PAIRWISE_MIC_FAIL_FILTER_DEF, PAIRWISE_MIC_FAIL_FILTER_MIN,
   2694 							PAIRWISE_MIC_FAIL_FILTER_MAX,
   2695                             sizeof p->rsnInitParams.bPairwiseMicFailureFilter,
   2696 							(TI_UINT8*)&p->rsnInitParams.bPairwiseMicFailureFilter);
   2697 
   2698     regReadWepKeyParameter(pAdapter, (TI_UINT8*)p->rsnInitParams.keys, p->rsnInitParams.defaultKeyId);
   2699 
   2700 
   2701     /*---------------------------
   2702             QOS parameters
   2703     -----------------------------*/
   2704 
   2705     regReadIntegerParameter(pAdapter, &STRClsfr_Type,
   2706                             CLSFR_TYPE_DEF, CLSFR_TYPE_MIN,
   2707                             CLSFR_TYPE_MAX,
   2708                             sizeof p->txDataInitParams.ClsfrInitParam.eClsfrType,
   2709                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.eClsfrType);
   2710 
   2711     switch(p->txDataInitParams.ClsfrInitParam.eClsfrType)
   2712     {
   2713         case D_TAG_CLSFR:
   2714             /* Trivial mapping D-tag to D-tag - no need to read more keys*/
   2715         break;
   2716 
   2717         case DSCP_CLSFR:
   2718 
   2719             regReadIntegerParameter(pAdapter, &STRNumOfCodePoints,
   2720                             NUM_OF_CODE_POINTS_DEF, NUM_OF_CODE_POINTS_MIN,
   2721                             NUM_OF_CODE_POINTS_MAX,
   2722                             sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries,
   2723                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries);
   2724             regReadIntegerParameter(pAdapter, &STRDSCPClassifier00_CodePoint,
   2725                             DSCP_CLASSIFIER_CODE_POINT_00, CLASSIFIER_CODE_POINT_MIN,
   2726                             CLASSIFIER_CODE_POINT_MAX,
   2727                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.CodePoint,
   2728                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.CodePoint);
   2729             regReadIntegerParameter(pAdapter, &STRDSCPClassifier01_CodePoint,
   2730                             DSCP_CLASSIFIER_CODE_POINT_01, CLASSIFIER_CODE_POINT_MIN,
   2731                             CLASSIFIER_CODE_POINT_MAX,
   2732                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.CodePoint,
   2733                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.CodePoint);
   2734             regReadIntegerParameter(pAdapter, &STRDSCPClassifier02_CodePoint,
   2735                             DSCP_CLASSIFIER_CODE_POINT_02, CLASSIFIER_CODE_POINT_MIN,
   2736                             CLASSIFIER_CODE_POINT_MAX,
   2737                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.CodePoint,
   2738                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.CodePoint);
   2739             regReadIntegerParameter(pAdapter, &STRDSCPClassifier03_CodePoint,
   2740                             DSCP_CLASSIFIER_CODE_POINT_03, CLASSIFIER_CODE_POINT_MIN,
   2741                             CLASSIFIER_CODE_POINT_MAX,
   2742                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.CodePoint,
   2743                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.CodePoint);
   2744             regReadIntegerParameter(pAdapter, &STRDSCPClassifier04_CodePoint,
   2745                             DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2746                             CLASSIFIER_CODE_POINT_MAX,
   2747                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.CodePoint,
   2748                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.CodePoint);
   2749             regReadIntegerParameter(pAdapter, &STRDSCPClassifier05_CodePoint,
   2750                             DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2751                             CLASSIFIER_CODE_POINT_MAX,
   2752                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.CodePoint,
   2753                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.CodePoint);
   2754             regReadIntegerParameter(pAdapter, &STRDSCPClassifier06_CodePoint,
   2755                             DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2756                             CLASSIFIER_CODE_POINT_MAX,
   2757                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.CodePoint,
   2758                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.CodePoint);
   2759             regReadIntegerParameter(pAdapter, &STRDSCPClassifier07_CodePoint,
   2760                             DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2761                             CLASSIFIER_CODE_POINT_MAX,
   2762                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.CodePoint,
   2763                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.CodePoint);
   2764             regReadIntegerParameter(pAdapter, &STRDSCPClassifier08_CodePoint,
   2765                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2766                             CLASSIFIER_CODE_POINT_MAX,
   2767                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.CodePoint,
   2768                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.CodePoint);
   2769             regReadIntegerParameter(pAdapter, &STRDSCPClassifier09_CodePoint,
   2770                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2771                             CLASSIFIER_CODE_POINT_MAX,
   2772                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.CodePoint,
   2773                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.CodePoint);
   2774             regReadIntegerParameter(pAdapter, &STRDSCPClassifier10_CodePoint,
   2775                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2776                             CLASSIFIER_CODE_POINT_MAX,
   2777                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.CodePoint,
   2778                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.CodePoint);
   2779             regReadIntegerParameter(pAdapter, &STRDSCPClassifier11_CodePoint,
   2780                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2781                             CLASSIFIER_CODE_POINT_MAX,
   2782                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.CodePoint,
   2783                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.CodePoint);
   2784             regReadIntegerParameter(pAdapter, &STRDSCPClassifier12_CodePoint,
   2785                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2786                             CLASSIFIER_CODE_POINT_MAX,
   2787                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.CodePoint,
   2788                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.CodePoint);
   2789             regReadIntegerParameter(pAdapter, &STRDSCPClassifier13_CodePoint,
   2790                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2791                             CLASSIFIER_CODE_POINT_MAX,
   2792                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.CodePoint,
   2793                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.CodePoint);
   2794             regReadIntegerParameter(pAdapter, &STRDSCPClassifier14_CodePoint,
   2795                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2796                             CLASSIFIER_CODE_POINT_MAX,
   2797                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.CodePoint,
   2798                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.CodePoint);
   2799             regReadIntegerParameter(pAdapter, &STRDSCPClassifier15_CodePoint,
   2800                             CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN,
   2801                             CLASSIFIER_CODE_POINT_MAX,
   2802                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.CodePoint,
   2803                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.CodePoint);
   2804             regReadIntegerParameter(pAdapter, &STRDSCPClassifier00_DTag,
   2805                             DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2806                             CLASSIFIER_DTAG_MAX,
   2807                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag,
   2808                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag);
   2809             regReadIntegerParameter(pAdapter, &STRDSCPClassifier01_DTag,
   2810                             DSCP_CLASSIFIER_DTAG_00, CLASSIFIER_DTAG_MIN,
   2811                             CLASSIFIER_DTAG_MAX,
   2812                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag,
   2813                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag);
   2814             regReadIntegerParameter(pAdapter, &STRDSCPClassifier02_DTag,
   2815                             DSCP_CLASSIFIER_DTAG_01, CLASSIFIER_DTAG_MIN,
   2816                             CLASSIFIER_DTAG_MAX,
   2817                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag,
   2818                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag);
   2819             regReadIntegerParameter(pAdapter, &STRDSCPClassifier03_DTag,
   2820                             DSCP_CLASSIFIER_DTAG_02, CLASSIFIER_DTAG_MIN,
   2821                             CLASSIFIER_DTAG_MAX,
   2822                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag,
   2823                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag);
   2824             regReadIntegerParameter(pAdapter, &STRDSCPClassifier04_DTag,
   2825                             DSCP_CLASSIFIER_DTAG_03, CLASSIFIER_DTAG_MIN,
   2826                             CLASSIFIER_DTAG_MAX,
   2827                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag,
   2828                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag);
   2829             regReadIntegerParameter(pAdapter, &STRDSCPClassifier05_DTag,
   2830                             DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2831                             CLASSIFIER_DTAG_MAX,
   2832                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag,
   2833                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag);
   2834             regReadIntegerParameter(pAdapter, &STRDSCPClassifier06_DTag,
   2835                             DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2836                             CLASSIFIER_DTAG_MAX,
   2837                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag,
   2838                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag);
   2839             regReadIntegerParameter(pAdapter, &STRDSCPClassifier07_DTag,
   2840                             DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2841                             CLASSIFIER_DTAG_MAX,
   2842                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag,
   2843                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag);
   2844             regReadIntegerParameter(pAdapter, &STRDSCPClassifier08_DTag,
   2845                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2846                             CLASSIFIER_DTAG_MAX,
   2847                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag,
   2848                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag);
   2849             regReadIntegerParameter(pAdapter, &STRDSCPClassifier09_DTag,
   2850                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2851                             CLASSIFIER_DTAG_MAX,
   2852                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag,
   2853                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag);
   2854             regReadIntegerParameter(pAdapter, &STRDSCPClassifier10_DTag,
   2855                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2856                             CLASSIFIER_DTAG_MAX,
   2857                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag,
   2858                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag);
   2859             regReadIntegerParameter(pAdapter, &STRDSCPClassifier11_DTag,
   2860                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2861                             CLASSIFIER_DTAG_MAX,
   2862                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag,
   2863                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag);
   2864             regReadIntegerParameter(pAdapter, &STRDSCPClassifier12_DTag,
   2865                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2866                             CLASSIFIER_DTAG_MAX,
   2867                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag,
   2868                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag);
   2869             regReadIntegerParameter(pAdapter, &STRDSCPClassifier13_DTag,
   2870                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2871                             CLASSIFIER_DTAG_MAX,
   2872                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag,
   2873                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag);
   2874             regReadIntegerParameter(pAdapter, &STRDSCPClassifier14_DTag,
   2875                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2876                             CLASSIFIER_DTAG_MAX,
   2877                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag,
   2878                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag);
   2879             regReadIntegerParameter(pAdapter, &STRDSCPClassifier15_DTag,
   2880                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2881                             CLASSIFIER_DTAG_MAX,
   2882                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag,
   2883                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag);
   2884 
   2885 
   2886         break;
   2887 
   2888         case PORT_CLSFR:
   2889 
   2890             regReadIntegerParameter(pAdapter, &STRNumOfDstPortClassifiers,
   2891                             NUM_OF_PORT_CLASSIFIERS_DEF, NUM_OF_PORT_CLASSIFIERS_MIN,
   2892                             NUM_OF_PORT_CLASSIFIERS_MAX,
   2893                             sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries,
   2894                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries);
   2895             regReadIntegerParameter(pAdapter, &STRPortClassifier00_Port,
   2896                             PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2897                             CLASSIFIER_PORT_MAX,
   2898                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstPortNum,
   2899                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstPortNum);
   2900             regReadIntegerParameter(pAdapter, &STRPortClassifier01_Port,
   2901                             PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2902                             CLASSIFIER_PORT_MAX,
   2903                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstPortNum,
   2904                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstPortNum);
   2905             regReadIntegerParameter(pAdapter, &STRPortClassifier02_Port,
   2906                             PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2907                             CLASSIFIER_PORT_MAX,
   2908                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstPortNum,
   2909                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstPortNum);
   2910             regReadIntegerParameter(pAdapter, &STRPortClassifier03_Port,
   2911                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2912                             CLASSIFIER_PORT_MAX,
   2913                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstPortNum,
   2914                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstPortNum);
   2915             regReadIntegerParameter(pAdapter, &STRPortClassifier04_Port,
   2916                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2917                             CLASSIFIER_PORT_MAX,
   2918                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstPortNum,
   2919                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstPortNum);
   2920             regReadIntegerParameter(pAdapter, &STRPortClassifier05_Port,
   2921                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2922                             CLASSIFIER_PORT_MAX,
   2923                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstPortNum,
   2924                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstPortNum);
   2925             regReadIntegerParameter(pAdapter, &STRPortClassifier06_Port,
   2926                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2927                             CLASSIFIER_PORT_MAX,
   2928                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstPortNum,
   2929                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstPortNum);
   2930             regReadIntegerParameter(pAdapter, &STRPortClassifier07_Port,
   2931                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2932                             CLASSIFIER_PORT_MAX,
   2933                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstPortNum,
   2934                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstPortNum);
   2935             regReadIntegerParameter(pAdapter, &STRPortClassifier08_Port,
   2936                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2937                             CLASSIFIER_PORT_MAX,
   2938                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstPortNum,
   2939                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstPortNum);
   2940             regReadIntegerParameter(pAdapter, &STRPortClassifier09_Port,
   2941                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2942                             CLASSIFIER_PORT_MAX,
   2943                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstPortNum,
   2944                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstPortNum);
   2945             regReadIntegerParameter(pAdapter, &STRPortClassifier10_Port,
   2946                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2947                             CLASSIFIER_PORT_MAX,
   2948                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstPortNum,
   2949                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstPortNum);
   2950             regReadIntegerParameter(pAdapter, &STRPortClassifier11_Port,
   2951                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2952                             CLASSIFIER_PORT_MAX,
   2953                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstPortNum,
   2954                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstPortNum);
   2955             regReadIntegerParameter(pAdapter, &STRPortClassifier12_Port,
   2956                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2957                             CLASSIFIER_PORT_MAX,
   2958                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstPortNum,
   2959                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstPortNum);
   2960             regReadIntegerParameter(pAdapter, &STRPortClassifier13_Port,
   2961                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2962                             CLASSIFIER_PORT_MAX,
   2963                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstPortNum,
   2964                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstPortNum);
   2965             regReadIntegerParameter(pAdapter, &STRPortClassifier14_Port,
   2966                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2967                             CLASSIFIER_PORT_MAX,
   2968                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstPortNum,
   2969                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstPortNum);
   2970             regReadIntegerParameter(pAdapter, &STRPortClassifier15_Port,
   2971                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   2972                             CLASSIFIER_PORT_MAX,
   2973                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstPortNum,
   2974                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstPortNum);
   2975             regReadIntegerParameter(pAdapter, &STRPortClassifier00_DTag,
   2976                             PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2977                             CLASSIFIER_DTAG_MAX,
   2978                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag,
   2979                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag);
   2980             regReadIntegerParameter(pAdapter, &STRPortClassifier01_DTag,
   2981                             PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2982                             CLASSIFIER_DTAG_MAX,
   2983                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag,
   2984                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag);
   2985             regReadIntegerParameter(pAdapter, &STRPortClassifier02_DTag,
   2986                             PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2987                             CLASSIFIER_DTAG_MAX,
   2988                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag,
   2989                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag);
   2990             regReadIntegerParameter(pAdapter, &STRPortClassifier03_DTag,
   2991                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2992                             CLASSIFIER_DTAG_MAX,
   2993                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag,
   2994                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag);
   2995             regReadIntegerParameter(pAdapter, &STRPortClassifier04_DTag,
   2996                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   2997                             CLASSIFIER_DTAG_MAX,
   2998                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag,
   2999                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag);
   3000             regReadIntegerParameter(pAdapter, &STRPortClassifier05_DTag,
   3001                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3002                             CLASSIFIER_DTAG_MAX,
   3003                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag,
   3004                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag);
   3005             regReadIntegerParameter(pAdapter, &STRPortClassifier06_DTag,
   3006                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3007                             CLASSIFIER_DTAG_MAX,
   3008                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag,
   3009                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag);
   3010             regReadIntegerParameter(pAdapter, &STRPortClassifier07_DTag,
   3011                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3012                             CLASSIFIER_DTAG_MAX,
   3013                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag,
   3014                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag);
   3015             regReadIntegerParameter(pAdapter, &STRPortClassifier08_DTag,
   3016                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3017                             CLASSIFIER_DTAG_MAX,
   3018                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag,
   3019                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag);
   3020             regReadIntegerParameter(pAdapter, &STRPortClassifier09_DTag,
   3021                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3022                             CLASSIFIER_DTAG_MAX,
   3023                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag,
   3024                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag);
   3025             regReadIntegerParameter(pAdapter, &STRPortClassifier10_DTag,
   3026                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3027                             CLASSIFIER_DTAG_MAX,
   3028                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag,
   3029                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag);
   3030             regReadIntegerParameter(pAdapter, &STRPortClassifier11_DTag,
   3031                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3032                             CLASSIFIER_DTAG_MAX,
   3033                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag,
   3034                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag);
   3035             regReadIntegerParameter(pAdapter, &STRPortClassifier12_DTag,
   3036                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3037                             CLASSIFIER_DTAG_MAX,
   3038                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag,
   3039                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag);
   3040             regReadIntegerParameter(pAdapter, &STRPortClassifier13_DTag,
   3041                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3042                             CLASSIFIER_DTAG_MAX,
   3043                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag,
   3044                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag);
   3045             regReadIntegerParameter(pAdapter, &STRPortClassifier14_DTag,
   3046                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3047                             CLASSIFIER_DTAG_MAX,
   3048                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag,
   3049                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag);
   3050             regReadIntegerParameter(pAdapter, &STRPortClassifier15_DTag,
   3051                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3052                             CLASSIFIER_DTAG_MAX,
   3053                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag,
   3054                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag);
   3055 
   3056         break;
   3057 
   3058 
   3059         case IPPORT_CLSFR:
   3060 
   3061             regReadIntegerParameter(pAdapter, &STRNumOfDstIPPortClassifiers,
   3062                             NUM_OF_IPPORT_CLASSIFIERS_DEF, NUM_OF_IPPORT_CLASSIFIERS_MIN,
   3063                             NUM_OF_IPPORT_CLASSIFIERS_MAX,
   3064                             sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries,
   3065                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries);
   3066 
   3067             regReadStringParameter(pAdapter, &STRIPPortClassifier00_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3068             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstIPAddress, 4);
   3069 
   3070             regReadStringParameter(pAdapter, &STRIPPortClassifier01_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3071             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstIPAddress, 4);
   3072 
   3073             regReadStringParameter(pAdapter, &STRIPPortClassifier02_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3074             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstIPAddress, 4);
   3075 
   3076             regReadStringParameter(pAdapter, &STRIPPortClassifier03_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3077             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstIPAddress, 4);
   3078 
   3079             regReadStringParameter(pAdapter, &STRIPPortClassifier04_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3080             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstIPAddress, 4);
   3081 
   3082             regReadStringParameter(pAdapter, &STRIPPortClassifier05_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3083             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstIPAddress, 4);
   3084 
   3085             regReadStringParameter(pAdapter, &STRIPPortClassifier06_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3086             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstIPAddress, 4);
   3087 
   3088             regReadStringParameter(pAdapter, &STRIPPortClassifier07_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3089             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstIPAddress, 4);
   3090 
   3091             regReadStringParameter(pAdapter, &STRIPPortClassifier08_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3092             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstIPAddress, 4);
   3093 
   3094             regReadStringParameter(pAdapter, &STRIPPortClassifier09_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3095             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstIPAddress, 4);
   3096 
   3097             regReadStringParameter(pAdapter, &STRIPPortClassifier10_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3098             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstIPAddress, 4);
   3099 
   3100             regReadStringParameter(pAdapter, &STRIPPortClassifier11_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3101             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstIPAddress, 4);
   3102 
   3103             regReadStringParameter(pAdapter, &STRIPPortClassifier12_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3104             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstIPAddress, 4);
   3105 
   3106             regReadStringParameter(pAdapter, &STRIPPortClassifier13_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3107             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstIPAddress, 4);
   3108 
   3109             regReadStringParameter(pAdapter, &STRIPPortClassifier14_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3110             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstIPAddress, 4);
   3111 
   3112             regReadStringParameter(pAdapter, &STRIPPortClassifier15_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize);
   3113             initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstIPAddress, 4);
   3114 
   3115             regReadIntegerParameter(pAdapter, &STRIPPortClassifier00_Port,
   3116                             IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3117                             CLASSIFIER_PORT_MAX,
   3118                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstPortNum,
   3119                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstPortNum);
   3120             regReadIntegerParameter(pAdapter, &STRIPPortClassifier01_Port,
   3121                             IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3122                             CLASSIFIER_PORT_MAX,
   3123                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstPortNum,
   3124                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstPortNum);
   3125             regReadIntegerParameter(pAdapter, &STRIPPortClassifier02_Port,
   3126                             IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3127                             CLASSIFIER_PORT_MAX,
   3128                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstPortNum,
   3129                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstPortNum);
   3130             regReadIntegerParameter(pAdapter, &STRIPPortClassifier03_Port,
   3131                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3132                             CLASSIFIER_PORT_MAX,
   3133                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstPortNum,
   3134                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstPortNum);
   3135             regReadIntegerParameter(pAdapter, &STRIPPortClassifier04_Port,
   3136                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3137                             CLASSIFIER_PORT_MAX,
   3138                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstPortNum,
   3139                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstPortNum);
   3140             regReadIntegerParameter(pAdapter, &STRIPPortClassifier05_Port,
   3141                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3142                             CLASSIFIER_PORT_MAX,
   3143                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstPortNum,
   3144                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstPortNum);
   3145             regReadIntegerParameter(pAdapter, &STRIPPortClassifier06_Port,
   3146                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3147                             CLASSIFIER_PORT_MAX,
   3148                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstPortNum,
   3149                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstPortNum);
   3150             regReadIntegerParameter(pAdapter, &STRIPPortClassifier07_Port,
   3151                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3152                             CLASSIFIER_PORT_MAX,
   3153                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstPortNum,
   3154                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstPortNum);
   3155             regReadIntegerParameter(pAdapter, &STRIPPortClassifier08_Port,
   3156                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3157                             CLASSIFIER_PORT_MAX,
   3158                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstPortNum,
   3159                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstPortNum);
   3160             regReadIntegerParameter(pAdapter, &STRIPPortClassifier09_Port,
   3161                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3162                             CLASSIFIER_PORT_MAX,
   3163                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstPortNum,
   3164                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstPortNum);
   3165             regReadIntegerParameter(pAdapter, &STRIPPortClassifier10_Port,
   3166                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3167                             CLASSIFIER_PORT_MAX,
   3168                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstPortNum,
   3169                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstPortNum);
   3170             regReadIntegerParameter(pAdapter, &STRIPPortClassifier11_Port,
   3171                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3172                             CLASSIFIER_PORT_MAX,
   3173                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstPortNum,
   3174                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstPortNum);
   3175             regReadIntegerParameter(pAdapter, &STRIPPortClassifier12_Port,
   3176                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3177                             CLASSIFIER_PORT_MAX,
   3178                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstPortNum,
   3179                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstPortNum);
   3180             regReadIntegerParameter(pAdapter, &STRIPPortClassifier13_Port,
   3181                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3182                             CLASSIFIER_PORT_MAX,
   3183                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstPortNum,
   3184                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstPortNum);
   3185             regReadIntegerParameter(pAdapter, &STRIPPortClassifier14_Port,
   3186                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3187                             CLASSIFIER_PORT_MAX,
   3188                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstPortNum,
   3189                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstPortNum);
   3190             regReadIntegerParameter(pAdapter, &STRIPPortClassifier15_Port,
   3191                             CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN,
   3192                             CLASSIFIER_PORT_MAX,
   3193                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstPortNum,
   3194                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstPortNum);
   3195             regReadIntegerParameter(pAdapter, &STRIPPortClassifier00_DTag,
   3196                             IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3197                             CLASSIFIER_DTAG_MAX,
   3198                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag,
   3199                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag);
   3200             regReadIntegerParameter(pAdapter, &STRIPPortClassifier01_DTag,
   3201                             IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3202                             CLASSIFIER_DTAG_MAX,
   3203                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag,
   3204                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag);
   3205             regReadIntegerParameter(pAdapter, &STRIPPortClassifier02_DTag,
   3206                             IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3207                             CLASSIFIER_DTAG_MAX,
   3208                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag,
   3209                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag);
   3210             regReadIntegerParameter(pAdapter, &STRIPPortClassifier03_DTag,
   3211                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3212                             CLASSIFIER_DTAG_MAX,
   3213                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag,
   3214                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag);
   3215             regReadIntegerParameter(pAdapter, &STRIPPortClassifier04_DTag,
   3216                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3217                             CLASSIFIER_DTAG_MAX,
   3218                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag,
   3219                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag);
   3220             regReadIntegerParameter(pAdapter, &STRIPPortClassifier05_DTag,
   3221                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3222                             CLASSIFIER_DTAG_MAX,
   3223                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag,
   3224                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag);
   3225             regReadIntegerParameter(pAdapter, &STRIPPortClassifier06_DTag,
   3226                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3227                             CLASSIFIER_DTAG_MAX,
   3228                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag,
   3229                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag);
   3230             regReadIntegerParameter(pAdapter, &STRIPPortClassifier07_DTag,
   3231                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3232                             CLASSIFIER_DTAG_MAX,
   3233                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag,
   3234                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag);
   3235             regReadIntegerParameter(pAdapter, &STRIPPortClassifier08_DTag,
   3236                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3237                             CLASSIFIER_DTAG_MAX,
   3238                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag,
   3239                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag);
   3240             regReadIntegerParameter(pAdapter, &STRIPPortClassifier09_DTag,
   3241                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3242                             CLASSIFIER_DTAG_MAX,
   3243                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag,
   3244                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag);
   3245             regReadIntegerParameter(pAdapter, &STRIPPortClassifier10_DTag,
   3246                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3247                             CLASSIFIER_DTAG_MAX,
   3248                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag,
   3249                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag);
   3250             regReadIntegerParameter(pAdapter, &STRIPPortClassifier11_DTag,
   3251                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3252                             CLASSIFIER_DTAG_MAX,
   3253                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag,
   3254                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag);
   3255             regReadIntegerParameter(pAdapter, &STRIPPortClassifier12_DTag,
   3256                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3257                             CLASSIFIER_DTAG_MAX,
   3258                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag,
   3259                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag);
   3260             regReadIntegerParameter(pAdapter, &STRIPPortClassifier13_DTag,
   3261                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3262                             CLASSIFIER_DTAG_MAX,
   3263                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag,
   3264                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag);
   3265             regReadIntegerParameter(pAdapter, &STRIPPortClassifier14_DTag,
   3266                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3267                             CLASSIFIER_DTAG_MAX,
   3268                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag,
   3269                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag);
   3270             regReadIntegerParameter(pAdapter, &STRIPPortClassifier15_DTag,
   3271                             CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN,
   3272                             CLASSIFIER_DTAG_MAX,
   3273                             sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag,
   3274                             (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag);
   3275 
   3276         break;
   3277 
   3278     }
   3279 
   3280 
   3281 
   3282   /* ---------------------------
   3283 
   3284        Traffic Intensity Threshold
   3285 
   3286    ---------------------------*/
   3287     regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresHigh,
   3288                             CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_DEF,
   3289                             CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_MIN,
   3290                             CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_MAX,
   3291                             sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.uHighThreshold,
   3292                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.uHighThreshold);
   3293 
   3294     regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresLow,
   3295                             CTRL_DATA_TRAFFIC_THRESHOLD_LOW_DEF,
   3296                             CTRL_DATA_TRAFFIC_THRESHOLD_LOW_MIN,
   3297                             CTRL_DATA_TRAFFIC_THRESHOLD_LOW_MAX,
   3298                             sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.uLowThreshold,
   3299                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.uLowThreshold);
   3300 
   3301     regReadIntegerParameter(pAdapter, &STRTrafficIntensityTestInterval,
   3302                             CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_DEF,
   3303                             CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_MIN,
   3304                             CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_MAX,
   3305                             sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.TestInterval,
   3306                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.TestInterval);
   3307 
   3308     regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresholdEnabled,
   3309                             CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_DEF,
   3310                             CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_MIN,
   3311                             CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_MAX,
   3312                             sizeof p->ctrlDataInitParams.ctrlDataTrafficThresholdEnabled,
   3313                             (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThresholdEnabled);
   3314 
   3315     regReadIntegerParameter(pAdapter, &STRTrafficMonitorMinIntervalPercentage,
   3316                             TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_DEF,
   3317                             TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_MIN,
   3318                             TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_MAX,
   3319                             sizeof p->trafficMonitorMinIntervalPercentage,
   3320                             (TI_UINT8*)&p->trafficMonitorMinIntervalPercentage);
   3321 
   3322     regReadIntegerParameter(pAdapter, &STRWMEEnable,
   3323                             WME_ENABLED_DEF, WME_ENABLED_MIN,
   3324                             WME_ENABLED_MAX,
   3325                             sizeof p->qosMngrInitParams.wmeEnable,
   3326                             (TI_UINT8*)&p->qosMngrInitParams.wmeEnable);
   3327 
   3328     regReadIntegerParameter(pAdapter, &STRTrafficAdmCtrlEnable,
   3329                             QOS_TRAFFIC_ADM_CTRL_ENABLED_DEF, QOS_TRAFFIC_ADM_CTRL_ENABLED_MIN,
   3330                             QOS_TRAFFIC_ADM_CTRL_ENABLED_MAX,
   3331                             sizeof p->qosMngrInitParams.trafficAdmCtrlEnable,
   3332                             (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlEnable);
   3333 
   3334     regReadIntegerParameter(pAdapter, &STRdesiredPsMode,
   3335                             QOS_DESIRED_PS_MODE_DEF, QOS_DESIRED_PS_MODE_MIN,
   3336                             QOS_DESIRED_PS_MODE_MAX,
   3337                             sizeof p->qosMngrInitParams.desiredPsMode,
   3338                             (TI_UINT8*)&p->qosMngrInitParams.desiredPsMode);
   3339 
   3340     regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeBE,
   3341                     QOS_MSDU_LIFE_TIME_BE_DEF, QOS_MSDU_LIFE_TIME_BE_MIN,
   3342                     QOS_MSDU_LIFE_TIME_BE_MAX,
   3343                     sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE],
   3344                     (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE]);
   3345 
   3346     regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeBK,
   3347                             QOS_MSDU_LIFE_TIME_BK_DEF, QOS_MSDU_LIFE_TIME_BK_MIN,
   3348                             QOS_MSDU_LIFE_TIME_BK_MAX,
   3349                             sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK],
   3350                             (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK]);
   3351 
   3352     regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeVI,
   3353                             QOS_MSDU_LIFE_TIME_VI_DEF, QOS_MSDU_LIFE_TIME_VI_MIN,
   3354                             QOS_MSDU_LIFE_TIME_VI_MAX,
   3355                             sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI],
   3356                             (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI]);
   3357 
   3358     regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeVO,
   3359                             QOS_MSDU_LIFE_TIME_VO_DEF, QOS_MSDU_LIFE_TIME_VO_MIN,
   3360                             QOS_MSDU_LIFE_TIME_VO_MAX,
   3361                             sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO],
   3362                             (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO]);
   3363 
   3364 
   3365     regReadIntegerParameter(pAdapter, &STRQOSrxTimeOutPsPoll,
   3366                     QOS_RX_TIMEOUT_PS_POLL_DEF, QOS_RX_TIMEOUT_PS_POLL_MIN,
   3367                     QOS_RX_TIMEOUT_PS_POLL_MAX,
   3368                     sizeof p->twdInitParams.tGeneral.rxTimeOut.psPoll,
   3369                     (TI_UINT8*)&p->twdInitParams.tGeneral.rxTimeOut.psPoll);
   3370 
   3371     regReadIntegerParameter(pAdapter, &STRQOSrxTimeOutUPSD,
   3372                     QOS_RX_TIMEOUT_UPSD_DEF, QOS_RX_TIMEOUT_UPSD_MIN,
   3373                     QOS_RX_TIMEOUT_UPSD_MAX,
   3374                     sizeof p->twdInitParams.tGeneral.rxTimeOut.UPSD,
   3375                     (TI_UINT8*)&p->twdInitParams.tGeneral.rxTimeOut.UPSD);
   3376 
   3377     /* Note: The PsPoll wait timeout should be aligned with the UPSD setting */
   3378    /* p->PowerMgrInitParams.HwPsPollResponseTimeout = (TI_UINT8)p->qosMngrInitParams.rxTimeout.UPSD;*/
   3379 
   3380     regReadIntegerParameter(pAdapter, &STRQOSwmePsModeBE,
   3381                             QOS_WME_PS_MODE_BE_DEF, QOS_WME_PS_MODE_BE_MIN,
   3382                             QOS_WME_PS_MODE_BE_MAX,
   3383                             sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BE],
   3384                             (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BE]);
   3385 
   3386     regReadIntegerParameter(pAdapter, &STRQOSwmePsModeBK,
   3387                             QOS_WME_PS_MODE_BK_DEF, QOS_WME_PS_MODE_BK_MIN,
   3388                             QOS_WME_PS_MODE_BK_MAX,
   3389                             sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BK],
   3390                             (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BK]);
   3391 
   3392     regReadIntegerParameter(pAdapter, &STRQOSwmePsModeVI,
   3393                         QOS_WME_PS_MODE_VI_DEF, QOS_WME_PS_MODE_VI_MIN,
   3394                         QOS_WME_PS_MODE_VI_MAX,
   3395                         sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VI],
   3396                         (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VI]);
   3397 
   3398     regReadIntegerParameter(pAdapter, &STRQOSwmePsModeVO,
   3399                         QOS_WME_PS_MODE_VO_DEF, QOS_WME_PS_MODE_VO_MIN,
   3400                         QOS_WME_PS_MODE_VO_MAX,
   3401                         sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VO],
   3402                         (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VO]);
   3403 
   3404 
   3405     /* HW Tx queues buffers allocation low threshold */
   3406     regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdBE,
   3407                             QOS_TX_BLKS_THRESHOLD_BE_DEF, QOS_TX_BLKS_THRESHOLD_MIN,
   3408                             QOS_TX_BLKS_THRESHOLD_MAX,
   3409                             sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE],
   3410                             (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE]);
   3411 
   3412     regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdBK,
   3413                             QOS_TX_BLKS_THRESHOLD_BK_DEF, QOS_TX_BLKS_THRESHOLD_MIN,
   3414                             QOS_TX_BLKS_THRESHOLD_MAX,
   3415                             sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK],
   3416                             (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK]);
   3417 
   3418     regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdVI,
   3419                             QOS_TX_BLKS_THRESHOLD_VI_DEF, QOS_TX_BLKS_THRESHOLD_MIN,
   3420                             QOS_TX_BLKS_THRESHOLD_MAX,
   3421                             sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI],
   3422                             (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI]);
   3423 
   3424     regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdVO,
   3425                             QOS_TX_BLKS_THRESHOLD_VO_DEF, QOS_TX_BLKS_THRESHOLD_MIN,
   3426                             QOS_TX_BLKS_THRESHOLD_MAX,
   3427                             sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO],
   3428                             (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO]);
   3429 
   3430     /* HW Rx mem-blocks Number */
   3431     regReadIntegerParameter(pAdapter, &STRRxMemBlksNum,
   3432                             RX_MEM_BLKS_NUM_DEF, RX_MEM_BLKS_NUM_MIN, RX_MEM_BLKS_NUM_MAX,
   3433                             sizeof p->twdInitParams.tGeneral.uRxMemBlksNum,
   3434                             (TI_UINT8*)&p->twdInitParams.tGeneral.uRxMemBlksNum);
   3435 
   3436     regReadIntegerParameter(pAdapter, &STRWiFiMode,
   3437                             WIFI_MODE_DEF, WIFI_MODE_MIN,
   3438                             WIFI_MODE_MAX,
   3439                             sizeof uWiFiMode,
   3440                             (TI_UINT8*)&uWiFiMode);
   3441 
   3442     regReadIntegerParameter(pAdapter, &STRPerformanceBoost,
   3443                             PERFORMANCE_BOOST_MODE_DEF, PERFORMANCE_BOOST_MODE_MIN, PERFORMANCE_BOOST_MODE_MAX,
   3444                             sizeof uPerformanceBoostMode,
   3445                             (TI_UINT8*)&uPerformanceBoostMode);
   3446 
   3447     regReadIntegerParameter(pAdapter, &STRMaxAMPDU,
   3448                             MAX_MPDU_DEF, MAX_MPDU_MIN_VALUE, MAX_MPDU_MAX_VALUE,
   3449                             sizeof p->twdInitParams.tGeneral.uMaxAMPDU,
   3450                             (TI_UINT8*)&p->twdInitParams.tGeneral.uMaxAMPDU);
   3451 
   3452     regReadIntegerParameter(pAdapter, &STRStopNetStackTx,
   3453                             STOP_NET_STACK_TX_DEF, STOP_NET_STACK_TX_MIN,
   3454                             STOP_NET_STACK_TX_MAX,
   3455 							sizeof p->txDataInitParams.bStopNetStackTx,
   3456                             (TI_UINT8*)&p->txDataInitParams.bStopNetStackTx);
   3457 
   3458     regReadIntegerParameter(pAdapter, &STRSettings,
   3459     						1,0,255,
   3460                             sizeof p->twdInitParams.tPlatformGenParams.GeneralSettings,
   3461                             (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.GeneralSettings);
   3462 
   3463 	regReadIntegerParameter(pAdapter, &STRTxSendPaceThresh,
   3464                             TX_SEND_PACE_THRESH_DEF, TX_SEND_PACE_THRESH_MIN,
   3465                             TX_SEND_PACE_THRESH_MAX,
   3466 							sizeof p->txDataInitParams.uTxSendPaceThresh,
   3467                             (TI_UINT8*)&p->txDataInitParams.uTxSendPaceThresh);
   3468 
   3469 
   3470     /* special numbers for WiFi mode! */
   3471     if (uWiFiMode)
   3472     {
   3473         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE] = QOS_TX_BLKS_THRESHOLD_BE_DEF_WIFI_MODE;
   3474         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK] = QOS_TX_BLKS_THRESHOLD_BK_DEF_WIFI_MODE;
   3475         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI] = QOS_TX_BLKS_THRESHOLD_VI_DEF_WIFI_MODE;
   3476         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO] = QOS_TX_BLKS_THRESHOLD_VO_DEF_WIFI_MODE;
   3477 
   3478         p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE] = QOS_MSDU_LIFE_TIME_BE_DEF_WIFI_MODE;
   3479         p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK] = QOS_MSDU_LIFE_TIME_BK_DEF_WIFI_MODE;
   3480         p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI] = QOS_MSDU_LIFE_TIME_VI_DEF_WIFI_MODE;
   3481         p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO] = QOS_MSDU_LIFE_TIME_VO_DEF_WIFI_MODE;
   3482 
   3483         p->twdInitParams.tGeneral.uRxMemBlksNum         = RX_MEM_BLKS_NUM_DEF_WIFI_MODE;
   3484         p->twdInitParams.tGeneral.RxIntrPacingThreshold = TWD_RX_INTR_THRESHOLD_DEF_WIFI_MODE;
   3485         p->txDataInitParams.bStopNetStackTx             = STOP_NET_STACK_TX_DEF_WIFI_MODE;
   3486         p->txDataInitParams.uTxSendPaceThresh           = TX_SEND_PACE_THRESH_DEF_WIFI_MODE;
   3487 
   3488         /* remove the flags of DRPw mode when WiFi active */
   3489         p->twdInitParams.tPlatformGenParams.GeneralSettings &= ~DRPw_MASK_CHECK;
   3490     }
   3491 
   3492     /* If NOT in WiFi mode and IN performance-boost mode, optimize some traffic params for speed (on expense of QoS)  */
   3493     else if (uPerformanceBoostMode == BOOST_MODE_OPTIMIZE_FOR_SPEED)
   3494     {
   3495         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE] = QOS_TX_BLKS_THRESHOLD_BE_DEF_BOOST_MODE;
   3496         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK] = QOS_TX_BLKS_THRESHOLD_BK_DEF_BOOST_MODE;
   3497         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI] = QOS_TX_BLKS_THRESHOLD_VI_DEF_BOOST_MODE;
   3498         p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO] = QOS_TX_BLKS_THRESHOLD_VO_DEF_BOOST_MODE;
   3499 
   3500         p->twdInitParams.tGeneral.uRxMemBlksNum = RX_MEM_BLKS_NUM_DEF_BOOST_MODE;
   3501     }
   3502 
   3503     regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitBE,
   3504                             QOS_SHORT_RETRY_LIMIT_BE_DEF, QOS_SHORT_RETRY_LIMIT_BE_MIN,
   3505                             QOS_SHORT_RETRY_LIMIT_BE_MAX,
   3506                             sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BE],
   3507                             (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BE]);
   3508 
   3509     regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitBK,
   3510                             QOS_SHORT_RETRY_LIMIT_BK_DEF, QOS_SHORT_RETRY_LIMIT_BK_MIN,
   3511                             QOS_SHORT_RETRY_LIMIT_BK_MAX,
   3512                             sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BK],
   3513                             (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BK]);
   3514 
   3515     regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitVI,
   3516                             QOS_SHORT_RETRY_LIMIT_VI_DEF, QOS_SHORT_RETRY_LIMIT_VI_MIN,
   3517                             QOS_SHORT_RETRY_LIMIT_VI_MAX,
   3518                             sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VI],
   3519                             (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VI]);
   3520 
   3521     regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitVO,
   3522                             QOS_SHORT_RETRY_LIMIT_VO_DEF, QOS_SHORT_RETRY_LIMIT_VO_MIN,
   3523                             QOS_SHORT_RETRY_LIMIT_VO_MAX,
   3524                             sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VO],
   3525                             (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VO]);
   3526 
   3527     regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitBE,
   3528                             QOS_LONG_RETRY_LIMIT_BE_DEF, QOS_LONG_RETRY_LIMIT_BE_MIN,
   3529                             QOS_LONG_RETRY_LIMIT_BE_MAX,
   3530                             sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_BE],
   3531                             (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_BE]);
   3532 
   3533     regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitBK,
   3534                             QOS_LONG_RETRY_LIMIT_BK_DEF, QOS_LONG_RETRY_LIMIT_BK_MIN,
   3535                             QOS_LONG_RETRY_LIMIT_BK_MAX,
   3536                             sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_BK],
   3537                             (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_BK]);
   3538 
   3539     regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitVI,
   3540                             QOS_LONG_RETRY_LIMIT_VI_DEF, QOS_LONG_RETRY_LIMIT_VI_MIN,
   3541                             QOS_LONG_RETRY_LIMIT_VI_MAX,
   3542                             sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_VI],
   3543                             (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_VI]);
   3544 
   3545     regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitVO,
   3546                             QOS_LONG_RETRY_LIMIT_VO_DEF, QOS_LONG_RETRY_LIMIT_VO_MIN,
   3547                             QOS_LONG_RETRY_LIMIT_VO_MAX,
   3548                             sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_VO],
   3549                             (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_VO]);
   3550 
   3551     regReadIntegerParameter(pAdapter, &STRQOSAckPolicyBE,
   3552                             QOS_ACK_POLICY_BE_DEF, QOS_ACK_POLICY_BE_MIN,
   3553                             QOS_ACK_POLICY_BE_MAX,
   3554                             sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_BE],
   3555                             (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_BE]);
   3556 
   3557     regReadIntegerParameter(pAdapter, &STRQOSAckPolicyBK,
   3558                             QOS_ACK_POLICY_BK_DEF, QOS_ACK_POLICY_BK_MIN,
   3559                             QOS_ACK_POLICY_BK_MAX,
   3560                             sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_BK],
   3561                             (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_BK]);
   3562 
   3563     regReadIntegerParameter(pAdapter, &STRQOSAckPolicyVI,
   3564                             QOS_ACK_POLICY_VI_DEF, QOS_ACK_POLICY_VI_MIN,
   3565                             QOS_ACK_POLICY_VI_MAX,
   3566                             sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_VI],
   3567                             (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_VI]);
   3568 
   3569     regReadIntegerParameter(pAdapter, &STRQOSAckPolicyVO,
   3570                             QOS_ACK_POLICY_VO_DEF, QOS_ACK_POLICY_VO_MIN,
   3571                             QOS_ACK_POLICY_VO_MAX,
   3572                             sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_VO],
   3573                             (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_VO]);
   3574 
   3575 
   3576     regReadIntegerParameter(pAdapter, &STRQoSqueue0OverFlowPolicy,
   3577                     QOS_QUEUE_0_OVFLOW_POLICY_DEF, QOS_QUEUE_0_OVFLOW_POLICY_MIN,
   3578                     QOS_QUEUE_0_OVFLOW_POLICY_MAX,
   3579                     sizeof p->qosMngrInitParams.QueueOvFlowPolicy[0],
   3580                     (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[0]);
   3581 
   3582     regReadIntegerParameter(pAdapter, &STRQoSqueue1OverFlowPolicy,
   3583                     QOS_QUEUE_1_OVFLOW_POLICY_DEF, QOS_QUEUE_1_OVFLOW_POLICY_MIN,
   3584                     QOS_QUEUE_1_OVFLOW_POLICY_MAX,
   3585                     sizeof p->qosMngrInitParams.QueueOvFlowPolicy[1],
   3586                     (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[1]);
   3587 
   3588     regReadIntegerParameter(pAdapter, &STRQoSqueue2OverFlowPolicy,
   3589                     QOS_QUEUE_2_OVFLOW_POLICY_DEF, QOS_QUEUE_2_OVFLOW_POLICY_MIN,
   3590                     QOS_QUEUE_2_OVFLOW_POLICY_MAX,
   3591                     sizeof p->qosMngrInitParams.QueueOvFlowPolicy[2],
   3592                     (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[2]);
   3593 
   3594     regReadIntegerParameter(pAdapter, &STRQoSqueue3OverFlowPolicy,
   3595                     QOS_QUEUE_3_OVFLOW_POLICY_DEF, QOS_QUEUE_3_OVFLOW_POLICY_MIN,
   3596                     QOS_QUEUE_3_OVFLOW_POLICY_MAX,
   3597                     sizeof p->qosMngrInitParams.QueueOvFlowPolicy[3],
   3598                     (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[3]);
   3599 
   3600     /* Packet Burst parameters    */
   3601 
   3602     regReadIntegerParameter(pAdapter, &STRQOSPacketBurstEnable,
   3603                             QOS_PACKET_BURST_ENABLE_DEF, QOS_PACKET_BURST_ENABLE_MIN,
   3604                             QOS_PACKET_BURST_ENABLE_MAX,
   3605                             sizeof p->qosMngrInitParams.PacketBurstEnable,
   3606                             (TI_UINT8*)&p->qosMngrInitParams.PacketBurstEnable);
   3607 
   3608     regReadIntegerParameter(pAdapter, &STRQOSPacketBurstTxOpLimit,
   3609                             QOS_PACKET_BURST_TXOP_LIMIT_DEF, QOS_PACKET_BURST_TXOP_LIMIT_MIN,
   3610                             QOS_PACKET_BURST_TXOP_LIMIT_MAX,
   3611                             sizeof p->qosMngrInitParams.PacketBurstTxOpLimit,
   3612                             (TI_UINT8*)&p->qosMngrInitParams.PacketBurstTxOpLimit);
   3613 
   3614 
   3615     /*---------------------------
   3616         Measurement parameters
   3617     -----------------------------*/
   3618 
   3619     regReadIntegerParameter(pAdapter, &STRMeasurTrafficThreshold,
   3620                             MEASUREMENT_TRAFFIC_THRSHLD_DEF, MEASUREMENT_TRAFFIC_THRSHLD_MIN, MEASUREMENT_TRAFFIC_THRSHLD_MAX,
   3621                             sizeof p->measurementInitParams.trafficIntensityThreshold,
   3622                             (TI_UINT8*)&p->measurementInitParams.trafficIntensityThreshold);
   3623 
   3624     regReadIntegerParameter(pAdapter, &STRMeasurMaxDurationOnNonServingChannel,
   3625                             MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_DEF, MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_MIN, MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_MAX,
   3626                             sizeof p->measurementInitParams.maxDurationOnNonServingChannel,
   3627                             (TI_UINT8*)&p->measurementInitParams.maxDurationOnNonServingChannel);
   3628 
   3629 
   3630     /*---------------------------
   3631           XCC Manager parameters
   3632     -----------------------------*/
   3633 #ifdef XCC_MODULE_INCLUDED
   3634 
   3635     regReadIntegerParameter(pAdapter, &STRXCCModeEnabled,
   3636                             XCC_MNGR_ENABLE_DEF, XCC_MNGR_ENABLE_MIN, XCC_MNGR_ENABLE_MAX,
   3637                             sizeof p->XCCMngrParams.XCCEnabled,
   3638                             (TI_UINT8*)&p->XCCMngrParams.XCCEnabled);
   3639 
   3640 
   3641     p->measurementInitParams.XCCEnabled = p->XCCMngrParams.XCCEnabled;
   3642 
   3643 #endif
   3644 
   3645     regReadIntegerParameter(pAdapter, &STRXCCTestIgnoreDeAuth0,
   3646                             XCC_TEST_IGNORE_DEAUTH_0_DEF, XCC_TEST_IGNORE_DEAUTH_0_MIN, XCC_TEST_IGNORE_DEAUTH_0_MAX,
   3647                             sizeof p->apConnParams.ignoreDeauthReason0,
   3648                             (TI_UINT8*)&p->apConnParams.ignoreDeauthReason0);
   3649 
   3650     /*---------------------------
   3651       EEPROM less support
   3652     -----------------------------*/
   3653     regReadIntegerParameter(pAdapter, &STREEPROMlessModeSupported,
   3654                             TWD_EEPROMLESS_ENABLE_DEF, TWD_EEPROMLESS_ENABLE_MIN,
   3655                             TWD_EEPROMLESS_ENABLE_MAX,
   3656                             sizeof p->twdInitParams.tGeneral.halCtrlEepromLessEnable,
   3657                             (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlEepromLessEnable);
   3658 
   3659     regReadStringParameter(pAdapter, &STRstationMacAddress,
   3660                             (TI_INT8*)(defStaMacAddress0), 11,
   3661                             (TI_UINT8*)staMACAddress, &regMACstrLen);
   3662 
   3663     /*reads the arp ip from table*/
   3664     regReadStringParameter(pAdapter ,&STRArp_Ip_Addr,
   3665                             (TI_INT8*)(defArpIpAddress),REG_ARP_IP_ADDR_STR_LEN,
   3666                             (TI_UINT8*)staArpIpAddress,&regArpIpStrLen ) ;
   3667 
   3668     regReadIntegerParameter(pAdapter, &STRArp_Ip_Filter_Ena,
   3669                             DEF_FILTER_ENABLE_VALUE, MIN_FILTER_ENABLE_VALUE, MAX_FILTER_ENABLE_VALUE,
   3670                             sizeof p->twdInitParams.tArpIpFilter.filterType,
   3671                             (TI_UINT8*)&p->twdInitParams.tArpIpFilter.filterType);
   3672 
   3673 
   3674     initValusFromRgstryString( (TI_INT8*)(staArpIpAddress), (TI_INT8*)&p->twdInitParams.tArpIpFilter.addr, 4);
   3675 
   3676 
   3677     initValusFromRgstryString( (TI_INT8*)(staMACAddress),
   3678                                     (TI_INT8*)&(p->twdInitParams.tGeneral.StaMacAddress[0]),
   3679                                     6);
   3680 /*fource FragThreshold to be even value (round it down)MR WLAN00003501*/
   3681     p->twdInitParams.tGeneral.halCtrlFragThreshold &= 0xFFFE;
   3682 
   3683 
   3684 
   3685 
   3686 
   3687 /*----------------------------------
   3688     Health Monitor registry init
   3689 ------------------------------------*/
   3690 
   3691     /* No scan complete recovery enabled */
   3692     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledNoScanComplete,
   3693                             1, 0, 1,   /* default is enabled */
   3694                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ NO_SCAN_COMPLETE_FAILURE ]),
   3695                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ NO_SCAN_COMPLETE_FAILURE ]) );
   3696 
   3697     /* Mailbox failure recovery enabled */
   3698     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledMboxFailure,
   3699                             1, 0, 1,   /* default is enabled */
   3700                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ MBOX_FAILURE ]),
   3701                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ MBOX_FAILURE ]) );
   3702 
   3703     /* HW awake failure recovery enabled */
   3704     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledHwAwakeFailure,
   3705                             1, 0, 1,   /* default is enabled */
   3706                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_AWAKE_FAILURE ]),
   3707                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_AWAKE_FAILURE ]) );
   3708 
   3709     /* TX stuck recovery enabled */
   3710     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledTxStuck,
   3711                             1, 0, 1,   /* default is enabled */
   3712                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ TX_STUCK ]),
   3713                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ TX_STUCK ]) );
   3714 
   3715     /* disconnect timeout recovery enabled */
   3716     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledDisconnectTimeout,
   3717                             0, 0, 1,   /* default is disabled */
   3718                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ DISCONNECT_TIMEOUT ]),
   3719                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ DISCONNECT_TIMEOUT ]) );
   3720 
   3721     /* Power save failure recovery enabled */
   3722     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledPowerSaveFailure,
   3723                             1, 0, 1,   /* default is enabled */
   3724                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ POWER_SAVE_FAILURE ]),
   3725                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ POWER_SAVE_FAILURE ]) );
   3726 
   3727     /* Measurement failure recovery enabled */
   3728     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledMeasurementFailure,
   3729                             1, 0, 1,   /* default is enabled */
   3730                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ MEASUREMENT_FAILURE ]),
   3731                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ MEASUREMENT_FAILURE ]) );
   3732 
   3733     /* Bus failure recovery enabled */
   3734     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledBusFailure,
   3735                             1, 0, 1,   /* default is enabled */
   3736                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ BUS_FAILURE ]),
   3737                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ BUS_FAILURE ]) );
   3738 
   3739     /* HW Watchdog Expired recovery enabled */
   3740     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledHwWdExpire,
   3741                             1, 0, 1,   /* default is enabled */
   3742                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_WD_EXPIRE ]),
   3743                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_WD_EXPIRE ]) );
   3744 
   3745     /* Rx Xfer Failure recovery enabled */
   3746     regReadIntegerParameter(pAdapter, &STRRecoveryEnabledRxXferFailure,
   3747                             1, 0, 1,   /* default is enabled */
   3748                             sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ RX_XFER_FAILURE ]),
   3749                             (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ RX_XFER_FAILURE ]) );
   3750 
   3751 /*-------------------------------------------
   3752    RSSI/SNR Weights for Average calculations
   3753 --------------------------------------------*/
   3754     regReadIntegerParameter(pAdapter, &STRRssiBeaconAverageWeight,
   3755                             TWD_RSSI_BEACON_WEIGHT_DEF, TWD_RSSI_BEACON_WEIGHT_MIN,
   3756                             TWD_RSSI_BEACON_WEIGHT_MAX,
   3757                             sizeof p->twdInitParams.tGeneral.uRssiBeaconAverageWeight,
   3758                             (TI_UINT8*)&p->twdInitParams.tGeneral.uRssiBeaconAverageWeight);
   3759 
   3760     regReadIntegerParameter(pAdapter, &STRRssiPacketAverageWeight,
   3761                             TWD_RSSI_PACKET_WEIGHT_DEF, TWD_RSSI_PACKET_WEIGHT_MIN,
   3762                             TWD_RSSI_PACKET_WEIGHT_MAX,
   3763                             sizeof p->twdInitParams.tGeneral.uRssiPacketAverageWeight,
   3764                             (TI_UINT8*)&p->twdInitParams.tGeneral.uRssiPacketAverageWeight);
   3765 
   3766     regReadIntegerParameter(pAdapter, &STRSnrBeaconAverageWeight,
   3767                             TWD_SNR_BEACON_WEIGHT_DEF, TWD_SNR_BEACON_WEIGHT_MIN,
   3768                             TWD_SNR_BEACON_WEIGHT_MAX,
   3769                             sizeof p->twdInitParams.tGeneral.uSnrBeaconAverageWeight,
   3770                             (TI_UINT8*)&p->twdInitParams.tGeneral.uSnrBeaconAverageWeight);
   3771 
   3772     regReadIntegerParameter(pAdapter, &STRSnrPacketAverageWeight,
   3773                             TWD_SNR_PACKET_WEIGHT_DEF, TWD_SNR_PACKET_WEIGHT_MIN,
   3774                             TWD_SNR_PACKET_WEIGHT_MAX,
   3775                             sizeof p->twdInitParams.tGeneral.uSnrPacketAverageWeight,
   3776                             (TI_UINT8*)&p->twdInitParams.tGeneral.uSnrPacketAverageWeight);
   3777 
   3778 /*----------------------------------
   3779  Scan Concentrator
   3780 ------------------------------------*/
   3781     regReadIntegerParameter (pAdapter, &STRMinimumDurationBetweenOsScans,
   3782                              SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_DEF, SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_MIN, SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_MAX,
   3783                              sizeof p->tScanCncnInitParams.uMinimumDurationBetweenOsScans,
   3784                              (TI_UINT8*)&p->tScanCncnInitParams.uMinimumDurationBetweenOsScans);
   3785 
   3786     regReadIntegerParameter (pAdapter, &STRDfsPassiveDwellTimeMs,
   3787                              SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_DEF, SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_MIN, SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_MAX,
   3788                              sizeof p->tScanCncnInitParams.uDfsPassiveDwellTimeMs,
   3789                              (TI_UINT8*)&p->tScanCncnInitParams.uDfsPassiveDwellTimeMs);
   3790 
   3791     regReadIntegerParameter (pAdapter, &STRScanPushMode,
   3792                              SCAN_CNCN_APP_PUSH_MODE_DEF, SCAN_CNCN_APP_PUSH_MODE_MIN, SCAN_CNCN_APP_PUSH_MODE_MAX,
   3793                              sizeof p->tScanCncnInitParams.bPushMode,
   3794                              (TI_UINT8*)&p->tScanCncnInitParams.bPushMode);
   3795 
   3796     regReadIntegerParameter(pAdapter, &STRScanResultAging,
   3797                             SCAN_CNCN_APP_SRA_DEF, SCAN_CNCN_APP_SRA_MIN, SCAN_CNCN_APP_SRA_MAX,
   3798                             sizeof p->tScanCncnInitParams.uSraThreshold,
   3799                             (TI_UINT8*)&p->tScanCncnInitParams.uSraThreshold);
   3800 
   3801 
   3802     regReadIntegerParameter(pAdapter, &STRScanCncnRssiThreshold,
   3803                             SCAN_CNCN_RSSI_DEF, SCAN_CNCN_RSSI_MIN, SCAN_CNCN_RSSI_MAX,
   3804                             sizeof p->tScanCncnInitParams.nRssiThreshold,
   3805                             (TI_UINT8*)&p->tScanCncnInitParams.nRssiThreshold);
   3806 
   3807 /*----------------------------------
   3808  WSC
   3809 ------------------------------------*/
   3810     regReadIntegerParameter( pAdapter, &STRParseWSCInBeacons,
   3811                              WSC_PARSE_IN_BEACON_DEF, WSC_PARSE_IN_BEACON_MIN, WSC_PARSE_IN_BEACON_MAX,
   3812                              sizeof p->tMlmeInitParams.parseWSCInBeacons,
   3813                              (TI_UINT8*)&p->tMlmeInitParams.parseWSCInBeacons );
   3814 
   3815 /*----------------------------------
   3816  Current BSS
   3817 ------------------------------------*/
   3818     regReadIntegerParameter( pAdapter, &STRNullDataKeepAliveDefaultPeriod,
   3819                              NULL_KL_PERIOD_DEF, NULL_KL_PERIOD_MIN, NULL_KL_PERIOD_MAX,
   3820                              sizeof p->tCurrBssInitParams.uNullDataKeepAlivePeriod,
   3821                              (TI_UINT8*)&p->tCurrBssInitParams.uNullDataKeepAlivePeriod );
   3822 
   3823 /*----------------------------------
   3824  Context Engine
   3825 ------------------------------------*/
   3826     regReadIntegerParameter( pAdapter, &STRContextSwitchRequired,
   3827                              CONTEXT_SWITCH_REQUIRED_DEF, CONTEXT_SWITCH_REQUIRED_MIN, CONTEXT_SWITCH_REQUIRED_MAX,
   3828                              sizeof p->tContextInitParams.bContextSwitchRequired,
   3829                              (TI_UINT8*)&p->tContextInitParams.bContextSwitchRequired );
   3830 
   3831     /*
   3832      *  set 802.11n init parameters
   3833     */
   3834     regReadIntegerParameter(pAdapter, &STR11nEnable,
   3835                             HT_11N_ENABLED_DEF, HT_11N_ENABLED_MIN,
   3836                             HT_11N_ENABLED_MAX,
   3837                             sizeof p->twdInitParams.tGeneral.b11nEnable,
   3838                             (TI_UINT8*)&p->twdInitParams.tGeneral.b11nEnable);
   3839 
   3840     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_0,
   3841                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3842                             HT_BA_POLICY_MAX,
   3843                             sizeof p->qosMngrInitParams.aBaPolicy[0],
   3844                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[0]);
   3845 
   3846     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_1,
   3847                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3848                             HT_BA_POLICY_MAX,
   3849                             sizeof p->qosMngrInitParams.aBaPolicy[1],
   3850                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[1]);
   3851 
   3852     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_2,
   3853                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3854                             HT_BA_POLICY_MAX,
   3855                             sizeof p->qosMngrInitParams.aBaPolicy[2],
   3856                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[2]);
   3857 
   3858     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_3,
   3859                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3860                             HT_BA_POLICY_MAX,
   3861                             sizeof p->qosMngrInitParams.aBaPolicy[3],
   3862                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[3]);
   3863 
   3864     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_4,
   3865                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3866                             HT_BA_POLICY_MAX,
   3867                             sizeof p->qosMngrInitParams.aBaPolicy[4],
   3868                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[4]);
   3869 
   3870     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_5,
   3871                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3872                             HT_BA_POLICY_MAX,
   3873                             sizeof p->qosMngrInitParams.aBaPolicy[5],
   3874                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[5]);
   3875 
   3876     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_6,
   3877                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3878                             HT_BA_POLICY_MAX,
   3879                             sizeof p->qosMngrInitParams.aBaPolicy[6],
   3880                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[6]);
   3881 
   3882     regReadIntegerParameter(pAdapter, &STRBaPolicyTid_7,
   3883                             HT_BA_POLICY_DEF, HT_BA_POLICY_MIN,
   3884                             HT_BA_POLICY_MAX,
   3885                             sizeof p->qosMngrInitParams.aBaPolicy[7],
   3886                             (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[7]);
   3887 
   3888     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_0,
   3889                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3890                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3891                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[0],
   3892                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[0]);
   3893 
   3894     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_1,
   3895                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3896                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3897                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[1],
   3898                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[1]);
   3899 
   3900     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_2,
   3901                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3902                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3903                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[2],
   3904                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[2]);
   3905 
   3906     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_3,
   3907                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3908                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3909                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[3],
   3910                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[3]);
   3911 
   3912     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_4,
   3913                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3914                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3915                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[4],
   3916                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[4]);
   3917 
   3918     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_5,
   3919                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3920                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3921                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[5],
   3922                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[5]);
   3923 
   3924     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_6,
   3925                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3926                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3927                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[6],
   3928                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[6]);
   3929 
   3930     regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_7,
   3931                             HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN,
   3932                             HT_BA_INACTIVITY_TIMEOUT_MAX,
   3933                             sizeof p->qosMngrInitParams.aBaInactivityTimeout[7],
   3934                             (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[7]);
   3935 
   3936 /*----------------------------------
   3937  Radio module parameters
   3938 ------------------------------------*/
   3939 regReadIntegerParameter(pAdapter, &STRTxBiPReferencePower_2_4G,
   3940                         128, 0, 255,
   3941                         sizeof (TI_INT8),
   3942                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPReferencePower_2_4G);
   3943 
   3944 regReadIntegerTable (pAdapter, &STRTxBiPReferencePower_5G, RADIO_TX_BIP_REF_POWER_DEF_TABLE_5G,
   3945                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPReferencePower_5G,
   3946                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE);
   3947 
   3948 regReadIntegerParameter(pAdapter, &STRTxBiPOffsetdB_2_4G,
   3949                         0,0,255,
   3950                         sizeof (TI_UINT8),
   3951                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPOffsetdB_2_4G);
   3952 
   3953 regReadIntegerTable (pAdapter, &STRTxBiPOffsetdB_5G, RADIO_TX_BIP_OFF_BD_5G,
   3954                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPOffsetdB_5G,
   3955                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE);
   3956 
   3957 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_2_4G_Normal, RADIO_TX_PER_POWER_LIMITS_2_4_NORMAL_DEF_TABLE,
   3958                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_2_4G_Normal,
   3959                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3960 
   3961 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_2_4G_Degraded, RADIO_TX_PER_POWER_LIMITS_2_4_DEGRADED_DEF_TABLE,
   3962                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_2_4G_Degraded,
   3963                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3964 
   3965 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_5G_Normal, RADIO_TX_PER_POWER_LIMITS_5_NORMAL_DEF_TABLE,
   3966                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_5G_Normal,
   3967                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3968 
   3969 regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_5G_Degraded, RADIO_TX_PER_POWER_LIMITS_5_DEGRADED_DEF_TABLE,
   3970                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_5G_Degraded,
   3971                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3972 
   3973 regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_2_4G_11b, RADIO_TX_PER_POWER_LIMITS_2_4_11B_DEF_TABLE,
   3974                      NUMBER_OF_2_4_G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_2_4G_11b,
   3975                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3976 
   3977 regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_2_4G_OFDM, RADIO_TX_PER_POWER_LIMITS_2_4_OFDM_DEF_TABLE,
   3978                      NUMBER_OF_2_4_G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_2_4G_OFDM,
   3979                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3980 
   3981 regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_5G_OFDM, RADIO_TX_PER_POWER_LIMITS_5_OFDM_DEF_TABLE,
   3982                      NUMBER_OF_5G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_5G_OFDM,
   3983                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3984 
   3985 regReadIntegerTable (pAdapter, &STRRxRssiAndProcessCompensation_2_4G, RADIO_RX_RSSI_PROCESS_2_4_DEF_TABLE,
   3986                      RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE, NULL, (TI_INT8*)p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxRssiAndProcessCompensation_2_4G,
   3987                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3988 
   3989 regReadIntegerTable (pAdapter, &STRRxRssiAndProcessCompensation_5G, RADIO_RX_RSSI_PROCESS_5_DEF_TABLE,
   3990                      RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE, NULL, (TI_INT8*)p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxRssiAndProcessCompensation_5G,
   3991                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3992 
   3993 regReadIntegerTable (pAdapter, &STRTxPDVsRateOffsets_2_4G, RADIO_TX_PD_VS_RATE_OFFSET_2_4_DEF_TABLE,
   3994                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPDVsRateOffsets_2_4G,
   3995                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   3996 
   3997 regReadIntegerTable (pAdapter, &STRTxPDVsRateOffsets_5G, RADIO_TX_PD_VS_RATE_OFFSET_5_DEF_TABLE,
   3998                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPDVsRateOffsets_5G,
   3999                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   4000 
   4001 regReadIntegerTable (pAdapter, &STRTxIbiasTable_2_4G, RADIO_TX_BIAS_2_4_DEF_TABLE,
   4002                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxIbiasTable_2_4G,
   4003                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   4004 
   4005 regReadIntegerTable (pAdapter, &STRTxIbiasTable_5G, RADIO_TX_BIAS_5_DEF_TABLE,
   4006                      NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxIbiasTable_5G,
   4007                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   4008 
   4009 regReadIntegerParameter(pAdapter, &STRTXBiPReferencePDvoltage_2_4G,
   4010                         RADIO_RX_FEM_INSERT_LOSS_2_4_DEF, RADIO_RX_FEM_INSERT_LOSS_2_4_MIN,
   4011                         RADIO_RX_FEM_INSERT_LOSS_2_4_MAX,
   4012                         sizeof (TI_UINT16),
   4013                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TXBiPReferencePDvoltage_2_4G);
   4014 
   4015 regReadIntegerTable (pAdapter, &STRTXBiPReferencePDvoltage_5G, RADIO_TX_BIP_REF_VOLTAGE_DEF_TABLE_5G,
   4016                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TXBiPReferencePDvoltage_5G,
   4017                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT16), TI_TRUE);
   4018 
   4019 
   4020 regReadIntegerParameter(pAdapter, &STRRxFemInsertionLoss_2_4G,
   4021                         14, 0, 255,
   4022                         sizeof (TI_UINT8),
   4023                         (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.RxFemInsertionLoss_2_4G);
   4024 
   4025 regReadIntegerTable (pAdapter, &STRRxFemInsertionLoss_5G, RADIO_RX_FEM_INSERT_LOSS_5_DEF_TABLE,
   4026                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.RxFemInsertionLoss_5G,
   4027                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE);
   4028 
   4029 regReadIntegerParameter(pAdapter, &STRRxTraceInsertionLoss_2_4G,
   4030                         RADIO_RX_TRACE_INSERT_LOSS_2_4_DEF, RADIO_RX_TRACE_INSERT_LOSS_2_4_MIN,
   4031                         RADIO_RX_TRACE_INSERT_LOSS_2_4_MAX,
   4032                         sizeof (TI_UINT8), (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxTraceInsertionLoss_2_4G);
   4033 
   4034 regReadIntegerParameter(pAdapter, &STRTXTraceLoss_2_4G,
   4035                         RADIO_RX_TRACE_INSERT_LOSS_2_4_DEF, RADIO_RX_TRACE_INSERT_LOSS_2_4_MIN,
   4036                         RADIO_RX_TRACE_INSERT_LOSS_2_4_MAX,
   4037                         sizeof (TI_UINT8), (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.TXTraceLoss_2_4G);
   4038 
   4039 regReadIntegerTable (pAdapter, &STRRxTraceInsertionLoss_5G, RADIO_RX_TRACE_INSERT_LOSS_5_DEF_TABLE,
   4040                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxTraceInsertionLoss_5G,
   4041                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE);
   4042 
   4043 regReadIntegerTable (pAdapter, &STRTXTraceLoss_5G, RADIO_TX_TRACE_LOSS_5_DEF_TABLE,
   4044                      NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.TXTraceLoss_5G,
   4045                      (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE);
   4046 
   4047 regReadIntegerParameter(pAdapter, &STRFRefClock,
   4048 						RADIO_FREF_CLOCK_DEF, RADIO_FREF_CLOCK_MIN,
   4049                         RADIO_FREF_CLOCK_MAX,
   4050                         sizeof p->twdInitParams.tPlatformGenParams.RefClk,
   4051                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.RefClk);
   4052 
   4053 regReadIntegerParameter(pAdapter, &STRFRefClockSettingTime,
   4054 						RADIO_FREF_CLOCK_SETTING_TIME_DEF, RADIO_FREF_CLOCK_SETTING_TIME_MIN,
   4055                         RADIO_FREF_CLOCK_SETTING_TIME_MAX,
   4056                         sizeof p->twdInitParams.tPlatformGenParams.SettlingTime,
   4057                        (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.SettlingTime);
   4058 
   4059 regReadIntegerParameter(pAdapter, &STRTXBiPFEMAutoDetect,
   4060 						0,0,1,
   4061                         sizeof p->twdInitParams.tPlatformGenParams.TXBiPFEMAutoDetect,
   4062                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.TXBiPFEMAutoDetect);
   4063 
   4064 regReadIntegerParameter(pAdapter, &STRTXBiPFEMManufacturer,
   4065 						1,0,1,
   4066                         sizeof p->twdInitParams.tPlatformGenParams.TXBiPFEMManufacturer,
   4067                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.TXBiPFEMManufacturer);
   4068 
   4069 regReadIntegerParameter(pAdapter, &STRClockValidOnWakeup,
   4070 						0,0,1,
   4071                         sizeof p->twdInitParams.tPlatformGenParams.ClockValidOnWakeup,
   4072                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.ClockValidOnWakeup);
   4073 
   4074 regReadIntegerParameter(pAdapter, &STRDC2DCMode,
   4075 						0,0,1,
   4076                         sizeof p->twdInitParams.tPlatformGenParams.DC2DCMode,
   4077                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.DC2DCMode);
   4078 
   4079 regReadIntegerParameter(pAdapter, &STRSingle_Dual_Band_Solution,
   4080 						0,0,1,
   4081                         sizeof p->twdInitParams.tPlatformGenParams.Single_Dual_Band_Solution,
   4082                         (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.Single_Dual_Band_Solution);
   4083 
   4084 /*----------------------------------
   4085  Driver-Main parameters
   4086 ------------------------------------*/
   4087     regReadIntegerParameter( pAdapter, &STRWlanDrvThreadPriority,
   4088                              WLAN_DRV_THREAD_PRIORITY_DEF, WLAN_DRV_THREAD_PRIORITY_MIN, WLAN_DRV_THREAD_PRIORITY_MAX,
   4089                              sizeof p->tDrvMainParams.uWlanDrvThreadPriority,
   4090                              (TI_UINT8*)&p->tDrvMainParams.uWlanDrvThreadPriority);
   4091 
   4092     regReadIntegerParameter( pAdapter, &STRBusDrvThreadPriority,
   4093                              BUS_DRV_THREAD_PRIORITY_DEF, BUS_DRV_THREAD_PRIORITY_MIN, BUS_DRV_THREAD_PRIORITY_MAX,
   4094                              sizeof p->tDrvMainParams.uBusDrvThreadPriority,
   4095                              (TI_UINT8*)&p->tDrvMainParams.uBusDrvThreadPriority);
   4096 
   4097     regReadIntegerParameter( pAdapter, &STRSdioBlkSizeShift,
   4098                              SDIO_BLK_SIZE_SHIFT_DEF, SDIO_BLK_SIZE_SHIFT_MIN, SDIO_BLK_SIZE_SHIFT_MAX,
   4099                              sizeof p->tDrvMainParams.uSdioBlkSizeShift,
   4100                              (TI_UINT8*)&p->tDrvMainParams.uSdioBlkSizeShift);
   4101 
   4102 
   4103 
   4104 /*-----------------------------------*/
   4105 /*      Roaming parameters           */
   4106 /*-----------------------------------*/
   4107 regReadIntegerParameter(pAdapter, & STRRoamingOperationalMode,
   4108                         ROAMING_MNGR_OPERATIONAL_MODE_DEF,
   4109                         ROAMING_MNGR_OPERATIONAL_MODE_MIN,
   4110                         ROAMING_MNGR_OPERATIONAL_MODE_MAX,
   4111                         sizeof p->tRoamScanMngrInitParams.RoamingOperationalMode,
   4112                         (TI_UINT8*)&p->tRoamScanMngrInitParams.RoamingOperationalMode);
   4113 
   4114 
   4115 regReadIntegerParameter(pAdapter, & STRSendTspecInReassPkt,
   4116                         ROAMING_MNGR_SEND_TSPEC_IN_REASSO_PKT_DEF,
   4117                         ROAMING_MNGR_SEND_TSPEC_IN_REASSO_PKT_MIN,
   4118                         ROAMING_MNGR_SEND_TSPEC_IN_REASSO_PKT_MAX,
   4119                         sizeof p->tRoamScanMngrInitParams.bSendTspecInReassPkt,
   4120                         (TI_UINT8*)&p->tRoamScanMngrInitParams.bSendTspecInReassPkt);
   4121 
   4122 /*-----------------------------------*/
   4123 /*      currBss parameters           */
   4124 /*-----------------------------------*/
   4125 regReadIntegerParameter(pAdapter, & STRRoamingOperationalMode,
   4126                         ROAMING_MNGR_OPERATIONAL_MODE_DEF,
   4127                         ROAMING_MNGR_OPERATIONAL_MODE_MIN,
   4128                         ROAMING_MNGR_OPERATIONAL_MODE_MAX,
   4129                         sizeof p->tCurrBssInitParams.RoamingOperationalMode,
   4130                         (TI_UINT8*)&p->tCurrBssInitParams.RoamingOperationalMode);
   4131 
   4132 
   4133 
   4134 /*-----------------------------------*/
   4135 /*      FM Coexistence parameters    */
   4136 /*-----------------------------------*/
   4137 
   4138 regReadIntegerParameter(pAdapter, &STRFmCoexEnable,
   4139                         FM_COEX_ENABLE_DEF, FM_COEX_ENABLE_MIN, FM_COEX_ENABLE_MAX,
   4140                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uEnable),
   4141                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uEnable));
   4142 
   4143 regReadIntegerParameter(pAdapter, &STRFmCoexSwallowPeriod,
   4144                         FM_COEX_SWALLOW_PERIOD_DEF, FM_COEX_SWALLOW_PERIOD_MIN, FM_COEX_SWALLOW_PERIOD_MAX,
   4145                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uSwallowPeriod),
   4146                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uSwallowPeriod));
   4147 
   4148 regReadIntegerParameter(pAdapter, &STRFmCoexNDividerFrefSet1,
   4149                         FM_COEX_N_DIVIDER_FREF_SET1_DEF, FM_COEX_N_DIVIDER_FREF_SET1_MIN, FM_COEX_N_DIVIDER_FREF_SET1_MAX,
   4150                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet1),
   4151                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet1));
   4152 
   4153 regReadIntegerParameter(pAdapter, &STRFmCoexNDividerFrefSet2,
   4154                         FM_COEX_N_DIVIDER_FREF_SET2_DEF, FM_COEX_N_DIVIDER_FREF_SET2_MIN, FM_COEX_N_DIVIDER_FREF_SET2_MAX,
   4155                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet2),
   4156                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet2));
   4157 
   4158 regReadIntegerParameter(pAdapter, &STRFmCoexMDividerFrefSet1,
   4159                         FM_COEX_M_DIVIDER_FREF_SET1_DEF, FM_COEX_M_DIVIDER_FREF_SET1_MIN, FM_COEX_M_DIVIDER_FREF_SET1_MAX,
   4160                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet1),
   4161                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet1));
   4162 
   4163 regReadIntegerParameter(pAdapter, &STRFmCoexMDividerFrefSet2,
   4164                         FM_COEX_M_DIVIDER_FREF_SET2_DEF, FM_COEX_M_DIVIDER_FREF_SET2_MIN, FM_COEX_M_DIVIDER_FREF_SET2_MAX,
   4165                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet2),
   4166                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet2));
   4167 
   4168 regReadIntegerParameter(pAdapter, &STRFmCoexPllStabilizationTime,
   4169                         FM_COEX_PLL_STABILIZATION_TIME_DEF, FM_COEX_PLL_STABILIZATION_TIME_MIN, FM_COEX_PLL_STABILIZATION_TIME_MAX,
   4170                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uCoexPllStabilizationTime),
   4171                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uCoexPllStabilizationTime));
   4172 
   4173 regReadIntegerParameter(pAdapter, &STRFmCoexLdoStabilizationTime,
   4174                         FM_COEX_LDO_STABILIZATION_TIME_DEF, FM_COEX_LDO_STABILIZATION_TIME_MIN, FM_COEX_LDO_STABILIZATION_TIME_MAX,
   4175                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uLdoStabilizationTime),
   4176                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uLdoStabilizationTime));
   4177 
   4178 regReadIntegerParameter(pAdapter, &STRFmCoexDisturbedBandMargin,
   4179                         FM_COEX_DISTURBED_BAND_MARGIN_DEF, FM_COEX_DISTURBED_BAND_MARGIN_MIN, FM_COEX_DISTURBED_BAND_MARGIN_MAX,
   4180                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uFmDisturbedBandMargin),
   4181                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uFmDisturbedBandMargin));
   4182 
   4183 regReadIntegerParameter(pAdapter, &STRFmCoexSwallowClkDif,
   4184                         FM_COEX_SWALLOW_CLK_DIF_DEF, FM_COEX_SWALLOW_CLK_DIF_MIN, FM_COEX_SWALLOW_CLK_DIF_MAX,
   4185                         sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uSwallowClkDif),
   4186                         (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uSwallowClkDif));
   4187 
   4188 
   4189 /*----------------------------------------------*/
   4190 /* 			Rate Management parameters	        */
   4191 /*----------------------------------------------*/
   4192 
   4193 regReadIntegerParameter(pAdapter, &STRRateMngRateRetryScore,
   4194                         RATE_MNG_RATE_RETRY_SCORE_DEF, RATE_MNG_RATE_RETRY_SCORE_MIN, RATE_MNG_RATE_RETRY_SCORE_MAX,
   4195                         sizeof (p->twdInitParams.tRateMngParams.RateRetryScore),
   4196                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateRetryScore));
   4197 
   4198 regReadIntegerParameter(pAdapter, &STRRateMngPerAdd,
   4199                         RATE_MNG_PER_ADD_DEF, RATE_MNG_PER_ADD_MIN, RATE_MNG_PER_ADD_MAX,
   4200                         sizeof (p->twdInitParams.tRateMngParams.PerAdd),
   4201                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAdd));
   4202 
   4203 regReadIntegerParameter(pAdapter, &STRRateMngPerTh1,
   4204                         RATE_MNG_PER_TH1_DEF, RATE_MNG_PER_TH1_MIN, RATE_MNG_PER_TH1_MAX,
   4205                         sizeof (p->twdInitParams.tRateMngParams.PerTh1),
   4206                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerTh1));
   4207 
   4208 regReadIntegerParameter(pAdapter, &STRRateMngPerTh2,
   4209                         RATE_MNG_PER_TH2_DEF, RATE_MNG_PER_TH2_MIN, RATE_MNG_PER_TH2_MAX,
   4210                         sizeof (p->twdInitParams.tRateMngParams.PerTh2),
   4211                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerTh2));
   4212 
   4213 regReadIntegerParameter(pAdapter, &STRRateMngInverseCuriosityFactor,
   4214                         RATE_MNG_INVERSE_CURISITY_FACTOR_DEF, RATE_MNG_INVERSE_CURISITY_FACTOR_MIN, RATE_MNG_INVERSE_CURISITY_FACTOR_MAX,
   4215                         sizeof (p->twdInitParams.tRateMngParams.InverseCuriosityFactor),
   4216                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.InverseCuriosityFactor));
   4217 
   4218 regReadIntegerParameter(pAdapter, &STRRateMngTxFailLowTh,
   4219                         RATE_MNG_TX_FAIL_LOW_TH_DEF, RATE_MNG_TX_FAIL_LOW_TH_MIN, RATE_MNG_TX_FAIL_LOW_TH_MAX,
   4220                         sizeof (p->twdInitParams.tRateMngParams.TxFailLowTh),
   4221                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.TxFailLowTh));
   4222 
   4223 regReadIntegerParameter(pAdapter, &STRRateMngTxFailHighTh,
   4224                         RATE_MNG_TX_FAIL_HIGH_TH_DEF, RATE_MNG_TX_FAIL_HIGH_TH_MIN, RATE_MNG_TX_FAIL_HIGH_TH_MAX,
   4225                         sizeof (p->twdInitParams.tRateMngParams.TxFailHighTh),
   4226                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.TxFailHighTh));
   4227 
   4228 regReadIntegerParameter(pAdapter, &STRRateMngPerAlphaShift,
   4229                         RATE_MNG_PER_ALPHA_SHIFT_DEF, RATE_MNG_PER_ALPHA_SHIFT_MIN, RATE_MNG_PER_ALPHA_SHIFT_MAX,
   4230                         sizeof (p->twdInitParams.tRateMngParams.PerAlphaShift),
   4231                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAlphaShift));
   4232 
   4233 regReadIntegerParameter(pAdapter, &STRRateMngPerAddShift,
   4234                         RATE_MNG_PER_ADD_SHIFT_DEF, RATE_MNG_PER_ADD_SHIFT_MIM, RATE_MNG_PER_ADD_SHIFT_MAX,
   4235                         sizeof (p->twdInitParams.tRateMngParams.PerAddShift),
   4236                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAddShift));
   4237 
   4238 
   4239 regReadIntegerParameter(pAdapter, &STRRateMngPerBeta1Shift,
   4240                         RATE_MNG_PER_BETA1_SHIFT_DEF, RATE_MNG_PER_BETA1_SHIFT_MIN, RATE_MNG_PER_BETA1_SHIFT_MAX,
   4241                         sizeof (p->twdInitParams.tRateMngParams.PerBeta1Shift),
   4242                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta1Shift));
   4243 
   4244 regReadIntegerParameter(pAdapter, &STRRateMngPerBeta2Shift,
   4245                         RATE_MNG_PER_BETA2_SHIFT_DEF, RATE_MNG_PER_BETA2_SHIFT_MIN, RATE_MNG_PER_BETA2_SHIFT_MAX,
   4246                         sizeof (p->twdInitParams.tRateMngParams.PerBeta2Shift),
   4247                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta2Shift));
   4248 
   4249 regReadIntegerParameter(pAdapter, &STRRateMngPerBeta2Shift,
   4250                         RATE_MNG_PER_BETA2_SHIFT_DEF, RATE_MNG_PER_BETA2_SHIFT_MIN, RATE_MNG_PER_BETA2_SHIFT_MAX,
   4251                         sizeof (p->twdInitParams.tRateMngParams.PerBeta2Shift),
   4252                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta2Shift));
   4253 
   4254 regReadIntegerParameter(pAdapter, &STRRateMngMaxPer,
   4255                         RATE_MNG_MAX_PER_DEF, RATE_MNG_MAX_PER_MIN, RATE_MNG_MAX_PER_MAX,
   4256                         sizeof (p->twdInitParams.tRateMngParams.MaxPer),
   4257                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.MaxPer));
   4258 
   4259 
   4260 regReadIntegerParameter(pAdapter, &STRRateMngRateCheckUp,
   4261                         RATE_MNG_RATE_CHECK_UP_DEF, RATE_MNG_RATE_CHECK_UP_MIN, RATE_MNG_RATE_CHECK_UP_MAX,
   4262                         sizeof (p->twdInitParams.tRateMngParams.RateCheckUp),
   4263                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateCheckUp));
   4264 
   4265 regReadIntegerParameter(pAdapter, &STRRateMngRateCheckDown,
   4266                         RATE_MNG_RATE_CHECK_DOWN_DEF, RATE_MNG_RATE_CHECK_DOWN_MIN, RATE_MNG_RATE_CHECK_DOWN_MAX,
   4267                         sizeof (p->twdInitParams.tRateMngParams.RateCheckDown),
   4268                         (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateCheckDown));
   4269 
   4270 regReadIntegerTable (pAdapter, &STRRateMngRateRetryPolicy, RATE_MNG_RATE_RETRY_POLICY_DEF_TABLE,
   4271                            RATE_MNG_MAX_STR_LEN, (TI_UINT8*)&uTempRatePolicyList[0], NULL,
   4272                           (TI_UINT32*)&uTempRatePolicyCnt, sizeof (TI_UINT8),TI_FALSE);
   4273 
   4274 /* sanity check */
   4275     if (uTempRatePolicyCnt > RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN)
   4276     {
   4277         uTempRatePolicyCnt = RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN;
   4278     }
   4279 
   4280     for (uIndex = 0; uIndex < RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN; uIndex++)
   4281     {
   4282         p->twdInitParams.tRateMngParams.RateRetryPolicy[uIndex] = uTempRatePolicyList[uIndex];
   4283     }
   4284 
   4285 #ifdef _WINDOWS
   4286     /* set etherMaxPayloadSize parameter for MTU size setting */
   4287    pAdapter->etherMaxPayloadSize = ETHER_MAX_PAYLOAD_SIZE;
   4288 
   4289 #endif /* _WINDOWS */
   4290 
   4291 }
   4292 
   4293 
   4294 /*-----------------------------------------------------------------------------
   4295 
   4296 Routine Name:
   4297 
   4298     regReadIntegerParameter
   4299 
   4300 Routine Description:
   4301 
   4302 
   4303 Arguments:
   4304 
   4305 
   4306 Return Value:
   4307 
   4308     None
   4309 
   4310 -----------------------------------------------------------------------------*/
   4311 static void regReadIntegerParameter (
   4312                  TWlanDrvIfObjPtr       pAdapter,
   4313                  PNDIS_STRING           pParameterName,
   4314                  TI_UINT32                  defaultValue,
   4315                  TI_UINT32                  minValue,
   4316                  TI_UINT32                  maxValue,
   4317                  TI_UINT8                  parameterSize,
   4318                  TI_UINT8*                 pParameter
   4319                  )
   4320 {
   4321     PNDIS_CONFIGURATION_PARAMETER   RetValue;
   4322     NDIS_STATUS                     Status;
   4323     TI_UINT32                           value;
   4324 
   4325     NdisReadConfiguration(&Status, &RetValue,
   4326                           pAdapter->ConfigHandle, pParameterName,
   4327                           NdisParameterInteger);
   4328 
   4329     if(Status != NDIS_STATUS_SUCCESS) {
   4330 
   4331         NdisReadConfiguration(&Status, &RetValue,
   4332               pAdapter->ConfigHandle, pParameterName,
   4333               NdisParameterString
   4334               );
   4335 
   4336         if(Status == NDIS_STATUS_SUCCESS) {
   4337             assignRegValue(&value, RetValue);
   4338             RetValue->ParameterData.IntegerData = value;
   4339 
   4340         }
   4341 
   4342     }
   4343 
   4344     if (Status != NDIS_STATUS_SUCCESS ||
   4345         RetValue->ParameterData.IntegerData < minValue ||
   4346         RetValue->ParameterData.IntegerData > maxValue)
   4347     {
   4348         PRINTF(DBG_REGISTRY,( "NdisReadConfiguration fail\n"));
   4349         value = defaultValue;
   4350 
   4351     } else
   4352     {
   4353         value = RetValue->ParameterData.IntegerData;
   4354     }
   4355 
   4356     switch (parameterSize)
   4357     {
   4358     case 1:
   4359         *((TI_UINT8*) pParameter) = (TI_UINT8) value;
   4360         break;
   4361 
   4362     case 2:
   4363         *((PUSHORT) pParameter) = (USHORT) value;
   4364         break;
   4365 
   4366     case 4:
   4367         *((TI_UINT32*) pParameter) = (TI_UINT32) value;
   4368         break;
   4369 
   4370     default:
   4371         PRINT(DBG_REGISTRY_ERROR, "TIWL: Illegal Registry parameter size\n");
   4372         break;
   4373 
   4374     }
   4375 
   4376 }
   4377 
   4378 /*-----------------------------------------------------------------------------
   4379 
   4380 Routine Name:
   4381 
   4382     regReadIntegerParameterHex
   4383 
   4384 Routine Description:
   4385 
   4386 
   4387 Arguments:
   4388 
   4389 
   4390 Return Value:
   4391 
   4392     None
   4393 
   4394 -----------------------------------------------------------------------------*/
   4395 static void regReadIntegerParameterHex (
   4396                  TWlanDrvIfObjPtr       pAdapter,
   4397                  PNDIS_STRING           pParameterName,
   4398                  TI_UINT32              defaultValue,
   4399                  TI_UINT32              minValue,
   4400                  TI_UINT32              maxValue,
   4401                  TI_UINT8               defaultSize,
   4402                  TI_UINT8 *             pParameter)
   4403 {
   4404     TI_UINT32   parameterSize = 0;
   4405     TI_UINT32   value;
   4406     TI_BOOL     paramFound;
   4407 
   4408     regReadStringParameter (pAdapter,
   4409                             pParameterName,
   4410                             "x",
   4411                             sizeof("x"),
   4412                             pParameter,
   4413                             &parameterSize);
   4414 
   4415     /* Note: the "x" is used as a dummy string to detect if the requested key
   4416              wasn't found (in that case the x is returned as sefault) */
   4417     paramFound = os_memoryCompare(pAdapter, pParameter, "x", sizeof("x")) != 0;
   4418 
   4419     if (paramFound)
   4420     {
   4421         value = tiwlnstrtoi_hex ((TI_UINT8 *)pParameter, parameterSize);
   4422 
   4423         if (value < minValue || value > maxValue)
   4424         {
   4425             value = defaultValue;
   4426         }
   4427     }
   4428     else
   4429     {
   4430         value = defaultValue;
   4431     }
   4432 
   4433     switch (defaultSize)
   4434     {
   4435     case 1:
   4436         *((TI_UINT8*) pParameter) = (TI_UINT8) value;
   4437         break;
   4438 
   4439     case 2:
   4440         *((PUSHORT) pParameter) = (USHORT) value;
   4441         break;
   4442 
   4443     case 4:
   4444         *((TI_UINT32*) pParameter) = (TI_UINT32) value;
   4445         break;
   4446 
   4447     default:
   4448         PRINT(DBG_REGISTRY_ERROR, "TIWL: Illegal Registry parameter size\n");
   4449         break;
   4450     }
   4451 }
   4452 
   4453 /*-----------------------------------------------------------------------------
   4454 
   4455 Routine Name:
   4456 
   4457     regReadParameters
   4458 
   4459 Routine Description:
   4460 
   4461 
   4462 Arguments:
   4463 
   4464 
   4465 Return Value:
   4466 
   4467     None
   4468 
   4469 -----------------------------------------------------------------------------*/
   4470 static void regReadStringParameter (
   4471                  TWlanDrvIfObjPtr       pAdapter,
   4472                  PNDIS_STRING           pParameterName,
   4473                  TI_INT8*                  pDefaultValue,
   4474                  USHORT                 defaultLen,
   4475                  TI_UINT8*                 pParameter,
   4476                  void*                  pParameterSize
   4477                  )
   4478 {
   4479     PNDIS_CONFIGURATION_PARAMETER   RetValue;
   4480     NDIS_STATUS                     Status;
   4481     ANSI_STRING                     ansiString;
   4482     TI_UINT8*                          pSizeChar = 0;
   4483     PUSHORT                         pSizeShort = 0;
   4484 
   4485     if(defaultLen <= 256)
   4486     {
   4487         pSizeChar = (TI_UINT8*)pParameterSize;
   4488         ansiString.MaximumLength = 256;
   4489     }
   4490     else
   4491     {
   4492         pSizeShort = (PUSHORT)pParameterSize;
   4493         ansiString.MaximumLength = 32576;
   4494     }
   4495 
   4496     NdisReadConfiguration(&Status, &RetValue,
   4497                           pAdapter->ConfigHandle, pParameterName,
   4498                           NdisParameterString);
   4499 
   4500     if (Status == NDIS_STATUS_SUCCESS)
   4501     {
   4502         ansiString.Buffer = (TI_INT8*)pParameter;
   4503 
   4504         NdisUnicodeStringToAnsiString(&ansiString, &RetValue->ParameterData.StringData);
   4505         if(defaultLen <= 256)
   4506             *pSizeChar = (TI_UINT8)ansiString.Length;
   4507         else
   4508             *pSizeShort = (USHORT)ansiString.Length;
   4509     } else
   4510     {
   4511         if(defaultLen <= 256)
   4512             *pSizeChar = (TI_UINT8)defaultLen;
   4513         else
   4514             *pSizeShort = (USHORT)defaultLen;
   4515 
   4516         memcpy(pParameter, pDefaultValue, defaultLen);
   4517     }
   4518 
   4519     PRINTF(DBG_REGISTRY_LOUD, ("Read String Registry:  %c%c%c%c%c%c%c%c%c%c%c%c = %s\n",
   4520                           pParameterName->Buffer[0],
   4521                           pParameterName->Buffer[1],
   4522                           pParameterName->Buffer[2],
   4523                           pParameterName->Buffer[3],
   4524                           pParameterName->Buffer[4],
   4525                           pParameterName->Buffer[5],
   4526                           pParameterName->Buffer[6],
   4527                           pParameterName->Buffer[7],
   4528                           pParameterName->Buffer[8],
   4529                           pParameterName->Buffer[9],
   4530                           pParameterName->Buffer[10],
   4531                           pParameterName->Buffer[11],
   4532                           pParameter));
   4533 
   4534 }
   4535 
   4536 
   4537 
   4538 /*-----------------------------------------------------------------------------
   4539 
   4540 Routine Name:
   4541 
   4542     regReadParameters
   4543 
   4544 Routine Description:
   4545 
   4546 
   4547 Arguments:
   4548 
   4549 
   4550 Return Value:
   4551 
   4552     None
   4553 
   4554 -----------------------------------------------------------------------------*/
   4555 static void regReadWepKeyParameter (TWlanDrvIfObjPtr pAdapter, TI_UINT8 *pKeysStructure, TI_UINT8 defaultKeyId)
   4556 {
   4557     NDIS_STATUS                         status;
   4558     TSecurityKeys                      *pSecKeys;
   4559     int i;
   4560     int len;
   4561     TI_UINT8                               Buf[MAX_KEY_BUFFER_LEN];
   4562     PNDIS_CONFIGURATION_PARAMETER       RetValue;
   4563     ANSI_STRING                         ansiString;
   4564     NDIS_STRING                         STRdot11DefaultWEPKey[4] =
   4565                                                 {   NDIS_STRING_CONST( "dot11WEPDefaultKey1" ),
   4566                                                     NDIS_STRING_CONST( "dot11WEPDefaultKey2" ),
   4567                                                     NDIS_STRING_CONST( "dot11WEPDefaultKey3" ),
   4568                                                     NDIS_STRING_CONST( "dot11WEPDefaultKey4" )
   4569                                                 };
   4570 
   4571 
   4572 
   4573     PRINTF(DBG_REGISTRY_LOUD, ("Reading WEP keys\n"));
   4574 
   4575     pSecKeys = (TSecurityKeys*)pKeysStructure;
   4576 
   4577     /**/
   4578     /* Read WEP from registry*/
   4579     /**/
   4580     for ( i = 0; i < DOT11_MAX_DEFAULT_WEP_KEYS; i++ )
   4581     {
   4582         NdisReadConfiguration(&status, &RetValue,
   4583                               pAdapter->ConfigHandle, &STRdot11DefaultWEPKey[i],
   4584                               NdisParameterString);
   4585 
   4586         if(status == NDIS_STATUS_SUCCESS)
   4587         {
   4588             ansiString.Buffer = (TI_INT8*)Buf;
   4589             ansiString.MaximumLength = MAX_KEY_BUFFER_LEN;
   4590 
   4591             pSecKeys->keyIndex = i;
   4592             pSecKeys->keyType = KEY_WEP;
   4593             NdisZeroMemory((void *)pSecKeys->macAddress, 6);
   4594 
   4595             if(((char *)(RetValue->ParameterData.StringData.Buffer))[1] == 0)
   4596             {
   4597                 NdisUnicodeStringToAnsiString(&ansiString, &RetValue->ParameterData.StringData);
   4598 
   4599                 len = decryptWEP((TI_INT8*)Buf, (TI_INT8*)pSecKeys->encKey, ansiString.Length);
   4600             } else {
   4601                 len = decryptWEP((TI_INT8*)RetValue->ParameterData.StringData.Buffer,
   4602                                  (TI_INT8*)pSecKeys->encKey,
   4603                                  RetValue->ParameterData.StringData.Length);
   4604             }
   4605 
   4606             if(len < ACX_64BITS_WEP_KEY_LENGTH_BYTES)
   4607             {
   4608                 PRINTF(DBG_REGISTRY_ERROR, ("Error: minimum WEP key size is 5 bytes(%d)\n", len));
   4609                 pSecKeys->keyType = KEY_NULL;
   4610                 len = 0;
   4611             }
   4612             else if(len < ACX_128BITS_WEP_KEY_LENGTH_BYTES)
   4613             {
   4614                 len = ACX_64BITS_WEP_KEY_LENGTH_BYTES;
   4615             }
   4616             else if(len < ACX_256BITS_WEP_KEY_LENGTH_BYTES)
   4617             {
   4618                 len = ACX_128BITS_WEP_KEY_LENGTH_BYTES;
   4619             }
   4620             else
   4621                 len = ACX_256BITS_WEP_KEY_LENGTH_BYTES;
   4622 
   4623             pSecKeys->encLen = (TI_UINT8)len;
   4624 
   4625         }
   4626         else
   4627         {
   4628             pSecKeys->keyType = KEY_NULL;
   4629             pSecKeys->encLen = 0;
   4630         }
   4631 
   4632 #ifdef _WINDOWS
   4633         /*create local keys cache*/
   4634         pAdapter->DefaultWepKeys[i].KeyIndex = i;
   4635         if(i==defaultKeyId)
   4636             pAdapter->DefaultWepKeys[i].KeyIndex |= 0x80000000;
   4637         pAdapter->DefaultWepKeys[i].KeyLength = pSecKeys->encLen;
   4638         NdisMoveMemory((void *)pAdapter->DefaultWepKeys[i].KeyMaterial,
   4639             (void *)pSecKeys->encKey, pSecKeys->encLen);
   4640         pAdapter->DefaultWepKeys[i].Length = sizeof(OS_802_11_WEP);
   4641 #endif /* _WINDOWS */
   4642 
   4643         pSecKeys++;
   4644     }
   4645 }
   4646 
   4647 #define iswhite(c) ( (c==' ') || (c=='\t') || (c=='\n') )
   4648 
   4649 /*
   4650  *
   4651  *       Fun:   isnumber
   4652  *
   4653  *       Desc:  check if the ascii character is a number in the given base
   4654  *
   4655  *       Ret:   1 if number is a digit, 0 if not.
   4656  *
   4657  *       Notes: none
   4658  *
   4659  *       File:  btoi.c
   4660  *
   4661  */
   4662 
   4663 static TI_BOOL isnumber ( short *pi, char c, short base )
   4664 {
   4665 
   4666     /* return 1 if c is a digit in the give base, else return 0 */
   4667     /* place value of digit at pi */
   4668     if ( base == 16 )
   4669     {
   4670         if ( '0' <= c && c <= '9' )
   4671         {
   4672             *pi =  c - '0';
   4673             return (1);
   4674         }
   4675         else if ( 'a' <= c && c <= 'f' )
   4676         {
   4677             *pi =  c - 'a' + 10 ;
   4678             return (1);
   4679         }
   4680         else if ( 'A' <= c && c <= 'F' )
   4681         {
   4682             *pi =  c - 'A' + 10 ;
   4683             return (1);
   4684         }
   4685         else
   4686         {
   4687             return (0);
   4688         }
   4689     }
   4690     c -= '0';
   4691     if ( 0 <= (signed char)c && c < base )
   4692     {
   4693         *pi =  c ;
   4694         return (1);
   4695     }
   4696     else
   4697     {
   4698         return (0);
   4699     }
   4700 } /* end of isnumber */
   4701 
   4702 
   4703 static short _btoi (char *sptr, short slen, int *pi, short base)
   4704 {
   4705     char    *s, c ;
   4706     short   d, sign ;
   4707     int     result ;
   4708     char    saved ;
   4709 
   4710     s           =  sptr ;
   4711     result      =  0 ;
   4712     saved       =  sptr [slen];
   4713     sptr [slen] =  '\0';
   4714 
   4715     /* skip initial white space */
   4716 /*    while ( (c = *s++) && iswhite(c) ); */
   4717     do
   4718     {
   4719        c = *s++;
   4720        if (!(c  && iswhite(c)))
   4721          break;
   4722     }while(1);
   4723 
   4724     --s ;
   4725 
   4726     /* recognize optional sign */
   4727     if ( *s == '-' )
   4728     {
   4729         sign =  - 1 ;
   4730         s++ ;
   4731     }
   4732     else if ( *s == '+' )
   4733     {
   4734         sign =  1 ;
   4735         s++ ;
   4736     }
   4737     else
   4738     {
   4739         sign =  1 ;
   4740     }
   4741 
   4742     /* recognize optional hex# prefix */
   4743     if ((base == 16) && ((*s == '0') && ((*(s + 1) == 'x') || (*(s + 1) == 'X'))
   4744        ))
   4745         s += 2 ;
   4746 
   4747     /* recognize digits */
   4748 
   4749 /*    for (; (c = *s++) && isnumber(&d, c, base) ; )
   4750     {
   4751         result =  base * result + d ;
   4752     }
   4753 */
   4754     while(1)
   4755     {
   4756       c = *s++;
   4757       if (!(c && isnumber(&d, c, base)))
   4758         break;
   4759       result =  base * result + d ;
   4760     };
   4761 
   4762     *pi         =  sign * result ;
   4763     sptr [slen] =  saved ; /* restore character which we changed to null */
   4764     return (s - sptr - 1);
   4765 } /* end of _btoi */
   4766 
   4767 static int decryptWEP
   4768 (
   4769   TI_INT8* pSrc,
   4770   TI_INT8* pDst,
   4771   TI_UINT32 len
   4772 )
   4773 {
   4774   /**/
   4775   /* key to use for encryption*/
   4776   /**/
   4777   static LPCSTR lpEncryptKey = "jkljz98c&2>a+t)cl5[d=n3;\"f_um6\\d~v%$HO1";
   4778   int cnEncryptLen = strlen(lpEncryptKey);
   4779 
   4780   char cIn, cCrypt, cHex[3];
   4781   int i, j, nLen;
   4782   int nPos;
   4783 
   4784   nLen = len / 2;
   4785   nPos = len;
   4786 
   4787   /* start reading from end*/
   4788   nPos = len - 2;
   4789 
   4790   for(i = 0; (i < nLen) && (nPos >= 0); i++, nPos -= 2)
   4791   {
   4792     /* get hex character*/
   4793     cHex[0] = pSrc[nPos];
   4794     cHex[1] = pSrc[nPos + 1];
   4795     cHex[2] = 0;
   4796 
   4797     _btoi ( cHex, 2, &j, 16);
   4798     cIn = (char) j;
   4799 
   4800     cCrypt = lpEncryptKey[i % cnEncryptLen];
   4801     cIn = cIn ^ cCrypt;
   4802 
   4803     pDst[i] = cIn;
   4804   }
   4805 
   4806   PRINTF(DBG_REGISTRY_LOUD, ("First 5 bytes of WEP: %x-%x-%x-%x-%x\n",
   4807     pDst[0],
   4808     pDst[1],
   4809     pDst[2],
   4810     pDst[3],
   4811     pDst[4]));
   4812 
   4813   return nLen;
   4814 }
   4815 
   4816 static void initValusFromRgstryString
   4817 (
   4818   TI_INT8* pSrc,
   4819   TI_INT8* pDst,
   4820   TI_UINT32 len
   4821 )
   4822 {
   4823     int j;
   4824     TI_UINT32 count;
   4825     for (count = 0 ; count < len ; count++)
   4826     {
   4827         _btoi((char *) (pSrc+(count*3)),  2, &j, 16 );
   4828 
   4829         pDst[count] = (TI_UINT8) j;
   4830     }
   4831 }
   4832 
   4833 #ifdef TI_DBG
   4834 
   4835 void regReadLastDbgState (TWlanDrvIfObjPtr pAdapter)
   4836 {
   4837     NDIS_STRING OsDbgStr = NDIS_STRING_CONST("OsDbgState");
   4838     PNDIS_CONFIGURATION_PARAMETER Value;
   4839     NDIS_STATUS Status;
   4840 
   4841     NdisReadConfiguration(&Status, &Value,
   4842                           pAdapter->ConfigHandle, &OsDbgStr,
   4843                           NdisParameterInteger
   4844                          );
   4845 
   4846     if (Status != NDIS_STATUS_SUCCESS)
   4847     {
   4848 
   4849         TiDebugFlag = ((DBG_NDIS_OIDS | DBG_INIT | DBG_RECV | DBG_SEND | DBG_IOCTL | DBG_INTERRUPT) << 16) |
   4850                 DBG_SEV_VERY_LOUD | DBG_SEV_INFO | DBG_SEV_LOUD | DBG_SEV_ERROR | DBG_SEV_FATAL_ERROR;
   4851 
   4852     } else
   4853     {
   4854 
   4855         PRINTF(DBG_REGISTRY_VERY_LOUD, ("TIWL: New Flag - 0x%X\n", Value->ParameterData.IntegerData));
   4856 
   4857         TiDebugFlag = Value->ParameterData.IntegerData;
   4858 
   4859     }
   4860 }
   4861 
   4862 #endif  /* TI_DBG */
   4863 
   4864 
   4865 
   4866 static void readRates(TWlanDrvIfObjPtr pAdapter, TInitTable *pInitTable)
   4867 {
   4868     /*
   4869     ** B band
   4870     */
   4871     regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_B,
   4872                             BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11,
   4873                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_B_MODE],
   4874                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_B_MODE]);
   4875 
   4876     regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_B,
   4877                           SUPPORTED_RATE_SET_1_2_5_5_11_22, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_1_2_5_5_11_22,
   4878                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_B_MODE],
   4879                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_B_MODE]);
   4880     /*
   4881     ** G band (B&G rates)
   4882     */
   4883     regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_G,
   4884                             BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11,
   4885                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_G_MODE],
   4886                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_G_MODE]);
   4887 
   4888     regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_G,
   4889                             SUPPORTED_RATE_SET_ALL, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_ALL,
   4890                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_G_MODE],
   4891                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_G_MODE]);
   4892 
   4893     /*
   4894     ** A band
   4895     */
   4896     regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_A,
   4897                             BASIC_RATE_SET_6_12_24, BASIC_RATE_SET_6_12_24, BASIC_RATE_SET_6_12_24,
   4898                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_A_MODE],
   4899                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_A_MODE]);
   4900 
   4901     regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_A,
   4902                             SUPPORTED_RATE_SET_UP_TO_54, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_UP_TO_54,
   4903                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_A_MODE],
   4904                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_A_MODE]);
   4905 
   4906     /*
   4907     ** Dual band (A&G)
   4908     */
   4909     regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_AG,
   4910                             BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2,
   4911                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_DUAL_MODE],
   4912                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_DUAL_MODE]);
   4913 
   4914     regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_AG,
   4915                             SUPPORTED_RATE_SET_ALL_OFDM, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_ALL_OFDM,
   4916                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_DUAL_MODE],
   4917                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_DUAL_MODE]);
   4918 
   4919     /*
   4920     ** N supported
   4921     */
   4922     regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_N,
   4923                             BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11,
   4924                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_N_MODE],
   4925                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_N_MODE]);
   4926 
   4927     regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_N,
   4928                             SUPPORTED_RATE_SET_ALL_MCS_RATES, SUPPORTED_RATE_SET_ALL_MCS_RATES, SUPPORTED_RATE_SET_ALL_MCS_RATES,
   4929                             sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_N_MODE],
   4930                             (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_N_MODE]);
   4931 }
   4932 
   4933 
   4934 static void decryptScanControlTable(TI_UINT8* src, TI_UINT8* dst, USHORT len)
   4935 {
   4936 
   4937     USHORT i;
   4938     int parityFlag = 0;
   4939     char tmp = 0;
   4940     char finalChar = 0;
   4941 
   4942     for(i=0; i < len; i++)
   4943     {
   4944         switch(src[i])
   4945         {
   4946         case 'A':
   4947         case 'a':
   4948             tmp = 10;
   4949             break;
   4950         case 'B':
   4951         case 'b':
   4952             tmp = 11;
   4953             break;
   4954         case 'C':
   4955         case 'c':
   4956             tmp = 12;
   4957             break;
   4958         case 'D':
   4959         case 'd':
   4960             tmp = 13;
   4961             break;
   4962         case 'E':
   4963         case 'e':
   4964             tmp = 14;
   4965             break;
   4966         case 'F':
   4967         case 'f':
   4968             tmp = 15;
   4969             break;
   4970         default:
   4971             if( (src[i] >='0') && (src[i] <= '9') )
   4972                 tmp = (src[i] - '0');
   4973             else
   4974                 return; /* ERROR input char */
   4975         }
   4976         if(parityFlag == 0)
   4977             finalChar =  tmp << 4;
   4978         else
   4979         {
   4980             finalChar |= (tmp & 0x0f);
   4981             dst[i/2] = finalChar;
   4982         }
   4983         parityFlag = 1-parityFlag;
   4984     }
   4985 }
   4986 
   4987 
   4988 /*-----------------------------------------------------------------------------
   4989 
   4990 Routine Name:
   4991 
   4992     regReadIntegerTable
   4993 
   4994 Routine Description:
   4995     reads any table format and insert it to another string.
   4996     the delimiters of the tables can be:
   4997      - space (" ")
   4998      - comma (",")
   4999     the table reads only integers thus its reads the following chars:
   5000      - "0" till "9"
   5001      - minus sign ("-")
   5002 
   5003 Arguments:
   5004 
   5005 
   5006 Return Value:
   5007 
   5008     zero on success else - error number.
   5009 
   5010 -----------------------------------------------------------------------------*/
   5011 TI_UINT32
   5012 regReadIntegerTable(
   5013                      TWlanDrvIfObjPtr       pAdapter,
   5014                      PNDIS_STRING           pParameterName,
   5015                      TI_INT8*                  pDefaultValue,
   5016                      USHORT                 defaultLen,
   5017                      TI_UINT8*              pUnsignedParameter,
   5018                      TI_INT8*               pSignedParameter,
   5019                      TI_UINT32*             pEntriesNumber, /* returns the number of read entries */
   5020                      TI_UINT8               uParameterSize,
   5021                      TI_BOOL                bHex)
   5022 {
   5023     static CHAR Buffer[MAX_KEY_BUFFER_LEN];
   5024     TI_UINT32 parameterIndex = 0;
   5025     int myNumber;
   5026 
   5027     TI_UINT32 index;
   5028     TI_UINT32 bufferSize = 0;
   5029 
   5030     char tempBuffer[16];
   5031     char *pTempBuffer = tempBuffer;
   5032     TI_UINT32 tempBufferIndex = 0;
   5033 
   5034     TI_BOOL isDigit;
   5035     TI_BOOL numberReady;
   5036     TI_BOOL isSign;
   5037     TI_BOOL endOfLine;
   5038 
   5039     TI_UINT32 debugInfo = 0;
   5040     TI_INT8* pBuffer = (TI_INT8*)&Buffer;
   5041 
   5042     regReadStringParameter(pAdapter,
   5043                            pParameterName,
   5044                            pDefaultValue,
   5045                            defaultLen,
   5046                            (TI_UINT8*)pBuffer,
   5047                            &bufferSize);
   5048 
   5049     index = 0;
   5050     do { /* Parsing one line */
   5051 
   5052         isSign = TI_FALSE;
   5053         isDigit = TI_FALSE;
   5054         numberReady = TI_FALSE;
   5055         tempBufferIndex = 0;
   5056         endOfLine = TI_FALSE;
   5057 
   5058         while ((numberReady==TI_FALSE) && (index<bufferSize))
   5059         {
   5060             /* Parsing one number */
   5061             switch (pBuffer[index])
   5062             {
   5063                 case '0':
   5064                 case '1':
   5065                 case '2':
   5066                 case '3':
   5067                 case '4':
   5068                 case '5':
   5069                 case '6':
   5070                 case '7':
   5071                 case '8':
   5072                 case '9':
   5073                     pTempBuffer[tempBufferIndex] = pBuffer[index];
   5074                     ++tempBufferIndex;
   5075                     isDigit = TI_TRUE;
   5076                     break;
   5077                 case 'a':
   5078                 case 'b':
   5079                 case 'c':
   5080                 case 'd':
   5081                 case 'e':
   5082                 case 'f':
   5083                 case 'A':
   5084                 case 'B':
   5085                 case 'C':
   5086                 case 'D':
   5087                 case 'E':
   5088                 case 'F':
   5089                     if (bHex)
   5090                     {
   5091                         pTempBuffer[tempBufferIndex] = pBuffer[index];
   5092                         ++tempBufferIndex;
   5093                         isDigit = TI_TRUE;
   5094                     }
   5095                     break;
   5096                 case '-':
   5097                     pTempBuffer[tempBufferIndex] = pBuffer[index];
   5098                     ++tempBufferIndex;
   5099                     if (isDigit==TI_TRUE)
   5100                     {
   5101                         PRINTF(DBG_REGISTRY_INFO, ("Error in read parameter %c in line index %d\n\
   5102                                                The sign '-' isn't in place!\n",pBuffer[index],index));
   5103                         debugInfo = 1;
   5104                     }
   5105                     isSign = TI_TRUE;
   5106                     break;
   5107 
   5108                 case ' ':
   5109                 case '\t': /* tab char */
   5110                     /* for space discard*/
   5111                     if ((isDigit==TI_FALSE) && (isSign==TI_FALSE))
   5112                     {
   5113                         break;
   5114                     }
   5115                     /*
   5116                     else we continue to the code of the case ','
   5117                     */
   5118                 case '\0':
   5119                 case '\n':
   5120                 case '\r':
   5121                     endOfLine = TI_TRUE;
   5122 
   5123                 case ',':
   5124                     /* end of number reading */
   5125                     pTempBuffer[tempBufferIndex] = '\0';
   5126                     if (isDigit == TI_FALSE)
   5127                     {
   5128                         PRINTF(DBG_REGISTRY_INFO, ("Error in end of number delimiter. number isn't ready.\
   5129                             check index %d",index));
   5130                         debugInfo = 2;
   5131                     }
   5132                     numberReady = TI_TRUE;
   5133                     break;
   5134 
   5135                 default:
   5136                     PRINTF(DBG_REGISTRY_INFO, ("%s(%d) Error - unexpected parameter %c.\n",
   5137                         __FILE__,__LINE__,pBuffer[index]));
   5138                     debugInfo = 3;
   5139                     break;
   5140             }/* switch( pBuffer[index] ) */
   5141 
   5142             if (debugInfo != 0)
   5143             {
   5144                 return debugInfo;
   5145             }
   5146             ++index;
   5147 
   5148         }/* while (numberReady==TI_FALSE)*/
   5149 
   5150         if (pTempBuffer[0] == '-')
   5151         {
   5152             ++pTempBuffer;
   5153             if (!bHex)
   5154             {
   5155             myNumber = tiwlnstrtoi(pTempBuffer,tempBufferIndex-1);
   5156             }
   5157             else
   5158             {
   5159                 myNumber = tiwlnstrtoi_hex((TI_UINT8 *)pTempBuffer,tempBufferIndex-1);
   5160             }
   5161             myNumber = -(myNumber);
   5162         }
   5163         else
   5164         {
   5165             if (!bHex)
   5166             {
   5167             myNumber = tiwlnstrtoi(pTempBuffer,tempBufferIndex);
   5168         }
   5169             else
   5170             {
   5171                 myNumber = tiwlnstrtoi_hex((TI_UINT8 *)pTempBuffer,tempBufferIndex);
   5172             }
   5173         }
   5174 
   5175         switch (uParameterSize)
   5176         {
   5177         case 1:
   5178             if (pUnsignedParameter)
   5179             {
   5180                 ((TI_UINT8*) pUnsignedParameter)[parameterIndex] = (TI_UINT8) myNumber;
   5181             }
   5182             else
   5183             {
   5184                 ((TI_INT8*) pSignedParameter)[parameterIndex] = (TI_INT8) myNumber;
   5185             }
   5186             break;
   5187 
   5188         case 2:
   5189             if (pUnsignedParameter)
   5190             {
   5191                 ((PUSHORT) pUnsignedParameter)[parameterIndex]  = (USHORT) myNumber;
   5192             }
   5193             else
   5194             {
   5195                 ((TI_INT16*) pSignedParameter)[parameterIndex]  = (TI_INT16) myNumber;
   5196             }
   5197             break;
   5198 
   5199         case 4:
   5200             if (pUnsignedParameter)
   5201             {
   5202                 ((TI_UINT32*) pUnsignedParameter)[parameterIndex] = (TI_UINT32) myNumber;
   5203             }
   5204             else
   5205             {
   5206                 ((TI_INT32*) pSignedParameter)[parameterIndex] = (TI_INT32) myNumber;
   5207             }
   5208             break;
   5209 
   5210         default:
   5211             PRINTF(DBG_REGISTRY_INFO, ("%s(%d) Error - Illegal Registry parameter size.\n",
   5212                 __FILE__,__LINE__));
   5213             break;
   5214         }
   5215 
   5216         ++parameterIndex;
   5217 
   5218     }while ((index<bufferSize)&&(endOfLine==TI_FALSE));
   5219 
   5220     *pEntriesNumber = parameterIndex; /* return number of entries read */
   5221     return debugInfo;
   5222 }
   5223 
   5224 
   5225 void assignRegValue(TI_UINT32* lValue, PNDIS_CONFIGURATION_PARAMETER ndisParameter)
   5226 {
   5227     char b[8];
   5228     ANSI_STRING a = {0, 0, 0};
   5229 
   5230     a.MaximumLength = sizeof(b);
   5231     a.Buffer=(TI_INT8*)b;
   5232 
   5233     if(ndisParameter->ParameterData.StringData.Length <= sizeof (b) * 2)
   5234     {
   5235       if ( ((char *)(ndisParameter->ParameterData.StringData.Buffer))[1] == 0 )
   5236       {
   5237         NdisUnicodeStringToAnsiString ( &a, &(ndisParameter)->ParameterData.StringData );
   5238         *lValue = tiwlnstrtoi ( (char *)a.Buffer, a.Length );
   5239       } else {
   5240         *lValue = tiwlnstrtoi ( (char *)(ndisParameter->ParameterData.StringData.Buffer), ndisParameter->ParameterData.StringData.Length);
   5241       }
   5242     } else {
   5243       *lValue = 0;
   5244     }
   5245   }
   5246 
   5247 
   5248 /*-----------------------------------------------------------------------------
   5249 Routine Name:   parseTwoDigitsSequenceHex
   5250 
   5251 Routine Description: Parse a sequence of two digit hex numbers from the input string to the output array.
   5252 
   5253 Arguments:  sInString - The input string - a sequence of two digit hex numbers with seperators between them (comma or space)
   5254             uOutArray - The output array containing the translated values (each index contains one two digit value)
   5255             uSize     - The number of two digit items.
   5256 
   5257 Return Value:  None
   5258 -----------------------------------------------------------------------------*/
   5259 static void parseTwoDigitsSequenceHex (TI_UINT8 *sInString, TI_UINT8 *uOutArray, TI_UINT8 uSize)
   5260 {
   5261     int i;
   5262 
   5263     /* Convert the MAC Address string into the MAC Address array */
   5264     for (i = 0; i < uSize; i++)
   5265     {
   5266         /* translate two digit string to value */
   5267         uOutArray[i] = tiwlnstrtoi_hex (sInString, 2);
   5268 
   5269         /* progress to next two digits (plus space) */
   5270         sInString += 3;
   5271     }
   5272 }
   5273 
   5274 
   5275 /*-----------------------------------------------------------------------------
   5276 
   5277 Routine Name:
   5278 
   5279     regConvertStringtoCoexActivityTable
   5280 
   5281 Routine Description: Converts the CoexActivity string into CoexActivity config table
   5282 
   5283 
   5284 Arguments:
   5285 
   5286 
   5287 Return Value:
   5288 
   5289     None
   5290 
   5291 -----------------------------------------------------------------------------*/
   5292 static void regConvertStringtoCoexActivityTable(TI_UINT8 *strCoexActivityTable, TI_UINT32 numOfElements, TCoexActivity *CoexActivityArray, TI_UINT8 size)
   5293 {
   5294     char *ptr;
   5295     TI_UINT16 tmpArray[NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG];
   5296     TI_UINT16 value = 0, value_l, value_h, add_value;
   5297     TI_UINT32 i;
   5298     int entry = 0;
   5299 
   5300     /* Note: Currently it is not in use, but it has potential buffer overrun
   5301              problem if buffer is not ended with blank (Dm) */
   5302 
   5303     /* Take the pointer to the string MAC Address to convert it to the Array MAC Address */
   5304     ptr = (char *)strCoexActivityTable;
   5305 
   5306     for(i=0;(i < numOfElements*NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG);ptr++)
   5307     {
   5308         /* The value can be or "0-9" or from "a-f" */
   5309         value_l = (*ptr - '0');
   5310         value_h = (*ptr - 'a');
   5311 
   5312         /*PRINTF(DBG_REGISTRY,("value_l [%d] value_h [%d] *ptr %c value %d\n",value_l,value_h,*ptr,value));*/
   5313 
   5314         if( (value_l <= 9) || (value_h <= 15 ) )
   5315         {
   5316             /* We are in an expected range */
   5317             /* nCheck if 0-9 */
   5318             if(value_l <= 9 )
   5319             {
   5320                 add_value = value_l;
   5321             }
   5322             /* Check if a-f */
   5323             else
   5324             {
   5325                 /* 'a' is in fact 10 decimal in hexa */
   5326                 add_value = value_h + 10;
   5327             }
   5328             value = value * 16 + add_value;
   5329             /*  PRINTF(DBG_REGISTRY,("value %d add_value %d  \n",value,add_value));*/
   5330         }
   5331         else
   5332         {
   5333             tmpArray[i%NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG] = value;
   5334             value = 0;
   5335             i++;
   5336             if ((i%NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG) == 0)
   5337             {
   5338                 CoexActivityArray[entry].coexIp         = (TI_UINT8)tmpArray[0];
   5339                 CoexActivityArray[entry].activityId     = (TI_UINT8)tmpArray[1];
   5340                 CoexActivityArray[entry].defaultPriority= (TI_UINT8)tmpArray[2];
   5341                 CoexActivityArray[entry].raisedPriority = (TI_UINT8)tmpArray[3];
   5342                 CoexActivityArray[entry].minService     = tmpArray[4];
   5343                 CoexActivityArray[entry].maxService     = tmpArray[5];
   5344                 entry++;
   5345             }
   5346         }
   5347     }
   5348 }
   5349 
   5350 static void parse_hex_string(char * pString, TI_UINT8 StrLength, TI_UINT8 * pBuffer, TI_UINT8 * Length)
   5351 {
   5352     char ch;
   5353     int iter = 0;
   5354 
   5355     while ((iter < StrLength) && (ch = pString[iter]))
   5356     {
   5357         TI_UINT8 val = ((ch >= '0' && ch <= '9') ? (ch - '0') :
   5358                      (ch >= 'A' && ch <= 'F') ? (0xA + ch - 'A') :
   5359                      (ch >= 'a' && ch <= 'f') ? (0xA + ch - 'a') : 0);
   5360 
   5361         /* even indexes go to the lower nibble, odd indexes push them to the */
   5362         /* higher nibble and then go themselves to the lower nibble. */
   5363         if (iter % 2)
   5364             pBuffer[iter / 2] = ((pBuffer[iter / 2] << (BIT_TO_BYTE_FACTOR / 2)) | val);
   5365         else
   5366             pBuffer[iter / 2] = val;
   5367 
   5368         ++iter;
   5369     }
   5370 
   5371     /* iter = 0 len = 0, iter = 1 len = 1, iter = 2 len = 1, and so on... */
   5372     *Length = (iter + 1) / 2;
   5373 }
   5374 
   5375 static void parse_binary_string(char * pString, TI_UINT8 StrLength, TI_UINT8 * pBuffer, TI_UINT8 * Length)
   5376 {
   5377     char ch;
   5378     int iter = 0;
   5379 
   5380     while ((iter < StrLength) && (ch = pString[iter]))
   5381     {
   5382         TI_UINT8 val = (ch == '1' ? 1 : 0);
   5383 
   5384         if (iter % BIT_TO_BYTE_FACTOR)
   5385             pBuffer[iter / BIT_TO_BYTE_FACTOR] |= (val << (iter % BIT_TO_BYTE_FACTOR));
   5386         else
   5387             pBuffer[iter / BIT_TO_BYTE_FACTOR] = val;
   5388 
   5389         ++iter;
   5390     }
   5391 
   5392     /* iter = 0 len = 0, iter = 1 len = 1, iter = 8 len = 1, and so on... */
   5393     *Length = (iter + BIT_TO_BYTE_FACTOR - 1) / BIT_TO_BYTE_FACTOR;
   5394 }
   5395 
   5396 static void parse_filter_request(TRxDataFilterRequest* request, TI_UINT8 offset, char * mask, TI_UINT8 maskLength, char * pattern, TI_UINT8 patternLength)
   5397 {
   5398     request->offset = offset;
   5399     request->maskLength = request->patternLength = 0;
   5400 
   5401     if (maskLength > 0)
   5402     {
   5403         parse_binary_string(mask, maskLength, request->mask, &request->maskLength);
   5404         parse_hex_string(pattern, patternLength, request->pattern, &request->patternLength);
   5405     }
   5406 }
   5407