diff options
Diffstat (limited to 'wilink_6_1/platforms/os/common/src/osRgstry.c')
-rw-r--r-- | wilink_6_1/platforms/os/common/src/osRgstry.c | 5418 |
1 files changed, 5418 insertions, 0 deletions
diff --git a/wilink_6_1/platforms/os/common/src/osRgstry.c b/wilink_6_1/platforms/os/common/src/osRgstry.c new file mode 100644 index 0000000..924b8b3 --- /dev/null +++ b/wilink_6_1/platforms/os/common/src/osRgstry.c @@ -0,0 +1,5418 @@ +/* + * osRgstry.c + * + * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#if defined(_WINDOWS) +#include <ndis.h> +#elif defined( __LINUX__ ) +#include "osRgstry_parser.h" +#elif defined(__ARMCC__) +#include "osRgstry_parser.h" +#include "string.h" +#endif +#include "WlanDrvIf.h" +#include "osRgstry.h" +#include "paramOut.h" +#include "osDot11.h" +#include "osApi.h" +#include "rate.h" +#include "802_11Defs.h" +#include "TWDriver.h" + + +#define MAX_KEY_BUFFER_LEN 256 +#define BIT_TO_BYTE_FACTOR 8 +#define MAX_SR_PARAM_LEN 14 + +#define N_STR(str) NDIS_STRING_CONST(str) +#define INIT_TBL_OFF(field) FIELD_OFFSET(TInitTable, field) + +/* Reports */ +NDIS_STRING STR_ReportSeverityTable = NDIS_STRING_CONST( "ReportSeverityTable" ); +NDIS_STRING STR_ReportModuleTable = NDIS_STRING_CONST( "ReportModuleTable" ); + + +NDIS_STRING STRFilterEnabled = NDIS_STRING_CONST( "Mac_Filter_Enabled"); +NDIS_STRING STRnumGroupAddrs = NDIS_STRING_CONST( "numGroupAddrs" ); +NDIS_STRING STRGroup_addr0 = NDIS_STRING_CONST( "Group_addr0" ); +NDIS_STRING STRGroup_addr1 = NDIS_STRING_CONST( "Group_addr1" ); +NDIS_STRING STRGroup_addr2 = NDIS_STRING_CONST( "Group_addr2" ); +NDIS_STRING STRGroup_addr3 = NDIS_STRING_CONST( "Group_addr3" ); +NDIS_STRING STRGroup_addr4 = NDIS_STRING_CONST( "Group_addr4" ); +NDIS_STRING STRGroup_addr5 = NDIS_STRING_CONST( "Group_addr5" ); +NDIS_STRING STRGroup_addr6 = NDIS_STRING_CONST( "Group_addr6" ); +NDIS_STRING STRGroup_addr7 = NDIS_STRING_CONST( "Group_addr7" ); + +/* Beacon timing */ +/* If Early Wakeup is Enabled, 1251 wakes-up EARLY_WAKEUP_TIME before expected Beacon reception occasion */ +/* If Early Wakeup is Disabled, 1251 wakes-up at the expected Beacon reception occasion. */ +NDIS_STRING STREarlyWakeup = NDIS_STRING_CONST( "EarlyWakeup" ); + +NDIS_STRING STRArp_Ip_Addr = NDIS_STRING_CONST( "ArpIp_Addr" ); +NDIS_STRING STRArp_Ip_Filter_Ena = NDIS_STRING_CONST( "ArpIp_Filter_ena"); + + +NDIS_STRING STRBeaconFilterDesiredState = NDIS_STRING_CONST( "Beacon_Filter_Desired_State"); +NDIS_STRING STRBeaconFilterStored = NDIS_STRING_CONST( "Beacon_Filter_Stored"); + +/*this is for configuring table from ini file*/ +NDIS_STRING STRBeaconIETableSize = NDIS_STRING_CONST( "Beacon_IE_Table_Size"); +NDIS_STRING STRBeaconIETable = NDIS_STRING_CONST( "Beacon_IE_Table") ; +NDIS_STRING STRBeaconIETableNumOfElem = NDIS_STRING_CONST( "Beacon_IE_Num_Of_Elem"); + +NDIS_STRING STRCoexActivityTable = NDIS_STRING_CONST( "Coex_Activity_Table"); +NDIS_STRING STRCoexActivityNumOfElem = NDIS_STRING_CONST( "Coex_Activity_Num_Of_Elem"); + +/* ------------------------------------------------------ */ +NDIS_STRING STRFirmwareDebug = NDIS_STRING_CONST( "FirmwareDebug" ); +NDIS_STRING STRTraceBufferSize = NDIS_STRING_CONST( "TraceBufferSize" ); +NDIS_STRING STRPrintTrace = NDIS_STRING_CONST( "PrintTrace" ); + +NDIS_STRING STRHwACXAccessMethod = NDIS_STRING_CONST( "HwACXAccessMethod" ); +NDIS_STRING STRMaxSitesFragCollect = NDIS_STRING_CONST( "MaxSitesFragCollect" ); + +NDIS_STRING STRTxFlashEnable = NDIS_STRING_CONST( "TxFlashEnable" ); + +NDIS_STRING STRBetEnable = NDIS_STRING_CONST( "BetEnable"); +NDIS_STRING STRBetMaxConsecutive = NDIS_STRING_CONST( "BetMaxConsecutive"); +NDIS_STRING STRMaxFullBeaconInterval = NDIS_STRING_CONST( "MaxlFullBeaconReceptionInterval" ); +NDIS_STRING STRBetEnableThreshold = NDIS_STRING_CONST( "BetEnableThreshold"); +NDIS_STRING STRBetDisableThreshold = NDIS_STRING_CONST( "BetDisableThreshold"); + +NDIS_STRING STRNumHostRxDescriptors = NDIS_STRING_CONST( "NumHostRxDescriptors" ); +NDIS_STRING STRNumHostTxDescriptors = NDIS_STRING_CONST( "NumHostTxDescriptors" ); + +NDIS_STRING STRACXMemoryBlockSize = NDIS_STRING_CONST( "ACXMemoryBlockSize" ); +NDIS_STRING STRACXRxMemoryBlockSize = NDIS_STRING_CONST( "ACXMemoryBlockSize" ); +NDIS_STRING STRACXTxMemoryBlockSize = NDIS_STRING_CONST( "ACXMemoryBlockSize" ); + +NDIS_STRING STRACXUseTxDataInterrupt = NDIS_STRING_CONST( "ACXUseTxDataInterrupt" ); +NDIS_STRING STRACXUseInterruptThreshold = NDIS_STRING_CONST( "ACXUseInterruptThreshold" ); + +NDIS_STRING STRCalibrationChannel2_4 = NDIS_STRING_CONST( "CalibrationChannel24" ); +NDIS_STRING STRCalibrationChannel5_0 = NDIS_STRING_CONST( "CalibrationChannel5" ); +NDIS_STRING STRdot11RTSThreshold = NDIS_STRING_CONST( "dot11RTSThreshold" ); +NDIS_STRING STRRxDisableBroadcast = NDIS_STRING_CONST( "RxDisableBroadcast" ); +NDIS_STRING STRRecoveryEnable = NDIS_STRING_CONST( "RecoveryEnable" ); +NDIS_STRING STRdot11TxAntenna = NDIS_STRING_CONST( "dot11TxAntenna" ); +NDIS_STRING STRdot11RxAntenna = NDIS_STRING_CONST( "dot11RxAntenna" ); + +NDIS_STRING STRTxCompleteThreshold = NDIS_STRING_CONST( "TxCompleteThreshold" ); +NDIS_STRING STRTxCompleteTimeout = NDIS_STRING_CONST( "TxCompleteTimeout" ); +NDIS_STRING STRRxInterruptThreshold = NDIS_STRING_CONST( "RxInterruptThreshold" ); +NDIS_STRING STRRxInterruptTimeout = NDIS_STRING_CONST( "RxInterruptTimeout" ); + +NDIS_STRING STRRxAggregationPktsLimit = NDIS_STRING_CONST( "RxAggregationPktsLimit" ); + +NDIS_STRING STRdot11FragThreshold = NDIS_STRING_CONST( "dot11FragmentationThreshold" ); +NDIS_STRING STRdot11MaxTxMSDULifetime = NDIS_STRING_CONST( "dot11MaxTransmitMSDULifetime" ); +NDIS_STRING STRdot11MaxReceiveLifetime = NDIS_STRING_CONST( "dot11MaxReceiveLifetime" ); +NDIS_STRING STRdot11RateFallBackRetryLimit = NDIS_STRING_CONST( "dot11RateFallBackRetryLimit"); + +NDIS_STRING STRReAuthActivePriority = NDIS_STRING_CONST( "ReAuthActivePriority" ); + +NDIS_STRING STRListenInterval = NDIS_STRING_CONST( "dot11ListenInterval" ); +NDIS_STRING STRExternalMode = NDIS_STRING_CONST( "DriverExternalMode" ); +NDIS_STRING STRWiFiAdHoc = NDIS_STRING_CONST( "WiFiAdhoc" ); +NDIS_STRING STRWiFiWmmPS = NDIS_STRING_CONST( "WiFiWmmPS" ); +NDIS_STRING STRWiFiMode = NDIS_STRING_CONST( "WiFiMode" ); +NDIS_STRING STRdot11DesiredChannel = NDIS_STRING_CONST( "dot11DesiredChannel"); +NDIS_STRING STRdot11DesiredSSID = NDIS_STRING_CONST( "dot11DesiredSSID" ); +NDIS_STRING STRdot11DesiredBSSType = NDIS_STRING_CONST( "dot11DesiredBSSType" ); +NDIS_STRING STRdot11BasicRateMask_B = NDIS_STRING_CONST( "dot11BasicRateMaskB"); +NDIS_STRING STRdot11SupportedRateMask_B = NDIS_STRING_CONST( "dot11SupportedRateMaskB"); +NDIS_STRING STRdot11BasicRateMask_G = NDIS_STRING_CONST( "dot11BasicRateMaskG"); +NDIS_STRING STRdot11SupportedRateMask_G = NDIS_STRING_CONST( "dot11SupportedRateMaskG"); +NDIS_STRING STRdot11BasicRateMask_A = NDIS_STRING_CONST( "dot11BasicRateMaskA"); +NDIS_STRING STRdot11SupportedRateMask_A = NDIS_STRING_CONST( "dot11SupportedRateMaskA"); +NDIS_STRING STRdot11BasicRateMask_AG = NDIS_STRING_CONST( "dot11BasicRateMaskAG"); +NDIS_STRING STRdot11SupportedRateMask_AG = NDIS_STRING_CONST( "dot11SupportedRateMaskAG"); +NDIS_STRING STRdot11BasicRateMask_N = NDIS_STRING_CONST( "STRdot11BasicRateMask_N"); +NDIS_STRING STRdot11SupportedRateMask_N = NDIS_STRING_CONST( "STRdot11SupportedRateMask_N"); + +NDIS_STRING STRRadio11_RxLevel = NDIS_STRING_CONST( "Radio11_RxLevel"); +NDIS_STRING STRRadio11_LNA = NDIS_STRING_CONST( "Radio11_LNA"); +NDIS_STRING STRRadio11_RSSI = NDIS_STRING_CONST( "Radio11_RSSI"); +NDIS_STRING STRRadio0D_RxLevel = NDIS_STRING_CONST( "Radio0D_RxLevel"); +NDIS_STRING STRRadio0D_LNA = NDIS_STRING_CONST( "Radio0D_LNA"); +NDIS_STRING STRRadio0D_RSSI = NDIS_STRING_CONST( "Radio0D_RSSI"); + +NDIS_STRING STRdot11DesiredNetworkType = NDIS_STRING_CONST( "dot11NetworkType"); +NDIS_STRING STRdot11DefaultNetworkType = NDIS_STRING_CONST( "dot11DefaultNetworkType"); +NDIS_STRING STRdot11SlotTime = NDIS_STRING_CONST( "ShortSlotTime"); +NDIS_STRING STRdot11IbssProtection = NDIS_STRING_CONST( "IbssProtectionType"); +NDIS_STRING STRdot11RtsCtsProtection = NDIS_STRING_CONST( "dot11RtsCtsProtection"); + +NDIS_STRING STRRxEnergyDetection = NDIS_STRING_CONST( "RxEnergyDetection" ); +NDIS_STRING STRTxEnergyDetection = NDIS_STRING_CONST( "TxEnergyDetection" ); +NDIS_STRING STRCrtCalibrationInterval = NDIS_STRING_CONST( "CrtCalibrationInterval" ); +NDIS_STRING STRTddCalibrationInterval = NDIS_STRING_CONST( "TddCalibrationInterval" ); +NDIS_STRING STRMacClockRate = NDIS_STRING_CONST( "MacClockRate" ); +NDIS_STRING STRArmClockRate = NDIS_STRING_CONST( "ArmClockRate" ); +NDIS_STRING STRg80211DraftNumber = NDIS_STRING_CONST( "g80211DraftNumber" ); + +NDIS_STRING STRdot11ShortPreambleInvoked = NDIS_STRING_CONST( "dot11ShortPreambleInvoked" ); + +NDIS_STRING STRdot11BeaconPeriod = NDIS_STRING_CONST( "dot11BeaconPeriod" ); +NDIS_STRING STRdot11MaxScanTime = NDIS_STRING_CONST( "dot11MaxScanTime" ); +NDIS_STRING STRdot11MinScanTime = NDIS_STRING_CONST( "dot11MinScanTime" ); +NDIS_STRING STRdot11MaxSiteLifetime = NDIS_STRING_CONST( "dot11MaxSiteLifetime" ); + +NDIS_STRING STRdot11MaxAuthRetry = NDIS_STRING_CONST( "dot11MaxAuthRetry" ); +NDIS_STRING STRdot11MaxAssocRetry = NDIS_STRING_CONST( "dot11MaxAssocRetry" ); +NDIS_STRING STRdot11AuthRespTimeout = NDIS_STRING_CONST( "dot11AuthenticationResponseTimeout" ); +NDIS_STRING STRdot11AssocRespTimeout = NDIS_STRING_CONST( "dot11AssociationResponseTimeout" ); + +NDIS_STRING STRConnSelfTimeout = NDIS_STRING_CONST( "ConnSelfTimeout" ); + +NDIS_STRING STRCreditCalcTimout = NDIS_STRING_CONST( "CreditCalcTimout" ); +NDIS_STRING STRCreditCalcTimerEnabled = NDIS_STRING_CONST( "CreditCalcTimerEnabled" ); + +NDIS_STRING STRTrafficAdmControlTimeout = NDIS_STRING_CONST("TrafficAdmControlTimeout"); +NDIS_STRING STRTrafficAdmControlUseFixedMsduSize = NDIS_STRING_CONST("TrafficAdmCtrlUseFixedMsduSize"); +NDIS_STRING STRDesiredMaxSpLen = NDIS_STRING_CONST("DesiredMaxSpLen"); + +NDIS_STRING STRCwFromUserEnable = NDIS_STRING_CONST("CwFromUserEnable"); +NDIS_STRING STRDesireCwMin = NDIS_STRING_CONST("DesireCwMin"); +NDIS_STRING STRDesireCwMax = NDIS_STRING_CONST("DesireCwMax"); + +NDIS_STRING STRRatePolicyUserShortRetryLimit = NDIS_STRING_CONST( "RatePolicyUserShortRetryLimit" ); +NDIS_STRING STRRatePolicyUserLongRetryLimit = NDIS_STRING_CONST( "RatePolicyUserLongRetryLimit" ); + +NDIS_STRING STRRatePolicyUserEnabledRatesMaskCck = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskCck" ); +NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdm = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdm" ); +NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdmA = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdmA" ); +NDIS_STRING STRRatePolicyUserEnabledRatesMaskOfdmN = NDIS_STRING_CONST( "RatePolicyUserEnabledRatesMaskOfdmN" ); + +NDIS_STRING STRdot11AuthenticationMode = NDIS_STRING_CONST( "dot11AuthenticationMode" ); +NDIS_STRING STRdot11WEPStatus = NDIS_STRING_CONST( "dot11WEPStatus" ); +NDIS_STRING STRdot11ExcludeUnencrypted = NDIS_STRING_CONST( "dot11ExcludeUnencrypted" ); +NDIS_STRING STRdot11WEPKeymappingLength = NDIS_STRING_CONST( "dot11WEPKeymappingLength" ); +NDIS_STRING STRdot11WEPDefaultKeyID = NDIS_STRING_CONST( "dot11WEPDefaultKeyID" ); + +NDIS_STRING STRMixedMode = NDIS_STRING_CONST( "MixedMode" ); + +NDIS_STRING STRWPAMixedMode = NDIS_STRING_CONST( "WPAMixedMode"); +NDIS_STRING STRRSNPreAuth = NDIS_STRING_CONST( "RSNPreAuthentication"); +NDIS_STRING STRRSNPreAuthTimeout = NDIS_STRING_CONST( "RSNPreAuthTimeout" ); +NDIS_STRING STRRSNExternalMode = NDIS_STRING_CONST( "RSNExternalMode" ); + +NDIS_STRING STRPairwiseMicFailureFilter = NDIS_STRING_CONST( "PairwiseMicFailureFilter" ); + +NDIS_STRING STRTimeToResetCountryMs = NDIS_STRING_CONST( "TimeToResetCountryMs" ); +NDIS_STRING STRMultiRegulatoryDomainEnabled = NDIS_STRING_CONST( "MultiRegulatoryDomain" ); +NDIS_STRING STRSpectrumManagementEnabled = NDIS_STRING_CONST( "SpectrumManagement" ); +NDIS_STRING STRScanControlTable24 = NDIS_STRING_CONST( "AllowedChannelsTable24" ); +NDIS_STRING STRScanControlTable5 = NDIS_STRING_CONST( "AllowedChannelsTable5" ); + +NDIS_STRING STRBurstModeEnable = NDIS_STRING_CONST( "BurstModeEnable" ); +/* Smart Reflex */ +NDIS_STRING STRSRState = NDIS_STRING_CONST( "SRState" ); +NDIS_STRING STRSRConfigParam1 = NDIS_STRING_CONST( "SRF1" ); +NDIS_STRING STRSRConfigParam2 = NDIS_STRING_CONST( "SRF2" ); +NDIS_STRING STRSRConfigParam3 = NDIS_STRING_CONST( "SRF3" ); +NDIS_STRING STRSRSenNP = NDIS_STRING_CONST( "SR_SEN_N_P" ); +NDIS_STRING STRSRSenNPGain = NDIS_STRING_CONST( "SR_SEN_N_P_Gain" ); +NDIS_STRING STRSRSenPrn = NDIS_STRING_CONST( "SR_SEN_PRN" ); +NDIS_STRING STRSRSenNrn = NDIS_STRING_CONST( "SR_SEN_NRN" ); +NDIS_STRING STRSRDebugTable = NDIS_STRING_CONST( "SR_Debug_Table" ); + + +/* +Power Manager +*/ +NDIS_STRING STRPowerMode = NDIS_STRING_CONST( "dot11PowerMode" ); +NDIS_STRING STRBeaconReceiveTime = NDIS_STRING_CONST( "BeaconReceiveTime" ); +NDIS_STRING STRBaseBandWakeUpTime = NDIS_STRING_CONST( "BaseBandWakeUpTime" ); +NDIS_STRING STRHangoverPeriod = NDIS_STRING_CONST( "HangoverPeriod" ); +NDIS_STRING STRBeaconListenInterval = NDIS_STRING_CONST( "BeaconListenInterval" ); +NDIS_STRING STRDtimListenInterval = NDIS_STRING_CONST( "DtimListenInterval" ); +NDIS_STRING STRNConsecutiveBeaconsMissed = NDIS_STRING_CONST( "NConsecutiveBeaconsMissed" ); +NDIS_STRING STREnterTo802_11PsRetries = NDIS_STRING_CONST( "EnterTo802_11PsRetries" ); +NDIS_STRING STRAutoPowerModeInterval = NDIS_STRING_CONST( "AutoPowerModeInterval" ); +NDIS_STRING STRAutoPowerModeActiveTh = NDIS_STRING_CONST( "AutoPowerModeActiveTh" ); +NDIS_STRING STRAutoPowerModeDozeTh = NDIS_STRING_CONST( "AutoPowerModeDozeTh" ); +NDIS_STRING STRAutoPowerModeDozeMode = NDIS_STRING_CONST( "AutoPowerModeDozeMode" ); +NDIS_STRING STRDefaultPowerLevel = NDIS_STRING_CONST( "defaultPowerLevel" ); +NDIS_STRING STRPowerSavePowerLevel = NDIS_STRING_CONST( "PowerSavePowerLevel" ); +NDIS_STRING STRHostClkSettlingTime = NDIS_STRING_CONST( "HostClkSettlingTime" ); +NDIS_STRING STRHostFastWakeupSupport = NDIS_STRING_CONST( "HostFastWakeupSupport" ); + +NDIS_STRING STRPsPollDeliveryFailureRecoveryPeriod = NDIS_STRING_CONST( "PsPollDeliveryFailureRecoveryPeriod" ); + +NDIS_STRING STRPowerMgmtHangOverPeriod = NDIS_STRING_CONST( "PowerMgmtHangOverPeriod" ); +NDIS_STRING STRPowerMgmtMode = NDIS_STRING_CONST( "PowerMgmtMode" ); +NDIS_STRING STRPowerMgmtNeedToSendNullData = NDIS_STRING_CONST( "PowerMgmtNeedToSendNullData" ); +NDIS_STRING STRPowerMgmtNullPktRateModulation = NDIS_STRING_CONST( "PowerMgmtNullPktRateModulation" ); +NDIS_STRING STRPowerMgmtNumNullPktRetries = NDIS_STRING_CONST( "PowerMgmtNumNullPktRetries" ); +NDIS_STRING STRPowerMgmtPllLockTime = NDIS_STRING_CONST( "PllLockTime" ); + +NDIS_STRING STRBeaconRxTimeout = NDIS_STRING_CONST( "BeaconRxTimeout" ); +NDIS_STRING STRBroadcastRxTimeout = NDIS_STRING_CONST( "BroadcastRxTimeout" ); +NDIS_STRING STRRxBroadcastInPs = NDIS_STRING_CONST( "RxBroadcastInPs" ); + +NDIS_STRING STRConsecutivePsPollDeliveryFailureThreshold = NDIS_STRING_CONST( "ConsecutivePsPollDeliveryFailureThreshold" ); + +NDIS_STRING STRTxPower = NDIS_STRING_CONST( "TxPower" ); + +/* Scan SRV */ +NDIS_STRING STRNumberOfNoScanCompleteToRecovery = NDIS_STRING_CONST( "NumberOfNoScanCompleteToRecovery" ); +NDIS_STRING STRTriggeredScanTimeOut = NDIS_STRING_CONST( "TriggeredScanTimeOut" ); + +/*-----------------------------------*/ +/* Coexistence params */ +/*-----------------------------------*/ +NDIS_STRING STRBThWlanCoexistEnable = NDIS_STRING_CONST( "BThWlanCoexistEnable" ); + +NDIS_STRING STRBThWlanCoexistPerThreshold = NDIS_STRING_CONST( "coexBtPerThreshold" ); +NDIS_STRING STRBThWlanCoexistParamsAutoScanMaxTime = NDIS_STRING_CONST( "coexAutoScanCompensationMaxTime" ); +NDIS_STRING STRBThWlanCoexistParamsBtLoadRatio = NDIS_STRING_CONST( "coexBtLoadRatio" ); +NDIS_STRING STRBThWlanCoexistParamsAutoPsMode = NDIS_STRING_CONST( "coexAutoPsMode" ); +NDIS_STRING STRBThWlanCoexistParamsAutoScanProbeReqPerc = NDIS_STRING_CONST( "coexAutoScanEnlargedNumOfProbeReqPercent" ); +NDIS_STRING STRBThWlanCoexistParamsAutoScanWindowPerc = NDIS_STRING_CONST( "coexAutoScanEnlargedScanWindowPercent" ); +NDIS_STRING STRBThWlanCoexistcoexAntennaConfiguration = NDIS_STRING_CONST( "coexAntennaConfiguration" ); +NDIS_STRING STRBThWlanCoexistNfsSampleInterval = NDIS_STRING_CONST( "coexBtNfsSampleInterval" ); +NDIS_STRING STRBThWlanCoexistcoexMaxConsecutiveBeaconMissPrecent = NDIS_STRING_CONST( "coexMaxConsecutiveBeaconMissPrecent" ); +NDIS_STRING STRBThWlanCoexistcoexAPRateAdapationThr = NDIS_STRING_CONST( "coexAPRateAdapationThr" ); +NDIS_STRING STRBThWlanCoexistcoexAPRateAdapationSnr = NDIS_STRING_CONST( "coexAPRateAdapationSnr" ); + +NDIS_STRING STRBThWlanCoexistUpsdAclMasterMinBR = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMinBR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMinBR = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMinBR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclMasterMaxBR = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMaxBR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMaxBR = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMaxBR" ); +NDIS_STRING STRBThWlanPsMaxBtAclMasterBR = NDIS_STRING_CONST( "coexWlanPsMaxBtAclMasterBR" ); +NDIS_STRING STRBThWlanPsMaxBtAclSlaveBR = NDIS_STRING_CONST( "coexWlanPsMaxBtAclSlaveBR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclMasterMinEDR = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMinEDR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMinEDR = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMinEDR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclMasterMaxEDR = NDIS_STRING_CONST( "coexWlanPsBtAclMasterMaxEDR" ); +NDIS_STRING STRBThWlanCoexistUpsdAclSlaveMaxEDR = NDIS_STRING_CONST( "coexWlanPsBtAclSlaveMaxEDR" ); +NDIS_STRING STRBThWlanPsMaxBtAclMasterEDR = NDIS_STRING_CONST( "coexWlanPsMaxBtAclMasterEDR" ); +NDIS_STRING STRBThWlanPsMaxBtAclSlaveEDR = NDIS_STRING_CONST( "coexWlanPsMaxBtAclSlaveEDR" ); + +NDIS_STRING STRBThWlanCoexistRxt = NDIS_STRING_CONST( "coexRxt" ); +NDIS_STRING STRBThWlanCoexistTxt = NDIS_STRING_CONST( "coexTxt" ); +NDIS_STRING STRBThWlanCoexistAdaptiveRxtTxt = NDIS_STRING_CONST( "coexAdaptiveRxtTxt" ); +NDIS_STRING STRBThWlanCoexistPsPollTimeout = NDIS_STRING_CONST( "coexPsPollTimeout" ); +NDIS_STRING STRBThWlanCoexistUpsdTimeout = NDIS_STRING_CONST( "coexUpsdTimeout" ); + +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMasterMinEDR = NDIS_STRING_CONST( "coexWlanActiveBtAclMasterMinEDR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMasterMaxEDR = NDIS_STRING_CONST( "coexWlanActiveBtAclMasterMaxEDR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclMasterEDR = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclMasterEDR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclSlaveMinEDR = NDIS_STRING_CONST( "coexWlanActiveBtAclSlaveMinEDR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclSlaveMaxEDR = NDIS_STRING_CONST( "coexWlanActiveBtAclSlaveMaxEDR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclSlaveEDR = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclSlaveEDR" ); + +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMinBR = NDIS_STRING_CONST( "coexWlanActiveBtAclMinBR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveBtAclMaxBR = NDIS_STRING_CONST( "coexWlanActiveBtAclMaxBR" ); +NDIS_STRING STRBThWlanCoexistWlanActiveMaxBtAclBR = NDIS_STRING_CONST( "coexWlanActiveMaxBtAclBR" ); + +NDIS_STRING STRBThWlanCoexTemp1 = NDIS_STRING_CONST( "coexTempParam1" ); +NDIS_STRING STRBThWlanCoexTemp2 = NDIS_STRING_CONST( "coexTempParam2" ); +NDIS_STRING STRBThWlanCoexTemp3 = NDIS_STRING_CONST( "coexTempParam3" ); +NDIS_STRING STRBThWlanCoexTemp4 = NDIS_STRING_CONST( "coexTempParam4" ); +NDIS_STRING STRBThWlanCoexTemp5 = NDIS_STRING_CONST( "coexTempParam5" ); + +NDIS_STRING STRDisableSsidPending = NDIS_STRING_CONST( "DisableSsidPending" ); + +/*-----------------------------------*/ +/* SME Init Params */ +/*-----------------------------------*/ +NDIS_STRING STRSmeRadioOn = NDIS_STRING_CONST( "RadioOn" ); +NDIS_STRING STRSmeConnectMode = NDIS_STRING_CONST( "SmeConnectMode" ); +NDIS_STRING STRSmeScanRssiThreshold = NDIS_STRING_CONST( "SmeScanRssiThreshold" ); +NDIS_STRING STRSmeScanSnrThreshold = NDIS_STRING_CONST( "SmeScanSnrThreshold" ); +NDIS_STRING STRSmeScanCycleNumber = NDIS_STRING_CONST( "SmeScanCycleNumber" ); +NDIS_STRING STRSmeScanMaxDwellTime = NDIS_STRING_CONST( "SmeScanMaxDwellTimeMs" ); +NDIS_STRING STRSmeScanMinDwellTime = NDIS_STRING_CONST( "SmeScanMinDwellTimeMs" ); +NDIS_STRING STRSmeScanProbeRequestNumber = NDIS_STRING_CONST( "SmeScanProbeRequestNumber" ); +NDIS_STRING STRSmeScanIntervals = NDIS_STRING_CONST( "SmeScanIntervalList" ); +NDIS_STRING STRSmeScanGChannels = NDIS_STRING_CONST( "SmeScanGChannelList" ); +NDIS_STRING STRSmeScanAChannels = NDIS_STRING_CONST( "SmeScanAChannelList" ); + + +/*-----------------------------------*/ +/* Roaming & Scanning Init Params */ +/*-----------------------------------*/ +NDIS_STRING STRRoamScanEnable = NDIS_STRING_CONST( "RoamScanEnable" ); + +/*-----------------------------------*/ +/* Health Check Init Params */ +/*-----------------------------------*/ +NDIS_STRING STRRecoveryEnabledNoScanComplete = NDIS_STRING_CONST( "RecoveryEnabledNoScanComplete" ); +NDIS_STRING STRRecoveryEnabledMboxFailure = NDIS_STRING_CONST( "RecoveryEnabledMboxFailure" ); +NDIS_STRING STRRecoveryEnabledHwAwakeFailure = NDIS_STRING_CONST( "RecoveryEnabledHwAwakeFailure" ); +NDIS_STRING STRRecoveryEnabledTxStuck = NDIS_STRING_CONST( "RecoveryEnabledTxStuck" ); +NDIS_STRING STRRecoveryEnabledDisconnectTimeout = NDIS_STRING_CONST( "RecoveryEnabledDisconnectTimeout" ); +NDIS_STRING STRRecoveryEnabledPowerSaveFailure = NDIS_STRING_CONST( "RecoveryEnabledPowerSaveFailure" ); +NDIS_STRING STRRecoveryEnabledMeasurementFailure= NDIS_STRING_CONST( "RecoveryEnabledMeasurementFailure" ); +NDIS_STRING STRRecoveryEnabledBusFailure = NDIS_STRING_CONST( "RecoveryEnabledBusFailure" ); +NDIS_STRING STRRecoveryEnabledHwWdExpire = NDIS_STRING_CONST( "RecoveryEnabledHwWdExpire" ); +NDIS_STRING STRRecoveryEnabledRxXferFailure = NDIS_STRING_CONST( "RecoveryEnabledRxXferFailure" ); + +/*-----------------------------------*/ +/* Tx Power control with atheros */ +/*-----------------------------------*/ +NDIS_STRING STRTxPowerCheckTime = NDIS_STRING_CONST("TxPowerCheckTime"); +NDIS_STRING STRTxPowerControlOn = NDIS_STRING_CONST("TxPowerControlOn"); +NDIS_STRING STRTxPowerRssiThresh = NDIS_STRING_CONST("TxPowerRssiThresh"); +NDIS_STRING STRTxPowerRssiRestoreThresh = NDIS_STRING_CONST("TxPowerRssiRestoreThresh"); +NDIS_STRING STRTxPowerTempRecover = NDIS_STRING_CONST("TxPowerTempRecover"); + + +/*-----------------------------------*/ +/*-----------------------------------*/ +/* QOS Parameters */ +/*-----------------------------------*/ +NDIS_STRING STRWMEEnable = NDIS_STRING_CONST("WME_Enable"); +NDIS_STRING STRTrafficAdmCtrlEnable = NDIS_STRING_CONST("TrafficAdmCtrl_Enable"); +NDIS_STRING STRdesiredPsMode = NDIS_STRING_CONST("desiredPsMode"); +NDIS_STRING STRQOSmsduLifeTimeBE = NDIS_STRING_CONST("QOS_msduLifeTimeBE"); +NDIS_STRING STRQOSmsduLifeTimeBK = NDIS_STRING_CONST("QOS_msduLifeTimeBK"); +NDIS_STRING STRQOSmsduLifeTimeVI = NDIS_STRING_CONST("QOS_msduLifeTimeVI"); +NDIS_STRING STRQOSmsduLifeTimeVO = NDIS_STRING_CONST("QOS_msduLifeTimeVO"); +NDIS_STRING STRQOSrxTimeOutPsPoll = NDIS_STRING_CONST("QOS_rxTimeoutPsPoll"); +NDIS_STRING STRQOSrxTimeOutUPSD = NDIS_STRING_CONST("QOS_rxTimeoutUPSD"); +NDIS_STRING STRQOSwmePsModeBE = NDIS_STRING_CONST("QOS_wmePsModeBE"); +NDIS_STRING STRQOSwmePsModeBK = NDIS_STRING_CONST("QOS_wmePsModeBK"); +NDIS_STRING STRQOSwmePsModeVI = NDIS_STRING_CONST("QOS_wmePsModeVI"); +NDIS_STRING STRQOSwmePsModeVO = NDIS_STRING_CONST("QOS_wmePsModeVO"); +NDIS_STRING STRQOSShortRetryLimitBE = NDIS_STRING_CONST("QOS_ShortRetryLimitBE"); +NDIS_STRING STRQOSShortRetryLimitBK = NDIS_STRING_CONST("QOS_ShortRetryLimitBK"); +NDIS_STRING STRQOSShortRetryLimitVI = NDIS_STRING_CONST("QOS_ShortRetryLimitVI"); +NDIS_STRING STRQOSShortRetryLimitVO = NDIS_STRING_CONST("QOS_ShortRetryLimitVO"); +NDIS_STRING STRQOSLongRetryLimitBE = NDIS_STRING_CONST("QOS_LongRetryLimitBE"); +NDIS_STRING STRQOSLongRetryLimitBK = NDIS_STRING_CONST("QOS_LongRetryLimitBK"); +NDIS_STRING STRQOSLongRetryLimitVI = NDIS_STRING_CONST("QOS_LongRetryLimitVI"); +NDIS_STRING STRQOSLongRetryLimitVO = NDIS_STRING_CONST("QOS_LongRetryLimitVO"); + +NDIS_STRING STRQOSAckPolicyBE = NDIS_STRING_CONST("QOS_AckPolicyBE"); +NDIS_STRING STRQOSAckPolicyBK = NDIS_STRING_CONST("QOS_AckPolicyBK"); +NDIS_STRING STRQOSAckPolicyVI = NDIS_STRING_CONST("QOS_AckPolicyVI"); +NDIS_STRING STRQOSAckPolicyVO = NDIS_STRING_CONST("QOS_AckPolicyVO"); +NDIS_STRING STRQoSqueue0OverFlowPolicy = NDIS_STRING_CONST("QOS_queue0OverFlowPolicy"); +NDIS_STRING STRQoSqueue1OverFlowPolicy = NDIS_STRING_CONST("QOS_queue1OverFlowPolicy"); +NDIS_STRING STRQoSqueue2OverFlowPolicy = NDIS_STRING_CONST("QOS_queue2OverFlowPolicy"); +NDIS_STRING STRQoSqueue3OverFlowPolicy = NDIS_STRING_CONST("QOS_queue3OverFlowPolicy"); +/* HP parameters */ +NDIS_STRING STR11nEnable = NDIS_STRING_CONST("HT_Enable"); +NDIS_STRING STRBaPolicyTid_0 = NDIS_STRING_CONST("BaPolicyTid_0"); +NDIS_STRING STRBaPolicyTid_1 = NDIS_STRING_CONST("BaPolicyTid_1"); +NDIS_STRING STRBaPolicyTid_2 = NDIS_STRING_CONST("BaPolicyTid_2"); +NDIS_STRING STRBaPolicyTid_3 = NDIS_STRING_CONST("BaPolicyTid_3"); +NDIS_STRING STRBaPolicyTid_4 = NDIS_STRING_CONST("BaPolicyTid_4"); +NDIS_STRING STRBaPolicyTid_5 = NDIS_STRING_CONST("BaPolicyTid_5"); +NDIS_STRING STRBaPolicyTid_6 = NDIS_STRING_CONST("BaPolicyTid_6"); +NDIS_STRING STRBaPolicyTid_7 = NDIS_STRING_CONST("BaPolicyTid_7"); +NDIS_STRING STRBaInactivityTimeoutTid_0 = NDIS_STRING_CONST("BaInactivityTimeoutTid_0"); +NDIS_STRING STRBaInactivityTimeoutTid_1 = NDIS_STRING_CONST("BaInactivityTimeoutTid_1"); +NDIS_STRING STRBaInactivityTimeoutTid_2 = NDIS_STRING_CONST("BaInactivityTimeoutTid_2"); +NDIS_STRING STRBaInactivityTimeoutTid_3 = NDIS_STRING_CONST("BaInactivityTimeoutTid_3"); +NDIS_STRING STRBaInactivityTimeoutTid_4 = NDIS_STRING_CONST("BaInactivityTimeoutTid_4"); +NDIS_STRING STRBaInactivityTimeoutTid_5 = NDIS_STRING_CONST("BaInactivityTimeoutTid_5"); +NDIS_STRING STRBaInactivityTimeoutTid_6 = NDIS_STRING_CONST("BaInactivityTimeoutTid_6"); +NDIS_STRING STRBaInactivityTimeoutTid_7 = NDIS_STRING_CONST("BaInactivityTimeoutTid_7"); + + +/* HW Tx queues mem-blocks allocation thresholds */ +NDIS_STRING STRQOStxBlksThresholdBE = NDIS_STRING_CONST("QOS_txBlksThresholdBE"); +NDIS_STRING STRQOStxBlksThresholdBK = NDIS_STRING_CONST("QOS_txBlksThresholdBK"); +NDIS_STRING STRQOStxBlksThresholdVI = NDIS_STRING_CONST("QOS_txBlksThresholdVI"); +NDIS_STRING STRQOStxBlksThresholdVO = NDIS_STRING_CONST("QOS_txBlksThresholdVO"); + +/* Traffic Intensity parameters*/ +NDIS_STRING STRTrafficIntensityThresHigh = NDIS_STRING_CONST("TrafficIntensityThresHigh"); +NDIS_STRING STRTrafficIntensityThresLow = NDIS_STRING_CONST("TrafficIntensityThresLow"); +NDIS_STRING STRTrafficIntensityTestInterval = NDIS_STRING_CONST("TrafficIntensityTestInterval"); +NDIS_STRING STRTrafficIntensityThresholdEnabled = NDIS_STRING_CONST("TrafficIntensityThresholdEnabled"); +NDIS_STRING STRTrafficMonitorMinIntervalPercentage = NDIS_STRING_CONST("TrafficMonitorMinIntervalPercent"); + + +/* Packet Burst parameters */ +NDIS_STRING STRQOSPacketBurstEnable = NDIS_STRING_CONST("QOS_PacketBurstEnable"); +NDIS_STRING STRQOSPacketBurstTxOpLimit = NDIS_STRING_CONST("QOS_PacketBurstTxOpLimit"); + +/*-----------------------------------*/ +/* QOS classifier Parameters */ +/*-----------------------------------*/ +NDIS_STRING STRClsfr_Type = NDIS_STRING_CONST("Clsfr_Type"); +NDIS_STRING STRNumOfCodePoints = NDIS_STRING_CONST("NumOfCodePoints"); +NDIS_STRING STRNumOfDstPortClassifiers = NDIS_STRING_CONST("NumOfDstPortClassifiers"); +NDIS_STRING STRNumOfDstIPPortClassifiers = NDIS_STRING_CONST("NumOfDstIPPortClassifiers"); + +NDIS_STRING STRDSCPClassifier00_CodePoint = NDIS_STRING_CONST("DSCPClassifier00_CodePoint"); +NDIS_STRING STRDSCPClassifier01_CodePoint = NDIS_STRING_CONST("DSCPClassifier01_CodePoint"); +NDIS_STRING STRDSCPClassifier02_CodePoint = NDIS_STRING_CONST("DSCPClassifier02_CodePoint"); +NDIS_STRING STRDSCPClassifier03_CodePoint = NDIS_STRING_CONST("DSCPClassifier03_CodePoint"); +NDIS_STRING STRDSCPClassifier04_CodePoint = NDIS_STRING_CONST("DSCPClassifier04_CodePoint"); +NDIS_STRING STRDSCPClassifier05_CodePoint = NDIS_STRING_CONST("DSCPClassifier05_CodePoint"); +NDIS_STRING STRDSCPClassifier06_CodePoint = NDIS_STRING_CONST("DSCPClassifier06_CodePoint"); +NDIS_STRING STRDSCPClassifier07_CodePoint = NDIS_STRING_CONST("DSCPClassifier07_CodePoint"); +NDIS_STRING STRDSCPClassifier08_CodePoint = NDIS_STRING_CONST("DSCPClassifier08_CodePoint"); +NDIS_STRING STRDSCPClassifier09_CodePoint = NDIS_STRING_CONST("DSCPClassifier09_CodePoint"); +NDIS_STRING STRDSCPClassifier10_CodePoint = NDIS_STRING_CONST("DSCPClassifier10_CodePoint"); +NDIS_STRING STRDSCPClassifier11_CodePoint = NDIS_STRING_CONST("DSCPClassifier11_CodePoint"); +NDIS_STRING STRDSCPClassifier12_CodePoint = NDIS_STRING_CONST("DSCPClassifier12_CodePoint"); +NDIS_STRING STRDSCPClassifier13_CodePoint = NDIS_STRING_CONST("DSCPClassifier13_CodePoint"); +NDIS_STRING STRDSCPClassifier14_CodePoint = NDIS_STRING_CONST("DSCPClassifier14_CodePoint"); +NDIS_STRING STRDSCPClassifier15_CodePoint = NDIS_STRING_CONST("DSCPClassifier15_CodePoint"); + +NDIS_STRING STRDSCPClassifier00_DTag = NDIS_STRING_CONST("DSCPClassifier00_DTag"); +NDIS_STRING STRDSCPClassifier01_DTag = NDIS_STRING_CONST("DSCPClassifier01_DTag"); +NDIS_STRING STRDSCPClassifier02_DTag = NDIS_STRING_CONST("DSCPClassifier02_DTag"); +NDIS_STRING STRDSCPClassifier03_DTag = NDIS_STRING_CONST("DSCPClassifier03_DTag"); +NDIS_STRING STRDSCPClassifier04_DTag = NDIS_STRING_CONST("DSCPClassifier04_DTag"); +NDIS_STRING STRDSCPClassifier05_DTag = NDIS_STRING_CONST("DSCPClassifier05_DTag"); +NDIS_STRING STRDSCPClassifier06_DTag = NDIS_STRING_CONST("DSCPClassifier06_DTag"); +NDIS_STRING STRDSCPClassifier07_DTag = NDIS_STRING_CONST("DSCPClassifier07_DTag"); +NDIS_STRING STRDSCPClassifier08_DTag = NDIS_STRING_CONST("DSCPClassifier08_DTag"); +NDIS_STRING STRDSCPClassifier09_DTag = NDIS_STRING_CONST("DSCPClassifier09_DTag"); +NDIS_STRING STRDSCPClassifier10_DTag = NDIS_STRING_CONST("DSCPClassifier10_DTag"); +NDIS_STRING STRDSCPClassifier11_DTag = NDIS_STRING_CONST("DSCPClassifier11_DTag"); +NDIS_STRING STRDSCPClassifier12_DTag = NDIS_STRING_CONST("DSCPClassifier12_DTag"); +NDIS_STRING STRDSCPClassifier13_DTag = NDIS_STRING_CONST("DSCPClassifier13_DTag"); +NDIS_STRING STRDSCPClassifier14_DTag = NDIS_STRING_CONST("DSCPClassifier14_DTag"); +NDIS_STRING STRDSCPClassifier15_DTag = NDIS_STRING_CONST("DSCPClassifier15_DTag"); + + +NDIS_STRING STRPortClassifier00_Port = NDIS_STRING_CONST("PortClassifier00_Port"); +NDIS_STRING STRPortClassifier01_Port = NDIS_STRING_CONST("PortClassifier01_Port"); +NDIS_STRING STRPortClassifier02_Port = NDIS_STRING_CONST("PortClassifier02_Port"); +NDIS_STRING STRPortClassifier03_Port = NDIS_STRING_CONST("PortClassifier03_Port"); +NDIS_STRING STRPortClassifier04_Port = NDIS_STRING_CONST("PortClassifier04_Port"); +NDIS_STRING STRPortClassifier05_Port = NDIS_STRING_CONST("PortClassifier05_Port"); +NDIS_STRING STRPortClassifier06_Port = NDIS_STRING_CONST("PortClassifier06_Port"); +NDIS_STRING STRPortClassifier07_Port = NDIS_STRING_CONST("PortClassifier07_Port"); +NDIS_STRING STRPortClassifier08_Port = NDIS_STRING_CONST("PortClassifier08_Port"); +NDIS_STRING STRPortClassifier09_Port = NDIS_STRING_CONST("PortClassifier09_Port"); +NDIS_STRING STRPortClassifier10_Port = NDIS_STRING_CONST("PortClassifier10_Port"); +NDIS_STRING STRPortClassifier11_Port = NDIS_STRING_CONST("PortClassifier11_Port"); +NDIS_STRING STRPortClassifier12_Port = NDIS_STRING_CONST("PortClassifier12_Port"); +NDIS_STRING STRPortClassifier13_Port = NDIS_STRING_CONST("PortClassifier13_Port"); +NDIS_STRING STRPortClassifier14_Port = NDIS_STRING_CONST("PortClassifier14_Port"); +NDIS_STRING STRPortClassifier15_Port = NDIS_STRING_CONST("PortClassifier15_Port"); + +NDIS_STRING STRPortClassifier00_DTag = NDIS_STRING_CONST("PortClassifier00_DTag"); +NDIS_STRING STRPortClassifier01_DTag = NDIS_STRING_CONST("PortClassifier01_DTag"); +NDIS_STRING STRPortClassifier02_DTag = NDIS_STRING_CONST("PortClassifier02_DTag"); +NDIS_STRING STRPortClassifier03_DTag = NDIS_STRING_CONST("PortClassifier03_DTag"); +NDIS_STRING STRPortClassifier04_DTag = NDIS_STRING_CONST("PortClassifier04_DTag"); +NDIS_STRING STRPortClassifier05_DTag = NDIS_STRING_CONST("PortClassifier05_DTag"); +NDIS_STRING STRPortClassifier06_DTag = NDIS_STRING_CONST("PortClassifier06_DTag"); +NDIS_STRING STRPortClassifier07_DTag = NDIS_STRING_CONST("PortClassifier07_DTag"); +NDIS_STRING STRPortClassifier08_DTag = NDIS_STRING_CONST("PortClassifier08_DTag"); +NDIS_STRING STRPortClassifier09_DTag = NDIS_STRING_CONST("PortClassifier09_DTag"); +NDIS_STRING STRPortClassifier10_DTag = NDIS_STRING_CONST("PortClassifier10_DTag"); +NDIS_STRING STRPortClassifier11_DTag = NDIS_STRING_CONST("PortClassifier11_DTag"); +NDIS_STRING STRPortClassifier12_DTag = NDIS_STRING_CONST("PortClassifier12_DTag"); +NDIS_STRING STRPortClassifier13_DTag = NDIS_STRING_CONST("PortClassifier13_DTag"); +NDIS_STRING STRPortClassifier14_DTag = NDIS_STRING_CONST("PortClassifier14_DTag"); +NDIS_STRING STRPortClassifier15_DTag = NDIS_STRING_CONST("PortClassifier15_DTag"); + +NDIS_STRING STRIPPortClassifier00_IPAddress = NDIS_STRING_CONST("IPPortClassifier00_IPAddress"); +NDIS_STRING STRIPPortClassifier01_IPAddress = NDIS_STRING_CONST("IPPortClassifier01_IPAddress"); +NDIS_STRING STRIPPortClassifier02_IPAddress = NDIS_STRING_CONST("IPPortClassifier02_IPAddress"); +NDIS_STRING STRIPPortClassifier03_IPAddress = NDIS_STRING_CONST("IPPortClassifier03_IPAddress"); +NDIS_STRING STRIPPortClassifier04_IPAddress = NDIS_STRING_CONST("IPPortClassifier04_IPAddress"); +NDIS_STRING STRIPPortClassifier05_IPAddress = NDIS_STRING_CONST("IPPortClassifier05_IPAddress"); +NDIS_STRING STRIPPortClassifier06_IPAddress = NDIS_STRING_CONST("IPPortClassifier06_IPAddress"); +NDIS_STRING STRIPPortClassifier07_IPAddress = NDIS_STRING_CONST("IPPortClassifier07_IPAddress"); +NDIS_STRING STRIPPortClassifier08_IPAddress = NDIS_STRING_CONST("IPPortClassifier08_IPAddress"); +NDIS_STRING STRIPPortClassifier09_IPAddress = NDIS_STRING_CONST("IPPortClassifier09_IPAddress"); +NDIS_STRING STRIPPortClassifier10_IPAddress = NDIS_STRING_CONST("IPPortClassifier10_IPAddress"); +NDIS_STRING STRIPPortClassifier11_IPAddress = NDIS_STRING_CONST("IPPortClassifier11_IPAddress"); +NDIS_STRING STRIPPortClassifier12_IPAddress = NDIS_STRING_CONST("IPPortClassifier12_IPAddress"); +NDIS_STRING STRIPPortClassifier13_IPAddress = NDIS_STRING_CONST("IPPortClassifier13_IPAddress"); +NDIS_STRING STRIPPortClassifier14_IPAddress = NDIS_STRING_CONST("IPPortClassifier14_IPAddress"); +NDIS_STRING STRIPPortClassifier15_IPAddress = NDIS_STRING_CONST("IPPortClassifier15_IPAddress"); + +NDIS_STRING STRIPPortClassifier00_Port = NDIS_STRING_CONST("IPPortClassifier00_Port"); +NDIS_STRING STRIPPortClassifier01_Port = NDIS_STRING_CONST("IPPortClassifier01_Port"); +NDIS_STRING STRIPPortClassifier02_Port = NDIS_STRING_CONST("IPPortClassifier02_Port"); +NDIS_STRING STRIPPortClassifier03_Port = NDIS_STRING_CONST("IPPortClassifier03_Port"); +NDIS_STRING STRIPPortClassifier04_Port = NDIS_STRING_CONST("IPPortClassifier04_Port"); +NDIS_STRING STRIPPortClassifier05_Port = NDIS_STRING_CONST("IPPortClassifier05_Port"); +NDIS_STRING STRIPPortClassifier06_Port = NDIS_STRING_CONST("IPPortClassifier06_Port"); +NDIS_STRING STRIPPortClassifier07_Port = NDIS_STRING_CONST("IPPortClassifier07_Port"); +NDIS_STRING STRIPPortClassifier08_Port = NDIS_STRING_CONST("IPPortClassifier08_Port"); +NDIS_STRING STRIPPortClassifier09_Port = NDIS_STRING_CONST("IPPortClassifier09_Port"); +NDIS_STRING STRIPPortClassifier10_Port = NDIS_STRING_CONST("IPPortClassifier10_Port"); +NDIS_STRING STRIPPortClassifier11_Port = NDIS_STRING_CONST("IPPortClassifier11_Port"); +NDIS_STRING STRIPPortClassifier12_Port = NDIS_STRING_CONST("IPPortClassifier12_Port"); +NDIS_STRING STRIPPortClassifier13_Port = NDIS_STRING_CONST("IPPortClassifier13_Port"); +NDIS_STRING STRIPPortClassifier14_Port = NDIS_STRING_CONST("IPPortClassifier14_Port"); +NDIS_STRING STRIPPortClassifier15_Port = NDIS_STRING_CONST("IPPortClassifier15_Port"); + +NDIS_STRING STRIPPortClassifier00_DTag = NDIS_STRING_CONST("IPPortClassifier00_DTag"); +NDIS_STRING STRIPPortClassifier01_DTag = NDIS_STRING_CONST("IPPortClassifier01_DTag"); +NDIS_STRING STRIPPortClassifier02_DTag = NDIS_STRING_CONST("IPPortClassifier02_DTag"); +NDIS_STRING STRIPPortClassifier03_DTag = NDIS_STRING_CONST("IPPortClassifier03_DTag"); +NDIS_STRING STRIPPortClassifier04_DTag = NDIS_STRING_CONST("IPPortClassifier04_DTag"); +NDIS_STRING STRIPPortClassifier05_DTag = NDIS_STRING_CONST("IPPortClassifier05_DTag"); +NDIS_STRING STRIPPortClassifier06_DTag = NDIS_STRING_CONST("IPPortClassifier06_DTag"); +NDIS_STRING STRIPPortClassifier07_DTag = NDIS_STRING_CONST("IPPortClassifier07_DTag"); +NDIS_STRING STRIPPortClassifier08_DTag = NDIS_STRING_CONST("IPPortClassifier08_DTag"); +NDIS_STRING STRIPPortClassifier09_DTag = NDIS_STRING_CONST("IPPortClassifier09_DTag"); +NDIS_STRING STRIPPortClassifier10_DTag = NDIS_STRING_CONST("IPPortClassifier10_DTag"); +NDIS_STRING STRIPPortClassifier11_DTag = NDIS_STRING_CONST("IPPortClassifier11_DTag"); +NDIS_STRING STRIPPortClassifier12_DTag = NDIS_STRING_CONST("IPPortClassifier12_DTag"); +NDIS_STRING STRIPPortClassifier13_DTag = NDIS_STRING_CONST("IPPortClassifier13_DTag"); +NDIS_STRING STRIPPortClassifier14_DTag = NDIS_STRING_CONST("IPPortClassifier14_DTag"); +NDIS_STRING STRIPPortClassifier15_DTag = NDIS_STRING_CONST("IPPortClassifier15_DTag"); + +/*----------------------------- + Rx Data Filter parameters +-----------------------------*/ +NDIS_STRING STRRxDataFiltersEnabled = NDIS_STRING_CONST("RxDataFilters_Enabled"); +NDIS_STRING STRRxDataFiltersDefaultAction = NDIS_STRING_CONST("RxDataFilters_DefaultAction"); + +NDIS_STRING STRRxDataFiltersFilter1Offset = NDIS_STRING_CONST("RxDataFilters_Filter1Offset"); +NDIS_STRING STRRxDataFiltersFilter1Mask = NDIS_STRING_CONST("RxDataFilters_Filter1Mask"); +NDIS_STRING STRRxDataFiltersFilter1Pattern = NDIS_STRING_CONST("RxDataFilters_Filter1Pattern"); + +NDIS_STRING STRRxDataFiltersFilter2Offset = NDIS_STRING_CONST("RxDataFilters_Filter2Offset"); +NDIS_STRING STRRxDataFiltersFilter2Mask = NDIS_STRING_CONST("RxDataFilters_Filter2Mask"); +NDIS_STRING STRRxDataFiltersFilter2Pattern = NDIS_STRING_CONST("RxDataFilters_Filter2Pattern"); + +NDIS_STRING STRRxDataFiltersFilter3Offset = NDIS_STRING_CONST("RxDataFilters_Filter3Offset"); +NDIS_STRING STRRxDataFiltersFilter3Mask = NDIS_STRING_CONST("RxDataFilters_Filter3Mask"); +NDIS_STRING STRRxDataFiltersFilter3Pattern = NDIS_STRING_CONST("RxDataFilters_Filter3Pattern"); + +NDIS_STRING STRRxDataFiltersFilter4Offset = NDIS_STRING_CONST("RxDataFilters_Filter4Offset"); +NDIS_STRING STRRxDataFiltersFilter4Mask = NDIS_STRING_CONST("RxDataFilters_Filter4Mask"); +NDIS_STRING STRRxDataFiltersFilter4Pattern = NDIS_STRING_CONST("RxDataFilters_Filter4Pattern"); + + +NDIS_STRING STRReAuthActiveTimeout = NDIS_STRING_CONST( "ReAuthActiveTimeout" ); + +/*--------------------------- + Measurement parameters +-----------------------------*/ +NDIS_STRING STRMeasurTrafficThreshold = NDIS_STRING_CONST( "MeasurTrafficThreshold" ); +NDIS_STRING STRMeasurMaxDurationOnNonServingChannel = NDIS_STRING_CONST( "MeasurMaxDurationOnNonServingChannel" ); + +/*--------------------------- + XCC Manager parameters +-----------------------------*/ +#ifdef XCC_MODULE_INCLUDED +NDIS_STRING STRXCCModeEnabled = NDIS_STRING_CONST( "XCCModeEnabled" ); +#endif + +NDIS_STRING STRXCCTestIgnoreDeAuth0 = NDIS_STRING_CONST( "XCCTestRogeAP" ); + +/*-----------------------------------*/ +/* EEPROM-less support */ +/*-----------------------------------*/ +NDIS_STRING STREEPROMlessModeSupported = NDIS_STRING_CONST( "EEPROMlessModeSupported" ); +NDIS_STRING STRstationMacAddress = NDIS_STRING_CONST("dot11StationID"); + + +/*-----------------------------------*/ +/* INI file to configuration */ +/*-----------------------------------*/ + +NDIS_STRING SendINIBufferToUser = NDIS_STRING_CONST("SendINIBufferToUserMode"); + +/*------------------------------------------- + RSSI/SNR Weights for Average calculations +--------------------------------------------*/ + +NDIS_STRING STRRssiBeaconAverageWeight = NDIS_STRING_CONST("RssiBeaconAverageWeight"); +NDIS_STRING STRRssiPacketAverageWeight = NDIS_STRING_CONST("RssiPacketAverageWeight"); +NDIS_STRING STRSnrBeaconAverageWeight = NDIS_STRING_CONST("SnrBeaconAverageWeight"); +NDIS_STRING STRSnrPacketAverageWeight = NDIS_STRING_CONST("SnrPacketAverageWeight"); + +/*-----------------------------------*/ +/* Scan concentrator parameters */ +/*-----------------------------------*/ +NDIS_STRING STRMinimumDurationBetweenOsScans = NDIS_STRING_CONST( "MinimumDurationBetweenOsScans" ); +NDIS_STRING STRDfsPassiveDwellTimeMs = NDIS_STRING_CONST( "DfsPassiveDwellTimeMs" ); +NDIS_STRING STRScanPushMode = NDIS_STRING_CONST( "ScanPushMode" ); + +NDIS_STRING STRParseWSCInBeacons = NDIS_STRING_CONST( "ParseWSCInBeacons" ); + +/*-----------------------------------*/ +/* Current BSS parameters */ +/*-----------------------------------*/ +NDIS_STRING STRNullDataKeepAliveDefaultPeriod = NDIS_STRING_CONST("NullDataKeepAliveDefaultPeriod"); + +/*-----------------------------------*/ +/* Context-Engine parameters */ +/*-----------------------------------*/ +NDIS_STRING STRContextSwitchRequired = NDIS_STRING_CONST("ContextSwitchRequired"); + +/*-----------------------------------*/ +/* Radio parameters */ +/*-----------------------------------*/ +NDIS_STRING STRTXBiPReferencePDvoltage_2_4G = NDIS_STRING_CONST("TXBiPReferencePDvoltage_2_4G"); +NDIS_STRING STRTxBiPReferencePower_2_4G = NDIS_STRING_CONST("TxBiPReferencePower_2_4G"); +NDIS_STRING STRTxBiPOffsetdB_2_4G = NDIS_STRING_CONST("TxBiPOffsetdB_2_4G"); +NDIS_STRING STRTxPerRatePowerLimits_2_4G_Normal = NDIS_STRING_CONST("TxPerRatePowerLimits_2_4G_Normal"); +NDIS_STRING STRTxPerRatePowerLimits_2_4G_Degraded = NDIS_STRING_CONST("TxPerRatePowerLimits_2_4G_Degraded"); +NDIS_STRING STRTxPerChannelPowerLimits_2_4G_11b = NDIS_STRING_CONST("TxPerChannelPowerLimits_2_4G_11b"); +NDIS_STRING STRTxPerChannelPowerLimits_2_4G_OFDM = NDIS_STRING_CONST("TxPerChannelPowerLimits_2_4G_OFDM"); +NDIS_STRING STRTxPDVsRateOffsets_2_4G = NDIS_STRING_CONST("TxPDVsRateOffsets_2_4G"); +NDIS_STRING STRTxIbiasTable_2_4G = NDIS_STRING_CONST("TxIbiasTable_2_4G"); +NDIS_STRING STRRxFemInsertionLoss_2_4G = NDIS_STRING_CONST("RxFemInsertionLoss_2_4G"); +NDIS_STRING STRRxTraceInsertionLoss_2_4G = NDIS_STRING_CONST("RxTraceInsertionLoss_2_4G"); +NDIS_STRING STRTXTraceLoss_2_4G = NDIS_STRING_CONST("TXTraceLoss_2_4G"); +NDIS_STRING STRRxRssiAndProcessCompensation_2_4G = NDIS_STRING_CONST("RxRssiAndProcessCompensation_2_4G"); +NDIS_STRING STRTXBiPReferencePDvoltage_5G = NDIS_STRING_CONST("TXBiPReferencePDvoltage_5G"); +NDIS_STRING STRTxBiPReferencePower_5G = NDIS_STRING_CONST("TxBiPReferencePower_5G"); +NDIS_STRING STRTxBiPOffsetdB_5G = NDIS_STRING_CONST("TxBiPOffsetdB_5G"); +NDIS_STRING STRTxPerRatePowerLimits_5G_Normal = NDIS_STRING_CONST("TxPerRatePowerLimits_5G_Normal"); +NDIS_STRING STRTxPerRatePowerLimits_5G_Degraded = NDIS_STRING_CONST("TxPerRatePowerLimits_5G_Degraded"); +NDIS_STRING STRTxPerChannelPowerLimits_5G_OFDM = NDIS_STRING_CONST("TxPerChannelPowerLimits_5G_OFDM"); +NDIS_STRING STRTxPDVsRateOffsets_5G = NDIS_STRING_CONST("TxPDVsRateOffsets_5G"); +NDIS_STRING STRTxIbiasTable_5G = NDIS_STRING_CONST("TxIbiasTable_5G"); +NDIS_STRING STRRxFemInsertionLoss_5G = NDIS_STRING_CONST("RxFemInsertionLoss_5G"); +NDIS_STRING STRRxTraceInsertionLoss_5G = NDIS_STRING_CONST("RxTraceInsertionLoss_5G"); +NDIS_STRING STRTXTraceLoss_5G = NDIS_STRING_CONST("TXTraceLoss_5G"); +NDIS_STRING STRRxRssiAndProcessCompensation_5G = NDIS_STRING_CONST("RxRssiAndProcessCompensation_5G"); +NDIS_STRING STRFRefClock = NDIS_STRING_CONST("STRFRefClock"); +NDIS_STRING STRFRefClockSettingTime = NDIS_STRING_CONST("STRFRefClockSettingTime"); +NDIS_STRING STRFRefClockStatus = NDIS_STRING_CONST("FRefClockStatus"); +NDIS_STRING STRTXBiPFEMAutoDetect = NDIS_STRING_CONST("TXBiPFEMAutoDetect"); +NDIS_STRING STRTXBiPFEMManufacturer = NDIS_STRING_CONST("TXBiPFEMManufacturer"); +NDIS_STRING STRClockValidOnWakeup = NDIS_STRING_CONST("ClockValidOnWakeup"); +NDIS_STRING STRDC2DCMode = NDIS_STRING_CONST("DC2DCMode"); +NDIS_STRING STRSingle_Dual_Band_Solution = NDIS_STRING_CONST("Single_Dual_Band_Solution"); +NDIS_STRING STRSettings = NDIS_STRING_CONST("Settings"); + +/*-----------------------------------*/ +/* Driver-Main parameters */ +/*-----------------------------------*/ +NDIS_STRING STRWlanDrvThreadPriority = NDIS_STRING_CONST("WlanDrvThreadPriority"); +NDIS_STRING STRBusDrvThreadPriority = NDIS_STRING_CONST("BusDrvThreadPriority"); +NDIS_STRING STRSdioBlkSizeShift = NDIS_STRING_CONST("SdioBlkSizeShift"); + + +/*-----------------------------------*/ +/* Roaming parameters */ +/*-----------------------------------*/ +NDIS_STRING STRRoamingOperationalMode = NDIS_STRING_CONST("RoamingOperationalMode"); + +/*-----------------------------------*/ +/* FM Coexistence parameters */ +/*-----------------------------------*/ +NDIS_STRING STRFmCoexEnable = NDIS_STRING_CONST("FmCoexuEnable"); +NDIS_STRING STRFmCoexSwallowPeriod = NDIS_STRING_CONST("FmCoexuSwallowPeriod"); +NDIS_STRING STRFmCoexNDividerFrefSet1 = NDIS_STRING_CONST("FmCoexuNDividerFrefSet1"); +NDIS_STRING STRFmCoexNDividerFrefSet2 = NDIS_STRING_CONST("FmCoexuNDividerFrefSet2"); +NDIS_STRING STRFmCoexMDividerFrefSet1 = NDIS_STRING_CONST("FmCoexuMDividerFrefSet1"); +NDIS_STRING STRFmCoexMDividerFrefSet2 = NDIS_STRING_CONST("FmCoexuMDividerFrefSet2"); +NDIS_STRING STRFmCoexPllStabilizationTime = NDIS_STRING_CONST("FmCoexuPllStabilizationTime"); +NDIS_STRING STRFmCoexLdoStabilizationTime = NDIS_STRING_CONST("FmCoexuLdoStabilizationTime"); +NDIS_STRING STRFmCoexDisturbedBandMargin = NDIS_STRING_CONST("FmCoexuDisturbedBandMargin"); +NDIS_STRING STRFmCoexSwallowClkDif = NDIS_STRING_CONST("FmCoexSwallowClkDif"); + +/*----------------------------------------*/ +/* Rate Management Parameters */ +/*----------------------------------------*/ + +/* LiorC */ + +NDIS_STRING STRRateMngRateRetryScore = NDIS_STRING_CONST("RateMngRateRetryScore"); +NDIS_STRING STRRateMngPerAdd = NDIS_STRING_CONST("RateMngPerAdd"); +NDIS_STRING STRRateMngPerTh1 = NDIS_STRING_CONST("RateMngPerTh1"); +NDIS_STRING STRRateMngPerTh2 = NDIS_STRING_CONST("RateMngPerTh2"); +NDIS_STRING STRRateMngMaxPer = NDIS_STRING_CONST("RateMngMaxPer"); +NDIS_STRING STRRateMngInverseCuriosityFactor = NDIS_STRING_CONST("RateMngInverseCuriosityFactor"); +NDIS_STRING STRRateMngTxFailLowTh = NDIS_STRING_CONST("RateMngTxFailLowTh"); +NDIS_STRING STRRateMngTxFailHighTh = NDIS_STRING_CONST("RateMngTxFailHighTh"); +NDIS_STRING STRRateMngPerAlphaShift = NDIS_STRING_CONST("RateMngPerAlphaShift"); +NDIS_STRING STRRateMngPerAddShift = NDIS_STRING_CONST("RateMngPerAddShift"); +NDIS_STRING STRRateMngPerBeta1Shift = NDIS_STRING_CONST("RateMngPerBeta1Shift"); +NDIS_STRING STRRateMngPerBeta2Shift = NDIS_STRING_CONST("RateMngPerBeta2Shift"); +NDIS_STRING STRRateMngRateCheckUp = NDIS_STRING_CONST("RateMngRateCheckUp"); +NDIS_STRING STRRateMngRateCheckDown = NDIS_STRING_CONST("RateMngRateCheckDown"); +NDIS_STRING STRRateMngRateRetryPolicy = NDIS_STRING_CONST("RateMngRateRetryPolicy"); + + +/* +NDIS_STRING STRPctACXRxMemoryPool = NDIS_STRING_CONST( "PctACXRxMemoryPool" ); +NDIS_STRING STRSendPacketsPerOID = NDIS_STRING_CONST( "Dot11SendPacketsPerOID" ); +NDIS_STRING STRFragCacheSize = NDIS_STRING_CONST( "FragCacheSize" ); +*/ + +static void regConvertStringtoMACAddress(TI_UINT8 *staMACAddressString,TI_UINT8 *MacAddressArray); +static void regConvertStringtoBeaconIETable(TI_UINT8 *staIpAddressString,TI_UINT8 *BeaconIEArray, TI_UINT8 size); +static void regConvertStringtoCoexActivityTable(TI_UINT8 *strCoexActivityTable, TI_UINT32 numOfElements, TCoexActivity *CoexActivityArray, TI_UINT8 strSize); + +static int decryptWEP( TI_INT8* pSrc, TI_INT8* pDst, TI_UINT32 len); +static short _btoi ( char *sptr, short slen, int *pi, short base ); +static void initValusFromRgstryString( TI_INT8* pSrc, TI_INT8* pDst, TI_UINT32 len); + + + +static void readRates(TWlanDrvIfObjPtr pAdapter, TInitTable *pInitTable); +static void decryptScanControlTable(TI_UINT8* src, TI_UINT8* dst, USHORT len); + +static TI_UINT32 regReadIntegerTable(TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_INT8* pDefaultValue, + USHORT defaultLen, + TI_UINT8* pUnsignedParameter, + TI_INT8* pSignedParameter, + TI_UINT32* pEntriesNumber, + TI_UINT8 uParameterSize, + TI_BOOL bHex); + +static void assignRegValue(TI_UINT32* lValue, PNDIS_CONFIGURATION_PARAMETER ndisParameter); + +static void parse_filter_request(TRxDataFilterRequest* request, TI_UINT8 offset, char * mask, TI_UINT8 maskLength, char * pattern, TI_UINT8 patternLength); + +static void regReadIntegerParameter ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_UINT32 defaultValue, + TI_UINT32 minValue, + TI_UINT32 maxValue, + TI_UINT8 parameterSize, + TI_UINT8* pParameter); + +static void regReadIntegerParameterHex ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_UINT32 defaultValue, + TI_UINT32 minValue, + TI_UINT32 maxValue, + TI_UINT8 defaultSize, + TI_UINT8 * pParameter); + +static void regReadStringParameter ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_INT8* pDefaultValue, + USHORT defaultLen, + TI_UINT8* pParameter, + void* pParameterSize); + +static void regReadWepKeyParameter (TWlanDrvIfObjPtr pAdapter, TI_UINT8 *pKeysStructure, TI_UINT8 defaultKeyId); + + +/* ---------------------------------------------------------------------------*/ +/* Converts a string to a signed int. Assumes base 10. Assumes positive*/ +/* number*/ +/**/ +/* Returns value on success, -1 on failure*/ +/**/ +/* ---------------------------------------------------------------------------*/ +static TI_UINT32 tiwlnstrtoi (char *num, TI_UINT32 length) +{ + TI_UINT32 value; + + if(num == NULL || length == 0 ) + { + return 0; + } + + for(value=0;length&&*num;num++,length--) + { + if(*num<='9'&&*num>= '0') + { + value=(value*10)+(*num - '0'); + } + else { /* Out of range*/ + break; + } + } + return value; +} + +/* ---------------------------------------------------------------------------*/ +/* Converts a string to a signed int. Assumes base 16. Assumes positive*/ +/* number*/ +/**/ +/* Returns value on success, -1 on failure*/ +/**/ +/* ---------------------------------------------------------------------------*/ +static TI_UINT32 tiwlnstrtoi_hex (TI_UINT8 *num, TI_UINT32 length) +{ + TI_UINT32 value = 0; + + if (num == NULL || length == 0) + { + return 0; + } + + for (value = 0; length && *num; num++, length--) + { + if (*num <= '9' && *num >= '0') + { + value = (value * 16) + (*num - '0'); + } + else if (*num <= 'f' && *num >= 'a') + { + value = (value * 16) + (*num - (TI_UINT8)'a' + 10); + } + else if (*num <= 'F' && *num >= 'A') + { + value = (value * 16) + (*num - (TI_UINT8)'A' + 10); + } + else + { /* Out of range*/ + break; + } + } + + return value; +} + +/*----------------------------------------------------------------------------- + +Routine Name: + + regConvertStringtoMACAddress + +Routine Description: Converts the MAC Adrress in a form of string readen from the Registry +to the MAC Address Array to be stored in the init_table struct + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regConvertStringtoMACAddress(TI_UINT8 *staMACAddressString, TI_UINT8 *MacAddressArray) +{ + char *ptr; + TI_UINT8 *tmpMacAddr; + TI_UINT8 value = 0, value_l, value_h, add_value; + int i, str_len; + + /* Take the pointer to the string MAC Address to convert it to the Array MAC Address */ + ptr = (char *)staMACAddressString; + tmpMacAddr = MacAddressArray; + str_len = 3 * MAC_ADDR_LEN - 1; + + for(i=0;(i < MAC_ADDR_LEN);ptr++,str_len--) + { + if (str_len > 0) { + /* The value can be or "0-9" or from "a-f" */ + value_l = (*ptr - '0'); + value_h = (*ptr - 'a'); + } + else { /* last element */ + value_l = value_h = 16; + } + /*PRINTF(DBG_REGISTRY,("value_l [%d] value_h [%d] *ptr %c value %d\n",value_l,value_h,*ptr,value));*/ + + if( (value_l <= 9) || (value_h <= 15 ) ) + { + /* We are in an expected range */ + /* nCheck if 0-9 */ + if(value_l <= 9 ) + { + add_value = value_l; + } + /* Check if a-f */ + else + { + /* 'a' is in fact 10 decimal in hexa */ + add_value = value_h + 10; + } + value = value * 16 + add_value; + /*PRINTF(DBG_REGISTRY,("value %d add_value %d \n",value,add_value));*/ + } + else + { + tmpMacAddr[i] = value; + /*PRINTF(DBG_REGISTRY,("tmpMacAddr[%d] is %x\n",i,tmpMacAddr[i]));*/ + value = 0; + i++; + } + } +} + + +/*----------------------------------------------------------------------------- + +Routine Name: + + regFillInitTable + +Routine Description: + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +void +regFillInitTable( + TWlanDrvIfObjPtr pAdapter, + void* pInitTable + ) +{ + static TI_UINT8 *ClsfrIp = "0a 03 01 c9"; + static TI_UINT8 ClsfrIpString[16]; + static TI_UINT8 ClsfrIpStringSize; + + /* EEPROM-less : MAC address */ + static TI_UINT8 regMACstrLen = REG_MAC_ADDR_STR_LEN; + static TI_UINT8 staMACAddress[REG_MAC_ADDR_STR_LEN]; + static TI_UINT8 defStaMacAddress0[]= "00 22 11 33 44 55"; + static TI_UINT8 regArpIpStrLen = REG_ARP_IP_ADDR_STR_LEN; + static TI_UINT8 staArpIpAddress[REG_ARP_IP_ADDR_STR_LEN]; + static TI_UINT8 defArpIpAddress[] = "0a 00 00 0a" ; /*value by default*/ + + /*defaults values for beacon IE table*/ + /*TI_UINT8 defBeaconIETableSize = 0 ;*/ + 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"; + /*TI_UINT8 tmpIeTable[BEACON_FILTER_TABLE_MAX_SIZE] ;*/ + static TI_UINT8 tmpIeTableSize = 37; + static TI_UINT8 strSize = 113; + + static TI_UINT8 defRxRssiAndProcessCompensation_2_4G[] = "ec,f6,00,0c,18,f8,fc,00,08,10,f0,f8,00,0a,14"; + static TI_UINT8 tmpRssiTableSize = RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE; + static TI_UINT8 staRssiAndProcessCompensation[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE] ; + static TI_UINT8 RssiSize = 44; + + /* defaults values for CoexActivity table*/ + /* example: WLAN(0), BT_VOICE(0), defPrio(20), raisePrio(25), minServ(0), maxServ(1ms) */ + static TI_UINT8 defCoexActivityTable[] = ""; /* Sample "01 00 14 19 0000 0001 " */ + + static TI_UINT32 filterOffset = 0; + static char filterMask[16]; + static TI_UINT8 filterMaskLength; + static char filterPattern[16]; + static TI_UINT8 filterPatternLength; + + static USHORT tableLen = 0; + static USHORT loopIndex = 0; + static TI_UINT8 ScanControlTable24Tmp[2 * NUM_OF_CHANNELS_24]; + static TI_UINT8 ScanControlTable5Tmp[2 * NUM_OF_CHANNELS_5]; + static TI_UINT8 ScanControlTable24Def[2* NUM_OF_CHANNELS_24] = "FFFFFFFFFFFFFFFFFFFFFFFFFFFF"; + static TI_UINT8 ScanControlTable5Def[2 * NUM_OF_CHANNELS_5] = "FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000FF000000FF000000FF000000FF000000FF000000000000000000000000000000"; + static TI_UINT8 reportSeverityTableDefaults[REPORT_SEVERITY_MAX+1] = "00001101"; + static TI_UINT16 reportSeverityTableLen; + + static TI_UINT32 uWiFiMode = 0; + static TI_INT8 SRConfigParams[14]; + static TI_UINT8 len,TempSRCnt; + static TI_UINT8 uTempRatePolicyList[RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN]; + static TI_UINT32 uTempRatePolicyCnt=0; + + TInitTable *p = (TInitTable *)pInitTable; + TI_UINT32 uTempEntriesCount, uIndex; + + PRINT(DBG_REGISTRY_LOUD, "TIWL: Reading InitTable parameters\n"); + + if (!p) + return; + + /* Reset structure */ + NdisZeroMemory(p, sizeof(TInitTable)); + + /*reads the arp ip from table*/ + regReadStringParameter(pAdapter ,&STRArp_Ip_Addr, + (TI_INT8*)(defArpIpAddress),REG_ARP_IP_ADDR_STR_LEN, + (TI_UINT8*)staArpIpAddress,®ArpIpStrLen ) ; + + initValusFromRgstryString( (TI_INT8*)(staArpIpAddress), (TI_INT8*)&p->twdInitParams.tArpIpFilter.addr, 4); + + + regReadIntegerParameter(pAdapter, &STRArp_Ip_Filter_Ena, + DEF_FILTER_ENABLE_VALUE, MIN_FILTER_ENABLE_VALUE, MAX_FILTER_ENABLE_VALUE, + sizeof p->twdInitParams.tArpIpFilter.isFilterEnabled, + (TI_UINT8*)&p->twdInitParams.tArpIpFilter.isFilterEnabled ); + + + + /* Beacon filter*/ + /*is the desired state ENABLED ?*/ + regReadIntegerParameter(pAdapter, &STRBeaconFilterDesiredState, + DEF_BEACON_FILTER_ENABLE_VALUE, MIN_BEACON_FILTER_ENABLE_VALUE, MAX_BEACON_FILTER_ENABLE_VALUE, + sizeof p->siteMgrInitParams.beaconFilterParams.desiredState, + (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.desiredState ); + + regReadIntegerParameter(pAdapter, &STRBeaconFilterStored, + DEF_NUM_STORED_FILTERS, MIN_NUM_STORED_FILTERS, MAX_NUM_STORED_FILTERS, + sizeof p->siteMgrInitParams.beaconFilterParams.numOfStored, + (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.numOfStored ); + + /*Read the beacon filter IE table*/ + /*Read the size of the table*/ + regReadIntegerParameter(pAdapter, &STRBeaconIETableSize, + BEACON_FILTER_IE_TABLE_DEF_SIZE, BEACON_FILTER_IE_TABLE_MIN_SIZE, + BEACON_FILTER_IE_TABLE_MAX_SIZE, + sizeof p->siteMgrInitParams.beaconFilterParams.IETableSize, + (TI_UINT8*)(&p->siteMgrInitParams.beaconFilterParams.IETableSize) ); + + tmpIeTableSize = p->siteMgrInitParams.beaconFilterParams.IETableSize; + + /*Read the number of elements in the table ( this is because 221 has 5 values following it )*/ + regReadIntegerParameter(pAdapter, &STRBeaconIETableNumOfElem, + DEF_BEACON_FILTER_IE_TABLE_NUM, BEACON_FILTER_IE_TABLE_MIN_NUM, + BEACON_FILTER_IE_TABLE_MAX_NUM, + sizeof p->siteMgrInitParams.beaconFilterParams.numOfElements, + (TI_UINT8*)(&p->siteMgrInitParams.beaconFilterParams.numOfElements) ); + + /*printk("\n OsRgstr tmpIeTableSize = %d numOfElems = %d" , tmpIeTableSize , p->siteMgrInitParams.beaconFilterParams.numOfElements) ;*/ + strSize = 3 * tmpIeTableSize - 1 ; /*includes spaces between bytes*/ + if ( ( tmpIeTableSize > 0 ) && ( tmpIeTableSize <= BEACON_FILTER_IE_TABLE_MAX_SIZE) ) + { + TI_UINT8 *staBeaconFilterIETable; + + staBeaconFilterIETable = os_memoryAlloc(pAdapter, BEACON_FILTER_STRING_MAX_LEN); + if (staBeaconFilterIETable) { + regReadStringParameter(pAdapter, &STRBeaconIETable , + (TI_INT8*)(defBeaconIETable), strSize, + (TI_UINT8*)staBeaconFilterIETable, &strSize); + + regConvertStringtoBeaconIETable(staBeaconFilterIETable, (TI_UINT8*)&p->siteMgrInitParams.beaconFilterParams.IETable[0]/*(TI_UINT8*)&(tmpIeTable[0] )*/, tmpIeTableSize); + os_memoryFree(pAdapter, staBeaconFilterIETable, BEACON_FILTER_STRING_MAX_LEN); + } + } + + /* MAC ADDRESSES FILTER*/ + regReadIntegerParameter(pAdapter, &STRFilterEnabled, + DEF_FILTER_ENABLE_VALUE, MIN_FILTER_ENABLE_VALUE, + MAX_FILTER_ENABLE_VALUE, + sizeof p->twdInitParams.tMacAddrFilter.isFilterEnabled, + (TI_UINT8*) &p->twdInitParams.tMacAddrFilter.isFilterEnabled); + + regReadIntegerParameter(pAdapter, &STRnumGroupAddrs, + NUM_GROUP_ADDRESS_VALUE_DEF, NUM_GROUP_ADDRESS_VALUE_MIN, + NUM_GROUP_ADDRESS_VALUE_MAX, + sizeof p->twdInitParams.tMacAddrFilter.numOfMacAddresses, + (TI_UINT8*) &p->twdInitParams.tMacAddrFilter.numOfMacAddresses); + + /*printk("\nOsRgstry Num Of Group Addr:%d \n" , p->twdInitParams.tMacAddrFilter.numOfMacAddresses) ;*/ + { + TI_UINT8 defStaMacAddress1[]= "11 11 12 13 14 15"; + TI_UINT8 defStaMacAddress2[]= "12 21 22 23 24 25"; + TI_UINT8 defStaMacAddress3[]= "13 31 32 33 34 35"; + TI_UINT8 defStaMacAddress4[]= "14 41 42 43 44 45"; + TI_UINT8 defStaMacAddress5[]= "15 51 52 53 54 55"; + TI_UINT8 defStaMacAddress6[]= "16 61 62 63 64 65"; + TI_UINT8 defStaMacAddress7[]= "17 71 72 73 74 75"; + int macIndex ; /*used for group address filtering*/ + + macIndex = p->twdInitParams.tMacAddrFilter.numOfMacAddresses - 1; + switch( macIndex ) + { + case 7: + { + + regReadStringParameter(pAdapter, &STRGroup_addr7, + (TI_INT8*)(defStaMacAddress7), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[7]); + --macIndex; + } + + case 6: + { + + regReadStringParameter(pAdapter, &STRGroup_addr6, + (TI_INT8*)(defStaMacAddress6), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[6]); + --macIndex; + } + + case 5: + { + + regReadStringParameter(pAdapter, &STRGroup_addr5, + (TI_INT8*)(defStaMacAddress5), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[5]); + --macIndex; + } + + case 4: + { + + regReadStringParameter(pAdapter, &STRGroup_addr4, + (TI_INT8*)(defStaMacAddress4), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[4]); + --macIndex; + } + + case 3: + { + + regReadStringParameter(pAdapter, &STRGroup_addr3, + (TI_INT8*)(defStaMacAddress3), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress, (TI_UINT8*)&p->twdInitParams.tMacAddrFilter.macAddrTable[3]); + --macIndex; + } + + case 2: + { + + regReadStringParameter(pAdapter, &STRGroup_addr2, + (TI_INT8*)(defStaMacAddress2), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[2]); + --macIndex; + } + + case 1: + { + + regReadStringParameter(pAdapter, &STRGroup_addr1, + (TI_INT8*)(defStaMacAddress1), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[1]); + --macIndex; + } + + case 0: + { + + regReadStringParameter(pAdapter, &STRGroup_addr0, + (TI_INT8*)(defStaMacAddress0), REG_MAC_ADDR_STR_LEN, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + regConvertStringtoMACAddress(staMACAddress,(TI_UINT8*) &p->twdInitParams.tMacAddrFilter.macAddrTable[0]); + } + + default: + { + + } + } + } + + /************************/ + /* Read severity table */ + /**********************/ + + regReadStringParameter(pAdapter, &STR_ReportSeverityTable, + (TI_INT8*)reportSeverityTableDefaults, + (TI_UINT8)REPORT_SEVERITY_MAX, + (TI_UINT8*)p->tReport.aSeverityTable, + (TI_UINT8*)&reportSeverityTableLen); + + + /***********************/ + /* Read modules table */ + /*********************/ + { + TI_UINT8 *reportModuleTableDefaults; + TI_UINT16 reportModuleTableLen; + + reportModuleTableDefaults = os_memoryAlloc(pAdapter, REPORT_FILES_NUM); + if (!reportModuleTableDefaults) + return; + + /*set all report modules.as default*/ + memset(reportModuleTableDefaults, '1', REPORT_FILES_NUM ); + + regReadStringParameter(pAdapter, &STR_ReportModuleTable, + (TI_INT8*)reportModuleTableDefaults, + (TI_UINT8)REPORT_FILES_NUM, + (TI_UINT8*)p->tReport.aFileEnable, + (TI_UINT8*)&reportModuleTableLen); + os_memoryFree(pAdapter, reportModuleTableDefaults, REPORT_FILES_NUM); + } + /* rate Policy Params */ + regReadIntegerParameter(pAdapter, &STRRatePolicyUserShortRetryLimit, + CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_DEF, + CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_MIN, + CTRL_DATA_RATE_POLICY_USER_SHORT_RETRY_LIMIT_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTxRatePolicy.shortRetryLimit, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTxRatePolicy.shortRetryLimit); + + regReadIntegerParameter(pAdapter, &STRRatePolicyUserLongRetryLimit, + CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_DEF, + CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_MIN, + CTRL_DATA_RATE_POLICY_USER_LONG_RETRY_LIMIT_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTxRatePolicy.longRetryLimit, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTxRatePolicy.longRetryLimit); + + regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskCck, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_CCK_DEF, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX, + sizeof p->ctrlDataInitParams.policyEnabledRatesMaskCck, + (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskCck); + + regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdm, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDM_DEF, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX, + sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdm, + (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdm); + + regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdmA, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDMA_DEF, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX, + sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdmA, + (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdmA); + + regReadIntegerParameterHex (pAdapter, &STRRatePolicyUserEnabledRatesMaskOfdmN, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_OFDMN_DEF, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MIN, + CTRL_DATA_RATE_POLICY_USER_EN_DIS_MASK_MAX, + sizeof p->ctrlDataInitParams.policyEnabledRatesMaskOfdmN, + (TI_UINT8*)&p->ctrlDataInitParams.policyEnabledRatesMaskOfdmN); + + + regReadIntegerParameter(pAdapter, &STRRxEnergyDetection, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->twdInitParams.tGeneral.halCtrlRxEnergyDetection, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxEnergyDetection); + + regReadIntegerParameter(pAdapter, &STRTxEnergyDetection, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->twdInitParams.tGeneral.halCtrlTxEnergyDetection, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlTxEnergyDetection); + + regReadIntegerParameter(pAdapter, &STRTddCalibrationInterval, + 300, 1, 0xFFFFFFFF, + sizeof p->twdInitParams.tGeneral.tddRadioCalTimout, + (TI_UINT8*)&p->twdInitParams.tGeneral.tddRadioCalTimout); + + regReadIntegerParameter(pAdapter, &STRCrtCalibrationInterval, + 2, 1, 0xFFFFFFFF, + sizeof p->twdInitParams.tGeneral.CrtRadioCalTimout, + (TI_UINT8*)&p->twdInitParams.tGeneral.CrtRadioCalTimout); + + regReadIntegerParameter(pAdapter, &STRMacClockRate, + 80, 0, 255, + sizeof p->twdInitParams.tGeneral.halCtrlMacClock, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMacClock); + + regReadIntegerParameter(pAdapter, &STRArmClockRate, + 80, 0, 255, + sizeof p->twdInitParams.tGeneral.halCtrlArmClock, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlArmClock); + + regReadIntegerParameter(pAdapter, &STRg80211DraftNumber, + DRAFT_6_AND_LATER, DRAFT_5_AND_EARLIER, DRAFT_6_AND_LATER, + sizeof p->siteMgrInitParams.siteMgrUseDraftNum, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrUseDraftNum); + + regReadIntegerParameter(pAdapter, &STRTraceBufferSize, + /*1024, 0, 1024, sizeof(TI_UINT32), */ + 16, 16, 16, + sizeof p->twdInitParams.tGeneral.TraceBufferSize, + (TI_UINT8*)&p->twdInitParams.tGeneral.TraceBufferSize); + + regReadIntegerParameter(pAdapter, &STRPrintTrace, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->twdInitParams.tGeneral.bDoPrint, + (TI_UINT8*)&p->twdInitParams.tGeneral.bDoPrint); + + regReadIntegerParameter(pAdapter, &STRFirmwareDebug, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->twdInitParams.tGeneral.halCtrlFirmwareDebug, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlFirmwareDebug); + + +#ifndef TIWLN_WINCE30 + regReadIntegerParameter(pAdapter, &STRHwACXAccessMethod, + TWD_HW_ACCESS_METHOD_DEF, TWD_HW_ACCESS_METHOD_MIN, + TWD_HW_ACCESS_METHOD_MAX, + sizeof p->twdInitParams.tGeneral.hwAccessMethod, + (TI_UINT8*)&p->twdInitParams.tGeneral.hwAccessMethod); +#else + /* Slave indirect*/ + p->twdInitParams.tGeneral.hwAccessMethod = 0; +#endif + regReadIntegerParameter(pAdapter, &STRMaxSitesFragCollect, + TWD_SITE_FRAG_COLLECT_DEF, TWD_SITE_FRAG_COLLECT_MIN, + TWD_SITE_FRAG_COLLECT_MAX, + sizeof p->twdInitParams.tGeneral.maxSitesFragCollect, + (TI_UINT8*)&p->twdInitParams.tGeneral.maxSitesFragCollect); + + regReadIntegerParameter(pAdapter, &STRBetEnable, + POWER_MGMNT_BET_ENABLE_DEF, POWER_MGMNT_BET_ENABLE_MIN, + POWER_MGMNT_BET_ENABLE_MAX, + sizeof p->PowerMgrInitParams.BetEnable, + (TI_UINT8*)&p->PowerMgrInitParams.BetEnable); + + regReadIntegerParameter(pAdapter, &STRBetMaxConsecutive, + POWER_MGMNT_BET_MAX_CONSC_DEF, POWER_MGMNT_BET_MAX_CONSC_MIN, + POWER_MGMNT_BET_MAX_CONSC_MAX, + sizeof p->PowerMgrInitParams.MaximumConsecutiveET, + (TI_UINT8*)&p->PowerMgrInitParams.MaximumConsecutiveET); + + /*--------------- Maximal time between full beacon reception ------------------*/ + regReadIntegerParameter(pAdapter, &STRMaxFullBeaconInterval, + POWER_MGMNT_MAX_FULL_BEACON_DEF, POWER_MGMNT_MAX_FULL_BEACON_MIN, + POWER_MGMNT_MAX_FULL_BEACON_MAX, + sizeof p->PowerMgrInitParams.MaximalFullBeaconReceptionInterval, + (TI_UINT8*)&p->PowerMgrInitParams.MaximalFullBeaconReceptionInterval); + + regReadIntegerParameter(pAdapter, &STRBetEnableThreshold, + POWER_MGMNT_BET_DISABLE_THRESHOLD_DEF, POWER_MGMNT_BET_DISABLE_THRESHOLD_MIN, + POWER_MGMNT_BET_DISABLE_THRESHOLD_MAX, + sizeof p->PowerMgrInitParams.BetEnableThreshold, + (TI_UINT8*)&p->PowerMgrInitParams.BetEnableThreshold); + + regReadIntegerParameter(pAdapter, &STRBetDisableThreshold, + HAL_CTRL_BET_DISABLE_THRESHOLD_DEF, HAL_CTRL_BET_DISABLE_THRESHOLD_MIN, + HAL_CTRL_BET_DISABLE_THRESHOLD_MAX, + sizeof p->PowerMgrInitParams.BetDisableThreshold, + (TI_UINT8*)&p->PowerMgrInitParams.BetDisableThreshold); + + regReadIntegerParameter(pAdapter, &STRTxFlashEnable, + TWD_TX_FLASH_ENABLE_DEF, TWD_TX_FLASH_ENABLE_MIN, + TWD_TX_FLASH_ENABLE_MAX, + sizeof p->twdInitParams.tGeneral.TxFlashEnable, + (TI_UINT8*)&p->twdInitParams.tGeneral.TxFlashEnable); + + + p->twdInitParams.tGeneral.beaconTemplateSize = sizeof(probeRspTemplate_t); + p->twdInitParams.tGeneral.probeRequestTemplateSize = sizeof(probeReqTemplate_t); + p->twdInitParams.tGeneral.probeResponseTemplateSize = sizeof(probeRspTemplate_t); + p->twdInitParams.tGeneral.nullTemplateSize = sizeof(nullDataTemplate_t); + p->twdInitParams.tGeneral.disconnTemplateSize = sizeof(disconnTemplate_t); + p->twdInitParams.tGeneral.PsPollTemplateSize = sizeof(psPollTemplate_t); + p->twdInitParams.tGeneral.qosNullDataTemplateSize = sizeof(QosNullDataTemplate_t); + + regReadIntegerParameter(pAdapter, + &STRBeaconRxTimeout, + BCN_RX_TIMEOUT_DEF_VALUE, + BCN_RX_TIMEOUT_MIN_VALUE, + BCN_RX_TIMEOUT_MAX_VALUE, + sizeof p->twdInitParams.tGeneral.BeaconRxTimeout, + (TI_UINT8*)&p->twdInitParams.tGeneral.BeaconRxTimeout); + + regReadIntegerParameter(pAdapter, + &STRBroadcastRxTimeout, + BROADCAST_RX_TIMEOUT_DEF_VALUE, + BROADCAST_RX_TIMEOUT_MIN_VALUE, + BROADCAST_RX_TIMEOUT_MAX_VALUE, + sizeof p->twdInitParams.tGeneral.BroadcastRxTimeout, + (TI_UINT8*)&p->twdInitParams.tGeneral.BroadcastRxTimeout); + + regReadIntegerParameter(pAdapter, + &STRRxBroadcastInPs, + RX_BROADCAST_IN_PS_DEF_VALUE, + RX_BROADCAST_IN_PS_MIN_VALUE, + RX_BROADCAST_IN_PS_MAX_VALUE, + sizeof p->twdInitParams.tGeneral.RxBroadcastInPs, + (TI_UINT8*)&p->twdInitParams.tGeneral.RxBroadcastInPs); + + regReadIntegerParameter(pAdapter, &STRCalibrationChannel2_4, + TWD_CALIBRATION_CHANNEL_2_4_DEF, TWD_CALIBRATION_CHANNEL_2_4_MIN, + TWD_CALIBRATION_CHANNEL_2_4_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlCalibrationChannel2_4, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlCalibrationChannel2_4); + + regReadIntegerParameter(pAdapter, &STRCalibrationChannel5_0, + TWD_CALIBRATION_CHANNEL_5_0_DEF, TWD_CALIBRATION_CHANNEL_5_0_MIN, + TWD_CALIBRATION_CHANNEL_5_0_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlCalibrationChannel5_0, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlCalibrationChannel5_0); + + regReadIntegerParameter(pAdapter, + &STRConsecutivePsPollDeliveryFailureThreshold, + CONSECUTIVE_PS_POLL_FAILURE_DEF, + CONSECUTIVE_PS_POLL_FAILURE_MIN, + CONSECUTIVE_PS_POLL_FAILURE_MAX, + sizeof p->twdInitParams.tGeneral.ConsecutivePsPollDeliveryFailureThreshold, + (TI_UINT8*)&p->twdInitParams.tGeneral.ConsecutivePsPollDeliveryFailureThreshold); + + + regReadIntegerParameter(pAdapter, &STRdot11RTSThreshold, + TWD_RTS_THRESHOLD_DEF, TWD_RTS_THRESHOLD_MIN, + TWD_RTS_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlRtsThreshold, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRtsThreshold); + + regReadIntegerParameter(pAdapter, &STRRxDisableBroadcast, + TWD_RX_DISABLE_BROADCAST_DEF, TWD_RX_DISABLE_BROADCAST_MIN, + TWD_RX_DISABLE_BROADCAST_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlRxDisableBroadcast, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxDisableBroadcast); + + regReadIntegerParameter(pAdapter, &STRRecoveryEnable, + TWD_RECOVERY_ENABLE_DEF, TWD_RECOVERY_ENABLE_MIN, + TWD_RECOVERY_ENABLE_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlRecoveryEnable, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRecoveryEnable); + + p->healthMonitorInitParams.FullRecoveryEnable = (TI_BOOL)p->twdInitParams.tGeneral.halCtrlRecoveryEnable; + + regReadIntegerParameter(pAdapter, &STRdot11FragThreshold, + TWD_FRAG_THRESHOLD_DEF, TWD_FRAG_THRESHOLD_MIN, + TWD_FRAG_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlFragThreshold, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlFragThreshold); + + regReadIntegerParameter(pAdapter, &STRdot11MaxTxMSDULifetime, + TWD_MAX_TX_MSDU_LIFETIME_DEF, TWD_MAX_TX_MSDU_LIFETIME_MIN, + TWD_MAX_TX_MSDU_LIFETIME_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlMaxTxMsduLifetime, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMaxTxMsduLifetime); + + regReadIntegerParameter(pAdapter, &STRdot11MaxReceiveLifetime, + TWD_MAX_RX_MSDU_LIFETIME_DEF, TWD_MAX_RX_MSDU_LIFETIME_MIN, + TWD_MAX_RX_MSDU_LIFETIME_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlMaxRxMsduLifetime, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlMaxRxMsduLifetime); + + regReadIntegerParameter(pAdapter, &STRdot11RateFallBackRetryLimit, + TWD_RATE_FB_RETRY_LIMIT_DEF, TWD_RATE_FB_RETRY_LIMIT_MIN, + TWD_RATE_FB_RETRY_LIMIT_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlRateFallbackRetry, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRateFallbackRetry); + + regReadIntegerParameter(pAdapter, &STRListenInterval, + TWD_LISTEN_INTERVAL_DEF, TWD_LISTEN_INTERVAL_MIN, + TWD_LISTEN_INTERVAL_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlListenInterval, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlListenInterval); + + regReadIntegerParameter(pAdapter, &STRdot11TxAntenna, + TWD_TX_ANTENNA_DEF, TWD_TX_ANTENNA_MIN, + TWD_TX_ANTENNA_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlTxAntenna, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlTxAntenna); + /* reverse tx antenna value - ACX and utility have reversed values */ + if (p->twdInitParams.tGeneral.halCtrlTxAntenna == TX_ANTENNA_2) + p->twdInitParams.tGeneral.halCtrlTxAntenna = TX_ANTENNA_1; + else + p->twdInitParams.tGeneral.halCtrlTxAntenna = TX_ANTENNA_2; + + + regReadIntegerParameter(pAdapter, &STRdot11RxAntenna, + TWD_RX_ANTENNA_DEF, TWD_RX_ANTENNA_MIN, + TWD_RX_ANTENNA_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlRxAntenna, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlRxAntenna); + + + regReadIntegerParameter(pAdapter, &STRTxCompleteThreshold, + TWD_TX_CMPLT_THRESHOLD_DEF, TWD_TX_CMPLT_THRESHOLD_MIN, + TWD_TX_CMPLT_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.TxCompletePacingThreshold, + (TI_UINT8*)&(p->twdInitParams.tGeneral.TxCompletePacingThreshold)); + + regReadIntegerParameter(pAdapter, &STRTxCompleteTimeout, + TWD_TX_CMPLT_TIMEOUT_DEF, TWD_TX_CMPLT_TIMEOUT_MIN, + TWD_TX_CMPLT_TIMEOUT_MAX, + sizeof p->twdInitParams.tGeneral.TxCompletePacingTimeout, + (TI_UINT8*)&(p->twdInitParams.tGeneral.TxCompletePacingTimeout)); + + regReadIntegerParameter(pAdapter, &STRRxInterruptThreshold, + TWD_RX_INTR_THRESHOLD_DEF, TWD_RX_INTR_THRESHOLD_MIN, + TWD_RX_INTR_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.RxIntrPacingThreshold, + (TI_UINT8*)&(p->twdInitParams.tGeneral.RxIntrPacingThreshold)); + + regReadIntegerParameter(pAdapter, &STRRxInterruptTimeout, + TWD_RX_INTR_TIMEOUT_DEF, TWD_RX_INTR_TIMEOUT_MIN, + TWD_RX_INTR_TIMEOUT_MAX, + sizeof p->twdInitParams.tGeneral.RxIntrPacingTimeout, + (TI_UINT8*)&(p->twdInitParams.tGeneral.RxIntrPacingTimeout)); + + + regReadIntegerParameter(pAdapter, &STRRxAggregationPktsLimit, + TWD_RX_AGGREG_PKTS_LIMIT_DEF, TWD_RX_AGGREG_PKTS_LIMIT_MIN, + TWD_RX_AGGREG_PKTS_LIMIT_MAX, + sizeof p->twdInitParams.tGeneral.uRxAggregPktsLimit, + (TI_UINT8*)&(p->twdInitParams.tGeneral.uRxAggregPktsLimit)); + + + regReadIntegerParameter(pAdapter, &STRdot11DesiredChannel, + SITE_MGR_CHANNEL_DEF, SITE_MGR_CHANNEL_MIN, SITE_MGR_CHANNEL_MAX, + sizeof p->siteMgrInitParams.siteMgrDesiredChannel, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredChannel); + + /* NOTE: desired BSSID and SSID (and BSS type, later on) are currently set both to the SME and the site manager!!! */ + { + TI_UINT8 bssidBroadcast[MAC_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + MAC_COPY (p->siteMgrInitParams.siteMgrDesiredBSSID, bssidBroadcast); + MAC_COPY (p->tSmeModifiedInitParams.tDesiredBssid, bssidBroadcast); + } + + { + static char dummySsidString[MAX_SSID_LEN]; + + /* + Default SSID should be non-Valid SSID, hence the STA will not try to connect + */ + for(loopIndex = 0; loopIndex < MAX_SSID_LEN; loopIndex++) + dummySsidString[loopIndex] = (loopIndex+1); + + regReadStringParameter(pAdapter, &STRdot11DesiredSSID, + (TI_INT8*)dummySsidString, + (TI_UINT8)MAX_SSID_LEN, + (TI_UINT8*)p->siteMgrInitParams.siteMgrDesiredSSID.str, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredSSID.len); + + /* in case no SSID desired at the init file set dummy len */ + for(loopIndex = 0; loopIndex < MAX_SSID_LEN; loopIndex++) + { + if(dummySsidString[loopIndex] != p->siteMgrInitParams.siteMgrDesiredSSID.str[loopIndex]) + break; + } + + p->siteMgrInitParams.siteMgrDesiredSSID.len = (TI_UINT8)loopIndex; + } + + NdisMoveMemory(&p->tSmeModifiedInitParams.tDesiredSsid, + &p->siteMgrInitParams.siteMgrDesiredSSID, + sizeof(TSsid)); + + regReadIntegerParameter(pAdapter, &STRdot11DesiredNetworkType, + SITE_MGR_DOT_11_MODE_DEF, SITE_MGR_DOT_11_MODE_MIN, SITE_MGR_DOT_11_MODE_MAX, + sizeof p->siteMgrInitParams.siteMgrDesiredDot11Mode, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredDot11Mode); + + regReadIntegerParameter(pAdapter, &STRdot11SlotTime, + PHY_SLOT_TIME_SHORT, PHY_SLOT_TIME_LONG, PHY_SLOT_TIME_SHORT, + sizeof p->siteMgrInitParams.siteMgrDesiredSlotTime, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredSlotTime); + + regReadIntegerParameter(pAdapter, &STRdot11RtsCtsProtection, + 0, 0, 1, + sizeof p->ctrlDataInitParams.ctrlDataDesiredCtsRtsStatus, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataDesiredCtsRtsStatus); + + regReadIntegerParameter(pAdapter, &STRdot11IbssProtection, + ERP_PROTECTION_STANDARD, ERP_PROTECTION_NONE, ERP_PROTECTION_STANDARD, + sizeof p->ctrlDataInitParams.ctrlDataDesiredIbssProtection, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataDesiredIbssProtection); + + /* When working in band A, minimum channel is 36 and not 1*/ + if (p->siteMgrInitParams.siteMgrDesiredDot11Mode == DOT11_A_MODE) + { + if (p->siteMgrInitParams.siteMgrDesiredChannel < SITE_MGR_CHANNEL_A_MIN) + p->siteMgrInitParams.siteMgrDesiredChannel = SITE_MGR_CHANNEL_A_MIN; + } + + { + static TI_UINT32 Freq2ChannelTable[] = {0,2412000,2417000,2422000,2427000,2432000,2437000, + 2442000,2447000,2452000,2457000, + 2462000,2467000,2472000,2484000}; + + memcpy(p->siteMgrInitParams.siteMgrFreq2ChannelTable, + Freq2ChannelTable, + sizeof(Freq2ChannelTable)); + } + + /* read TX rates from registry */ + readRates(pAdapter, p); + + /* Note: desired BSS type is set both to the SME and site manager */ + regReadIntegerParameter(pAdapter, &STRdot11DesiredBSSType, + SITE_MGR_BSS_TYPE_DEF, BSS_INDEPENDENT, BSS_ANY, + sizeof p->siteMgrInitParams.siteMgrDesiredBSSType, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredBSSType); + p->tSmeModifiedInitParams.eDesiredBssType = p->siteMgrInitParams.siteMgrDesiredBSSType; + + regReadIntegerParameter(pAdapter, &STRdot11BeaconPeriod, + SITE_MGR_BEACON_INTERVAL_DEF, SITE_MGR_BEACON_INTERVAL_MIN, + SITE_MGR_BEACON_INTERVAL_MAX, + sizeof p->siteMgrInitParams.siteMgrDesiredBeaconInterval, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredBeaconInterval); + + regReadIntegerParameter(pAdapter, &STRdot11ShortPreambleInvoked, + SITE_MGR_PREAMBLE_TYPE_DEF, PREAMBLE_LONG, PREAMBLE_SHORT, + sizeof p->siteMgrInitParams.siteMgrDesiredPreambleType, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrDesiredPreambleType); + + regReadIntegerParameter(pAdapter, &STRReAuthActivePriority, + POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_DEF_VALUE, POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_MIN_VALUE, + POWER_MGMNT_RE_AUTH_ACTIVE_PRIO_MAX_VALUE, + sizeof p->PowerMgrInitParams.reAuthActivePriority, + (TI_UINT8*)&p->PowerMgrInitParams.reAuthActivePriority); + + regReadIntegerParameter(pAdapter, &STRExternalMode, + SITE_MGR_EXTERNAL_MODE_DEF, SITE_MGR_EXTERNAL_MODE_MIN, + SITE_MGR_EXTERNAL_MODE_MAX, + sizeof p->siteMgrInitParams.siteMgrExternalConfiguration, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrExternalConfiguration); + + regReadIntegerParameter(pAdapter, &STRWiFiAdHoc, + SITE_MGR_WiFiAdHoc_DEF, SITE_MGR_WiFiAdHoc_MIN, SITE_MGR_WiFiAdHoc_MAX, + sizeof p->siteMgrInitParams.siteMgrWiFiAdhoc, + (TI_UINT8*)&p->siteMgrInitParams.siteMgrWiFiAdhoc); + + regReadIntegerParameter(pAdapter, &STRWiFiWmmPS, + WIFI_WMM_PS_DEF, WIFI_WMM_PS_MIN, WIFI_WMM_PS_MAX, + sizeof p->twdInitParams.tGeneral.WiFiWmmPS, + (TI_UINT8*)&p->twdInitParams.tGeneral.WiFiWmmPS); + + regReadIntegerParameter(pAdapter, &STRConnSelfTimeout, + CONN_SELF_TIMEOUT_DEF, CONN_SELF_TIMEOUT_MIN, CONN_SELF_TIMEOUT_MAX, + sizeof p->connInitParams.connSelfTimeout, + (TI_UINT8*)&p->connInitParams.connSelfTimeout); + + regReadIntegerParameter(pAdapter, &STRdot11AuthRespTimeout, + AUTH_RESPONSE_TIMEOUT_DEF, AUTH_RESPONSE_TIMEOUT_MIN, AUTH_RESPONSE_TIMEOUT_MAX, + sizeof p->authInitParams.authResponseTimeout, + (TI_UINT8*)&p->authInitParams.authResponseTimeout); + + regReadIntegerParameter(pAdapter, &STRdot11MaxAuthRetry, + AUTH_MAX_RETRY_COUNT_DEF, AUTH_MAX_RETRY_COUNT_MIN, AUTH_MAX_RETRY_COUNT_MAX, + sizeof p->authInitParams.authMaxRetryCount, + (TI_UINT8*)&p->authInitParams.authMaxRetryCount); + + regReadIntegerParameter(pAdapter, &STRdot11AssocRespTimeout, + ASSOC_RESPONSE_TIMEOUT_DEF, ASSOC_RESPONSE_TIMEOUT_MIN, ASSOC_RESPONSE_TIMEOUT_MAX, + sizeof p->assocInitParams.assocResponseTimeout, + (TI_UINT8*)&p->assocInitParams.assocResponseTimeout); + + regReadIntegerParameter(pAdapter, &STRdot11MaxAssocRetry, + ASSOC_MAX_RETRY_COUNT_DEF, ASSOC_MAX_RETRY_COUNT_MIN, ASSOC_MAX_RETRY_COUNT_MAX, + sizeof p->assocInitParams.assocMaxRetryCount, + (TI_UINT8*)&p->assocInitParams.assocMaxRetryCount); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersEnabled, + RX_DATA_FILTERS_ENABLED_DEF, RX_DATA_FILTERS_ENABLED_MIN, RX_DATA_FILTERS_ENABLED_MAX, + sizeof p->rxDataInitParams.rxDataFiltersEnabled, + (TI_UINT8*)&p->rxDataInitParams.rxDataFiltersEnabled); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter1Offset, + RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX, + sizeof filterOffset, + (TI_UINT8*) &filterOffset); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter1Mask, + RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF, + (TI_UINT8*) filterMask, + (TI_UINT8*) &filterMaskLength); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter1Pattern, + RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF, + (TI_UINT8*) filterPattern, + (TI_UINT8*) &filterPatternLength); + + parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[0], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter2Offset, + RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX, + sizeof filterOffset, + (TI_UINT8*) &filterOffset); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter2Mask, + RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF, + (TI_UINT8*) filterMask, + (TI_UINT8*) &filterMaskLength); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter2Pattern, + RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF, + (TI_UINT8*) filterPattern, + (TI_UINT8*) &filterPatternLength); + + parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[1], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter3Offset, + RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX, + sizeof filterOffset, + (TI_UINT8*) &filterOffset); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter3Mask, + RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF, + (TI_UINT8*) filterMask, + (TI_UINT8*) &filterMaskLength); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter3Pattern, + RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF, + (TI_UINT8*) filterPattern, + (TI_UINT8*) &filterPatternLength); + + parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[2], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersFilter4Offset, + RX_DATA_FILTERS_FILTER_OFFSET_DEF, RX_DATA_FILTERS_FILTER_OFFSET_MIN, RX_DATA_FILTERS_FILTER_OFFSET_MAX, + sizeof filterOffset, + (TI_UINT8*) &filterOffset); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter4Mask, + RX_DATA_FILTERS_FILTER_MASK_DEF, RX_DATA_FILTERS_FILTER_MASK_LEN_DEF, + (TI_UINT8*) filterMask, + (TI_UINT8*) &filterMaskLength); + + regReadStringParameter(pAdapter, &STRRxDataFiltersFilter4Pattern, + RX_DATA_FILTERS_FILTER_PATTERN_DEF, RX_DATA_FILTERS_FILTER_PATTERN_LEN_DEF, + (TI_UINT8*) filterPattern, + (TI_UINT8*) &filterPatternLength); + + parse_filter_request(&p->rxDataInitParams.rxDataFilterRequests[3], filterOffset, filterMask, filterMaskLength, filterPattern, filterPatternLength); + + regReadIntegerParameter(pAdapter, &STRRxDataFiltersDefaultAction, + RX_DATA_FILTERS_DEFAULT_ACTION_DEF, RX_DATA_FILTERS_DEFAULT_ACTION_MIN, + RX_DATA_FILTERS_DEFAULT_ACTION_MAX, + sizeof p->rxDataInitParams.rxDataFiltersDefaultAction, + (TI_UINT8*)&p->rxDataInitParams.rxDataFiltersDefaultAction); + + regReadIntegerParameter(pAdapter, &STRReAuthActiveTimeout, + RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_DEF, RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_MIN, + RX_DATA_RE_AUTH_ACTIVE_TIMEOUT_MAX, + sizeof p->rxDataInitParams.reAuthActiveTimeout, + (TI_UINT8*)&p->rxDataInitParams.reAuthActiveTimeout); + + regReadIntegerParameter(pAdapter, &STRCreditCalcTimout, + TX_DATA_CREDIT_CALC_TIMOEUT_DEF, TX_DATA_CREDIT_CALC_TIMOEUT_MIN, + TX_DATA_CREDIT_CALC_TIMOEUT_MAX, + sizeof p->txDataInitParams.creditCalculationTimeout, + (TI_UINT8*)&p->txDataInitParams.creditCalculationTimeout); + + regReadIntegerParameter(pAdapter, &STRCreditCalcTimerEnabled, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->txDataInitParams.bCreditCalcTimerEnabled, + (TI_UINT8*)&p->txDataInitParams.bCreditCalcTimerEnabled); + + regReadIntegerParameter(pAdapter, &STRTrafficAdmControlTimeout, + TRAFFIC_ADM_CONTROL_TIMEOUT_DEF, TRAFFIC_ADM_CONTROL_TIMEOUT_MIN, + TRAFFIC_ADM_CONTROL_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlResponseTimeout, + (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlResponseTimeout); + + regReadIntegerParameter(pAdapter, &STRTrafficAdmControlUseFixedMsduSize, + TI_FALSE, TI_FALSE, TI_TRUE, + sizeof p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlUseFixedMsduSize, + (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlInitParams.trafficAdmCtrlUseFixedMsduSize); + + regReadIntegerParameter(pAdapter, &STRDesiredMaxSpLen, + QOS_MAX_SP_LEN_DEF, QOS_MAX_SP_LEN_MIN, + QOS_MAX_SP_LEN_MAX, + sizeof p->qosMngrInitParams.desiredMaxSpLen, + (TI_UINT8*)&p->qosMngrInitParams.desiredMaxSpLen); + + regReadIntegerParameter(pAdapter, &STRCwFromUserEnable, + QOS_CW_USER_ENABLE_DEF, QOS_CW_USER_ENABLE_MIN, + QOS_CW_USER_ENABLE_MAX, + sizeof p->qosMngrInitParams.bCwFromUserEnable, + (TI_UINT8*)&p->qosMngrInitParams.bCwFromUserEnable); + + regReadIntegerParameter(pAdapter, &STRDesireCwMin, + QOS_CW_CWMIN_DEF, QOS_CW_CWMIN_MIN, + QOS_CW_CWMIN_MAX, + sizeof p->qosMngrInitParams.uDesireCwMin, + (TI_UINT8*)&p->qosMngrInitParams.uDesireCwMin); + + regReadIntegerParameter(pAdapter, &STRDesireCwMax, + QOS_CW_CWMAX_DEF, QOS_CW_CWMAX_MIN, + QOS_CW_CWMAX_MAX, + sizeof p->qosMngrInitParams.uDesireCwMax, + (TI_UINT8*)&p->qosMngrInitParams.uDesireCwMax); + +/* SME Initialization Parameters */ +/* ==================================== */ + + regReadIntegerParameter(pAdapter, &STRSmeRadioOn, + TI_TRUE, TI_FALSE, TI_TRUE, + sizeof p->tSmeModifiedInitParams.bRadioOn, + (TI_UINT8*)&p->tSmeModifiedInitParams.bRadioOn); + regReadIntegerParameter(pAdapter, &STRSmeConnectMode, + CONNECT_MODE_AUTO, CONNECT_MODE_AUTO, CONNECT_MODE_MANUAL, + sizeof p->tSmeModifiedInitParams.eConnectMode, + (TI_UINT8*)&p->tSmeModifiedInitParams.eConnectMode); + + { + /* due to the fact that two following init keys has negative values, we read them as table */ + TI_UINT32 uEntriesNumber = 1; + + regReadIntegerTable(pAdapter ,&STRSmeScanRssiThreshold, + SME_SCAN_RSSI_THRESHOLD_DEF, sizeof(TI_INT8) * 3, + (TI_UINT8*)&p->tSmeInitParams.iRssiThreshold, NULL, &uEntriesNumber, + sizeof(TI_INT8),TI_FALSE); + + if ( (p->tSmeInitParams.iRssiThreshold < SME_SCAN_RSSI_THRESHOLD_MIN) || + (p->tSmeInitParams.iRssiThreshold > SME_SCAN_RSSI_THRESHOLD_MAX)) + { + p->tSmeInitParams.iRssiThreshold = SME_SCAN_RSSI_THRESHOLD_DEF_NUM; + } + + regReadIntegerTable(pAdapter ,&STRSmeScanSnrThreshold, + SME_SCAN_SNR_THRESHOLD_DEF, sizeof(TI_INT8), + (TI_UINT8*)&p->tSmeInitParams.iSnrThreshold, NULL, &uEntriesNumber, sizeof(TI_INT8),TI_FALSE); + + if ( (p->tSmeInitParams.iSnrThreshold < SME_SCAN_SNR_THRESHOLD_MIN) || + (p->tSmeInitParams.iSnrThreshold > SME_SCAN_SNR_THRESHOLD_MAX)) + { + p->tSmeInitParams.iSnrThreshold = SME_SCAN_SNR_THRESHOLD_DEF_NUM; + } + } + + + regReadIntegerParameter(pAdapter ,&STRRoamScanEnable, + 0, 0, 1, sizeof(p->tRoamScanMngrInitParams.RoamingScanning_2_4G_enable), + (TI_UINT8*)&p->tRoamScanMngrInitParams.RoamingScanning_2_4G_enable); + + regReadIntegerParameter(pAdapter, &STRSmeScanCycleNumber, + SME_SCAN_CYCLES_DEF, SME_SCAN_CYCLES_MIN, SME_SCAN_CYCLES_MAX, + sizeof p->tSmeInitParams.uCycleNum, + (TI_UINT8*)&p->tSmeInitParams.uCycleNum); + regReadIntegerParameter(pAdapter, &STRSmeScanMaxDwellTime, + SME_SCAN_MAX_DWELL_DEF, SME_SCAN_MAX_DWELL_MIN, SME_SCAN_MAX_DWELL_MAX, + sizeof p->tSmeInitParams.uMaxScanDuration, + (TI_UINT8*)&p->tSmeInitParams.uMaxScanDuration); + regReadIntegerParameter(pAdapter, &STRSmeScanMinDwellTime, + SME_SCAN_MIN_DWELL_DEF, SME_SCAN_MIN_DWELL_MIN, SME_SCAN_MIN_DWELL_MAX, + sizeof p->tSmeInitParams.uMinScanDuration, + (TI_UINT8*)&p->tSmeInitParams.uMinScanDuration); + regReadIntegerParameter(pAdapter, &STRSmeScanProbeRequestNumber, + SME_SCAN_PROBE_REQ_DEF, SME_SCAN_PROBE_REQ_MIN, SME_SCAN_PROBE_REQ_MAX, + sizeof p->tSmeInitParams.uProbeReqNum, + (TI_UINT8*)&p->tSmeInitParams.uProbeReqNum); + + { + TI_UINT32 *uSmeScanIntervalsTempList; + + uSmeScanIntervalsTempList = os_memoryAlloc(pAdapter, SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE * sizeof(TI_UINT32)); + if (!uSmeScanIntervalsTempList) { + return; + } + regReadIntegerTable(pAdapter, &STRSmeScanIntervals, SME_SCAN_INTERVALS_LIST_VAL_DEF, + SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE, + (TI_UINT8 *)uSmeScanIntervalsTempList, NULL, &uTempEntriesCount, + sizeof (TI_UINT32),TI_FALSE); + /* sanity check */ + if (uTempEntriesCount > PERIODIC_SCAN_MAX_INTERVAL_NUM) + { + uTempEntriesCount = PERIODIC_SCAN_MAX_INTERVAL_NUM; + } + /* convert from TI_UINT8 to TI_UINT32 */ + for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++) + { + p->tSmeInitParams.uScanIntervals[ uIndex ] = uSmeScanIntervalsTempList[ uIndex ]; + } + os_memoryFree(pAdapter, uSmeScanIntervalsTempList, SME_SCAN_INTERVALS_LIST_STRING_MAX_SIZE * sizeof(TI_UINT32)); + } + { + TI_UINT8 *uSmeTempList; + TI_UINT32 uSmeGChannelsCount; + + uSmeTempList = os_memoryAlloc(pAdapter, SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE); + if (!uSmeTempList) { + return; + } + regReadIntegerTable(pAdapter, &STRSmeScanGChannels, SME_SCAN_CHANNELS_LIST_G_VAL_DEF, + SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE, + (TI_UINT8 *)uSmeTempList, NULL, &uTempEntriesCount, + sizeof (TI_UINT8),TI_FALSE); + + + /* convert to channel list */ + for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++) + { + p->tSmeInitParams.tChannelList[ uIndex ].eBand = RADIO_BAND_2_4_GHZ; + p->tSmeInitParams.tChannelList[ uIndex ].uChannel = uSmeTempList[ uIndex ]; + } + uSmeGChannelsCount = uTempEntriesCount; + + /* + * Add A_MODE channels to scan list only if it enabled + * NOTE: Don't use empty channel list string + */ + if ((p->siteMgrInitParams.siteMgrDesiredDot11Mode == DOT11_A_MODE) || + (p->siteMgrInitParams.siteMgrDesiredDot11Mode == DOT11_DUAL_MODE)) + { + regReadIntegerTable(pAdapter, &STRSmeScanAChannels, SME_SCAN_CHANNELS_LIST_A_VAL_DEF, + SME_SCAN_CHANNELS_LIST_A_STRING_MAX_SIZE, + (TI_UINT8*)&uSmeTempList, NULL, &uTempEntriesCount, + sizeof (TI_UINT8),TI_FALSE); + + /* convert to channel list */ + for (uIndex = 0; uIndex < uTempEntriesCount; uIndex++) + { + p->tSmeInitParams.tChannelList[ uSmeGChannelsCount + uIndex ].eBand = RADIO_BAND_5_0_GHZ; + p->tSmeInitParams.tChannelList[ uSmeGChannelsCount + uIndex ].uChannel = uSmeTempList[ uIndex ]; + } + + p->tSmeInitParams.uChannelNum = uSmeGChannelsCount + uIndex; + } + else + { + p->tSmeInitParams.uChannelNum = uSmeGChannelsCount; + } + os_memoryFree(pAdapter, uSmeTempList, SME_SCAN_CHANNELS_LIST_G_STRING_MAX_SIZE); + } + + regReadIntegerParameter(pAdapter, &STRdot11AuthenticationMode, + RSN_AUTH_SUITE_DEF, RSN_AUTH_SUITE_MIN, RSN_AUTH_SUITE_MAX, + sizeof p->rsnInitParams.authSuite, + (TI_UINT8*)&p->rsnInitParams.authSuite); + + /* Soft Gemini Section */ + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistEnable, + SOFT_GEMINI_ENABLED_DEF, SOFT_GEMINI_ENABLED_MIN, SOFT_GEMINI_ENABLED_MAX, + sizeof p->SoftGeminiInitParams.SoftGeminiEnable, + (TI_UINT8*)&p->SoftGeminiInitParams.SoftGeminiEnable); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsBtLoadRatio, + SOFT_GEMINI_PARAMS_LOAD_RATIO_DEF, SOFT_GEMINI_PARAMS_LOAD_RATIO_MIN, SOFT_GEMINI_PARAMS_LOAD_RATIO_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_LOAD_RATIO], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_LOAD_RATIO]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsAutoPsMode, + SOFT_GEMINI_PARAMS_AUTO_PS_MODE_DEF, SOFT_GEMINI_PARAMS_AUTO_PS_MODE_MIN, SOFT_GEMINI_PARAMS_AUTO_PS_MODE_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_PS_MODE], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_PS_MODE]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsAutoScanProbeReqPerc, + SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_DEF, SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_MIN, SOFT_GEMINI_PARAMS_AUTO_SCAN_PROBE_REQ_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_PROBE_REQ], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_PROBE_REQ]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsAutoScanWindowPerc, + SOFT_GEMINI_PARAMS_AUTO_SCAN_WINDOW_DEF, SOFT_GEMINI_PARAMS_AUTO_SCAN_WINDOW_MIN, SOFT_GEMINI_PARAMS_AUTO_SCAN_WINDOW_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_WINDOW], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_WINDOW]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistParamsAutoScanMaxTime, + SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME_DEF, SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME_MIN, SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistPerThreshold, + SOFT_GEMINI_PARAMS_PER_THRESHOLD_DEF, SOFT_GEMINI_PARAMS_PER_THRESHOLD_MIN, SOFT_GEMINI_PARAMS_PER_THRESHOLD_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_PER_THRESHOLD], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_PER_THRESHOLD]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistNfsSampleInterval, + SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_DEF, SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_MIN, SOFT_GEMINI_PARAMS_NFS_SAMPLE_INTERVAL_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAntennaConfiguration, + SOFT_GEMINI_ANTENNA_CONFIGURATION_DEF, SOFT_GEMINI_ANTENNA_CONFIGURATION_MIN, SOFT_GEMINI_ANTENNA_CONFIGURATION_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ANTENNA_CONFIGURATION], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ANTENNA_CONFIGURATION]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexMaxConsecutiveBeaconMissPrecent, + SOFT_GEMINI_BEACON_MISS_PERCENT_DEF, SOFT_GEMINI_BEACON_MISS_PERCENT_MIN, SOFT_GEMINI_BEACON_MISS_PERCENT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BEACON_MISS_PERCENT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_BEACON_MISS_PERCENT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAPRateAdapationThr, + SOFT_GEMINI_RATE_ADAPT_THRESH_DEF, SOFT_GEMINI_RATE_ADAPT_THRESH_MIN, SOFT_GEMINI_RATE_ADAPT_THRESH_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistcoexAPRateAdapationSnr, + SOFT_GEMINI_RATE_ADAPT_SNR_DEF, SOFT_GEMINI_RATE_ADAPT_SNR_MIN, SOFT_GEMINI_RATE_ADAPT_SNR_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_SNR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RATE_ADAPT_SNR]); + + + /* BR section */ + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMinBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMinBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR]); + + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMaxBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMaxBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR]); + + + regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclMasterBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR]); + + + regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclSlaveBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR]); + + + + /* EDR section */ + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMinEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMinEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclMasterMaxEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdAclSlaveMaxEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclMasterEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanPsMaxBtAclSlaveEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistRxt, + SOFT_GEMINI_RXT_DEF, SOFT_GEMINI_RXT_MIN, SOFT_GEMINI_RXT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RXT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_RXT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistTxt, + SOFT_GEMINI_TXT_DEF, SOFT_GEMINI_TXT_MIN, SOFT_GEMINI_TXT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TXT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TXT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistAdaptiveRxtTxt, + SOFT_GEMINI_ADAPTIVE_RXT_TXT_DEF, SOFT_GEMINI_ADAPTIVE_RXT_TXT_MIN, SOFT_GEMINI_ADAPTIVE_RXT_TXT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ADAPTIVE_RXT_TXT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_ADAPTIVE_RXT_TXT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistPsPollTimeout, + SOFT_GEMINI_PS_POLL_TIMEOUT_DEF, SOFT_GEMINI_PS_POLL_TIMEOUT_MIN, SOFT_GEMINI_PS_POLL_TIMEOUT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PS_POLL_TIMEOUT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_PS_POLL_TIMEOUT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistUpsdTimeout, + SOFT_GEMINI_UPSD_TIMEOUT_DEF, SOFT_GEMINI_UPSD_TIMEOUT_MIN, SOFT_GEMINI_UPSD_TIMEOUT_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_UPSD_TIMEOUT], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_UPSD_TIMEOUT]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMasterMinEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclSlaveMinEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR]); + + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMasterMaxEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclSlaveMaxEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR]); + + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclMasterEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclSlaveEDR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMinBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveBtAclMaxBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexistWlanActiveMaxBtAclBR, + 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, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp1, + SOFT_GEMINI_TEMP_PARAM_1_DEF, SOFT_GEMINI_TEMP_PARAM_1_MIN, SOFT_GEMINI_TEMP_PARAM_1_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_1], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_1]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp2, + SOFT_GEMINI_TEMP_PARAM_2_DEF, SOFT_GEMINI_TEMP_PARAM_2_MIN, SOFT_GEMINI_TEMP_PARAM_2_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_2], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_2]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp3, + SOFT_GEMINI_TEMP_PARAM_3_DEF, SOFT_GEMINI_TEMP_PARAM_3_MIN, SOFT_GEMINI_TEMP_PARAM_3_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_3], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_3]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp4, + SOFT_GEMINI_TEMP_PARAM_4_DEF, SOFT_GEMINI_TEMP_PARAM_4_MIN, SOFT_GEMINI_TEMP_PARAM_4_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_4], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_4]); + + regReadIntegerParameter(pAdapter, &STRBThWlanCoexTemp5, + SOFT_GEMINI_TEMP_PARAM_5_DEF, SOFT_GEMINI_TEMP_PARAM_5_MIN, SOFT_GEMINI_TEMP_PARAM_5_MAX, + sizeof p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_5], + (TI_UINT8*)&p->SoftGeminiInitParams.coexParams[SOFT_GEMINI_TEMP_PARAM_5]);; + + + /* + * CoexActivity table + */ + + /* Read the number of elements in the table ( this is because table entry has 5 values following it )*/ + regReadIntegerParameter(pAdapter, &STRCoexActivityNumOfElem, + COEX_ACTIVITY_TABLE_DEF_NUM, COEX_ACTIVITY_TABLE_MIN_NUM, COEX_ACTIVITY_TABLE_MAX_NUM, + sizeof p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements, + (TI_UINT8*)(&p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements) ); + + /* Read the CoexActivity table string */ + { + TI_UINT8 *strCoexActivityTable; + TI_UINT8 strCoexActivitySize = 0; + + strCoexActivityTable = os_memoryAlloc(pAdapter, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE); + if (strCoexActivityTable) { + regReadStringParameter(pAdapter, &STRCoexActivityTable , + (TI_INT8*)(defCoexActivityTable), strCoexActivitySize, + (TI_UINT8*)strCoexActivityTable, &strCoexActivitySize); + + /* Convert the CoexActivity table string */ + regConvertStringtoCoexActivityTable(strCoexActivityTable , p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements, &p->twdInitParams.tGeneral.halCoexActivityTable.entry[0] , strCoexActivitySize); + os_memoryFree(pAdapter, strCoexActivityTable, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE); + } + } + + /* + Power Manager + */ + regReadIntegerParameter(pAdapter, + &STRPowerMode, + POWER_MODE_DEF_VALUE, + POWER_MODE_MIN_VALUE, + POWER_MODE_MAX_VALUE, + sizeof p->PowerMgrInitParams.powerMode, + (TI_UINT8*)&p->PowerMgrInitParams.powerMode); + + regReadIntegerParameter(pAdapter, + &STRBeaconReceiveTime, + BEACON_RECEIVE_TIME_DEF_VALUE, + BEACON_RECEIVE_TIME_MIN_VALUE, + BEACON_RECEIVE_TIME_MAX_VALUE, + sizeof p->PowerMgrInitParams.beaconReceiveTime, + (TI_UINT8*)&p->PowerMgrInitParams.beaconReceiveTime); + + regReadIntegerParameter(pAdapter, + &STRBaseBandWakeUpTime, + BASE_BAND_WAKE_UP_TIME_DEF_VALUE, + BASE_BAND_WAKE_UP_TIME_MIN_VALUE, + BASE_BAND_WAKE_UP_TIME_MAX_VALUE, + sizeof p->PowerMgrInitParams.BaseBandWakeUpTime, + (TI_UINT8*)&p->PowerMgrInitParams.BaseBandWakeUpTime); + + regReadIntegerParameter(pAdapter, + &STRHangoverPeriod, + HANGOVER_PERIOD_DEF_VALUE, + HANGOVER_PERIOD_MIN_VALUE, + HANGOVER_PERIOD_MAX_VALUE, + sizeof p->PowerMgrInitParams.hangoverPeriod, + (TI_UINT8*)&p->PowerMgrInitParams.hangoverPeriod); + + regReadIntegerParameter(pAdapter, + &STRBeaconListenInterval, + BEACON_LISTEN_INTERVAL_DEF_VALUE, + BEACON_LISTEN_INTERVAL_MIN_VALUE, + BEACON_LISTEN_INTERVAL_MAX_VALUE, + sizeof p->PowerMgrInitParams.beaconListenInterval, + (TI_UINT8*)&p->PowerMgrInitParams.beaconListenInterval); + + regReadIntegerParameter(pAdapter, + &STRDtimListenInterval, + DTIM_LISTEN_INTERVAL_DEF_VALUE, + DTIM_LISTEN_INTERVAL_MIN_VALUE, + DTIM_LISTEN_INTERVAL_MAX_VALUE, + sizeof p->PowerMgrInitParams.dtimListenInterval, + (TI_UINT8*)&p->PowerMgrInitParams.dtimListenInterval); + + regReadIntegerParameter(pAdapter, + &STRNConsecutiveBeaconsMissed, + N_CONSECUTIVE_BEACONS_MISSED_DEF_VALUE, + N_CONSECUTIVE_BEACONS_MISSED_MIN_VALUE, + N_CONSECUTIVE_BEACONS_MISSED_MAX_VALUE, + sizeof p->PowerMgrInitParams.nConsecutiveBeaconsMissed, + (TI_UINT8*)&p->PowerMgrInitParams.nConsecutiveBeaconsMissed); + + regReadIntegerParameter(pAdapter, + &STREnterTo802_11PsRetries, + ENTER_TO_802_11_POWER_SAVE_RETRIES_DEF_VALUE, + ENTER_TO_802_11_POWER_SAVE_RETRIES_MIN_VALUE, + ENTER_TO_802_11_POWER_SAVE_RETRIES_MAX_VALUE, + sizeof p->PowerMgrInitParams.EnterTo802_11PsRetries, + (TI_UINT8*)&p->PowerMgrInitParams.EnterTo802_11PsRetries); + + regReadIntegerParameter(pAdapter, + &STRAutoPowerModeInterval, + AUTO_POWER_MODE_INTERVAL_DEF_VALUE, + AUTO_POWER_MODE_INTERVAL_MIN_VALUE, + AUTO_POWER_MODE_INTERVAL_MAX_VALUE, + sizeof p->PowerMgrInitParams.autoModeInterval, + (TI_UINT8*)&p->PowerMgrInitParams.autoModeInterval); + + regReadIntegerParameter(pAdapter, + &STRAutoPowerModeActiveTh, + AUTO_POWER_MODE_ACTIVE_TH_DEF_VALUE, + AUTO_POWER_MODE_ACTIVE_TH_MIN_VALUE, + AUTO_POWER_MODE_ACTIVE_TH_MAX_VALUE, + sizeof p->PowerMgrInitParams.autoModeActiveTH, + (TI_UINT8*)&p->PowerMgrInitParams.autoModeActiveTH); + + regReadIntegerParameter(pAdapter, + &STRAutoPowerModeDozeTh, + AUTO_POWER_MODE_DOZE_TH_DEF_VALUE, + AUTO_POWER_MODE_DOZE_TH_MIN_VALUE, + AUTO_POWER_MODE_DOZE_TH_MAX_VALUE, + sizeof p->PowerMgrInitParams.autoModeDozeTH, + (TI_UINT8*)&p->PowerMgrInitParams.autoModeDozeTH); + + regReadIntegerParameter(pAdapter, + &STRAutoPowerModeDozeMode, + AUTO_POWER_MODE_DOZE_MODE_DEF_VALUE, + AUTO_POWER_MODE_DOZE_MODE_MIN_VALUE, + AUTO_POWER_MODE_DOZE_MODE_MAX_VALUE, + sizeof p->PowerMgrInitParams.autoModeDozeMode, + (TI_UINT8*)&p->PowerMgrInitParams.autoModeDozeMode); + + regReadIntegerParameter(pAdapter, + &STRDefaultPowerLevel, + POWERAUTHO_POLICY_ELP, + POWERAUTHO_POLICY_ELP, + POWERAUTHO_POLICY_AWAKE, + sizeof p->PowerMgrInitParams.defaultPowerLevel, + (TI_UINT8*)&p->PowerMgrInitParams.defaultPowerLevel); + + regReadIntegerParameter(pAdapter, + &STRPowerSavePowerLevel, + POWERAUTHO_POLICY_ELP, + POWERAUTHO_POLICY_ELP, + POWERAUTHO_POLICY_AWAKE, + sizeof p->PowerMgrInitParams.PowerSavePowerLevel, + (TI_UINT8*)&p->PowerMgrInitParams.PowerSavePowerLevel); + + + regReadIntegerParameter(pAdapter, + &STRBurstModeEnable, + BURST_MODE_ENABLE_DEF, + BURST_MODE_ENABLE_MIN, + BURST_MODE_ENABLE_MAX, + sizeof p->qosMngrInitParams.bEnableBurstMode, + (TI_UINT8*)&p->qosMngrInitParams.bEnableBurstMode); + +/*---------------------- Smart Reflex Configration -----------------------*/ + regReadIntegerParameter(pAdapter, + &STRSRState, + SMART_REFLEX_STATE_DEF, + SMART_REFLEX_STATE_MIN, + SMART_REFLEX_STATE_MAX, + sizeof p->twdInitParams.tSmartReflexState.enable, + (TI_UINT8*)&p->twdInitParams.tSmartReflexState.enable); + + + NdisZeroMemory(&(p->twdInitParams.tSmartReflexParams), sizeof(ACXSmartReflexConfigParams_t)); + + regReadIntegerTable (pAdapter, &STRSRConfigParam1, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE, + MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&SRConfigParams, + (TI_UINT32*)&TempSRCnt, sizeof (TI_UINT8),TI_TRUE); + + p->twdInitParams.tSmartReflexParams.errorTable[0].len = SRConfigParams[0]; + p->twdInitParams.tSmartReflexParams.errorTable[0].upperLimit = SRConfigParams[1]; + + len = p->twdInitParams.tSmartReflexParams.errorTable[0].len; + if ((len > MAX_SR_PARAM_LEN)|| (TempSRCnt > len + 1)) + { + p->twdInitParams.tSmartReflexParams.errorTable[0].len = 0; + p->twdInitParams.tSmartReflexParams.errorTable[0].upperLimit = 0; + memset(&p->twdInitParams.tSmartReflexParams.errorTable[0].values,0,MAX_SR_PARAM_LEN) ; + } + else + memcpy(&p->twdInitParams.tSmartReflexParams.errorTable[0].values, &SRConfigParams[2],len -1); + + + regReadIntegerTable (pAdapter, &STRSRConfigParam2, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE, + MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&SRConfigParams, + (TI_UINT32*)&TempSRCnt, sizeof (TI_UINT8),TI_TRUE); + + p->twdInitParams.tSmartReflexParams.errorTable[1].len = SRConfigParams[0]; + p->twdInitParams.tSmartReflexParams.errorTable[1].upperLimit = SRConfigParams[1]; + + len = p->twdInitParams.tSmartReflexParams.errorTable[1].len; + if ((len > MAX_SR_PARAM_LEN)|| (TempSRCnt > len + 1)) + { + p->twdInitParams.tSmartReflexParams.errorTable[1].len = 0; + p->twdInitParams.tSmartReflexParams.errorTable[1].upperLimit = 0; + memset(&p->twdInitParams.tSmartReflexParams.errorTable[1].values,0,MAX_SR_PARAM_LEN) ; + } + else + memcpy(&p->twdInitParams.tSmartReflexParams.errorTable[1].values, &SRConfigParams[2],len -1); + + + regReadIntegerTable (pAdapter, &STRSRConfigParam3, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE, + MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&SRConfigParams, + (TI_UINT32*)&TempSRCnt, sizeof (TI_UINT8),TI_TRUE); + + p->twdInitParams.tSmartReflexParams.errorTable[2].len = SRConfigParams[0]; + p->twdInitParams.tSmartReflexParams.errorTable[2].upperLimit = SRConfigParams[1]; + + len = p->twdInitParams.tSmartReflexParams.errorTable[2].len; + if ((len > MAX_SR_PARAM_LEN)|| (TempSRCnt > len + 1)) + { + p->twdInitParams.tSmartReflexParams.errorTable[2].len = 0; + p->twdInitParams.tSmartReflexParams.errorTable[2].upperLimit = 0; + memset(&p->twdInitParams.tSmartReflexParams.errorTable[2].values,0,MAX_SR_PARAM_LEN) ; + } + else + memcpy(&p->twdInitParams.tSmartReflexParams.errorTable[2].values, &SRConfigParams[2],len -1); + + + regReadIntegerParameter(pAdapter, + &STRSRSenNP, + SMART_REFLEX_DEBUG_DEF, + SMART_REFLEX_DEBUG_MIN, + SMART_REFLEX_DEBUG_MAX, + sizeof p->twdInitParams.tSmartReflexDebugParams.senN_P, + (TI_UINT8*)&p->twdInitParams.tSmartReflexDebugParams.senN_P); + + regReadIntegerParameter(pAdapter, + &STRSRSenNPGain, + SMART_REFLEX_DEBUG_DEF, + SMART_REFLEX_DEBUG_MIN, + SMART_REFLEX_DEBUG_MAX, + sizeof p->twdInitParams.tSmartReflexDebugParams.senN_P_Gain, + (TI_UINT8*)&p->twdInitParams.tSmartReflexDebugParams.senN_P_Gain); + + regReadIntegerParameter(pAdapter, + &STRSRSenPrn, + SMART_REFLEX_DEBUG_DEF, + SMART_REFLEX_DEBUG_MIN, + SMART_REFLEX_DEBUG_MAX, + sizeof p->twdInitParams.tSmartReflexDebugParams.senPRN, + (TI_UINT8*)&p->twdInitParams.tSmartReflexDebugParams.senPRN); + + regReadIntegerParameter(pAdapter, + &STRSRSenNrn, + SMART_REFLEX_DEBUG_DEF, + SMART_REFLEX_DEBUG_MIN, + SMART_REFLEX_DEBUG_MAX, + sizeof (p->twdInitParams.tSmartReflexDebugParams.senNRN), + (TI_UINT8*)&p->twdInitParams.tSmartReflexDebugParams.senNRN); + + + regReadIntegerTable (pAdapter, &STRSRDebugTable, SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE, + MAX_SR_PARAM_LEN, NULL, (TI_INT8*)&p->twdInitParams.tSmartReflexDebugParams.errorTable, + (TI_UINT32*)&TempSRCnt, sizeof (TI_UINT8),TI_FALSE); + + + + + + +/*---------------------- Power Management Configuration -----------------------*/ + regReadIntegerParameter(pAdapter, + &STRPowerMgmtHangOverPeriod, + HANGOVER_PERIOD_DEF_VALUE, + HANGOVER_PERIOD_MIN_VALUE, + HANGOVER_PERIOD_MAX_VALUE, + sizeof p->PowerMgrInitParams.hangOverPeriod, + (TI_UINT8*)&p->PowerMgrInitParams.hangOverPeriod); + + regReadIntegerParameter(pAdapter, + &STRPowerMgmtNeedToSendNullData, + POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_DEF_VALUE, + POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_MIN_VALUE, + POWER_MGMNT_NEED_TO_SEND_NULL_PACKET_MAX_VALUE, + sizeof p->PowerMgrInitParams.needToSendNullData, + (TI_UINT8*)&p->PowerMgrInitParams.needToSendNullData); + + regReadIntegerParameter(pAdapter, + &STRPowerMgmtNullPktRateModulation, + POWER_MGMNT_NULL_PACKET_RATE_MOD_DEF_VALUE, + POWER_MGMNT_NULL_PACKET_RATE_MOD_MIN_VALUE, + POWER_MGMNT_NULL_PACKET_RATE_MOD_MAX_VALUE, + sizeof p->PowerMgrInitParams.NullPktRateModulation, + (TI_UINT8*)&p->PowerMgrInitParams.NullPktRateModulation); + + regReadIntegerParameter(pAdapter, + &STRPowerMgmtNumNullPktRetries, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_DEF_VALUE, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_MIN_VALUE, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_MAX_VALUE, + sizeof p->PowerMgrInitParams.numNullPktRetries, + (TI_UINT8*)&p->PowerMgrInitParams.numNullPktRetries); + + regReadIntegerParameter(pAdapter, + &STRPowerMgmtPllLockTime, + PLL_LOCK_TIME_DEF_VALUE, + PLL_LOCK_TIME_MIN_VALUE, + PLL_LOCK_TIME_MAX_VALUE, + sizeof p->PowerMgrInitParams.PLLlockTime, + (TI_UINT8*)&p->PowerMgrInitParams.PLLlockTime); + + regReadIntegerParameter(pAdapter, + &STRPsPollDeliveryFailureRecoveryPeriod, + PS_POLL_FAILURE_PERIOD_DEF, + PS_POLL_FAILURE_PERIOD_MIN, + PS_POLL_FAILURE_PERIOD_MAX, + sizeof p->PowerMgrInitParams.PsPollDeliveryFailureRecoveryPeriod, + (TI_UINT8*)&p->PowerMgrInitParams.PsPollDeliveryFailureRecoveryPeriod); + + regReadIntegerParameter(pAdapter, + &STRHostClkSettlingTime, + HOST_CLK_SETTLE_TIME_USEC_DEF, + HOST_CLK_SETTLE_TIME_USEC_MIN, + HOST_CLK_SETTLE_TIME_USEC_MAX, + sizeof p->twdInitParams.tGeneral.uHostClkSettlingTime, + (TI_UINT8*)&p->twdInitParams.tGeneral.uHostClkSettlingTime); + + regReadIntegerParameter(pAdapter, + &STRHostFastWakeupSupport, + HOST_FAST_WAKE_SUPPORT_DEF, + HOST_FAST_WAKE_SUPPORT_MIN, + HOST_FAST_WAKE_SUPPORT_MAX, + sizeof p->twdInitParams.tGeneral.uHostFastWakeupSupport, + (TI_UINT8*)&p->twdInitParams.tGeneral.uHostFastWakeupSupport); + + /*--------------- Power Management Wake up conditions ------------------*/ + + regReadIntegerParameter(pAdapter, &STRListenInterval, + TWD_LISTEN_INTERVAL_DEF, TWD_LISTEN_INTERVAL_MIN, + TWD_LISTEN_INTERVAL_MAX, + sizeof p->PowerMgrInitParams.listenInterval, + (TI_UINT8*)&p->PowerMgrInitParams.listenInterval); + + /*-----------------------------------------------------------------------*/ + + /*--------------- Power Server Init Parameters ------------------*/ + regReadIntegerParameter(pAdapter, + &STRPowerMgmtNumNullPktRetries, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_DEF_VALUE, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_MIN_VALUE, + POWER_MGMNT_NUM_NULL_PACKET_RETRY_MAX_VALUE, + sizeof p->twdInitParams.tPowerSrv.numNullPktRetries, + (TI_UINT8*)&p->twdInitParams.tPowerSrv.numNullPktRetries); + + regReadIntegerParameter(pAdapter, + &STRPowerMgmtHangOverPeriod, + HANGOVER_PERIOD_DEF_VALUE, + HANGOVER_PERIOD_MIN_VALUE, + HANGOVER_PERIOD_MAX_VALUE, + sizeof p->twdInitParams.tPowerSrv.hangOverPeriod, + (TI_UINT8*)&p->twdInitParams.tPowerSrv.hangOverPeriod); + /*-----------------------------------------------------------------------*/ + + + /* Scan SRV */ + regReadIntegerParameter(pAdapter, &STRNumberOfNoScanCompleteToRecovery, + SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_DEF, + SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_MIN, + SCAN_SRV_NUMBER_OF_NO_SCAN_COMPLETE_TO_RECOVERY_MAX, + sizeof (p->twdInitParams.tScanSrv.numberOfNoScanCompleteToRecovery), + (TI_UINT8*)&(p->twdInitParams.tScanSrv.numberOfNoScanCompleteToRecovery) ); + + regReadIntegerParameter(pAdapter, &STRTriggeredScanTimeOut, + SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_DEF, + SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_MIN, + SCAN_SRV_TRIGGERED_SCAN_TIME_OUT_MAX, + sizeof (p->twdInitParams.tScanSrv.uTriggeredScanTimeOut), + (TI_UINT8*)&(p->twdInitParams.tScanSrv.uTriggeredScanTimeOut) ); + + + /* Regulatory Domain */ + + /* Indicate the time in which the STA didn't receive any country code and was not connected, and therefore + will delete its current country code */ + regReadIntegerParameter(pAdapter, &STRTimeToResetCountryMs, + REGULATORY_DOMAIN_COUNTRY_TIME_RESET_DEF, REGULATORY_DOMAIN_COUNTRY_TIME_RESET_MIN, + REGULATORY_DOMAIN_COUNTRY_TIME_RESET_MAX, + sizeof p->regulatoryDomainInitParams.uTimeOutToResetCountryMs, + (TI_UINT8*)&(p->regulatoryDomainInitParams.uTimeOutToResetCountryMs)); + + /* 802.11d/h */ + regReadIntegerParameter(pAdapter, &STRMultiRegulatoryDomainEnabled, + MULTI_REGULATORY_DOMAIN_ENABLED_DEF, MULTI_REGULATORY_DOMAIN_ENABLED_MIN, + MULTI_REGULATORY_DOMAIN_ENABLED_MAX, + sizeof p->regulatoryDomainInitParams.multiRegulatoryDomainEnabled, + (TI_UINT8*)&(p->regulatoryDomainInitParams.multiRegulatoryDomainEnabled)); + + regReadIntegerParameter(pAdapter, &STRSpectrumManagementEnabled, + SPECTRUM_MANAGEMENT_ENABLED_DEF, SPECTRUM_MANAGEMENT_ENABLED_MIN, + SPECTRUM_MANAGEMENT_ENABLED_MAX, + sizeof p->regulatoryDomainInitParams.spectrumManagementEnabled, + (TI_UINT8*)&(p->regulatoryDomainInitParams.spectrumManagementEnabled)); + + regReadIntegerParameter(pAdapter, &STRSpectrumManagementEnabled, + SPECTRUM_MANAGEMENT_ENABLED_DEF, SPECTRUM_MANAGEMENT_ENABLED_MIN, + SPECTRUM_MANAGEMENT_ENABLED_MAX, + sizeof p->SwitchChannelInitParams.dot11SpectrumManagementRequired, + (TI_UINT8*)&(p->SwitchChannelInitParams.dot11SpectrumManagementRequired)); + + + /* Scan Control Tables */ + regReadStringParameter(pAdapter, &STRScanControlTable24, + (TI_INT8*)&ScanControlTable24Def[0],(USHORT)(2 * NUM_OF_CHANNELS_24), + (TI_UINT8*)&(ScanControlTable24Tmp[0]), + (PUSHORT)&tableLen); + + for( loopIndex = tableLen ; loopIndex < 2 * NUM_OF_CHANNELS_24 ; loopIndex++) + ScanControlTable24Tmp[loopIndex] = '0'; + + decryptScanControlTable(ScanControlTable24Tmp,(TI_UINT8*)&(p->regulatoryDomainInitParams.desiredScanControlTable.ScanControlTable24.tableString[0]),2 * NUM_OF_CHANNELS_24); + + + /* Scan Control Tables for 5 Ghz*/ + regReadStringParameter(pAdapter, &STRScanControlTable5, + (TI_INT8*)&ScanControlTable5Def[0],(USHORT)(2 * A_5G_BAND_NUM_CHANNELS), + (TI_UINT8*)&(ScanControlTable5Tmp[0]), + (PUSHORT)&tableLen); + + + for( loopIndex = tableLen ; loopIndex < 2 * A_5G_BAND_NUM_CHANNELS ; loopIndex++) + ScanControlTable5Tmp[loopIndex] = '0'; + + decryptScanControlTable(ScanControlTable5Tmp,(TI_UINT8*)&(p->regulatoryDomainInitParams.desiredScanControlTable.ScanControlTable5.tableString[0]),2 * A_5G_BAND_NUM_CHANNELS); + + + /* Tx Power */ + regReadIntegerParameter(pAdapter, &STRTxPower, + DEF_TX_POWER, MIN_TX_POWER, MAX_TX_POWER, + sizeof p->regulatoryDomainInitParams.desiredTxPower, + (TI_UINT8*)&p->regulatoryDomainInitParams.desiredTxPower); + + regReadIntegerParameter(pAdapter, &STRdot11WEPStatus, + RSN_WEP_STATUS_DEF, RSN_WEP_STATUS_MIN, RSN_WEP_STATUS_MAX, + sizeof p->rsnInitParams.privacyOn, + (TI_UINT8*)&p->rsnInitParams.privacyOn); + /* reverse privacy value - windows is setting 1 as off */ + /* + p->rsnInitParams.privacyMode = !(p->rsnInitParams.privacyOn); + p->rsnInitParams.privacyOn = !(p->rsnInitParams.privacyOn); + */ + + regReadIntegerParameter(pAdapter, &STRdot11WEPDefaultKeyID, + RSN_DEFAULT_KEY_ID_DEF, RSN_DEFAULT_KEY_ID_MIN, + RSN_DEFAULT_KEY_ID_MAX, + sizeof p->rsnInitParams.defaultKeyId, + (TI_UINT8*)&p->rsnInitParams.defaultKeyId); + + + regReadIntegerParameter(pAdapter, &STRMixedMode, + RSN_WEPMIXEDMODE_ENABLED_DEF, RSN_WEPMIXEDMODE_ENABLED_MIN, + RSN_WEPMIXEDMODE_ENABLED_MAX, + sizeof p->rsnInitParams.mixedMode, + (TI_UINT8*)&p->rsnInitParams.mixedMode); + + regReadIntegerParameter(pAdapter, &STRWPAMixedMode, + RSN_WPAMIXEDMODE_ENABLE_DEF, RSN_WPAMIXEDMODE_ENABLE_MIN, + RSN_WPAMIXEDMODE_ENABLE_MAX, + sizeof p->rsnInitParams.WPAMixedModeEnable, + (TI_UINT8*)&p->rsnInitParams.WPAMixedModeEnable); + + regReadIntegerParameter(pAdapter, &STRRSNPreAuth, + RSN_PREAUTH_ENABLE_DEF, RSN_PREAUTH_ENABLE_MIN, + RSN_PREAUTH_ENABLE_MAX, + sizeof p->rsnInitParams.preAuthSupport, + (TI_UINT8*)&p->rsnInitParams.preAuthSupport); + + regReadIntegerParameter(pAdapter, &STRRSNPreAuthTimeout, + RSN_PREAUTH_TIMEOUT_DEF, RSN_PREAUTH_TIMEOUT_MIN, + RSN_PREAUTH_TIMEOUT_MAX, + sizeof p->rsnInitParams.preAuthTimeout, + (TI_UINT8*)&p->rsnInitParams.preAuthTimeout); + + regReadIntegerParameter(pAdapter, &STRPairwiseMicFailureFilter, + PAIRWISE_MIC_FAIL_FILTER_DEF, PAIRWISE_MIC_FAIL_FILTER_MIN, + PAIRWISE_MIC_FAIL_FILTER_MAX, + sizeof p->rsnInitParams.bPairwiseMicFailureFilter, + (TI_UINT8*)&p->rsnInitParams.bPairwiseMicFailureFilter); + + regReadWepKeyParameter(pAdapter, (TI_UINT8*)p->rsnInitParams.keys, p->rsnInitParams.defaultKeyId); + + regReadIntegerParameter(pAdapter, &STRRSNExternalMode, + RSN_EXTERNAL_MODE_ENABLE_DEF, RSN_EXTERNAL_MODE_ENABLE_MIN, + RSN_EXTERNAL_MODE_ENABLE_MAX, + sizeof p->rsnInitParams.bRsnExternalMode, + (TI_UINT8*)&p->rsnInitParams.bRsnExternalMode); + + + /*--------------------------- + QOS parameters + -----------------------------*/ + + regReadIntegerParameter(pAdapter, &STRClsfr_Type, + CLSFR_TYPE_DEF, CLSFR_TYPE_MIN, + CLSFR_TYPE_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.eClsfrType, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.eClsfrType); + + switch(p->txDataInitParams.ClsfrInitParam.eClsfrType) + { + case D_TAG_CLSFR: + /* Trivial mapping D-tag to D-tag - no need to read more keys*/ + break; + + case DSCP_CLSFR: + + regReadIntegerParameter(pAdapter, &STRNumOfCodePoints, + NUM_OF_CODE_POINTS_DEF, NUM_OF_CODE_POINTS_MIN, + NUM_OF_CODE_POINTS_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier00_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier01_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier02_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier03_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier04_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier05_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier06_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier07_CodePoint, + DSCP_CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier08_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier09_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier10_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier11_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier12_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier13_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier14_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier15_CodePoint, + CLASSIFIER_CODE_POINT_DEF, CLASSIFIER_CODE_POINT_MIN, + CLASSIFIER_CODE_POINT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.CodePoint, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.CodePoint); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier00_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier01_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier02_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier03_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier04_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier05_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier06_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier07_DTag, + DSCP_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier08_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier09_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier10_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier11_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier12_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier13_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier14_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag); + regReadIntegerParameter(pAdapter, &STRDSCPClassifier15_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag); + + + break; + + case PORT_CLSFR: + + regReadIntegerParameter(pAdapter, &STRNumOfDstPortClassifiers, + NUM_OF_PORT_CLASSIFIERS_DEF, NUM_OF_PORT_CLASSIFIERS_MIN, + NUM_OF_PORT_CLASSIFIERS_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries); + regReadIntegerParameter(pAdapter, &STRPortClassifier00_Port, + PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier01_Port, + PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier02_Port, + PORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier03_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier04_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier05_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier06_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier07_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier08_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier09_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier10_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier11_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier12_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier13_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier14_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier15_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstPortNum); + regReadIntegerParameter(pAdapter, &STRPortClassifier00_DTag, + PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier01_DTag, + PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier02_DTag, + PORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier03_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier04_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier05_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier06_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier07_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier08_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier09_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier10_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier11_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier12_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier13_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier14_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag); + regReadIntegerParameter(pAdapter, &STRPortClassifier15_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag); + + break; + + + case IPPORT_CLSFR: + + regReadIntegerParameter(pAdapter, &STRNumOfDstIPPortClassifiers, + NUM_OF_IPPORT_CLASSIFIERS_DEF, NUM_OF_IPPORT_CLASSIFIERS_MIN, + NUM_OF_IPPORT_CLASSIFIERS_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.uNumActiveEntries, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.uNumActiveEntries); + + regReadStringParameter(pAdapter, &STRIPPortClassifier00_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier01_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier02_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier03_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier04_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier05_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier06_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier07_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier08_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier09_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier10_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier11_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier12_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier13_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier14_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstIPAddress, 4); + + regReadStringParameter(pAdapter, &STRIPPortClassifier15_IPAddress, (TI_INT8*)(ClsfrIp), 11, (TI_UINT8*)ClsfrIpString, &ClsfrIpStringSize); + initValusFromRgstryString( (TI_INT8*)(ClsfrIpString), (TI_INT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstIPAddress, 4); + + regReadIntegerParameter(pAdapter, &STRIPPortClassifier00_Port, + IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier01_Port, + IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier02_Port, + IPPORT_CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier03_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier04_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier05_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier06_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier07_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier08_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier09_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier10_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier11_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier12_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier13_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier14_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier15_Port, + CLASSIFIER_PORT_DEF, CLASSIFIER_PORT_MIN, + CLASSIFIER_PORT_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstPortNum, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].Dscp.DstIPPort.DstPortNum); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier00_DTag, + IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[0].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier01_DTag, + IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[1].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier02_DTag, + IPPORT_CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[2].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier03_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[3].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier04_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[4].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier05_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[5].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier06_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[6].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier07_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[7].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier08_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[8].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier09_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[9].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier10_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[10].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier11_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[11].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier12_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[12].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier13_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[13].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier14_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[14].DTag); + regReadIntegerParameter(pAdapter, &STRIPPortClassifier15_DTag, + CLASSIFIER_DTAG_DEF, CLASSIFIER_DTAG_MIN, + CLASSIFIER_DTAG_MAX, + sizeof p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag, + (TI_UINT8*)&p->txDataInitParams.ClsfrInitParam.ClsfrTable[15].DTag); + + break; + + } + + + + /* --------------------------- + + Traffic Intensity Threshold + + ---------------------------*/ + regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresHigh, + CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_DEF, + CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_MIN, + CTRL_DATA_TRAFFIC_THRESHOLD_HIGH_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.uHighThreshold, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.uHighThreshold); + + regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresLow, + CTRL_DATA_TRAFFIC_THRESHOLD_LOW_DEF, + CTRL_DATA_TRAFFIC_THRESHOLD_LOW_MIN, + CTRL_DATA_TRAFFIC_THRESHOLD_LOW_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.uLowThreshold, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.uLowThreshold); + + regReadIntegerParameter(pAdapter, &STRTrafficIntensityTestInterval, + CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_DEF, + CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_MIN, + CTRL_DATA_TRAFFIC_THRESHOLD_INTERVAL_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTrafficThreshold.TestInterval, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThreshold.TestInterval); + + regReadIntegerParameter(pAdapter, &STRTrafficIntensityThresholdEnabled, + CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_DEF, + CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_MIN, + CTRL_DATA_TRAFFIC_THRESHOLD_ENABLED_MAX, + sizeof p->ctrlDataInitParams.ctrlDataTrafficThresholdEnabled, + (TI_UINT8*)&p->ctrlDataInitParams.ctrlDataTrafficThresholdEnabled); + + regReadIntegerParameter(pAdapter, &STRTrafficMonitorMinIntervalPercentage, + TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_DEF, + TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_MIN, + TRAFFIC_MONITOR_MIN_INTERVAL_PERCENT_MAX, + sizeof p->trafficMonitorMinIntervalPercentage, + (TI_UINT8*)&p->trafficMonitorMinIntervalPercentage); + + regReadIntegerParameter(pAdapter, &STRWMEEnable, + WME_ENABLED_DEF, WME_ENABLED_MIN, + WME_ENABLED_MAX, + sizeof p->qosMngrInitParams.wmeEnable, + (TI_UINT8*)&p->qosMngrInitParams.wmeEnable); + + regReadIntegerParameter(pAdapter, &STRTrafficAdmCtrlEnable, + QOS_TRAFFIC_ADM_CTRL_ENABLED_DEF, QOS_TRAFFIC_ADM_CTRL_ENABLED_MIN, + QOS_TRAFFIC_ADM_CTRL_ENABLED_MAX, + sizeof p->qosMngrInitParams.trafficAdmCtrlEnable, + (TI_UINT8*)&p->qosMngrInitParams.trafficAdmCtrlEnable); + + regReadIntegerParameter(pAdapter, &STRdesiredPsMode, + QOS_DESIRED_PS_MODE_DEF, QOS_DESIRED_PS_MODE_MIN, + QOS_DESIRED_PS_MODE_MAX, + sizeof p->qosMngrInitParams.desiredPsMode, + (TI_UINT8*)&p->qosMngrInitParams.desiredPsMode); + + regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeBE, + QOS_MSDU_LIFE_TIME_BE_DEF, QOS_MSDU_LIFE_TIME_BE_MIN, + QOS_MSDU_LIFE_TIME_BE_MAX, + sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE], + (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeBK, + QOS_MSDU_LIFE_TIME_BK_DEF, QOS_MSDU_LIFE_TIME_BK_MIN, + QOS_MSDU_LIFE_TIME_BK_MAX, + sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK], + (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeVI, + QOS_MSDU_LIFE_TIME_VI_DEF, QOS_MSDU_LIFE_TIME_VI_MIN, + QOS_MSDU_LIFE_TIME_VI_MAX, + sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI], + (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOSmsduLifeTimeVO, + QOS_MSDU_LIFE_TIME_VO_DEF, QOS_MSDU_LIFE_TIME_VO_MIN, + QOS_MSDU_LIFE_TIME_VO_MAX, + sizeof p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO], + (TI_UINT8*)&p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO]); + + + regReadIntegerParameter(pAdapter, &STRQOSrxTimeOutPsPoll, + QOS_RX_TIMEOUT_PS_POLL_DEF, QOS_RX_TIMEOUT_PS_POLL_MIN, + QOS_RX_TIMEOUT_PS_POLL_MAX, + sizeof p->twdInitParams.tGeneral.rxTimeOut.psPoll, + (TI_UINT8*)&p->twdInitParams.tGeneral.rxTimeOut.psPoll); + + regReadIntegerParameter(pAdapter, &STRQOSrxTimeOutUPSD, + QOS_RX_TIMEOUT_UPSD_DEF, QOS_RX_TIMEOUT_UPSD_MIN, + QOS_RX_TIMEOUT_UPSD_MAX, + sizeof p->twdInitParams.tGeneral.rxTimeOut.UPSD, + (TI_UINT8*)&p->twdInitParams.tGeneral.rxTimeOut.UPSD); + + /* Note: The PsPoll wait timeout should be aligned with the UPSD setting */ + /* p->PowerMgrInitParams.HwPsPollResponseTimeout = (TI_UINT8)p->qosMngrInitParams.rxTimeout.UPSD;*/ + + regReadIntegerParameter(pAdapter, &STRQOSwmePsModeBE, + QOS_WME_PS_MODE_BE_DEF, QOS_WME_PS_MODE_BE_MIN, + QOS_WME_PS_MODE_BE_MAX, + sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BE], + (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOSwmePsModeBK, + QOS_WME_PS_MODE_BK_DEF, QOS_WME_PS_MODE_BK_MIN, + QOS_WME_PS_MODE_BK_MAX, + sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BK], + (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOSwmePsModeVI, + QOS_WME_PS_MODE_VI_DEF, QOS_WME_PS_MODE_VI_MIN, + QOS_WME_PS_MODE_VI_MAX, + sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VI], + (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOSwmePsModeVO, + QOS_WME_PS_MODE_VO_DEF, QOS_WME_PS_MODE_VO_MIN, + QOS_WME_PS_MODE_VO_MAX, + sizeof p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VO], + (TI_UINT8*)&p->qosMngrInitParams.desiredWmeAcPsMode[QOS_AC_VO]); + + + /* HW Tx queues buffers allocation low threshold */ + regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdBE, + QOS_TX_BLKS_THRESHOLD_BE_DEF, QOS_TX_BLKS_THRESHOLD_MIN, + QOS_TX_BLKS_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE], + (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdBK, + QOS_TX_BLKS_THRESHOLD_BK_DEF, QOS_TX_BLKS_THRESHOLD_MIN, + QOS_TX_BLKS_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK], + (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdVI, + QOS_TX_BLKS_THRESHOLD_VI_DEF, QOS_TX_BLKS_THRESHOLD_MIN, + QOS_TX_BLKS_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI], + (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOStxBlksThresholdVO, + QOS_TX_BLKS_THRESHOLD_VO_DEF, QOS_TX_BLKS_THRESHOLD_MIN, + QOS_TX_BLKS_THRESHOLD_MAX, + sizeof p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO], + (TI_UINT8*)&p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO]); + + regReadIntegerParameter(pAdapter, &STRWiFiMode, + WIFI_MODE_DEF, WIFI_MODE_MIN, + WIFI_MODE_MAX, + sizeof uWiFiMode, + (TI_UINT8*)&uWiFiMode); + if (uWiFiMode) + { + /* special numbers for WiFi mode */ + p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BE] = QOS_TX_BLKS_THRESHOLD_BE_DEF_WIFI_MODE; + p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_BK] = QOS_TX_BLKS_THRESHOLD_BK_DEF_WIFI_MODE; + p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VI] = QOS_TX_BLKS_THRESHOLD_VI_DEF_WIFI_MODE; + p->twdInitParams.tGeneral.TxBlocksThresholdPerAc[QOS_AC_VO] = QOS_TX_BLKS_THRESHOLD_VO_DEF_WIFI_MODE; + + p->qosMngrInitParams.MsduLifeTime[QOS_AC_BE] = QOS_MSDU_LIFE_TIME_BE_DEF_WIFI_MODE; + p->qosMngrInitParams.MsduLifeTime[QOS_AC_BK] = QOS_MSDU_LIFE_TIME_BK_DEF_WIFI_MODE; + p->qosMngrInitParams.MsduLifeTime[QOS_AC_VI] = QOS_MSDU_LIFE_TIME_VI_DEF_WIFI_MODE; + p->qosMngrInitParams.MsduLifeTime[QOS_AC_VO] = QOS_MSDU_LIFE_TIME_VO_DEF_WIFI_MODE; + + p->twdInitParams.tGeneral.RxIntrPacingThreshold = TWD_RX_INTR_THRESHOLD_DEF_WIFI_MODE; + } + + regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitBE, + QOS_SHORT_RETRY_LIMIT_BE_DEF, QOS_SHORT_RETRY_LIMIT_BE_MIN, + QOS_SHORT_RETRY_LIMIT_BE_MAX, + sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BE], + (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitBK, + QOS_SHORT_RETRY_LIMIT_BK_DEF, QOS_SHORT_RETRY_LIMIT_BK_MIN, + QOS_SHORT_RETRY_LIMIT_BK_MAX, + sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BK], + (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitVI, + QOS_SHORT_RETRY_LIMIT_VI_DEF, QOS_SHORT_RETRY_LIMIT_VI_MIN, + QOS_SHORT_RETRY_LIMIT_VI_MAX, + sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VI], + (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOSShortRetryLimitVO, + QOS_SHORT_RETRY_LIMIT_VO_DEF, QOS_SHORT_RETRY_LIMIT_VO_MIN, + QOS_SHORT_RETRY_LIMIT_VO_MAX, + sizeof p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VO], + (TI_UINT8*)&p->qosMngrInitParams.ShortRetryLimit[QOS_AC_VO]); + + regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitBE, + QOS_LONG_RETRY_LIMIT_BE_DEF, QOS_LONG_RETRY_LIMIT_BE_MIN, + QOS_LONG_RETRY_LIMIT_BE_MAX, + sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_BE], + (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitBK, + QOS_LONG_RETRY_LIMIT_BK_DEF, QOS_LONG_RETRY_LIMIT_BK_MIN, + QOS_LONG_RETRY_LIMIT_BK_MAX, + sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_BK], + (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitVI, + QOS_LONG_RETRY_LIMIT_VI_DEF, QOS_LONG_RETRY_LIMIT_VI_MIN, + QOS_LONG_RETRY_LIMIT_VI_MAX, + sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_VI], + (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOSLongRetryLimitVO, + QOS_LONG_RETRY_LIMIT_VO_DEF, QOS_LONG_RETRY_LIMIT_VO_MIN, + QOS_LONG_RETRY_LIMIT_VO_MAX, + sizeof p->qosMngrInitParams.LongRetryLimit[QOS_AC_VO], + (TI_UINT8*)&p->qosMngrInitParams.LongRetryLimit[QOS_AC_VO]); + + regReadIntegerParameter(pAdapter, &STRQOSAckPolicyBE, + QOS_ACK_POLICY_BE_DEF, QOS_ACK_POLICY_BE_MIN, + QOS_ACK_POLICY_BE_MAX, + sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_BE], + (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_BE]); + + regReadIntegerParameter(pAdapter, &STRQOSAckPolicyBK, + QOS_ACK_POLICY_BK_DEF, QOS_ACK_POLICY_BK_MIN, + QOS_ACK_POLICY_BK_MAX, + sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_BK], + (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_BK]); + + regReadIntegerParameter(pAdapter, &STRQOSAckPolicyVI, + QOS_ACK_POLICY_VI_DEF, QOS_ACK_POLICY_VI_MIN, + QOS_ACK_POLICY_VI_MAX, + sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_VI], + (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_VI]); + + regReadIntegerParameter(pAdapter, &STRQOSAckPolicyVO, + QOS_ACK_POLICY_VO_DEF, QOS_ACK_POLICY_VO_MIN, + QOS_ACK_POLICY_VO_MAX, + sizeof p->qosMngrInitParams.acAckPolicy[QOS_AC_VO], + (TI_UINT8*)&p->qosMngrInitParams.acAckPolicy[QOS_AC_VO]); + + + regReadIntegerParameter(pAdapter, &STRQoSqueue0OverFlowPolicy, + QOS_QUEUE_0_OVFLOW_POLICY_DEF, QOS_QUEUE_0_OVFLOW_POLICY_MIN, + QOS_QUEUE_0_OVFLOW_POLICY_MAX, + sizeof p->qosMngrInitParams.QueueOvFlowPolicy[0], + (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[0]); + + regReadIntegerParameter(pAdapter, &STRQoSqueue1OverFlowPolicy, + QOS_QUEUE_1_OVFLOW_POLICY_DEF, QOS_QUEUE_1_OVFLOW_POLICY_MIN, + QOS_QUEUE_1_OVFLOW_POLICY_MAX, + sizeof p->qosMngrInitParams.QueueOvFlowPolicy[1], + (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[1]); + + regReadIntegerParameter(pAdapter, &STRQoSqueue2OverFlowPolicy, + QOS_QUEUE_2_OVFLOW_POLICY_DEF, QOS_QUEUE_2_OVFLOW_POLICY_MIN, + QOS_QUEUE_2_OVFLOW_POLICY_MAX, + sizeof p->qosMngrInitParams.QueueOvFlowPolicy[2], + (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[2]); + + regReadIntegerParameter(pAdapter, &STRQoSqueue3OverFlowPolicy, + QOS_QUEUE_3_OVFLOW_POLICY_DEF, QOS_QUEUE_3_OVFLOW_POLICY_MIN, + QOS_QUEUE_3_OVFLOW_POLICY_MAX, + sizeof p->qosMngrInitParams.QueueOvFlowPolicy[3], + (TI_UINT8*)&p->qosMngrInitParams.QueueOvFlowPolicy[3]); + + /* Packet Burst parameters */ + + regReadIntegerParameter(pAdapter, &STRQOSPacketBurstEnable, + QOS_PACKET_BURST_ENABLE_DEF, QOS_PACKET_BURST_ENABLE_MIN, + QOS_PACKET_BURST_ENABLE_MAX, + sizeof p->qosMngrInitParams.PacketBurstEnable, + (TI_UINT8*)&p->qosMngrInitParams.PacketBurstEnable); + PRINTF(DBG_REGISTRY,( "STRQOSPacketBurstEnable = %d\n", p->qosMngrInitParams.PacketBurstEnable)); + regReadIntegerParameter(pAdapter, &STRQOSPacketBurstTxOpLimit, + QOS_PACKET_BURST_TXOP_LIMIT_DEF, QOS_PACKET_BURST_TXOP_LIMIT_MIN, + QOS_PACKET_BURST_TXOP_LIMIT_MAX, + sizeof p->qosMngrInitParams.PacketBurstTxOpLimit, + (TI_UINT8*)&p->qosMngrInitParams.PacketBurstTxOpLimit); + + + + /*--------------------------- + Measurement parameters + -----------------------------*/ + + regReadIntegerParameter(pAdapter, &STRMeasurTrafficThreshold, + MEASUREMENT_TRAFFIC_THRSHLD_DEF, MEASUREMENT_TRAFFIC_THRSHLD_MIN, MEASUREMENT_TRAFFIC_THRSHLD_MAX, + sizeof p->measurementInitParams.trafficIntensityThreshold, + (TI_UINT8*)&p->measurementInitParams.trafficIntensityThreshold); + + regReadIntegerParameter(pAdapter, &STRMeasurMaxDurationOnNonServingChannel, + MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_DEF, MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_MIN, MEASUREMENT_MAX_DUR_NON_SRV_CHANNEL_MAX, + sizeof p->measurementInitParams.maxDurationOnNonServingChannel, + (TI_UINT8*)&p->measurementInitParams.maxDurationOnNonServingChannel); + + + /*--------------------------- + XCC Manager parameters + -----------------------------*/ +#ifdef XCC_MODULE_INCLUDED + + regReadIntegerParameter(pAdapter, &STRXCCModeEnabled, + XCC_MNGR_ENABLE_DEF, XCC_MNGR_ENABLE_MIN, XCC_MNGR_ENABLE_MAX, + sizeof p->XCCMngrParams.XCCEnabled, + (TI_UINT8*)&p->XCCMngrParams.XCCEnabled); + + + p->measurementInitParams.XCCEnabled = p->XCCMngrParams.XCCEnabled; + +#endif + + regReadIntegerParameter(pAdapter, &STRXCCTestIgnoreDeAuth0, + XCC_TEST_IGNORE_DEAUTH_0_DEF, XCC_TEST_IGNORE_DEAUTH_0_MIN, XCC_TEST_IGNORE_DEAUTH_0_MAX, + sizeof p->apConnParams.ignoreDeauthReason0, + (TI_UINT8*)&p->apConnParams.ignoreDeauthReason0); + + /*--------------------------- + EEPROM less support + -----------------------------*/ + regReadIntegerParameter(pAdapter, &STREEPROMlessModeSupported, + TWD_EEPROMLESS_ENABLE_DEF, TWD_EEPROMLESS_ENABLE_MIN, + TWD_EEPROMLESS_ENABLE_MAX, + sizeof p->twdInitParams.tGeneral.halCtrlEepromLessEnable, + (TI_UINT8*)&p->twdInitParams.tGeneral.halCtrlEepromLessEnable); + + regReadStringParameter(pAdapter, &STRstationMacAddress, + (TI_INT8*)(defStaMacAddress0), 11, + (TI_UINT8*)staMACAddress, ®MACstrLen); + + /*reads the arp ip from table*/ + regReadStringParameter(pAdapter ,&STRArp_Ip_Addr, + (TI_INT8*)(defArpIpAddress),REG_ARP_IP_ADDR_STR_LEN, + (TI_UINT8*)staArpIpAddress,®ArpIpStrLen ) ; + + regReadIntegerParameter(pAdapter, &STRArp_Ip_Filter_Ena, + DEF_FILTER_ENABLE_VALUE, MIN_FILTER_ENABLE_VALUE, MAX_FILTER_ENABLE_VALUE, + sizeof p->twdInitParams.tArpIpFilter.isFilterEnabled, + (TI_UINT8*)&p->twdInitParams.tArpIpFilter.isFilterEnabled); + + + initValusFromRgstryString( (TI_INT8*)(staArpIpAddress), (TI_INT8*)&p->twdInitParams.tArpIpFilter.addr, 4); + + + initValusFromRgstryString( (TI_INT8*)(staMACAddress), + (TI_INT8*)&(p->twdInitParams.tGeneral.StaMacAddress[0]), + 6); +/*fource FragThreshold to be even value (round it down)MR WLAN00003501*/ + p->twdInitParams.tGeneral.halCtrlFragThreshold &= 0xFFFE; + + + + + +/*---------------------------------- + Health Monitor registry init +------------------------------------*/ + + /* No scan complete recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledNoScanComplete, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ NO_SCAN_COMPLETE_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ NO_SCAN_COMPLETE_FAILURE ]) ); + + /* Mailbox failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledMboxFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ MBOX_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ MBOX_FAILURE ]) ); + + /* HW awake failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledHwAwakeFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_AWAKE_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_AWAKE_FAILURE ]) ); + + /* TX stuck recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledTxStuck, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ TX_STUCK ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ TX_STUCK ]) ); + + /* disconnect timeout recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledDisconnectTimeout, + 0, 0, 1, /* default is disabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ DISCONNECT_TIMEOUT ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ DISCONNECT_TIMEOUT ]) ); + + /* Power save failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledPowerSaveFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ POWER_SAVE_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ POWER_SAVE_FAILURE ]) ); + + /* Measurement failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledMeasurementFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ MEASUREMENT_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ MEASUREMENT_FAILURE ]) ); + + /* Bus failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledBusFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ BUS_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ BUS_FAILURE ]) ); + + /* HW Watchdog Expired recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledHwWdExpire, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_WD_EXPIRE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ HW_WD_EXPIRE ]) ); + + /* Rx Xfer Failure recovery enabled */ + regReadIntegerParameter(pAdapter, &STRRecoveryEnabledRxXferFailure, + 1, 0, 1, /* default is enabled */ + sizeof (p->healthMonitorInitParams.recoveryTriggerEnabled[ RX_XFER_FAILURE ]), + (TI_UINT8*)&(p->healthMonitorInitParams.recoveryTriggerEnabled[ RX_XFER_FAILURE ]) ); + +/*------------------------------------------- + RSSI/SNR Weights for Average calculations +--------------------------------------------*/ + regReadIntegerParameter(pAdapter, &STRRssiBeaconAverageWeight, + TWD_RSSI_BEACON_WEIGHT_DEF, TWD_RSSI_BEACON_WEIGHT_MIN, + TWD_RSSI_BEACON_WEIGHT_MAX, + sizeof p->twdInitParams.tGeneral.uRssiBeaconAverageWeight, + (TI_UINT8*)&p->twdInitParams.tGeneral.uRssiBeaconAverageWeight); + + regReadIntegerParameter(pAdapter, &STRRssiPacketAverageWeight, + TWD_RSSI_PACKET_WEIGHT_DEF, TWD_RSSI_PACKET_WEIGHT_MIN, + TWD_RSSI_PACKET_WEIGHT_MAX, + sizeof p->twdInitParams.tGeneral.uRssiPacketAverageWeight, + (TI_UINT8*)&p->twdInitParams.tGeneral.uRssiPacketAverageWeight); + + regReadIntegerParameter(pAdapter, &STRSnrBeaconAverageWeight, + TWD_SNR_BEACON_WEIGHT_DEF, TWD_SNR_BEACON_WEIGHT_MIN, + TWD_SNR_BEACON_WEIGHT_MAX, + sizeof p->twdInitParams.tGeneral.uSnrBeaconAverageWeight, + (TI_UINT8*)&p->twdInitParams.tGeneral.uSnrBeaconAverageWeight); + + regReadIntegerParameter(pAdapter, &STRSnrPacketAverageWeight, + TWD_SNR_PACKET_WEIGHT_DEF, TWD_SNR_PACKET_WEIGHT_MIN, + TWD_SNR_PACKET_WEIGHT_MAX, + sizeof p->twdInitParams.tGeneral.uSnrPacketAverageWeight, + (TI_UINT8*)&p->twdInitParams.tGeneral.uSnrPacketAverageWeight); + +/*---------------------------------- + TX power adjust +------------------------------------*/ + + regReadIntegerParameter(pAdapter, &STRTxPowerCheckTime, + 1, 1, 1200, /* in units of 5000 ms */ + sizeof p->siteMgrInitParams.TxPowerCheckTime, + (TI_UINT8*)&p->siteMgrInitParams.TxPowerCheckTime); + + + regReadIntegerParameter(pAdapter, &STRTxPowerControlOn, + 1, 0, 1, /* on/off (1/0) default is on */ + sizeof p->siteMgrInitParams.TxPowerControlOn, + (TI_UINT8*)&p->siteMgrInitParams.TxPowerControlOn); + + regReadIntegerParameter(pAdapter, &STRTxPowerRssiThresh, + 38, 0, 200, /* the value is positive and will be translated by driver */ + sizeof p->siteMgrInitParams.TxPowerRssiThresh, + (TI_UINT8*)&p->siteMgrInitParams.TxPowerRssiThresh); + + regReadIntegerParameter(pAdapter, &STRTxPowerRssiRestoreThresh, + 45, 0, 200, /* the value is positive and will be translated by driver */ + sizeof p->siteMgrInitParams.TxPowerRssiRestoreThresh, + (TI_UINT8*)&p->siteMgrInitParams.TxPowerRssiRestoreThresh); + + regReadIntegerParameter(pAdapter, &STRTxPowerTempRecover, + MIN_TX_POWER, MIN_TX_POWER, MAX_TX_POWER, + sizeof p->regulatoryDomainInitParams.uTemporaryTxPower, + (TI_UINT8*)&p->regulatoryDomainInitParams.uTemporaryTxPower); + +/*---------------------------------- + end of TX power adjust +------------------------------------*/ + +/*---------------------------------- + Scan Concentrator +------------------------------------*/ + regReadIntegerParameter (pAdapter, &STRMinimumDurationBetweenOsScans, + SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_DEF, SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_MIN, SCAN_CNCN_MIN_DURATION_FOR_OS_SCANS_MAX, + sizeof p->tScanCncnInitParams.uMinimumDurationBetweenOsScans, + (TI_UINT8*)&p->tScanCncnInitParams.uMinimumDurationBetweenOsScans); + + regReadIntegerParameter (pAdapter, &STRDfsPassiveDwellTimeMs, + SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_DEF, SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_MIN, SCAN_CNCN_DFS_PASSIVE_DWELL_TIME_MAX, + sizeof p->tScanCncnInitParams.uDfsPassiveDwellTimeMs, + (TI_UINT8*)&p->tScanCncnInitParams.uDfsPassiveDwellTimeMs); + + regReadIntegerParameter (pAdapter, &STRScanPushMode, + SCAN_CNCN_APP_PUSH_MODE_DEF, SCAN_CNCN_APP_PUSH_MODE_MIN, SCAN_CNCN_APP_PUSH_MODE_MAX, + sizeof p->tScanCncnInitParams.bPushMode, + (TI_UINT8*)&p->tScanCncnInitParams.bPushMode); + +/*---------------------------------- + WSC +------------------------------------*/ + regReadIntegerParameter( pAdapter, &STRParseWSCInBeacons, + WSC_PARSE_IN_BEACON_DEF, WSC_PARSE_IN_BEACON_MIN, WSC_PARSE_IN_BEACON_MAX, + sizeof p->tMlmeInitParams.parseWSCInBeacons, + (TI_UINT8*)&p->tMlmeInitParams.parseWSCInBeacons ); + +/*---------------------------------- + Current BSS +------------------------------------*/ + regReadIntegerParameter( pAdapter, &STRNullDataKeepAliveDefaultPeriod, + NULL_KL_PERIOD_DEF, NULL_KL_PERIOD_MIN, NULL_KL_PERIOD_MAX, + sizeof p->tCurrBssInitParams.uNullDataKeepAlivePeriod, + (TI_UINT8*)&p->tCurrBssInitParams.uNullDataKeepAlivePeriod ); + +/*---------------------------------- + Context Engine +------------------------------------*/ + regReadIntegerParameter( pAdapter, &STRContextSwitchRequired, + CONTEXT_SWITCH_REQUIRED_DEF, CONTEXT_SWITCH_REQUIRED_MIN, CONTEXT_SWITCH_REQUIRED_MAX, + sizeof p->tContextInitParams.bContextSwitchRequired, + (TI_UINT8*)&p->tContextInitParams.bContextSwitchRequired ); + + /* + * set 802.11n init parameters + */ + regReadIntegerParameter(pAdapter, &STR11nEnable, + HT_11N_ENABLED_DEF, HT_11N_ENABLED_MIN, + HT_11N_ENABLED_MAX, + sizeof p->twdInitParams.tGeneral.b11nEnable, + (TI_UINT8*)&p->twdInitParams.tGeneral.b11nEnable); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_0, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[0], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[0]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_1, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[1], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[1]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_2, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[2], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[2]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_3, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[3], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[3]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_4, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[4], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[4]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_5, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[5], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[5]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_6, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[6], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[6]); + + regReadIntegerParameter(pAdapter, &STRBaPolicyTid_7, + HT_BA_POLICY_DEF, HT_BA_POLICY_MIN, + HT_BA_POLICY_MAX, + sizeof p->qosMngrInitParams.aBaPolicy[7], + (TI_UINT8*)&p->qosMngrInitParams.aBaPolicy[7]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_0, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[0], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[0]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_1, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[1], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[1]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_2, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[2], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[2]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_3, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[3], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[3]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_4, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[4], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[4]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_5, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[5], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[5]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_6, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[6], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[6]); + + regReadIntegerParameter(pAdapter, &STRBaInactivityTimeoutTid_7, + HT_BA_INACTIVITY_TIMEOUT_DEF, HT_BA_INACTIVITY_TIMEOUT_MIN, + HT_BA_INACTIVITY_TIMEOUT_MAX, + sizeof p->qosMngrInitParams.aBaInactivityTimeout[7], + (TI_UINT8*)&p->qosMngrInitParams.aBaInactivityTimeout[7]); + +/*---------------------------------- + Radio module parameters +------------------------------------*/ +regReadIntegerParameter(pAdapter, &STRTxBiPReferencePower_2_4G, + 128, 0, 255, + sizeof (TI_INT8), + (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPReferencePower_2_4G); + +regReadIntegerTable (pAdapter, &STRTxBiPReferencePower_5G, RADIO_TX_BIP_REF_POWER_DEF_TABLE_5G, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPReferencePower_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE); + +regReadIntegerParameter(pAdapter, &STRTxBiPOffsetdB_2_4G, + 0,0,255, + sizeof (TI_UINT8), + (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPOffsetdB_2_4G); + +regReadIntegerTable (pAdapter, &STRTxBiPOffsetdB_5G, RADIO_TX_BIP_OFF_BD_5G, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxBiPOffsetdB_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_2_4G_Normal, RADIO_TX_PER_POWER_LIMITS_2_4_NORMAL_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_2_4G_Normal, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_2_4G_Degraded, RADIO_TX_PER_POWER_LIMITS_2_4_DEGRADED_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_2_4G_Degraded, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_5G_Normal, RADIO_TX_PER_POWER_LIMITS_5_NORMAL_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_5G_Normal, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerRatePowerLimits_5G_Degraded, RADIO_TX_PER_POWER_LIMITS_5_DEGRADED_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerRatePowerLimits_5G_Degraded, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_2_4G_11b, RADIO_TX_PER_POWER_LIMITS_2_4_11B_DEF_TABLE, + NUMBER_OF_2_4_G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_2_4G_11b, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_2_4G_OFDM, RADIO_TX_PER_POWER_LIMITS_2_4_OFDM_DEF_TABLE, + NUMBER_OF_2_4_G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_2_4G_OFDM, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPerChannelPowerLimits_5G_OFDM, RADIO_TX_PER_POWER_LIMITS_5_OFDM_DEF_TABLE, + NUMBER_OF_5G_CHANNELS, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPerChannelPowerLimits_5G_OFDM, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +/* in case of zero value, use this methode */ + RssiSize = tmpRssiTableSize*2 +tmpRssiTableSize - 1 ; /*includes spaces between bytes*/ + + + regReadStringParameter(pAdapter, &STRRxRssiAndProcessCompensation_2_4G , + (TI_INT8*)(defRxRssiAndProcessCompensation_2_4G), RssiSize, + (TI_UINT8*)staRssiAndProcessCompensation, &RssiSize); + + regConvertStringtoBeaconIETable(staRssiAndProcessCompensation , + (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxRssiAndProcessCompensation_2_4G, + RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE); + + + +regReadIntegerTable (pAdapter, &STRRxRssiAndProcessCompensation_5G, RADIO_RX_RSSI_PROCESS_5_DEF_TABLE, + RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE, NULL, (TI_INT8*)p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxRssiAndProcessCompensation_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + + +regReadIntegerTable (pAdapter, &STRTxPDVsRateOffsets_2_4G, RADIO_TX_PD_VS_RATE_OFFSET_2_4_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPDVsRateOffsets_2_4G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxPDVsRateOffsets_5G, RADIO_TX_PD_VS_RATE_OFFSET_5_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxPDVsRateOffsets_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxIbiasTable_2_4G, RADIO_TX_BIAS_2_4_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxIbiasTable_2_4G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTxIbiasTable_5G, RADIO_TX_BIAS_5_DEF_TABLE, + NUMBER_OF_RATE_GROUPS_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TxIbiasTable_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerParameter(pAdapter, &STRTXBiPReferencePDvoltage_2_4G, + RADIO_RX_FEM_INSERT_LOSS_2_4_DEF, RADIO_RX_FEM_INSERT_LOSS_2_4_MIN, + RADIO_RX_FEM_INSERT_LOSS_2_4_MAX, + sizeof (TI_UINT16), + (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TXBiPReferencePDvoltage_2_4G); + +regReadIntegerTable (pAdapter, &STRTXBiPReferencePDvoltage_5G, RADIO_TX_BIP_REF_VOLTAGE_DEF_TABLE_5G, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.TXBiPReferencePDvoltage_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT16), TI_TRUE); + + +regReadIntegerParameter(pAdapter, &STRRxFemInsertionLoss_2_4G, + 14, 0, 255, + sizeof (TI_UINT8), + (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.RxFemInsertionLoss_2_4G); + +regReadIntegerTable (pAdapter, &STRRxFemInsertionLoss_5G, RADIO_RX_FEM_INSERT_LOSS_5_DEF_TABLE, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tDynRadioParams.RxFemInsertionLoss_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE); + +regReadIntegerParameter(pAdapter, &STRRxTraceInsertionLoss_2_4G, + RADIO_RX_TRACE_INSERT_LOSS_2_4_DEF, RADIO_RX_TRACE_INSERT_LOSS_2_4_MIN, + RADIO_RX_TRACE_INSERT_LOSS_2_4_MAX, + sizeof (TI_UINT8), (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxTraceInsertionLoss_2_4G); + +regReadIntegerParameter(pAdapter, &STRTXTraceLoss_2_4G, + RADIO_RX_TRACE_INSERT_LOSS_2_4_DEF, RADIO_RX_TRACE_INSERT_LOSS_2_4_MIN, + RADIO_RX_TRACE_INSERT_LOSS_2_4_MAX, + sizeof (TI_UINT8), (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.TXTraceLoss_2_4G); + +regReadIntegerParameter(pAdapter, &STRRxTraceInsertionLoss_2_4G, + RADIO_RX_TRACE_INSERT_LOSS_2_4_DEF, RADIO_RX_TRACE_INSERT_LOSS_2_4_MIN, + RADIO_RX_TRACE_INSERT_LOSS_2_4_MAX, + sizeof (TI_UINT8), (TI_UINT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxTraceInsertionLoss_2_4G); + +regReadIntegerTable (pAdapter, &STRRxTraceInsertionLoss_5G, RADIO_RX_TRACE_INSERT_LOSS_5_DEF_TABLE, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.RxTraceInsertionLoss_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8), TI_TRUE); + +regReadIntegerTable (pAdapter, &STRTXTraceLoss_5G, RADIO_TX_TRACE_LOSS_5_DEF_TABLE, + NUMBER_OF_SUB_BANDS_IN_5G_BAND_E, NULL, (TI_INT8*)&p->twdInitParams.tIniFileRadioParams.tStatRadioParams.TXTraceLoss_5G, + (TI_UINT32*)&uTempEntriesCount, sizeof (TI_UINT8),TI_TRUE); + +regReadIntegerParameter(pAdapter, &STRFRefClock, + RADIO_FREF_CLOCK_DEF, RADIO_FREF_CLOCK_MIN, + RADIO_FREF_CLOCK_MAX, + sizeof p->twdInitParams.tPlatformGenParams.RefClk, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.RefClk); + +regReadIntegerParameter(pAdapter, &STRFRefClockSettingTime, + RADIO_FREF_CLOCK_SETTING_TIME_DEF, RADIO_FREF_CLOCK_SETTING_TIME_MIN, + RADIO_FREF_CLOCK_SETTING_TIME_MAX, + sizeof p->twdInitParams.tPlatformGenParams.SettlingTime, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.SettlingTime); + +regReadIntegerParameter(pAdapter, &STRTXBiPFEMAutoDetect, + 0,0,1, + sizeof p->twdInitParams.tPlatformGenParams.TXBiPFEMAutoDetect, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.TXBiPFEMAutoDetect); + +regReadIntegerParameter(pAdapter, &STRTXBiPFEMManufacturer, + 1,0,1, + sizeof p->twdInitParams.tPlatformGenParams.TXBiPFEMManufacturer, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.TXBiPFEMManufacturer); + +regReadIntegerParameter(pAdapter, &STRClockValidOnWakeup, + 0,0,1, + sizeof p->twdInitParams.tPlatformGenParams.ClockValidOnWakeup, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.ClockValidOnWakeup); + +regReadIntegerParameter(pAdapter, &STRDC2DCMode, + 0,0,1, + sizeof p->twdInitParams.tPlatformGenParams.DC2DCMode, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.DC2DCMode); + +regReadIntegerParameter(pAdapter, &STRSingle_Dual_Band_Solution, + 0,0,1, + sizeof p->twdInitParams.tPlatformGenParams.Single_Dual_Band_Solution, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.Single_Dual_Band_Solution); + +regReadIntegerParameter(pAdapter, &STRSettings, + 1,0,255, + sizeof p->twdInitParams.tPlatformGenParams.GeneralSettings, + (TI_UINT8*)&p->twdInitParams.tPlatformGenParams.GeneralSettings); + +/*---------------------------------- + Driver-Main parameters +------------------------------------*/ + regReadIntegerParameter( pAdapter, &STRWlanDrvThreadPriority, + WLAN_DRV_THREAD_PRIORITY_DEF, WLAN_DRV_THREAD_PRIORITY_MIN, WLAN_DRV_THREAD_PRIORITY_MAX, + sizeof p->tDrvMainParams.uWlanDrvThreadPriority, + (TI_UINT8*)&p->tDrvMainParams.uWlanDrvThreadPriority); + + regReadIntegerParameter( pAdapter, &STRBusDrvThreadPriority, + BUS_DRV_THREAD_PRIORITY_DEF, BUS_DRV_THREAD_PRIORITY_MIN, BUS_DRV_THREAD_PRIORITY_MAX, + sizeof p->tDrvMainParams.uBusDrvThreadPriority, + (TI_UINT8*)&p->tDrvMainParams.uBusDrvThreadPriority); + + regReadIntegerParameter( pAdapter, &STRSdioBlkSizeShift, + SDIO_BLK_SIZE_SHIFT_DEF, SDIO_BLK_SIZE_SHIFT_MIN, SDIO_BLK_SIZE_SHIFT_MAX, + sizeof p->tDrvMainParams.uSdioBlkSizeShift, + (TI_UINT8*)&p->tDrvMainParams.uSdioBlkSizeShift); + + + +/*-----------------------------------*/ +/* Roaming parameters */ +/*-----------------------------------*/ +regReadIntegerParameter(pAdapter, & STRRoamingOperationalMode, + ROAMING_MNGR_OPERATIONAL_MODE_DEF, + ROAMING_MNGR_OPERATIONAL_MODE_MIN, + ROAMING_MNGR_OPERATIONAL_MODE_MAX, + sizeof p->tRoamScanMngrInitParams.RoamingOperationalMode, + (TI_UINT8*)&p->tRoamScanMngrInitParams.RoamingOperationalMode); + + +/*-----------------------------------*/ +/* currBss parameters */ +/*-----------------------------------*/ +regReadIntegerParameter(pAdapter, & STRRoamingOperationalMode, + ROAMING_MNGR_OPERATIONAL_MODE_DEF, + ROAMING_MNGR_OPERATIONAL_MODE_MIN, + ROAMING_MNGR_OPERATIONAL_MODE_MAX, + sizeof p->tCurrBssInitParams.RoamingOperationalMode, + (TI_UINT8*)&p->tCurrBssInitParams.RoamingOperationalMode); + + + +/*-----------------------------------*/ +/* FM Coexistence parameters */ +/*-----------------------------------*/ + +regReadIntegerParameter(pAdapter, &STRFmCoexEnable, + FM_COEX_ENABLE_DEF, FM_COEX_ENABLE_MIN, FM_COEX_ENABLE_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uEnable), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uEnable)); + +regReadIntegerParameter(pAdapter, &STRFmCoexSwallowPeriod, + FM_COEX_SWALLOW_PERIOD_DEF, FM_COEX_SWALLOW_PERIOD_MIN, FM_COEX_SWALLOW_PERIOD_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uSwallowPeriod), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uSwallowPeriod)); + +regReadIntegerParameter(pAdapter, &STRFmCoexNDividerFrefSet1, + FM_COEX_N_DIVIDER_FREF_SET1_DEF, FM_COEX_N_DIVIDER_FREF_SET1_MIN, FM_COEX_N_DIVIDER_FREF_SET1_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet1), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet1)); + +regReadIntegerParameter(pAdapter, &STRFmCoexNDividerFrefSet2, + FM_COEX_N_DIVIDER_FREF_SET2_DEF, FM_COEX_N_DIVIDER_FREF_SET2_MIN, FM_COEX_N_DIVIDER_FREF_SET2_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet2), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uNDividerFrefSet2)); + +regReadIntegerParameter(pAdapter, &STRFmCoexMDividerFrefSet1, + FM_COEX_M_DIVIDER_FREF_SET1_DEF, FM_COEX_M_DIVIDER_FREF_SET1_MIN, FM_COEX_M_DIVIDER_FREF_SET1_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet1), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet1)); + +regReadIntegerParameter(pAdapter, &STRFmCoexMDividerFrefSet2, + FM_COEX_M_DIVIDER_FREF_SET2_DEF, FM_COEX_M_DIVIDER_FREF_SET2_MIN, FM_COEX_M_DIVIDER_FREF_SET2_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet2), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uMDividerFrefSet2)); + +regReadIntegerParameter(pAdapter, &STRFmCoexPllStabilizationTime, + FM_COEX_PLL_STABILIZATION_TIME_DEF, FM_COEX_PLL_STABILIZATION_TIME_MIN, FM_COEX_PLL_STABILIZATION_TIME_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uCoexPllStabilizationTime), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uCoexPllStabilizationTime)); + +regReadIntegerParameter(pAdapter, &STRFmCoexLdoStabilizationTime, + FM_COEX_LDO_STABILIZATION_TIME_DEF, FM_COEX_LDO_STABILIZATION_TIME_MIN, FM_COEX_LDO_STABILIZATION_TIME_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uLdoStabilizationTime), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uLdoStabilizationTime)); + +regReadIntegerParameter(pAdapter, &STRFmCoexDisturbedBandMargin, + FM_COEX_DISTURBED_BAND_MARGIN_DEF, FM_COEX_DISTURBED_BAND_MARGIN_MIN, FM_COEX_DISTURBED_BAND_MARGIN_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uFmDisturbedBandMargin), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uFmDisturbedBandMargin)); + +regReadIntegerParameter(pAdapter, &STRFmCoexSwallowClkDif, + FM_COEX_SWALLOW_CLK_DIF_DEF, FM_COEX_SWALLOW_CLK_DIF_MIN, FM_COEX_SWALLOW_CLK_DIF_MAX, + sizeof (p->twdInitParams.tGeneral.tFmCoexParams.uSwallowClkDif), + (TI_UINT8*)&(p->twdInitParams.tGeneral.tFmCoexParams.uSwallowClkDif)); + + +/*----------------------------------------------*/ +/* Rate Management parameters */ +/*----------------------------------------------*/ + +regReadIntegerParameter(pAdapter, &STRRateMngRateRetryScore, + RATE_MNG_RATE_RETRY_SCORE_DEF, RATE_MNG_RATE_RETRY_SCORE_MIN, RATE_MNG_RATE_RETRY_SCORE_MAX, + sizeof (p->twdInitParams.tRateMngParams.RateRetryScore), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateRetryScore)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerAdd, + RATE_MNG_PER_ADD_DEF, RATE_MNG_PER_ADD_MIN, RATE_MNG_PER_ADD_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerAdd), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAdd)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerTh1, + RATE_MNG_PER_TH1_DEF, RATE_MNG_PER_TH1_MIN, RATE_MNG_PER_TH1_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerTh1), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerTh1)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerTh2, + RATE_MNG_PER_TH2_DEF, RATE_MNG_PER_TH2_MIN, RATE_MNG_PER_TH2_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerTh2), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerTh2)); + +regReadIntegerParameter(pAdapter, &STRRateMngInverseCuriosityFactor, + RATE_MNG_INVERSE_CURISITY_FACTOR_DEF, RATE_MNG_INVERSE_CURISITY_FACTOR_MIN, RATE_MNG_INVERSE_CURISITY_FACTOR_MAX, + sizeof (p->twdInitParams.tRateMngParams.InverseCuriosityFactor), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.InverseCuriosityFactor)); + +regReadIntegerParameter(pAdapter, &STRRateMngTxFailLowTh, + RATE_MNG_TX_FAIL_LOW_TH_DEF, RATE_MNG_TX_FAIL_LOW_TH_MIN, RATE_MNG_TX_FAIL_LOW_TH_MAX, + sizeof (p->twdInitParams.tRateMngParams.TxFailLowTh), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.TxFailLowTh)); + +regReadIntegerParameter(pAdapter, &STRRateMngTxFailHighTh, + RATE_MNG_TX_FAIL_HIGH_TH_DEF, RATE_MNG_TX_FAIL_HIGH_TH_MIN, RATE_MNG_TX_FAIL_HIGH_TH_MAX, + sizeof (p->twdInitParams.tRateMngParams.TxFailHighTh), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.TxFailHighTh)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerAlphaShift, + RATE_MNG_PER_ALPHA_SHIFT_DEF, RATE_MNG_PER_ALPHA_SHIFT_MIN, RATE_MNG_PER_ALPHA_SHIFT_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerAlphaShift), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAlphaShift)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerAddShift, + RATE_MNG_PER_ADD_SHIFT_DEF, RATE_MNG_PER_ADD_SHIFT_MIM, RATE_MNG_PER_ADD_SHIFT_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerAddShift), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerAddShift)); + + +regReadIntegerParameter(pAdapter, &STRRateMngPerBeta1Shift, + RATE_MNG_PER_BETA1_SHIFT_DEF, RATE_MNG_PER_BETA1_SHIFT_MIN, RATE_MNG_PER_BETA1_SHIFT_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerBeta1Shift), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta1Shift)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerBeta2Shift, + RATE_MNG_PER_BETA2_SHIFT_DEF, RATE_MNG_PER_BETA2_SHIFT_MIN, RATE_MNG_PER_BETA2_SHIFT_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerBeta2Shift), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta2Shift)); + +regReadIntegerParameter(pAdapter, &STRRateMngPerBeta2Shift, + RATE_MNG_PER_BETA2_SHIFT_DEF, RATE_MNG_PER_BETA2_SHIFT_MIN, RATE_MNG_PER_BETA2_SHIFT_MAX, + sizeof (p->twdInitParams.tRateMngParams.PerBeta2Shift), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.PerBeta2Shift)); + +regReadIntegerParameter(pAdapter, &STRRateMngMaxPer, + RATE_MNG_MAX_PER_DEF, RATE_MNG_MAX_PER_MIN, RATE_MNG_MAX_PER_MAX, + sizeof (p->twdInitParams.tRateMngParams.MaxPer), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.MaxPer)); + + +regReadIntegerParameter(pAdapter, &STRRateMngRateCheckUp, + RATE_MNG_RATE_CHECK_UP_DEF, RATE_MNG_RATE_CHECK_UP_MIN, RATE_MNG_RATE_CHECK_UP_MAX, + sizeof (p->twdInitParams.tRateMngParams.RateCheckUp), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateCheckUp)); + +regReadIntegerParameter(pAdapter, &STRRateMngRateCheckDown, + RATE_MNG_RATE_CHECK_DOWN_DEF, RATE_MNG_RATE_CHECK_DOWN_MIN, RATE_MNG_RATE_CHECK_DOWN_MAX, + sizeof (p->twdInitParams.tRateMngParams.RateCheckDown), + (TI_UINT8*)&(p->twdInitParams.tRateMngParams.RateCheckDown)); + +regReadIntegerTable (pAdapter, &STRRateMngRateRetryPolicy, RATE_MNG_RATE_RETRY_POLICY_DEF_TABLE, + RATE_MNG_MAX_STR_LEN, (TI_UINT8*)&uTempRatePolicyList[0], NULL, + (TI_UINT32*)&uTempRatePolicyCnt, sizeof (TI_UINT8),TI_FALSE); + +/* sanity check */ + if (uTempRatePolicyCnt > RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN) + { + uTempRatePolicyCnt = RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN; + } + + for (uIndex = 0; uIndex < RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN; uIndex++) + { + p->twdInitParams.tRateMngParams.RateRetryPolicy[uIndex] = uTempRatePolicyList[uIndex]; + } + +#ifdef _WINDOWS + /* set etherMaxPayloadSize parameter for MTU size setting */ + pAdapter->etherMaxPayloadSize = ETHER_MAX_PAYLOAD_SIZE; + +#endif /* _WINDOWS */ + +} + + +/*----------------------------------------------------------------------------- + +Routine Name: + + regReadIntegerParameter + +Routine Description: + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regReadIntegerParameter ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_UINT32 defaultValue, + TI_UINT32 minValue, + TI_UINT32 maxValue, + TI_UINT8 parameterSize, + TI_UINT8* pParameter + ) +{ + PNDIS_CONFIGURATION_PARAMETER RetValue; + NDIS_STATUS Status; + TI_UINT32 value; + + NdisReadConfiguration(&Status, &RetValue, + pAdapter->ConfigHandle, pParameterName, + NdisParameterInteger); + + if(Status != NDIS_STATUS_SUCCESS) { + + NdisReadConfiguration(&Status, &RetValue, + pAdapter->ConfigHandle, pParameterName, + NdisParameterString + ); + + if(Status == NDIS_STATUS_SUCCESS) { + assignRegValue(&value, RetValue); + RetValue->ParameterData.IntegerData = value; + + } + + } + + if (Status != NDIS_STATUS_SUCCESS || + RetValue->ParameterData.IntegerData < minValue || + RetValue->ParameterData.IntegerData > maxValue) + { + PRINTF(DBG_REGISTRY,( "NdisReadConfiguration fail\n")); + value = defaultValue; + + } else + { + value = RetValue->ParameterData.IntegerData; + } + + switch (parameterSize) + { + case 1: + *((TI_UINT8*) pParameter) = (TI_UINT8) value; + break; + + case 2: + *((PUSHORT) pParameter) = (USHORT) value; + break; + + case 4: + *((TI_UINT32*) pParameter) = (TI_UINT32) value; + break; + + default: + PRINT(DBG_REGISTRY_ERROR, "TIWL: Illegal Registry parameter size\n"); + break; + + } + +} + +/*----------------------------------------------------------------------------- + +Routine Name: + + regReadIntegerParameterHex + +Routine Description: + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regReadIntegerParameterHex ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_UINT32 defaultValue, + TI_UINT32 minValue, + TI_UINT32 maxValue, + TI_UINT8 defaultSize, + TI_UINT8 * pParameter) +{ + TI_UINT32 parameterSize = 0; + TI_UINT32 value; + TI_BOOL paramFound; + + regReadStringParameter (pAdapter, + pParameterName, + "x", + sizeof("x"), + pParameter, + ¶meterSize); + + /* Note: the "x" is used as a dummy string to detect if the requested key + wasn't found (in that case the x is returned as sefault) */ + paramFound = os_memoryCompare(pAdapter, pParameter, "x", sizeof("x")) != 0; + + if (paramFound) + { + value = tiwlnstrtoi_hex (pParameter, parameterSize); + + if (value < minValue || value > maxValue) + { + value = defaultValue; + } + } + else + { + value = defaultValue; + } + + switch (defaultSize) + { + case 1: + *((TI_UINT8*) pParameter) = (TI_UINT8) value; + break; + + case 2: + *((PUSHORT) pParameter) = (USHORT) value; + break; + + case 4: + *((TI_UINT32*) pParameter) = (TI_UINT32) value; + break; + + default: + PRINT(DBG_REGISTRY_ERROR, "TIWL: Illegal Registry parameter size\n"); + break; + } +} + +/*----------------------------------------------------------------------------- + +Routine Name: + + regReadParameters + +Routine Description: + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regReadStringParameter ( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_INT8* pDefaultValue, + USHORT defaultLen, + TI_UINT8* pParameter, + void* pParameterSize + ) +{ + PNDIS_CONFIGURATION_PARAMETER RetValue; + NDIS_STATUS Status; + ANSI_STRING ansiString; + TI_UINT8* pSizeChar = 0; + PUSHORT pSizeShort = 0; + + if(defaultLen <= 256) + { + pSizeChar = (TI_UINT8*)pParameterSize; + ansiString.MaximumLength = 256; + } + else + { + pSizeShort = (PUSHORT)pParameterSize; + ansiString.MaximumLength = 32576; + } + + NdisReadConfiguration(&Status, &RetValue, + pAdapter->ConfigHandle, pParameterName, + NdisParameterString); + + if (Status == NDIS_STATUS_SUCCESS) + { + ansiString.Buffer = (TI_INT8*)pParameter; + + NdisUnicodeStringToAnsiString(&ansiString, &RetValue->ParameterData.StringData); + if(defaultLen <= 256) + *pSizeChar = (TI_UINT8)ansiString.Length; + else + *pSizeShort = (USHORT)ansiString.Length; + } else + { + if(defaultLen <= 256) + *pSizeChar = (TI_UINT8)defaultLen; + else + *pSizeShort = (USHORT)defaultLen; + + memcpy(pParameter, pDefaultValue, defaultLen); + } + + PRINTF(DBG_REGISTRY_LOUD, ("Read String Registry: %c%c%c%c%c%c%c%c%c%c%c%c = %s\n", + pParameterName->Buffer[0], + pParameterName->Buffer[1], + pParameterName->Buffer[2], + pParameterName->Buffer[3], + pParameterName->Buffer[4], + pParameterName->Buffer[5], + pParameterName->Buffer[6], + pParameterName->Buffer[7], + pParameterName->Buffer[8], + pParameterName->Buffer[9], + pParameterName->Buffer[10], + pParameterName->Buffer[11], + pParameter)); + +} + + + +/*----------------------------------------------------------------------------- + +Routine Name: + + regReadParameters + +Routine Description: + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regReadWepKeyParameter (TWlanDrvIfObjPtr pAdapter, TI_UINT8 *pKeysStructure, TI_UINT8 defaultKeyId) +{ + NDIS_STATUS status; + TSecurityKeys *pSecKeys; + int i; + int len; + TI_UINT8 Buf[MAX_KEY_BUFFER_LEN]; + PNDIS_CONFIGURATION_PARAMETER RetValue; + ANSI_STRING ansiString; + NDIS_STRING STRdot11DefaultWEPKey[4] = + { NDIS_STRING_CONST( "dot11WEPDefaultKey1" ), + NDIS_STRING_CONST( "dot11WEPDefaultKey2" ), + NDIS_STRING_CONST( "dot11WEPDefaultKey3" ), + NDIS_STRING_CONST( "dot11WEPDefaultKey4" ) + }; + + + + PRINTF(DBG_REGISTRY_LOUD, ("Reading WEP keys\n")); + + pSecKeys = (TSecurityKeys*)pKeysStructure; + + /**/ + /* Read WEP from registry*/ + /**/ + for ( i = 0; i < DOT11_MAX_DEFAULT_WEP_KEYS; i++ ) + { + NdisReadConfiguration(&status, &RetValue, + pAdapter->ConfigHandle, &STRdot11DefaultWEPKey[i], + NdisParameterString); + + if(status == NDIS_STATUS_SUCCESS) + { + ansiString.Buffer = (TI_INT8*)Buf; + ansiString.MaximumLength = MAX_KEY_BUFFER_LEN; + + pSecKeys->keyIndex = i; + pSecKeys->keyType = KEY_WEP; + NdisZeroMemory((void *)pSecKeys->macAddress, 6); + + if(((char *)(RetValue->ParameterData.StringData.Buffer))[1] == 0) + { + NdisUnicodeStringToAnsiString(&ansiString, &RetValue->ParameterData.StringData); + + len = decryptWEP((TI_INT8*)Buf, (TI_INT8*)pSecKeys->encKey, ansiString.Length); + } else { + len = decryptWEP((TI_INT8*)RetValue->ParameterData.StringData.Buffer, + (TI_INT8*)pSecKeys->encKey, + RetValue->ParameterData.StringData.Length); + } + + if(len < ACX_64BITS_WEP_KEY_LENGTH_BYTES) + { + PRINTF(DBG_REGISTRY_ERROR, ("Error: minimum WEP key size is 5 bytes(%d)\n", len)); + pSecKeys->keyType = KEY_NULL; + len = 0; + } + else if(len < ACX_128BITS_WEP_KEY_LENGTH_BYTES) + { + len = ACX_64BITS_WEP_KEY_LENGTH_BYTES; + } + else if(len < ACX_256BITS_WEP_KEY_LENGTH_BYTES) + { + len = ACX_128BITS_WEP_KEY_LENGTH_BYTES; + } + else + len = ACX_256BITS_WEP_KEY_LENGTH_BYTES; + + pSecKeys->encLen = (TI_UINT8)len; + + } + else + { + pSecKeys->keyType = KEY_NULL; + pSecKeys->encLen = 0; + } + +#ifdef _WINDOWS + /*create local keys cache*/ + pAdapter->DefaultWepKeys[i].KeyIndex = i; + if(i==defaultKeyId) + pAdapter->DefaultWepKeys[i].KeyIndex |= 0x80000000; + pAdapter->DefaultWepKeys[i].KeyLength = pSecKeys->encLen; + NdisMoveMemory((void *)pAdapter->DefaultWepKeys[i].KeyMaterial, + (void *)pSecKeys->encKey, pSecKeys->encLen); + pAdapter->DefaultWepKeys[i].Length = sizeof(OS_802_11_WEP); +#endif /* _WINDOWS */ + + pSecKeys++; + } +} + +#define iswhite(c) ( (c==' ') || (c=='\t') || (c=='\n') ) + +/* + * + * Fun: isnumber + * + * Desc: check if the ascii character is a number in the given base + * + * Ret: 1 if number is a digit, 0 if not. + * + * Notes: none + * + * File: btoi.c + * + */ + +static TI_BOOL isnumber ( short *pi, char c, short base ) +{ + + /* return 1 if c is a digit in the give base, else return 0 */ + /* place value of digit at pi */ + if ( base == 16 ) + { + if ( '0' <= c && c <= '9' ) + { + *pi = c - '0'; + return (1); + } + else if ( 'a' <= c && c <= 'f' ) + { + *pi = c - 'a' + 10 ; + return (1); + } + else if ( 'A' <= c && c <= 'F' ) + { + *pi = c - 'A' + 10 ; + return (1); + } + else + { + return (0); + } + } + c -= '0'; + if ( 0 <= (signed char)c && c < base ) + { + *pi = c ; + return (1); + } + else + { + return (0); + } +} /* end of isnumber */ + + +static short _btoi (char *sptr, short slen, int *pi, short base) +{ + char *s, c ; + short d, sign ; + int result ; + char saved ; + + s = sptr ; + result = 0 ; + saved = sptr [slen]; + sptr [slen] = '\0'; + + /* skip initial white space */ +/* while ( (c = *s++) && iswhite(c) ); */ + do + { + c = *s++; + if (!(c && iswhite(c))) + break; + }while(1); + + --s ; + + /* recognize optional sign */ + if ( *s == '-' ) + { + sign = - 1 ; + s++ ; + } + else if ( *s == '+' ) + { + sign = 1 ; + s++ ; + } + else + { + sign = 1 ; + } + + /* recognize optional hex# prefix */ + if ((base == 16) && ((*s == '0') && ((*(s + 1) == 'x') || (*(s + 1) == 'X')) + )) + s += 2 ; + + /* recognize digits */ + +/* for (; (c = *s++) && isnumber(&d, c, base) ; ) + { + result = base * result + d ; + } +*/ + while(1) + { + c = *s++; + if (!(c && isnumber(&d, c, base))) + break; + result = base * result + d ; + }; + + *pi = sign * result ; + sptr [slen] = saved ; /* restore character which we changed to null */ + return (s - sptr - 1); +} /* end of _btoi */ + +static int decryptWEP +( + TI_INT8* pSrc, + TI_INT8* pDst, + TI_UINT32 len +) +{ + /**/ + /* key to use for encryption*/ + /**/ + static LPCSTR lpEncryptKey = "jkljz98c&2>a+t)cl5[d=n3;\"f_um6\\d~v%$HO1"; + int cnEncryptLen = strlen(lpEncryptKey); + + char cIn, cCrypt, cHex[3]; + int i, j, nLen; + int nPos; + + nLen = len / 2; + nPos = len; + + /* start reading from end*/ + nPos = len - 2; + + for(i = 0; (i < nLen) && (nPos >= 0); i++, nPos -= 2) + { + /* get hex character*/ + cHex[0] = pSrc[nPos]; + cHex[1] = pSrc[nPos + 1]; + cHex[2] = 0; + + _btoi ( cHex, 2, &j, 16); + cIn = (char) j; + + cCrypt = lpEncryptKey[i % cnEncryptLen]; + cIn = cIn ^ cCrypt; + + pDst[i] = cIn; + } + + PRINTF(DBG_REGISTRY_LOUD, ("First 5 bytes of WEP: %x-%x-%x-%x-%x\n", + pDst[0], + pDst[1], + pDst[2], + pDst[3], + pDst[4])); + + return nLen; +} + +static void initValusFromRgstryString +( + TI_INT8* pSrc, + TI_INT8* pDst, + TI_UINT32 len +) +{ + int j; + TI_UINT32 count; + for (count = 0 ; count < len ; count++) + { + _btoi((char *) (pSrc+(count*3)), 2, &j, 16 ); + + pDst[count] = (TI_UINT8) j; + } +} + +#ifdef TI_DBG + +void regReadLastDbgState (TWlanDrvIfObjPtr pAdapter) +{ + NDIS_STRING OsDbgStr = NDIS_STRING_CONST("OsDbgState"); + PNDIS_CONFIGURATION_PARAMETER Value; + NDIS_STATUS Status; + + NdisReadConfiguration(&Status, &Value, + pAdapter->ConfigHandle, &OsDbgStr, + NdisParameterInteger + ); + + if (Status != NDIS_STATUS_SUCCESS) + { + + TiDebugFlag = ((DBG_NDIS_OIDS | DBG_INIT | DBG_RECV | DBG_SEND | DBG_IOCTL | DBG_INTERRUPT) << 16) | + DBG_SEV_VERY_LOUD | DBG_SEV_INFO | DBG_SEV_LOUD | DBG_SEV_ERROR | DBG_SEV_FATAL_ERROR; + + } else + { + + PRINTF(DBG_REGISTRY_VERY_LOUD, ("TIWL: New Flag - 0x%X\n", Value->ParameterData.IntegerData)); + + TiDebugFlag = Value->ParameterData.IntegerData; + + } +} + +#endif /* TI_DBG */ + + + +static void readRates(TWlanDrvIfObjPtr pAdapter, TInitTable *pInitTable) +{ + /* + ** B band + */ + regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_B, + BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_B_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_B_MODE]); + + regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_B, + SUPPORTED_RATE_SET_1_2_5_5_11_22, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_1_2_5_5_11_22, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_B_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_B_MODE]); + /* + ** G band (B&G rates) + */ + regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_G, + BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_G_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_G_MODE]); + + regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_G, + SUPPORTED_RATE_SET_ALL, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_ALL, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_G_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_G_MODE]); + + /* + ** A band + */ + regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_A, + BASIC_RATE_SET_6_12_24, BASIC_RATE_SET_6_12_24, BASIC_RATE_SET_6_12_24, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_A_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_A_MODE]); + + regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_A, + SUPPORTED_RATE_SET_UP_TO_54, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_UP_TO_54, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_A_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_A_MODE]); + + /* + ** Dual band (A&G) + */ + regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_AG, + BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_DUAL_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_DUAL_MODE]); + + regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_AG, + SUPPORTED_RATE_SET_ALL_OFDM, SUPPORTED_RATE_SET_1_2, SUPPORTED_RATE_SET_ALL_OFDM, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_DUAL_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_DUAL_MODE]); + + /* + ** N supported + */ + regReadIntegerParameter(pAdapter, &STRdot11BasicRateMask_N, + BASIC_RATE_SET_1_2_5_5_11, BASIC_RATE_SET_1_2, BASIC_RATE_SET_1_2_5_5_11, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_N_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstryBasicRate[DOT11_N_MODE]); + + regReadIntegerParameter(pAdapter, &STRdot11SupportedRateMask_AG, + SUPPORTED_RATE_SET_ALL_MCS_RATES, SUPPORTED_RATE_SET_ALL_MCS_RATES, SUPPORTED_RATE_SET_ALL_MCS_RATES, + sizeof pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_N_MODE], + (TI_UINT8*)&pInitTable->siteMgrInitParams.siteMgrRegstrySuppRate[DOT11_N_MODE]); +} + + +static void decryptScanControlTable(TI_UINT8* src, TI_UINT8* dst, USHORT len) +{ + + USHORT i; + int parityFlag = 0; + char tmp = 0; + char finalChar = 0; + + for(i=0; i < len; i++) + { + switch(src[i]) + { + case 'A': + case 'a': + tmp = 10; + break; + case 'B': + case 'b': + tmp = 11; + break; + case 'C': + case 'c': + tmp = 12; + break; + case 'D': + case 'd': + tmp = 13; + break; + case 'E': + case 'e': + tmp = 14; + break; + case 'F': + case 'f': + tmp = 15; + break; + default: + if( (src[i] >='0') && (src[i] <= '9') ) + tmp = (src[i] - '0'); + else + return; /* ERROR input char */ + } + if(parityFlag == 0) + finalChar = tmp << 4; + else + { + finalChar |= (tmp & 0x0f); + dst[i/2] = finalChar; + } + parityFlag = 1-parityFlag; + } +} + + +/*----------------------------------------------------------------------------- + +Routine Name: + + regReadIntegerTable + +Routine Description: + reads any table format and insert it to another string. + the delimiters of the tables can be: + - space (" ") + - comma (",") + the table reads only integers thus its reads the following chars: + - "0" till "9" + - minus sign ("-") + +Arguments: + + +Return Value: + + zero on success else - error number. + +-----------------------------------------------------------------------------*/ +TI_UINT32 +regReadIntegerTable( + TWlanDrvIfObjPtr pAdapter, + PNDIS_STRING pParameterName, + TI_INT8* pDefaultValue, + USHORT defaultLen, + TI_UINT8* pUnsignedParameter, + TI_INT8* pSignedParameter, + TI_UINT32* pEntriesNumber, /* returns the number of read entries */ + TI_UINT8 uParameterSize, + TI_BOOL bHex) +{ + static CHAR Buffer[MAX_KEY_BUFFER_LEN]; + TI_UINT32 parameterIndex = 0; + int myNumber; + + TI_UINT32 index; + TI_UINT32 bufferSize = 0; + + char tempBuffer[16]; + char *pTempBuffer = tempBuffer; + TI_UINT32 tempBufferIndex = 0; + + TI_BOOL isDigit; + TI_BOOL numberReady; + TI_BOOL isSign; + TI_BOOL endOfLine; + + TI_UINT32 debugInfo = 0; + TI_INT8* pBuffer = (TI_INT8*)&Buffer; + + regReadStringParameter(pAdapter, + pParameterName, + pDefaultValue, + defaultLen, + (TI_UINT8*)pBuffer, + &bufferSize); + + index = 0; + do { /* Parsing one line */ + + isSign = TI_FALSE; + isDigit = TI_FALSE; + numberReady = TI_FALSE; + tempBufferIndex = 0; + endOfLine = TI_FALSE; + + while ((numberReady==TI_FALSE) && (index<bufferSize)) + { + /* Parsing one number */ + switch (pBuffer[index]) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + pTempBuffer[tempBufferIndex] = pBuffer[index]; + ++tempBufferIndex; + isDigit = TI_TRUE; + break; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + if (bHex) + { + pTempBuffer[tempBufferIndex] = pBuffer[index]; + ++tempBufferIndex; + isDigit = TI_TRUE; + } + break; + case '-': + pTempBuffer[tempBufferIndex] = pBuffer[index]; + ++tempBufferIndex; + if (isDigit==TI_TRUE) + { + PRINTF(DBG_REGISTRY_INFO, ("Error in read parameter %c in line index %d\n\ + The sign '-' isn't in place!\n",pBuffer[index],index)); + debugInfo = 1; + } + isSign = TI_TRUE; + break; + + case ' ': + case '\t': /* tab char */ + /* for space discard*/ + if ((isDigit==TI_FALSE) && (isSign==TI_FALSE)) + { + break; + } + /* + else we continue to the code of the case ',' + */ + case '\0': + case '\n': + case '\r': + endOfLine = TI_TRUE; + + case ',': + /* end of number reading */ + pTempBuffer[tempBufferIndex] = '\0'; + if (isDigit == TI_FALSE) + { + PRINTF(DBG_REGISTRY_INFO, ("Error in end of number delimiter. number isn't ready.\ + check index %d",index)); + debugInfo = 2; + } + numberReady = TI_TRUE; + break; + + default: + PRINTF(DBG_REGISTRY_INFO, ("%s(%d) Error - unexpected parameter %c.\n", + __FILE__,__LINE__,pBuffer[index])); + debugInfo = 3; + break; + }/* switch( pBuffer[index] ) */ + + if (debugInfo != 0) + { + return debugInfo; + } + ++index; + + }/* while (numberReady==TI_FALSE)*/ + + if (pTempBuffer[0] == '-') + { + ++pTempBuffer; + if (!bHex) + { + myNumber = tiwlnstrtoi(pTempBuffer,tempBufferIndex-1); + } + else + { + myNumber = tiwlnstrtoi_hex(pTempBuffer,tempBufferIndex-1); + } + myNumber = -(myNumber); + } + else + { + if (!bHex) + { + myNumber = tiwlnstrtoi(pTempBuffer,tempBufferIndex); + } + else + { + myNumber = tiwlnstrtoi_hex(pTempBuffer,tempBufferIndex); + } + } + + switch (uParameterSize) + { + case 1: + if (pUnsignedParameter) + { + ((TI_UINT8*) pUnsignedParameter)[parameterIndex] = (TI_UINT8) myNumber; + } + else + { + ((TI_INT8*) pSignedParameter)[parameterIndex] = (TI_INT8) myNumber; + } + break; + + case 2: + if (pUnsignedParameter) + { + ((PUSHORT) pUnsignedParameter)[parameterIndex] = (USHORT) myNumber; + } + else + { + ((TI_INT16*) pSignedParameter)[parameterIndex] = (TI_INT16) myNumber; + } + break; + + case 4: + if (pUnsignedParameter) + { + ((TI_UINT32*) pUnsignedParameter)[parameterIndex] = (TI_UINT32) myNumber; + } + else + { + ((TI_INT32*) pSignedParameter)[parameterIndex] = (TI_INT32) myNumber; + } + break; + + default: + PRINTF(DBG_REGISTRY_INFO, ("%s(%d) Error - Illegal Registry parameter size.\n", + __FILE__,__LINE__)); + break; + } + + ++parameterIndex; + + }while ((index<bufferSize)&&(endOfLine==TI_FALSE)); + + *pEntriesNumber = parameterIndex; /* return number of entries read */ + return debugInfo; +} + + +void assignRegValue(TI_UINT32* lValue, PNDIS_CONFIGURATION_PARAMETER ndisParameter) +{ + char b[8]; + ANSI_STRING a = {0, 0, 0}; + + a.MaximumLength = sizeof(b); + a.Buffer=(TI_INT8*)b; + + if(ndisParameter->ParameterData.StringData.Length <= sizeof (b) * 2) + { + if ( ((char *)(ndisParameter->ParameterData.StringData.Buffer))[1] == 0 ) + { + NdisUnicodeStringToAnsiString ( &a, &(ndisParameter)->ParameterData.StringData ); + *lValue = tiwlnstrtoi ( (char *)a.Buffer, a.Length ); + } else { + *lValue = tiwlnstrtoi ( (char *)(ndisParameter->ParameterData.StringData.Buffer), ndisParameter->ParameterData.StringData.Length); + } + } else { + *lValue = 0; + } + } + +/*----------------------------------------------------------------------------- + +Routine Name: + + regConvertStringtoBeaconIETable + +Routine Description: Converts the Ip Adrress in a form of string readen from the Registry +to the Ip Address Array to be stored in the init_table struct + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regConvertStringtoBeaconIETable(TI_UINT8 *staIpAddressString, TI_UINT8 *IpAddressArray, TI_UINT8 size) +{ + char *ptr; + TI_UINT8 *tmpIpAddr; + TI_UINT8 value = 0, value_l, value_h, add_value; + int i, str_len; + + /* Take the pointer to the string MAC Address to convert it to the Array MAC Address */ + ptr = (char *)staIpAddressString; + tmpIpAddr = IpAddressArray; + str_len = 3 * size - 1; + + for(i=0;(i < size);ptr++,str_len--) + { + if (str_len > 0) { + /* The value can be or "0-9" or from "a-f" */ + value_l = (*ptr - '0'); + value_h = (*ptr - 'a'); + } + else { /* last element */ + value_l = value_h = 16; + } + /*PRINTF(DBG_REGISTRY,("value_l [%d] value_h [%d] *ptr %c value %d\n",value_l,value_h,*ptr,value));*/ + + if( (value_l <= 9) || (value_h <= 15 ) ) + { + /* We are in an expected range */ + /* nCheck if 0-9 */ + if(value_l <= 9 ) + { + add_value = value_l; + } + /* Check if a-f */ + else + { + /* 'a' is in fact 10 decimal in hexa */ + add_value = value_h + 10; + } + value = value * 16 + add_value; + /*PRINTF(DBG_REGISTRY,("value %d add_value %d \n",value,add_value));*/ + } + else + { + tmpIpAddr[i] = value; + /*PRINTF(DBG_REGISTRY,("tmpMacAddr[%d] is %x\n",i,tmpMacAddr[i]));*/ + value = 0; + i++; + } + } +} + +/*----------------------------------------------------------------------------- + +Routine Name: + + regConvertStringtoCoexActivityTable + +Routine Description: Converts the CoexActivity string into CoexActivity config table + + +Arguments: + + +Return Value: + + None + +-----------------------------------------------------------------------------*/ +static void regConvertStringtoCoexActivityTable(TI_UINT8 *strCoexActivityTable, TI_UINT32 numOfElements, TCoexActivity *CoexActivityArray, TI_UINT8 size) +{ + char *ptr; + TI_UINT16 tmpArray[NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG]; + TI_UINT16 value = 0, value_l, value_h, add_value; + TI_UINT32 i; + int entry = 0; + + /* Note: Currently it is not in use, but it has potential buffer overrun + problem if buffer is not ended with blank (Dm) */ + + /* Take the pointer to the string MAC Address to convert it to the Array MAC Address */ + ptr = (char *)strCoexActivityTable; + + for(i=0;(i < numOfElements*NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG);ptr++) + { + /* The value can be or "0-9" or from "a-f" */ + value_l = (*ptr - '0'); + value_h = (*ptr - 'a'); + + /*PRINTF(DBG_REGISTRY,("value_l [%d] value_h [%d] *ptr %c value %d\n",value_l,value_h,*ptr,value));*/ + + if( (value_l <= 9) || (value_h <= 15 ) ) + { + /* We are in an expected range */ + /* nCheck if 0-9 */ + if(value_l <= 9 ) + { + add_value = value_l; + } + /* Check if a-f */ + else + { + /* 'a' is in fact 10 decimal in hexa */ + add_value = value_h + 10; + } + value = value * 16 + add_value; + /* PRINTF(DBG_REGISTRY,("value %d add_value %d \n",value,add_value));*/ + } + else + { + tmpArray[i%NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG] = value; + value = 0; + i++; + if ((i%NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG) == 0) + { + CoexActivityArray[entry].coexIp = (TI_UINT8)tmpArray[0]; + CoexActivityArray[entry].activityId = (TI_UINT8)tmpArray[1]; + CoexActivityArray[entry].defaultPriority= (TI_UINT8)tmpArray[2]; + CoexActivityArray[entry].raisedPriority = (TI_UINT8)tmpArray[3]; + CoexActivityArray[entry].minService = tmpArray[4]; + CoexActivityArray[entry].maxService = tmpArray[5]; + entry++; + } + } + } +} + +static void parse_hex_string(char * pString, TI_UINT8 StrLength, TI_UINT8 * pBuffer, TI_UINT8 * Length) +{ + char ch; + int iter = 0; + + while ((iter < StrLength) && (ch = pString[iter])) + { + TI_UINT8 val = ((ch >= '0' && ch <= '9') ? (ch - '0') : + (ch >= 'A' && ch <= 'F') ? (0xA + ch - 'A') : + (ch >= 'a' && ch <= 'f') ? (0xA + ch - 'a') : 0); + + /* even indexes go to the lower nibble, odd indexes push them to the */ + /* higher nibble and then go themselves to the lower nibble. */ + if (iter % 2) + pBuffer[iter / 2] = ((pBuffer[iter / 2] << (BIT_TO_BYTE_FACTOR / 2)) | val); + else + pBuffer[iter / 2] = val; + + ++iter; + } + + /* iter = 0 len = 0, iter = 1 len = 1, iter = 2 len = 1, and so on... */ + *Length = (iter + 1) / 2; +} + +static void parse_binary_string(char * pString, TI_UINT8 StrLength, TI_UINT8 * pBuffer, TI_UINT8 * Length) +{ + char ch; + int iter = 0; + + while ((iter < StrLength) && (ch = pString[iter])) + { + TI_UINT8 val = (ch == '1' ? 1 : 0); + + if (iter % BIT_TO_BYTE_FACTOR) + pBuffer[iter / BIT_TO_BYTE_FACTOR] |= (val << (iter % BIT_TO_BYTE_FACTOR)); + else + pBuffer[iter / BIT_TO_BYTE_FACTOR] = val; + + ++iter; + } + + /* iter = 0 len = 0, iter = 1 len = 1, iter = 8 len = 1, and so on... */ + *Length = (iter + BIT_TO_BYTE_FACTOR - 1) / BIT_TO_BYTE_FACTOR; +} + +static void parse_filter_request(TRxDataFilterRequest* request, TI_UINT8 offset, char * mask, TI_UINT8 maskLength, char * pattern, TI_UINT8 patternLength) +{ + request->offset = offset; + request->maskLength = request->patternLength = 0; + + if (maskLength > 0) + { + parse_binary_string(mask, maskLength, request->mask, &request->maskLength); + parse_hex_string(pattern, patternLength, request->pattern, &request->patternLength); + } +} |