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