/*
 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
 *
 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
 *
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */
/*
 * Woodside Networks, Inc proprietary. All rights reserved.
 * This is the data definition file for the CFG module.
 * Author:         Kevin Nguyen
 * Date:           03/18/02
 * History:-
 * 03/18/02        Created.
 * 08/10/05  ww: add maoe channels to have a complete channel listing: (see WNI_CFG_VALID_CHANNEL_LIST)
 * 08/10/05 ww: WNI_CFG_SCAN_CONTROL_LIST has a new contents
 * --------------------------------------------------------------------
 */

**********************************************************************
*
* This file contains the descriptions of all configuration parameters
* for both STA and AP.
*
* OUTPUT:
* -------
* The output files are:
*    wniCfgSta.h     - C header file for STA mode only
*    wniCfgAp.h      - C header file for both STA and AP
*    wniCfgSta.bin   - Control and default values for STA system
*    wniCfgAp.bin    - Control and default values for AP system
*
* PARAMETER DESCRIPTION:
* ----------------------
* For each parameter, the description must be on separate lines and
* exactly as specified below.  [] are comments and should not be included.
*
*     [Common info]    parameter_name    type    maxLen    semIndx
*     [STA flags]      valid    RW    P/NP    RESTART/RELOAD
*     [STA_NTF]        notification_mask
*     [STA values]     min    max    value  [for integer]
*                      length byte1 byte2 ... [for string]
*     [AP flags]       valid    RW/RO/WO    P/NP    RESTART/RELOAD
*     [AP_NTF]         notification_mask
*     [AP values]      min    max    value  [for integer]
*                      length byte1 byte2 ... [for string]
*
* parameter_name:
*         This will be used as the base name for C macro definition.
*         Therefore, C syntax rule must be observed.
*
* type:
*        Specifies parameter type
*            S - variable-length string
*            I - integer
*
* maxLen:
*        Specifies maximum parameter length in bytes.
*
* semIndx:
*        Specifies semaphore index to use for locking this parameter.
*        More than one parameters (those belonging to the same group)
*        can share the same semaphore index.
*
* valid:
*         Specifies if this parameter will be valid in current mode.
*            V  - Valid
*            NV - Not valid
*
* RW:
*        Specifies Read/Write mode.
*            RO - Read only
*            RW - Read/Write
*            WO - Write only
*            XX - Not accessible from host
*
* P:
*        Specifies persistent memory option
*            P  - Save to persistent memory
*            NP - No save
*
* RELOAD:
*        Specifies whether setting this requires reloading the MAC module
*        This attribute can be changed only when SME is in OFFLINE or SUSPEND(OFFLINE) state
*
* RESTART:
*        Specifies whether setting this requires (re)assoc at STA and restart at AP
*        This attribute can be changed only when SME is in OFFLINE, SUSPEND(OFFLINE),
*        IDLE or SUSPEND(IDLE) states
*
* STA_notification:
*        Lists modules to be notified in STA mode.  Valid modules are:
*        HDD, LIM, SCH, ARQ, DPH, NIM, SP, RFP, RHP, TFP.  More than one
*        modules can be listed on the same line using space or tab as the
*        separator.  If no notification is required, 'NONE' must be specified.
*
* AP_notification:
*        Lists module to be notified in AP mode.  Valid modules are:
*        HDD, LIM, SCH, ARQ, DPH, NIM, SP, RFP, RHP, TFP.  More than one
*        modules can be listed on the same line using space or tab as the
*        separator.  If no notification is required, 'NONE' must be specified.
*
* STA/AP integer values:
*        min:
*        Specifies minimum value for an integer parameter.  This field is
*        ignored if the parameter type is string.  However, this field must
*        not be omitted.
*
*        max:
*        Specifies maximum value for an integer parameter.  This field is
*        ignored if the parameter type is string.  However, this field must
*        not be omitted.
*
*        default:
*        Specifies default value for an integer parameter.  This field is
*        ignored if the parameter type is string.  However, this field must
*        not be omitted.
*
* STA/AP string values:
*        len:
*        The actual length of the string
*
*        bytei:
*        byte i of the string where i varies from 1 to len
*
* TABLE GENERATION:
* -----------------
*        Table can be generated using keywords '#TABLE' and '#END' as below:
*
*        #TABLE  table_name   number_of_row
*        WNI_CFG_xxxx
*        .......
*        .......
*        #END
*
*        The CFG utility will generate the following output:
*        WNI_CFG_table_xxx_ID    xxx
*        WNI_CFG_table_xxx_ROW   number_of_rows
*        WNI_CFG_table_xxx_COL   number_of_columns
*
*        These will be followed by the parameter definition for each entry in
*        the table.  Table is organized in column-major order.
*
*        #ENTRY_VALUES 1
*        0    4    1
*        0    0    0
*        #ENTRY_VALUES 2
*        0    4    2
*        0    0    0
*        #ENTRY_VALUES 3
*        0    4    3
*        0    0    0
*        #ENTRY_VALUES 4
*        0    4    4
*        0    0    0
*
*
* ENUMERATION
* -----------
*        Enumerations can be define using keyword '#ENUM'
*
*        #ENUM xxx   val
*
*        The cfg utility will generate the following output in the header file
*        #define paramname_xxx    val
*


*
* Station ID (changing requires restart)
*

WNI_CFG_STA_ID    S    6    1
V    RW    NP RELOAD
HAL
6    0x22 0x22 0x44 0x44 0x33 0x33
V    RW    NP RELOAD
HAL
6    0x22 0x22 0x11 0x11 0x33 0x33

*
* CF Pollable
*

WNI_CFG_CF_POLLABLE    I    4    1
NV    RO    NP RESTART
NONE
0    0    0
V    RO    NP RESTART
NONE
0    1    0

*
* CFP Period
*

WNI_CFG_CFP_PERIOD    I    4    1
V    RO    NP
NONE
0    255   1
V    RW    NP
SCH
0    255   1

*
* CFP Max Duration
*

WNI_CFG_CFP_MAX_DURATION    I    4    1
V    RO   NP
NONE
0    65535    30000
V    RW   NP
HAL
0    65535    30000

*
* SSID (changing requires restart)
*

WNI_CFG_SSID    S    32    1
V    RW    NP RESTART
NONE
10    1 2 3 4 5 6 7 8 9 0
V    RW    NP RESTART
NONE
10    1 2 3 4 5 6 7 8 9 0

*
* Beacon Period
* Can't be changed on STA in infrastructure, ignore notification at SCH
*

WNI_CFG_BEACON_INTERVAL    I    4    2
V    RW    NP
SCH
0    65535    100
V    RW    NP
SCH
0    65535    100

*
* DTIM Period
*

WNI_CFG_DTIM_PERIOD        I    4    2
V    RO    NP
NONE
0    65535    1
V    RW    NP
SCH
0    65535    1


*
* WEP Key Length (5 or 13 bytes)
*

WNI_CFG_WEP_KEY_LENGTH    I    4    5
V    RW    NP RESTART
NONE
5    13    5
V    RW    NP RESTART
NONE
5    13    5

#ENUM 5    5
#ENUM 13   13

*
* Default Key Table
*

#TABLE    WNI_CFG_WEP_DEFAULT_KEY_TABLE    4

WNI_CFG_WEP_DEFAULT_KEY    S    13    4
V    WO    NP RESTART
NONE
0
V    WO    NP RESTART
NONE
0

#END

*
* WEP Default Key id
*

WNI_CFG_WEP_DEFAULT_KEYID    I    4    5
V    RW    NP
LIM
0    3    0
V    RW    NP
LIM
0    3    0

#ENUM 0    0
#ENUM 1    1
#ENUM 2    2
#ENUM 3    3

*
* Exclude unencrypted frames (WEP)
*

WNI_CFG_EXCLUDE_UNENCRYPTED    I    4    5
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    0

*
* RTS Threshold
*

WNI_CFG_RTS_THRESHOLD    I    4    6
V    RW    NP
HAL
0    2347    2347
V    RW    NP
HAL
0    2347    2347

*
* Short Retry Limit
*

WNI_CFG_SHORT_RETRY_LIMIT    I    4    6
V    RW    NP
HAL
0    255   6
V    RW    NP
HAL
0    255   6

*
* Long Retry Limit
*

WNI_CFG_LONG_RETRY_LIMIT    I    4    6
V    RW    NP
HAL
0    255   6
V    RW    NP
HAL
0    255   6


*
* Fragmentation Threshold
*

WNI_CFG_FRAGMENTATION_THRESHOLD    I    4    6
V    RW    NP
HAL
256    8000    8000
V    RW    NP
HAL
256    8000    8000


*
* Minimum Channel Time (TU)
*

WNI_CFG_ACTIVE_MINIMUM_CHANNEL_TIME    I    4    9
V    RW    NP
NONE
0    65535  20
V    RW    NP
NONE
0    65535  20

*
* Maximum Channel Time (TU)
*

WNI_CFG_ACTIVE_MAXIMUM_CHANNEL_TIME    I    4    9
V    RW    NP
NONE
0    65535    40
V    RW    NP
NONE
0    65535    40
*
* Minimum Channel Time (TU)
*

WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME    I    4    9
V    RW    NP
NONE
0    65535  60
V    RW    NP
NONE
0    65535  60

*
* Maximum Channel Time (TU)
*

WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME    I    4    9
V    RW    NP
NONE
0    65535    110
V    RW    NP
NONE
0    65535    110

*
* Join Failure Timeout (TU)
*

WNI_CFG_JOIN_FAILURE_TIMEOUT    I    4    7
V    RW    NP
NONE
0    65535    3000
V    RW    NP
NONE
0    65535    3000

*
* Authenticate Failure Timeout (TU)
*

WNI_CFG_AUTHENTICATE_FAILURE_TIMEOUT    I    4    7
V    RW    NP
NONE
0    65535    1000
V    RW    NP
NONE
0    65535    1000

*
* Authenticate Response Timeout (TU)
*

WNI_CFG_AUTHENTICATE_RSP_TIMEOUT    I    4    7
V    RW    NP
NONE
0    65535    1000
V    RW    NP
NONE
0    65535    1000

*
* Assocation Failure Timeout (TU)
*

WNI_CFG_ASSOCIATION_FAILURE_TIMEOUT    I    4    8
V    RW    NP
LIM
0    65535 2000
V    RW    NP
LIM
0    65535 3000

*
* Reassociation Failure Timeout (TU)
*

WNI_CFG_REASSOCIATION_FAILURE_TIMEOUT    I    4    7
V    RW    NP
NONE
0    65535    1000
V    RW    NP
NONE
0    65535    3000


*
* RA periodicity Timeout (TU)
*

WNI_CFG_RA_PERIODICITY_TIMEOUT_IN_PS    I    4    7
V    RW    NP
HAL
0    65535    1000
NV    RW    NP
NONE
0    0    0

*
* Beacon Filter Enable/Disable (TU)
*

WNI_CFG_PS_ENABLE_BCN_FILTER    I    4    7
V    RW    NP
HAL
0    1    1
NV    RW    NP
NONE
0    1    1

*
* Heart Beat Enable/Disable (TU)
*

WNI_CFG_PS_ENABLE_HEART_BEAT    I    4    7
V    RW    NP
HAL
0    1    1
NV    RW    NP
NONE
0    1    1

*
* RSSI Monitor Enable/Disable (TU)
*

WNI_CFG_PS_ENABLE_RSSI_MONITOR    I    4    7
V    RW    NP
HAL
0    1    0
NV    RW    NP
NONE
0    1    0


*
* PS Data InActivity Timeout (TU)
*

WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT    I    4    7
V    RW    NP
HAL
1    255    20
NV    RW    NP
NONE
1    255    20


*
* RF Settling Time Clk (In US)
*

WNI_CFG_RF_SETTLING_TIME_CLK I    4    7
V    RW    NP
HAL
0    60000    1500
NV    RW    NP
NONE
0    60000    1500

*
* Supported Rate Set for 11b
*

WNI_CFG_SUPPORTED_RATES_11B    S    4    2
V    RO    NP
NONE
4     2 4 11 22
V    RO    NP
NONE
4     2 4 11 22

*
* Supported Rate Set for 11a
*

WNI_CFG_SUPPORTED_RATES_11A    S    8    7
V    RO    NP
NONE
8    12 18 24 36 48 72 96 108
V    RO    NP
NONE
8    12 18 24 36 48 72 96 108


*
* PHY Mode
*

WNI_CFG_PHY_MODE    I    4    9
V    RW    NP RESTART
NONE
0    3    0
V    RW    NP RESTART
NONE
0    3    0

#ENUM  11A  0
#ENUM  11B  1
#ENUM  11G  2
#ENUM  NONE 3


*
*The Dot11 mode can change dynamically on STA
*
WNI_CFG_DOT11_MODE     I     4     9
V    RW    NP RESTART
LIM
0    11    0
V    RW    NP RESTART
LIM
0    11    0

#ENUM  ALL           0
#ENUM  11A           1
#ENUM  11B           2
#ENUM  11G           3
#ENUM  11N           4
#ENUM  POLARIS       5
#ENUM  TITAN         6
#ENUM  TAURUS        7
#ENUM  11G_ONLY      8
#ENUM  11N_ONLY      9
#ENUM  11AC          10
#ENUM  11AC_ONLY     11






*
* Operational Rate Set (goes in beacon, probe rsp and assoc req)
*

WNI_CFG_OPERATIONAL_RATE_SET    S    12    2
V    RW    NP RESTART
NONE
0
V    RW    NP RESTART
NONE
4     0x82 0x84 11 22
* 8    0x8c 18 24 36 48 72 96 108

*
* Extended Operational Rate Set (goes in beacon, assoc req)
* required for 11g
*

WNI_CFG_EXTENDED_OPERATIONAL_RATE_SET    S    8    7
V    RW    NP RESTART
NONE
0
V    RW    NP RESTART
NONE
0

*
* Proprietary Operational Rate Set
*

WNI_CFG_PROPRIETARY_OPERATIONAL_RATE_SET    S    4    7
V    RW    NP RESTART
NONE
4    1 3 5 7
V    RW    NP RESTART
NONE
4    1 3 5 7

*
* BSSID
* In IBSS, this can be changed for coalescing, should SME go into IDLE state?
*

WNI_CFG_BSSID    S    6    7
V    RW    NP RESTART
NONE
6    0x22 0x22 0x11 0x11 0x33 0x33
V    RW    NP RESTART
NONE
6    0x22 0x22 0x11 0x11 0x33 0x33


*
* Listen Interval
*

WNI_CFG_LISTEN_INTERVAL    I    4    7
V    RW    NP RESTART
NONE
0    65535 1
V    RO    NP
NONE
0    65535 1

*
* Valid Channel List
*

WNI_CFG_VALID_CHANNEL_LIST    S    100    8
V    RW    NP RESTART
LIM
55   36 40 44 48 52 56 60 64 1 6 11 34 38 42 46 2 3 4 5 7 8 9 10 12 13 14 100 104 108 112 116 120 124 128 132 136 140 149 151 153 155 157 159 161 50 54 58 62 240 242 244 246 248 250 252
V    RW    NP RESTART
LIM
55   36 40 44 48 52 56 60 64 1 6 11 34 38 42 46 2 3 4 5 7 8 9 10 12 13 14 100 104 108 112 116 120 124 128 132 136 140 149 151 153 155 157 159 161 50 54 58 62 240 242 244 246 248 250 252

*
* Current Channel
*

WNI_CFG_CURRENT_CHANNEL    I    4    9
V    RO    NP
NONE
0    165    1
V    RO    NP
NONE
0    165    1


*
* For 11a or pure 11g, use 6Mbps(rateindex 11)
* as the default beaconRateIndex and
* nonBeaconRateIndex.
*
WNI_CFG_DEFAULT_RATE_INDEX_5GHZ    I    4    9
V    RW    NP
NONE
0    11    5
V    RW    NP
NONE
0    11    5

*
* For 11b/g, use 1Mbps 
* as the default beaconRateIndex and
* nonBeaconRateIndex.
*
WNI_CFG_DEFAULT_RATE_INDEX_24GHZ    I    4    9
V    RW    NP
NONE
0    31    1
V    RW    NP
NONE
0    31    1


* *********************************************************
*
* Rate adaptation type
*

WNI_CFG_RATE_ADAPTATION_TYPE  I   4   0
V    RW    NP
SCH
0    2     1
V    RW    NP
SCH
0    2     1

#ENUM FIXED 0
#ENUM AUTO  1
#ENUM SNR_BASED 2

*
* Rate adaptation fixed rate
* Used to determine the rate for all peer stations
*
*

WNI_CFG_FIXED_RATE  I   4   0
V    RW    NP
HAL
0    44     0
V    RW    NP
HAL
0    44     0

#ENUM AUTO 	                                0

#ENUM 1MBPS                                 1
#ENUM 2MBPS                                 2
#ENUM 5_5MBPS                               3
#ENUM 11MBPS                                4

#ENUM 6MBPS                                 5
#ENUM 9MBPS                                 6
#ENUM 12MBPS                                7
#ENUM 18MBPS                                8
#ENUM 24MBPS                                9
#ENUM 36MBPS                                10
#ENUM 48MBPS                                11
#ENUM 54MBPS                                12

#ENUM 6_5MBPS_MCS0_20MHZ_SIMO	            13
#ENUM 13MBPS_MCS1_20MHZ_SIMO                14
#ENUM 19_5MBPS_MCS2_20MHZ_SIMO              15
#ENUM 26MBPS_MCS3_20MHZ_SIMO                16
#ENUM 39MBPS_MCS4_20MHZ_SIMO                17
#ENUM 52MBPS_MCS5_20MHZ_SIMO                18
#ENUM 58_5MBPS_MCS6_20MHZ_SIMO              19
#ENUM 65MBPS_MCS7_20MHZ_SIMO                20

#ENUM 7_2MBPS_MCS0_20MHZ_SIMO_SGI           21
#ENUM 14_4MBPS_MCS1_20MHZ_SIMO_SGI          22
#ENUM 21_7MBPS_MCS2_20MHZ_SIMO_SGI          23
#ENUM 28_9MBPS_MCS3_20MHZ_SIMO_SGI          24
#ENUM 43_3MBPS_MCS4_20MHZ_SIMO_SGI          25
#ENUM 57_8MBPS_MCS5_20MHZ_SIMO_SGI          26
#ENUM 65MBPS_MCS6_20MHZ_SIMO_SGI            27
#ENUM 72_2MBPS_MCS7_20MHZ_SIMO_SGI          28

#ENUM 0_25MBPS_SLR_20MHZ_SIMO               29
#ENUM 0_5MBPS_SLR_20MHZ_SIMO                30

#ENUM 68_25MBPS_QC_PROP_20MHZ_SIMO          31
#ENUM 54MBPS_MCS3_40MHZ_SIMO                32
#ENUM 81MBPS_MCS4_40MHZ_SIMO                33
#ENUM 108MBPS_MCS5_40MHZ_SIMO               34
#ENUM 121_5MBPS_MCS6_40MHZ_SIMO             35
#ENUM 135MBPS_MCS7_40MHZ_SIMO               36
#ENUM 15MBPS_MCS0_40MHZ_SIMO_SGI            37
#ENUM 30MBPS_MCS1_40MHZ_SIMO_SGI            38
#ENUM 45MBPS_MCS2_40MHZ_SIMO_SGI            39
#ENUM 60MBPS_MCS3_40MHZ_SIMO_SGI            40
#ENUM 90MBPS_MCS4_40MHZ_SIMO_SGI            41
#ENUM 120MBPS_MCS5_40MHZ_SIMO_SGI           42
#ENUM 135MBPS_MCS6_40MHZ_SIMO_SGI           43
#ENUM 150MBPS_MCS7_40MHZ_SIMO_SGI           44

* *********************************************************
*
* Broadcast/mutlicast rates for 2.4GHZ
* uses the same rate indices definition as WNI_CFG_FIXED_RATE
* default value corresponds to 1M

WNI_CFG_FIXED_RATE_MULTICAST_24GHZ    I    4    8
V    RW    NP
HAL
0    31    1
V    RW    NP
HAL
0    31    1

* *********************************************************
*
* Broadcast/mutlicast rates for 5 GHZ
* uses the same rate indices definition as WNI_CFG_FIXED_RATE
* default value corresponds to 6M

WNI_CFG_FIXED_RATE_MULTICAST_5GHZ    I    4    8
V    RW    NP
HAL
0    31   5
V    RW    NP
HAL
0    31   5

*
* retry rate selection policy
* 0 => use the minimum supported rate
* 1 => use the same rate as the chosen primary rate
* 2 => use the rate specified in RETRYRATE_SECONDARY
* 3 => use the rate closest to the primary
* 4 => autoselect the retry rate based on RA algorithm
*

WNI_CFG_RETRYRATE_POLICY  I   4   0
V    RW    NP
HAL
0    255     4
V    RW    NP
HAL
0    255     4

#ENUM MIN_SUPPORTED 0
#ENUM PRIMARY       1
#ENUM RESERVED      2
#ENUM CLOSEST       3
#ENUM AUTOSELECT    4
#ENUM MAX           5

*
* the following two CFG's are
* used only if the retryrate policy == 2
* These should be set to one of the values used
* for configuring fixed rates (see enumerated rates)
*

WNI_CFG_RETRYRATE_SECONDARY  I   4   0
V    RW    NP
HAL
0    255     0
V    RW    NP
HAL
0    255     0

WNI_CFG_RETRYRATE_TERTIARY  I   4   0
V    RW    NP
HAL
0    255     0
V    RW    NP
HAL
0    255     0

* *********************************************************
*
* Automatic Power Save Delivery capability
*

WNI_CFG_APSD_ENABLED I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* Shared key authentication supported
*

WNI_CFG_SHARED_KEY_AUTH_ENABLE    I   4   8
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    1

*
* Open system authentication supported
*

WNI_CFG_OPEN_SYSTEM_AUTH_ENABLE    I   4   8
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    1

*
* Authentication Type (change requires restart)
*

WNI_CFG_AUTHENTICATION_TYPE    I    4    8
V    RW    NP RESTART
NONE
0    65535    0
V    RW    NP RESTART
NONE
0    65535    0

*
* CF Poll Request (change requires restart)
*

WNI_CFG_CF_POLL_REQUEST    I    4    8
NV    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0

*
* Privacy Enabled (change requires restart)
*

WNI_CFG_PRIVACY_ENABLED    I    4    8
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0

*
* Short Preamble (change requires restart)
*

WNI_CFG_SHORT_PREAMBLE    I    4    8
V    RW    NP RESTART
NONE
0    1    1
V    RW    NP RESTART
NONE
0    1    1

*
* Short Slot time
* This is the operational state of the BSS

WNI_CFG_SHORT_SLOT_TIME    I    4    8
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    0


*
* ACCEPT Short Slot Association only
*   
* 1:  If AP supports shortSlot, then AP will accept 
*     association only from stations that supports
*     supports short slot
* 0:  AP supports shortSlot, but AP will accept association 
*     from stations regardless of whether station supports 
*     short slot or long slot
*
WNI_CFG_ACCEPT_SHORT_SLOT_ASSOC_ONLY    I    4    9
V    RW    NP    RESTART
NONE
0    1    0
V    RW    NP    RESTART
NONE
0    1    0


*
* QOS Enabled (change requires restart)
*

WNI_CFG_QOS_ENABLED    I    4    8
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0

*
* HCF Enabled (change requires restart)
*

WNI_CFG_HCF_ENABLED     I    4    8
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0

*
* RSN (11i/WPA) Enabled
*

WNI_CFG_RSN_ENABLED     I    4    8
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0

*
* Background scanning periodicity (kilo usec)
*

WNI_CFG_BACKGROUND_SCAN_PERIOD    I    4    8
V    RW    NP
LIM
0    180000    5000
V    RW    NP
LIM
0    18000    5000

*
* Max number of Preauthentication
*

WNI_CFG_MAX_NUM_PRE_AUTH    I    4    8
V    RW    NP  RESTART
NONE
0    256    64
V    RW    NP  RESTART
NONE
0    256    64

*
* Preauthentication Cleanup Timeout (kilo usec)
*

WNI_CFG_PREAUTH_CLNUP_TIMEOUT    I    4    8
NV    XX    NP
NONE
0     0     0
V    RW    NP
LIM
0    120000    30000

*
* Release AID Timeout
*

WNI_CFG_RELEASE_AID_TIMEOUT    I    4    8
NV    XX    NP
NONE
0    0    0
V    RW    NP
LIM
0    100000    1000
*
* Heartbeat Threshold
*

WNI_CFG_HEART_BEAT_THRESHOLD    I    4    8
V    RW    NP
LIM
0    65535    40
NV    RW    NP
NONE
0    65535    40

*
* Probe response wait time out after heartbeat failure
*

WNI_CFG_PROBE_AFTER_HB_FAIL_TIMEOUT    I    4    8
V    RW    NP
NONE
10    10000    40
V    RW    NP
NONE
10    10000    40

*
* Manufacturer OUI (from eeprom)
*

WNI_CFG_MANUFACTURER_OUI    S    3    8
V    RO    NP
NONE
3    0x0 0xa 0xf5
V    RO    NP
NONE
3    0x0 0xa 0xf5

*
* Manufacture Name (from eeprom)
*

WNI_CFG_MANUFACTURER_NAME    S    65    8
V    RO    NP
NONE
8    0x51 0x75 0x61 0x6c 0x63 0x6f 0x6D 0x6D
V    RO    NP
NONE
8    0x51 0x75 0x61 0x6c 0x63 0x6f 0x6D 0x6D

*
* Model Number (from eeprom)
*

WNI_CFG_MODEL_NUMBER    S    33    8
V    RO    NP
NONE
6    0x4d 0x4e 0x31 0x32 0x33 0x34
V    RO    NP
NONE
6    0x4d 0x4e 0x31 0x32 0x33 0x34



*
* Model Name (from eeprom)
* WFR4031
*

WNI_CFG_MODEL_NAME    S    33    8
V    RO    NP
NONE
7    0x57 0x46 0x52 0x34 0x30 0x33 0x31
V    RO    NP
NONE
7    0x57 0x46 0x52 0x34 0x30 0x33 0x31




*
* Manufacture Product Name (from eeprom)
*

WNI_CFG_MANUFACTURER_PRODUCT_NAME    S    33    8
V    RO    NP
NONE
6    0x31 0x31 0x6e 0x2D 0x41 0x50
V    RO    NP
NONE
6    0x31 0x31 0x6e 0x2D 0x41 0x50


*
* Manufacture Product Version (from eeprom)
*

WNI_CFG_MANUFACTURER_PRODUCT_VERSION    S    33    8
V    RO    NP
NONE
6    0x53 0x4e 0x31 0x32 0x33 0x34 
V    RO    NP
NONE
6    0x53 0x4e 0x31 0x32 0x33 0x34 

*
* Multi Domain Capability (11d) Enable
*

WNI_CFG_11D_ENABLED    I    4    9
V    RW    NP  RESTART
NONE
0    1    1
V    RW    NP  RESTART
NONE
0    1    0

*
* per channel Max power transmit  (in dBm)
* this parameter correspond to the MAX_COUNTRY_EID
* table of (Channel Number/num channel/max tx power)
*
* There is one table for 5GHz channels and one table for 2.4GHz channels
*

WNI_CFG_MAX_TX_POWER_2_4    S    128    8
V    RW    NP
NONE
3   1 14 20
V    RW    NP
NONE
3   1 14 20

WNI_CFG_MAX_TX_POWER_5    S    128    8
V    RW    NP
NONE
3 36 126 20
V    RW    NP
NONE
3 36 126 20

*
* Cell size configurations. These are canned configurations for a specified
* cell size.
*
WNI_CFG_NETWORK_DENSITY    I    4    9
V    RW    NP
HAL
0    3    3
V    RW    NP
HAL
0    3    0

#ENUM LOW      0
#ENUM MEDIUM   1
#ENUM HIGH     2
#ENUM ADAPTIVE 3


*
* Adaptive Threshold Algorithm
*
WNI_CFG_ADAPTIVE_THRESHOLD_ALGORITHM    I    4    9
V    RW    NP
HAL
1    2    2
V    RW    NP
HAL
1    2    2

#ENUM CARRIER      1
#ENUM CORRELATION  2



*
* Current TX Antenna
*

WNI_CFG_CURRENT_TX_ANTENNA    I    4    9
V    RW    NP
HAL
1    1    1
V    RW    NP
HAL
1    2    2

*
* Current RX Antenna
*

WNI_CFG_CURRENT_RX_ANTENNA    I    4    9
V    RW    NP
HAL
1    2    2
V    RW    NP
HAL
1    3    3

*
* Current TX Power Level
*

WNI_CFG_CURRENT_TX_POWER_LEVEL    I    4    9
V    RO    NP
NONE
0    128    27
V    RO    NP
NONE
0    128    27


*
* Radio Power State for each Chain
*
* This CFG is invoked when user issues the Apple setPower()
* command, which configures the power state for each chain. Currently,
* Taurus supports up to three chains, and each chain can be configured
* to one of the 4 following possible power states:
*    POWER_OFF = 0x0
*    POWER_ON  = 0x1
*    POWER_TX  = 0x2
*    POWER_RX  = 0x3
*
* The power state of each chain is expressed in nibble:
*    bit[0:3]   - chain 0
*    bit[4:7]   - chain 1
*    bit[8:11]  - chain 2
*    bit[12:15] - not used at the moment
*
* Examples:
* 0x001 -  1x1 (chain 1 is for both tx and rcv. chain 1,2 are turned off)
* 0x031 -  1x2 (chain 0 is for both tx and rcv. chain 1 is rcv only. chain 2 is turned off)
* 0x011 -  2x2 (chain 0,1 are used for both tx and rcv)
* 0x311 -  2x3 (chain 0,1 are used for both tx and rcv. chain 2 is for rcv only)
* 0x333 -  all 3 chains are set to RX
*

WNI_CFG_POWER_STATE_PER_CHAIN    I    4    9
V    RW    NP
HAL
0    0xffff    0x311
V    RW    NP
HAL
0    0xffff    0x311

#ENUM OFF               0
#ENUM ON                1
#ENUM TX                2
#ENUM RX                3
#ENUM MASK              0xf
#ENUM CHAIN_0_OFFSET    0
#ENUM CHAIN_1_OFFSET    4 
#ENUM CHAIN_2_OFFSET    8 


*
* Parameter to indicate or not new BSS found
*

WNI_CFG_NEW_BSS_FOUND_IND         I    4    9
V    RW    NP
NONE
0    1    0
V   RW    NP
NONE
0    1    0

*
* Proprietary ANI features enable/disable
*

WNI_CFG_PROPRIETARY_ANI_FEATURES_ENABLED    I    4    12
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0


*
* Qualcomm Prop Rates are disabled by default
*
WNI_CFG_PROPRIETARY_RATES_ENABLED    I    4    12
V    RW    NP RESTART
NONE
0    1    0
V    RW    NP RESTART
NONE
0    1    0


*
* AP node Name
*

WNI_CFG_AP_NODE_NAME    S    32    8
NV    RO    NP
NONE
0
V    RW    NP RESTART
NONE
0

*
* Country code (from EEPROM)
*

WNI_CFG_COUNTRY_CODE    S    3    8
V    RW    NP
NONE
0
V    RW    NP
NONE
3 0x11 0x22 0x33

*
* Spectrum Management (11h) enable/disable
*

WNI_CFG_11H_ENABLED    I    4    12
V    RW    NP RESTART
NONE
0    1    1
V    RW    NP RESTART
NONE
0    1    1


*
* Wait for CNF Timeout. CNF include (RE)ASSOC, DISASSOC, AUTH, DEAUTH,
* DUMMY packet
*

WNI_CFG_WT_CNF_TIMEOUT    I    4    12
V   RW    NP
NONE
10    3000   1000
V    RW    NP
NONE
10    3000   1000

*
* Keepalive Timeout. A Null data frame is sent out every timeout.
* Applicable to both AP and STA
*

WNI_CFG_KEEPALIVE_TIMEOUT    I    4    12
V   RW    NP
NONE
0    3600000   0
V   RW    NP
NONE
0    3600000   3000

*
* Proximity, set it for very short distances
* Proxmity setting is applied via halPhySetNwDensity()
*
* close proximity off = densityOn is true. network density config applies.
* close proximity on = densityOn is false. Don't care about network density config.
*

WNI_CFG_PROXIMITY    I    4    12
V   RW    NP
HAL
0   1    0
V   RW    NP
HAL
0   1    0

#ENUM OFF      0
#ENUM ON       1

*
* Default LOG level
*

WNI_CFG_LOG_LEVEL    I    4    12
V   RW    NP
NONE
0   7   4
V   RW    NP
NONE
0   7   4

*
* OLBC detection timeout
*

WNI_CFG_OLBC_DETECT_TIMEOUT    I    4    12
V   RW    NP
NONE
1000    30000   10000
V    RW    NP
NONE
1000    30000   10000

**********************************
* Protection Enable
*
*LOWER byte for associated stations
*UPPER byte for overlapping stations.
*11g ==> protection from 11g
*11b ==> protection from 11b
*each byte will have the following info
*bit7 	  bit6 	 bit5   bit4 bit3   bit2  bit1 bit0
*reserved reserved RIFS Lsig n-GF ht20 11g 11b
**********************************
WNI_CFG_PROTECTION_ENABLED    I    4    9
V    RW    NP  RESTART
LIM
0    0xffff    0xffff
V    RW    NP  RESTART
LIM
0    0xffff    0xffff

#ENUM FROM_llA 0
#ENUM FROM_llB 1
#ENUM FROM_llG 2
#ENUM HT_20 3
#ENUM NON_GF 4
#ENUM LSIG_TXOP 5
#ENUM RIFS 6
#ENUM OBSS 7
#ENUM OLBC_FROM_llA 8
#ENUM OLBC_FROM_llB 9
#ENUM OLBC_FROM_llG 10
#ENUM OLBC_HT20 11
#ENUM OLBC_NON_GF 12
#ENUM OLBC_LSIG_TXOP 13
#ENUM OLBC_RIFS 14
#ENUM OLBC_OBSS 15


* ****************************************
*
* 11G Protection Enable Always
* Valid only if protection is enabled
* forces uses of protection regardless of legacy stations
*

WNI_CFG_11G_PROTECTION_ALWAYS    I    4    9
V    RW    NP  RESTART
NONE
0    1    0
V    RW    NP  RESTART
NONE
0    1    0

*********************************************
* Force protection
* 0 :  disable protection
* 1 :  CTS
* 2 :  RTS by threshold (threshold nonzero)
* 3 :  dual CTS (not supported right now)
* 4 :  RTS (threshold 0)
* 5 :  auto

WNI_CFG_FORCE_POLICY_PROTECTION    I    4    9 
V    RW    NP  RESTART 
HAL
0    5    5 
V    RW    NP  RESTART 
HAL
0    5    5

#ENUM DISABLE                0
#ENUM CTS                    1
#ENUM RTS                    2
#ENUM DUAL_CTS               3
#ENUM RTS_ALWAYS             4
#ENUM AUTO                   5






********************************************
* 11G Short Preamble Enable
*

WNI_CFG_11G_SHORT_PREAMBLE_ENABLED    I    4    9
V    RW    NP  RESTART
NONE
0    1    0
V    RW    NP  RESTART
NONE
0    1    0

*
* 11G Short Slot Time Enable (change requires restart)
* This is the admin state of short slot support.

WNI_CFG_11G_SHORT_SLOT_TIME_ENABLED    I    4    9
V    RW    NP  RESTART
NONE
0    1    1
V    RW    NP  RESTART
NONE
0    1    1

*
* Calibration periodicity (minutes)
*

WNI_CFG_CAL_PERIOD    I    4    12
V    RW    NP
HAL
2    10    5
V    RW    NP
HAL
2    10    5

*
* Statistics collection periodicity (seconds)
*

WNI_CFG_STATS_PERIOD    I    4    12
V    RW    NP
HAL
1    10    10
V    RW    NP
HAL
1    10    10

*
* Calibration on/off control
*

WNI_CFG_CAL_CONTROL    I    4    12
V    RW    NP
HAL
0    1    0
V    RW    NP
HAL
0    1    0

#ENUM CAL_ON  0
#ENUM CAL_OFF 1


*
* Parameter to allow 11g only STAs while operating in 11g mode
*

WNI_CFG_11G_ONLY_POLICY    I    4    12
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* Packet Classification
* This flag is a bitmask used to indicate which
* frame classifier to be enabled:
*    b0: DSCP
*    b1: 802.1P
*

WNI_CFG_PACKET_CLASSIFICATION    I    4    12
V    RW    NP
HAL
0    3    0
V    RW    NP
HAL
0    3    0

#ENUM  DISABLED  0
#ENUM  DSCP      1
#ENUM  8021P     2
#ENUM  ALL       3

*
* WME Enabled (change requires restart)
*

WNI_CFG_WME_ENABLED    I    4    8
V    RW    NP RESTART
NONE
0    1    1
V    RW    NP RESTART
NONE
0    1    1

*
* ADDTS response timeout (in ms)
*

WNI_CFG_ADDTS_RSP_TIMEOUT I    4    8
V    RW    NP
NONE
0    65535    1000
V    RW    NP
NONE
0    65535    1000


 * Max SP Length indicates the max number of 
 * total buffered MSDUs and MMPDUs the WMM AP
 * may deliver to WMM STA during any service period
 * triggered by WMM STA. 
 * 1) If AP sends WMM IE with the UAPSD bit 0, max_sp_length=0
 * 2) If WMM STA's all 4 UAPSD flag are set to 0, max_sp_length=0 
 * 3) If AP sends WMM IE with UAPSD=1, and at least one of stations 
 *    UAPSD flag is set to 1, then max_sp_length can be set to:
 *    [b5:b6]=0x00: WMM AP may deliver all buffered frames
 *    [b5:b6]=0x10: WMM AP may deliver max 2 buffered frames
 *    [b5:b6]=0x01: WMM AP may deliver max 4 buffered frames
 *    [b5:b6]=0x11: WMM AP may deliver max 6 buffered frames

WNI_CFG_MAX_SP_LENGTH   I    4    8
V    RW    NP
NONE
0    3    0
V    RW    NP
NONE
0    3    0


*
* KEEP ALIVE STA Limit Threshold , used in AP to delete the STA
*       from Station Table which didn't respond to Probe Response Messages
*

WNI_CFG_KEEP_ALIVE_STA_LIMIT_THRESHOLD I    4    8
NV    RW    NP
NONE
0    32  0
V    RW    NP
NONE
0    32  0

*
* Parameter that specifies whether to send SSID
* in Probe Response when SSID is suppressed
*

WNI_CFG_SEND_SINGLE_SSID_ALWAYS    I    4    12
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* WSM Enabled (change requires restart)
* Takes effect only if WME is also enabled
*

WNI_CFG_WSM_ENABLED    I    4    8
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

* ****************************************
*
* Proprietary IE capability enable
* bit mapped:
*  0:HCF    1:11eQos     2:WME      3:WSM  4:EXT_RATES
*  5:EXTRATE_STOP
*  6:Titan device          7:Taurus Device
* 13:EDCA  14:LOADINFO  15:VERSION
*

WNI_CFG_PROP_CAPABILITY    I    4    8
V    RW    NP
NONE
0    0xffff     0xe0bf
V    RW    NP
NONE
0    0xffff     0xc0a9

#ENUM HCF          0
#ENUM 11EQOS       1
#ENUM WME          2
#ENUM WSM          3
#ENUM EXTRATES     4
#ENUM EXTRATE_STOP 5
#ENUM TITAN        6
#ENUM TAURUS      7
#ENUM EDCAPARAMS   13
#ENUM LOADINFO     14
#ENUM VERSION      15
#ENUM MAXBITOFFSET 15

* ****************************************
*
* Background Channel List
*   Contains pairs of {channelNumber, scanType}
*   where scanType = 0 indicates active scan and
*                  = 1 indicates passive scan
*
*
*WNI_CFG_BACKGROUND_SCAN_LIST    S    128    8
*V    RW    NP RESTART
*LIM
*60   36 0 40 0 44 0 48 0 52 0 56 0 60 0 64 0 1 0 6 0 11 0 34 0 38 0 42 0 46 0 2 0 3 0 4 0 5 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 149 0 153 0 157 0 161 0
*V    RW    NP RESTART
*LIM
*60   1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 34 0 36 0 38 0 40 0 42 0 44 0 46 0 48 0 52 0 56 0 60 0 64 0 149 0 153 0 157 0 161 0
*

* ****************************************
* EDCA paramters are contained in profiles - each profile contains
* the parameters [ACM, AIFSN, CWmin, CWmax, TxOp] for four
* access categories (i.e., four sets). Two such sets of four parameters
* make a single profile: One set is used locally by the AP, the other set
* is broadcast for use by stations.
*
* Cwmin and Cwmax are two bytes each, MSB first. So Cwmin of [3 255] is
* equivalent to 0x3ff, i.e. 3*256+255=1023
*
* The profile to use is selected based on the valus of the profile select param
* See ENUMs below for definitions of profile values
*

WNI_CFG_EDCA_PROFILE    I   4   8
V   RW  NP
SCH
0   255   1
V   RW  NP
SCH
0   255   1

#ENUM ANI      0
#ENUM WMM      1
#ENUM TIT_DEMO 2
#ENUM MAX      3

#ENUM ACM_IDX    0
#ENUM AIFSN_IDX  1
#ENUM CWMINA_IDX 2
#ENUM CWMAXA_IDX 4
#ENUM TXOPA_IDX  6
#ENUM CWMINB_IDX 7
#ENUM CWMAXB_IDX 9
#ENUM TXOPB_IDX  11
#ENUM CWMING_IDX 12
#ENUM CWMAXG_IDX 14
#ENUM TXOPG_IDX  16


* ****************************************
* Profile 0 (Airgo) parameters - AC_BK Local
* ACM, AIFSN, [CWminH, CWminL, CWmaxH, CWmaxL, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACBK_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 31  3 255  0   0 15  3 255  0
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 31  3 255  0   0 15  3 255  0

*
* Profile 0 (Airgo) parameters AC_BE Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACBE_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 15  3 255  100    0 31  3 255  100   0 15  3 255  100
V   RW  NP RESTART
NONE
17   0 2   0 15  3 255  100    0 31  3 255  100   0 15  3 255  100

*
* Profile 0 (Airgo) parameters AC_VI Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACVI_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  200   0 15  0 31  188   0 7  0 15  200
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  200   0 15  0 31  188   0 7  0 15  200

*
* Profile 0 (Airgo) parameters AC_VO Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACVO_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  100   0 7  0 15  102   0 3  0 7  100
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  100   0 7  0 15  102   0 3  0 7  100

*
* Profile 0 (Airgo) parameters - AC_BK Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACBK   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 31  3 255  0   0 15  3 255  0
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 31  3 255  0   0 15  3 255  0

*
* Profile 0 (Airgo) parameters AC_BE Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACBE   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 15  3 255  100   0 31  3 255  100   0 15  3 255  100
V   RW  NP RESTART
NONE
17   0 2   0 15  3 255  100   0 31  3 255  100   0 15  3 255  100

*
* Profile 0 (Airgo) parameters AC_VI Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACVI   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  200   0 15  0 31  188   0 7  0 15  200
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  200   0 15  0 31  188   0 7  0 15  200

*
* Profile 0 (Airgo) parameters AC_VO Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_ANI_ACVO   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  100   0 7  0 15  102   0 3  0 7  100
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  100   0 7  0 15  102   0 3  0 7  100


* ****************************************
* Profile 1 (WME) parameters - AC_BK Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACBK_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 31  3 255  0   0 15  3 255  0
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 15  3 255  0   0 15  3 255  0


*
* Profile 1 (WME) parameters AC_BE Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACBE_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 3   0 15  0 63  0   0 31  3 255  0   0 15  0 63  0
V   RW  NP RESTART
NONE
17   0 3   0 15  0 63  0   0 15  0 63  0   0 15  0 63  0

*
* Profile 1 (WME) parameters AC_VI Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACVI_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 1  0 7  0 15  94  0 7  0 15  188   0 7  0 15  94
V   RW  NP RESTART
NONE
17   0 1  0 7  0 15  94  0 7  0 15  188   0 7  0 15  94

*
* Profile 1 (WME) parameters AC_VO Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACVO_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 1   0 3  0 7  47   0 3  0 7  102   0 3  0 7  47
V   RW  NP RESTART
NONE
17   0 1   0 3  0 7  47   0 3  0 7  102   0 3  0 7  47

*
* Profile 1 (WME) parameters - AC_BK Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACBK   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 15  3 255  0   0 15  3 255  0
V   RW  NP RESTART
NONE
17   0 7   0 15  3 255  0   0 15  3 255  0   0 15  3 255  0

*
* Profile 1 (WME) parameters AC_BE Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACBE   S   20  8
V   RW  NP RESTART
NONE
17   0 3   0 15  3 255  0   0 15  3 255  0   0 15  3 255  0
V   RW  NP RESTART
NONE
17   0 3   0 15  3 255  0   0 15  3 255  0   0 15  3 255  0

*
* Profile 1 (WME) parameters AC_VI Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACVI   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  94   0 7  0 15  188   0 7  0 15  94
V   RW  NP RESTART
NONE
17   0 2   0 7  0 15  94   0 7  0 15  188   0 7  0 15  94

*
* Profile 1 (WME) parameters AC_VO Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_WME_ACVO   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  47   0 3  0 7  102   0 3  0 7  47
V   RW  NP RESTART
NONE
17   0 2   0 3  0 7  47   0 3  0 7  102   0 3  0 7  47

* ****************************************
* Profile 2(Titan Demo) parameters - AC_BK Local
* ACM, AIFSN, [CWminH, CWminL, CWmaxH, CWmaxL, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACBK_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 8  0 255  200   0 31  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 7   0 8  0 255  200   0 31  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_BE Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACBE_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200    0 31  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200    0 31  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_VI Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACVI_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_VO Local
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACVO_LOCAL   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters - AC_BK Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACBK   S   20  8
V   RW  NP RESTART
NONE
17   0 7   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 7   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_BE Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACBE   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_VI Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACVI   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Profile 2(Titan Demo) parameters AC_VO Broadcast
* ACM, AIFSN, [CWmin, CWmax, TxOp]-11A/11B/11G
*

WNI_CFG_EDCA_TIT_DEMO_ACVO   S   20  8
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200
V   RW  NP RESTART
NONE
17   0 2   0 8  0 255  200   0 8  0 255  200   0 8  0 255  200

*
* Radar detector flag enable/disable
*

WNI_CFG_RDET_FLAG   I   4   9
V    RW    NP
NONE
0    1    0
V    RW    NP
NONE
0    1    0

#ENUM ENABLE  1
#ENUM DISABLE 0

WNI_CFG_RADAR_CHANNEL_LIST    S    20    8
V    RW    NP RESTART
NONE
15   52 56 60 64 100 104 108 112 116 120 124 128 132 136 140
V    RW    NP RESTART
NONE
15   52 56 60 64 100 104 108 112 116 120 124 128 132 136 140

*
* Local Power Constraint (dBm)
*

WNI_CFG_LOCAL_POWER_CONSTRAINT    I    4    12
V    RW    NP RESTART
NONE
0    255    0
V    RW    NP RESTART
NONE
0    255    0

* *********************************************************
*
* Admission Control Policy
* used for admitting tspec's when either edca or hcca are in use
*

WNI_CFG_ADMIT_POLICY  I   4   8
V  RW  NP  RESTART
NONE
0  2   0
V  RW  NP
SCH
0  2   0

#ENUM  ADMIT_ALL   0
#ENUM  REJECT_ALL  1
#ENUM  BW_FACTOR   2

*
* Oversubscription factor for admission control
* valid only when admit policy is set to BW_FACTOR
* units are in terms of 1/10th of available bandwidth
*

WNI_CFG_ADMIT_BWFACTOR  I   4   8
V  RW  NP  RESTART
NONE
0  100   20
V  RW  NP
SCH
0  100   20

* *********************************************************
*
* Number of "consecutive" Background Scan Failure needed
* before LIM is forced to perform 1 aggressive background scan
*
WNI_CFG_MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE    I    4    8
V    RW    NP  RESTART
NONE
0    256    60
V    RW    NP  RESTART
NONE
0    256    60


*************************************
* Feature:   Channel Bonding
*************************************
*
*  Global flag to enable/disable Channel Bonding
*  0 - Disable:       Force disable channel bonding for all TC-ids
*  1 - Enable:        Force enable channel bonding for all TC-ids
*  2 - no legacy bss: Enable channel bonding if no legacy BSS are present
*  3 - no legacy all: Enable channel bonding if no legacy BSS or devices are present
*  4 - intelligent:   Enable channel bonding depending on load level on secondary channel
*
WNI_CFG_CHANNEL_BONDING_MODE    I    4    12
V    RW    NP    RESTART
LIM
0    10     0
V    RW    NP    RESTART
LIM
0    10     0

#ENUM DISABLE          0
#ENUM ENABLE           1
#ENUM IF_NO_LEGACY_BSS 2
#ENUM IF_NO_LEGACY_ALL 3
#ENUM INTELLIGENT      4


*
*  When the channel is 40MHz wide, this CFG indicates
*  if the secondary channel is located above (at
*  a higher frequency), or located below (at a 
*  lower frequency). 
*
*  0 - There is no secondary channel. The channel is 20Mhz
*  1 - LOWER:  Secondary channel 40MHZ is located below the primary channel
*  2 - CENTERED:Secondary channel and primary located at centered
*  3 - HIGHER: Secondary channel 40 MHZ is located above the primary channel
*  4 - 80MHZ_LOW_CENTERED : 20/40MHZ offset LOW 40/80MHZ offset CENTERED
*  5 - 80MHZ_CENTERED_CENTERED : 20/40MHZ offset CENTERED 40/80MHZ offset CENTERED
*  6 - 80MHZ_HIGH_CENTERED : 20/40MHZ offset HIGH 40/80MHZ offset CENTERED
*  7 - 80MHZ_LOW_LOW: 20/40MHZ offset LOW 40/80MHZ offset LOW
*  8 - 80MHZ_HIGH_LOW: 20/40MHZ offset HIGH 40/80MHZ offset LOW
*  9 - 80MHZ_LOW_HIGH: 20/40MHZ offset LOW 40/80MHZ offset HIGH
*  10 - 80MHZ_HIGH_HIGH: 20/40MHZ offset HIGH 40/80MHZ offset HIGH
*
WNI_CFG_CB_SECONDARY_CHANNEL_STATE    I    4    12
V    RW    NP
NONE
0    10     0
V    RW    NP
NONE
0    10     0

#ENUM NONE             0
#ENUM LOWER            1
#ENUM HIGHER           2
#ENUM 11AC_20MHZ_LOW_40MHZ_CENTERED       3
#ENUM 11AC_20MHZ_CENTERED_40MHZ_CENTERED  4
#ENUM 11AC_20MHZ_HIGH_40MHZ_CENTERED      5
#ENUM 11AC_20MHZ_LOW_40MHZ_LOW            6
#ENUM 11AC_20MHZ_HIGH_40MHZ_LOW           7
#ENUM 11AC_20MHZ_LOW_40MHZ_HIGH           8
#ENUM 11AC_20MHZ_HIGH_40MHZ_HIGH          9

*************************************
* Feature:   Dynamic Retry Rates
*************************************
*
*  When the short/long retry count reach the
*  adaptive_retry_threshold(0), then the retry0
*  template shall be used
*
WNI_CFG_DYNAMIC_THRESHOLD_ZERO    I    4    12
V    RW    NP
HAL
0    255     2
V    RW    NP
HAL
0    255     2

*
*  When the short/long retry count reach the
*  adaptive_retry_threshold(1), then the retry1
*  template shall be used
*
WNI_CFG_DYNAMIC_THRESHOLD_ONE    I    4    12
V    RW    NP
HAL
0    255     4
V    RW    NP
HAL
0    255     4

*
*  When the short/long retry count reach the
*  adaptive_retry_threshold(2), then the retry2
*  template shall be used
*
WNI_CFG_DYNAMIC_THRESHOLD_TWO    I    4    12
V    RW    NP
HAL
0    255     6
V    RW    NP
HAL
0    255     6


*
*  Trigger Station Background Scan Flag
*
WNI_CFG_TRIG_STA_BK_SCAN    I    4    12
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    1

* *********************************************************
* control of dynamic EDCA parameter profile switching
*
* OOB, we would like to support WMM standard edca profile
* However, when Airgo STA's join the BSS, we would like
* to switch the profile to Airgo high-performance  edca parameters
*
* This cfg supports that behaviour. It is used only if 11e qos
* has been enabled and is ignored otherwise.
*
* When set to any value (other than unused), it determines the
* edca profile to switch to when an Airgo STA joins the BSS.
*
* By default, we choose to switch to Airgo profile.
*
* NOTE: This parameter applies only to an AP
*

WNI_CFG_DYNAMIC_PROFILE_SWITCHING    I   4   8
V   RW  NP  RESTART
NONE
0   255   255
V   RW  NP   RESTART
NONE
0   255   1

#ENUM  UNUSED 255

* *********************************************************
*
* Scan control list
*   Contains pairs of {channelNumber, activeScanAllowedFlag}
*   where scanType = 1 indicates active scan is  allowed, and
*                  = 0 indicates passive scan is used
*   If a channel is not on this list, active scan is NOT allowed. So it is
*   sufficient to inlude only those channels where active scan is allowed
*   on this list.
*
*   The list determines only whether active scan is allowed or not; it does not
*   determine which type of scan is actually performed.
*

WNI_CFG_SCAN_CONTROL_LIST    S    128    8
V    RW    NP RESTART
LIM
112   1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 34 1 36 1 38 1 40 1 42 1 44 1 46 1 48 1 50 1 52 0 54 0 56 0 58 0 60 0 62 0 64 0 100 0 104 0 108 0 112 0 116 0 120 0 124 0 128 0 132 0 136 0 140 0 149 1 151 1 153 1 155 1 157 1 159 1 161 1 165 1 240 1 242 1 244 1 246 1 248 1 250 1 252 1
V    RW    NP RESTART
LIM
112   1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 34 1 36 1 38 1 40 1 42 1 44 1 46 1 48 1 50 1 52 0 54 0 56 0 58 0 60 0 62 0 64 0 100 0 104 0 108 0 112 0 116 0 120 0 124 0 128 0 132 0 136 0 140 0 149 1 151 1 153 1 155 1 157 1 159 1 161 1 165 1 240 1 242 1 244 1 246 1 248 1 250 1 252 1


* ****************************************
*
* MIMO rates enabled (for rate adaptation, to start)
*

WNI_CFG_MIMO_ENABLED   I   4   9
V    RW    NP RELOAD
NONE
0    1    1
V    RW    NP RELOAD
NIM
0    1    1

#ENUM ENABLE  1
#ENUM DISABLE 0



*
* BLOCK ACK Enabled (change requires restart)
*  change default to ON
*   bit 0	==> delayed BA
*   bit 1	==> immediate BA
WNI_CFG_BLOCK_ACK_ENABLED    I    4    8
V    RW    NP RESTART
LIM
0    3    2
V    RW    NP RESTART
LIM
0    3    2

#ENUM DELAYED 0
#ENUM IMMEDIATE 1


*
*BA Activity check global timer
*
WNI_CFG_BA_ACTIVITY_CHECK_TIMEOUT    I    4    7
V    RW    NP
HAL
0    65535    1000
V    RW    NP
HAL
0    65535    1000


*
* Rx STBC support
*
WNI_CFG_HT_RX_STBC  I	4   7
V    RW    NP   RESTART
LIM 
0  	3 	1
V    RW    NP   RESTART
LIM 
0  	3 	1


*
* 1. HT capabilities Info: 2 bytes size
*
* Supported channel Width is set to 1 (40 Mhz)
* SM Power Save is disabled.
* GreenField support is enabled.
* Short GI for 20 and 40Mhz is enabled.
* Max AMSDU Size is set to 0(3839 Octets)
* DSSS-CCK Mode is enabled.
* LSIG TXOP Protection is disabled
* Rest of the features are not supported at this moment.
*
* fedc ba98 7654 3210
* 0000 0001 0010 0000
*
WNI_CFG_HT_CAP_INFO   I    4    10
V    RW    NP       RESTART
LIM
0    0xffff    0x016c
V    RW    NP       RESTART
LIM
0    0xffff    0x106e

#ENUM ADVANCE_CODING            0
#ENUM SUPPORTED_CHAN_WIDTH_SET  1
#ENUM SM_POWER_SAVE             2
#ENUM GREEN_FIELD               4
#ENUM SHORT_GI_20MHZ            5
#ENUM SHORT_GI_40MHZ            6
#ENUM TX_STBC                   7
#ENUM RX_STBC                   8
#ENUM DELAYED_BA               10
#ENUM MAX_AMSDU_SIZE           11
#ENUM DSSS_CCK_MODE_40MHZ      12
#ENUM PSMP                     13
#ENUM STBC_CONTROL_FRAME       14
#ENUM LSIG_TXOP_PROTECTION     15

*
* 2. HT Parameters Info: 1 byte size
*
* Max AMPDU Rx Factor is defined using bit #0 and #1
* MPDU Density is defined using bit #2 thru #4.
* The default values are,
* 7654 3210
* 0000 0010  --> 2 for RX AMPDU Factor, 0 for MPDU density
*
WNI_CFG_HT_AMPDU_PARAMS    I   4   7
V    RW   NP       RESTART
LIM
0    0xff    0x00
V    RW   NP       RESTART
LIM
0    0xff    0x02

#ENUM MAX_RX_AMPDU_FACTOR        0
#ENUM MPDU_DENSITY               2
#ENUM RESERVED                   5

*
* 3. Supported MCS Set: 16 bytes size
*
* MCS #0-15 and #32 is supported.
*
WNI_CFG_SUPPORTED_MCS_SET    S    16    7
V    RW    P    RESTART
LIM
16 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
V    RW    P    RESTART
LIM
16 255 255 0 0 1 0 0 0 0 0 0 0 0 0 0 0

*
* 4. Extended HT Capabilities Info: 2 bytes size
*
* Only HTC Support is enabled, rest all features are not
* supported at this moment.
*
* fedc ba98 7654 3210
* 0000 0100 0000 0000
*
WNI_CFG_EXT_HT_CAP_INFO    I    4    10
V    RW   P       RESTART
LIM
0    0xffff    0x0400
V    RW   P       RESTART
LIM
0    0xffff    0x0400

#ENUM PCO                         0
#ENUM TRANSITION_TIME      1
#ENUM RESERVED1                3
#ENUM MCS_FEEDBACK          8
#ENUM HTC_SUPPORT            10
#ENUM RD_RESPONDER           11
#ENUM RESERVED2                12


*
* 5. Transmit Beam Forming Capabiliries Info: 4 bytes size
*
WNI_CFG_TX_BF_CAP    I   4   7
V    RO   NP      RESTART
LIM
0    0xffffffff    0x00000000
V    RO   NP      RESTART
LIM
0    0xffffffff    0x00000000

*
* 6. Antenna Selection Capabilities: 1 byte size
*
WNI_CFG_AS_CAP    I    4    7
V    RW   P      RESTART
LIM
0    0xff    0x00
V    RW   P      RESTART
LIM
0    0xff    0x00

#ENUM ANTENNA_SELECTION            0
#ENUM EXPLICIT_CSI_FEEDBACK_TX     1
#ENUM ANTENNA_INDICES_FEEDBACK_TX  2
#ENUM EXPLICIT_CSI_FEEDBACK        3
#ENUM ANTENNA_INDICES_FEEDBACK     4
#ENUM RX_AS                        5
#ENUM TX_SOUNDING_PPDUS            6
#ENUM RESERVED                     7

**************************************************
*  Beacon  HT (High Through) Info IE
***************************************************
*
* 3. HT Info Field1: 1 byte size.
*
* Secondary Channel Offset is set to 3 (Down) by default and will
*                           be updated dynamically by DFS algorithm.
* Channel Width is set to 1 (40 Mhz)
* RIFS Mode is enabled
* Rest of the features are not supported at this moment.
*
* 7654 3210
* 0000 1111
*
WNI_CFG_HT_INFO_FIELD1    I    4    10
V    RW    NP    RESTART
LIM
0    0xff    0x0f
V    RW    NP    RESTART
LIM
0    0xff    0x0f

#ENUM SECONDARY_CHANNEL_OFFSET       0
#ENUM RECOMMENDED_CHANNEL_WIDTH       2
#ENUM RIFS_MODE                      3
#ENUM PSMP_ACCESS_ONLY          4
#ENUM SERVICE_INTERVAL_GRANULARITY   5

*
* 4.  HT Info Field2: 2 bytes
*
* Operation mode is set to 0(Pure, GF) to begin with and
*                 will be updated dynamically.
* 'NonGF Devices present is also set to zero and
*                 will be updated dynamically.
*
* fedc ba98 7654 3210
* 0000 0000 0000 0000
*
WNI_CFG_HT_INFO_FIELD2    I    4    10
V    RW    P
LIM
0    0xffff    0x00
V    RW    P
LIM
0    0xffff    0x00

#ENUM OP_MODE                          0
#ENUM NON_GF_DEVICES_PRESENT  2
#ENUM RESERVED                         3

*
* 5. HT Info Field3: 2 bytes
*
* fedc ba98 7654 3210
* 0000 0000 0000 0000
*
* LSIG TXOP Full Protection will be zero to begin with and
* updated dynamically.
* Everything else is not supported at this moment.
*
WNI_CFG_HT_INFO_FIELD3    I    4    10
V    RW    P
LIM
0    0xffff    0x0000
V    RW    P
LIM
0    0xffff    0x0000

#ENUM BASIC_STBC_MCS                      0
#ENUM DUAL_STBC_PROTECTION                7
#ENUM SECONDARY_BEACON                    8
#ENUM LSIG_TXOP_PROTECTION_FULL_SUPPORT   9
#ENUM PCO_ACTIVE                         10
#ENUM PCO_PHASE                          11
#ENUM RESERVED                           12

*
* 6. Basic MCS Set: 16 bytes size
*
* For now set this to zero and don't put any restrictions.
*
WNI_CFG_BASIC_MCS_SET    S    16    7
V    RW    P    RESTART
LIM
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
V    RW    P    RESTART
LIM
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

*
* 7. Current supported MCS Set: 16 bytes size
*
* For now set this to zero and don't put any restrictions.
*
WNI_CFG_CURRENT_MCS_SET    S    16    7
V    RW    P    RESTART
LIM
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
V    RW    P    RESTART
LIM
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



*
* Greenfield Capability
* By default Greenfield is enabled
*
WNI_CFG_GREENFIELD_CAPABILITY  I    4    7
V    RW    NP    RESTART
LIM
0    1    0
V    RW    NP    RESTART
LIM
0    1    0

#ENUM ENABLE    1
#ENUM DISABLE   0

*
* Maximum AMPDU Length
* By default set to zero for 3895 octets
*
WNI_CFG_VHT_MAX_MPDU_LENGTH  I    4    19
V    RW    NP    
LIM
0    2    0
V    RW    NP    
LIM
0    2    0

*
* Supported Channel Width Set
* By default set to zero for 
* STAs does not support either 160 or 80+80MHz
*
WNI_CFG_VHT_SUPPORTED_CHAN_WIDTH_SET  I    4    19
V    RW    NP    
LIM
0    0    0
V    RW    NP    
LIM
0    0    0

*
* LDPC Coding Capability
* Riva/Pronto supports, default set to 1
*
WNI_CFG_VHT_LDPC_CODING_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Short GI for 80MHz
* Riva/Pronto supports, default set to 1
*
WNI_CFG_VHT_SHORT_GI_80MHZ  I    4    19
V    RW    NP    
LIM
0    1    1
V    RW    NP    
LIM
0    1    1

*
* Short GI for 160MHz and 80+80MHz
* Riva/Pronto does not supports, default set to 0
*
WNI_CFG_VHT_SHORT_GI_160_AND_80_PLUS_80MHZ  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Support for Transmission of 2x1 STBC
* Riva/Pronto does not supports, default set to 0
*
WNI_CFG_VHT_TXSTBC  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Support for Reception of PPDUs using STBC
* Riva/Pronto supports, default set to 1
*
WNI_CFG_VHT_RXSTBC  I    4    19
V    RW    NP    
LIM
0    1    1
V    RW    NP    
LIM
0    1    1

*
* Support for Operating as SU Beamformer
* Riva/Pronto does not supports, default set to 0
*
WNI_CFG_VHT_SU_BEAMFORMER_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Support for Operating as SU Beamformee
* Riva does not support, But Pronto supports, default set to 0
*
WNI_CFG_VHT_SU_BEAMFORMEE_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Compressed Steering Number of Beamformer Antennas Supported
* Riva does not support,Pronto supports, default set to 0
*
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED  I    4    19
V    RW    NP    
LIM
0    3    0
V    RW    NP    
LIM
0    3    0

*
* Number of Sounding Dimensions indicates Number
* of antennas used by the beamformer when sending beamformed transmissions
* Riva/Pronto does not support beamformer, default set to 0
*
WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS  I    4    19
V    RW    NP    
LIM
0    3    0
V    RW    NP    
LIM
0    3    0

*
* MU Beamformer Capable
* Riva/Pronto does not support, default set to 0
*
WNI_CFG_VHT_MU_BEAMFORMER_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* MU Beamformee Capable
* Riva does not support but pronto supports, default set to 0
*
WNI_CFG_VHT_MU_BEAMFORMEE_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* VHT TXOP PS
* Riva does not support but pronto supports, default set to 0
*
WNI_CFG_VHT_TXOP_PS  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* +HTC-VHT Capable
* Riva does not support but pronto supports, default set to 0
*
WNI_CFG_VHT_HTC_VHTC_CAP  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    0

*
* Maximum AMPDU Length exponent range 0-7
* 2^(13+Max AMPDU Length)-1, default set to 0
*
WNI_CFG_VHT_AMPDU_LEN_EXPONENT  I    4    19
V    RW    NP    
LIM
0    7    3
V    RW    NP    
LIM
0    7    3

*
* VHT Link Adaptation Capable
* Riva does not support but pronto supports, default set to 0
*
WNI_CFG_VHT_LINK_ADAPTATION_CAP  I    4    19
V    RW    NP    
LIM
0    3    0
V    RW    NP    
LIM
0    3    0

*
* VHT Rx Antenna Pattern Consistency
*
WNI_CFG_VHT_RX_ANT_PATTERN  I    4    19
V    RW    NP    
LIM
0    1    1
V    RW    NP    
LIM
0    1    1

*
* VHT Tx Antenna Pattern Consistency
*
WNI_CFG_VHT_TX_ANT_PATTERN  I    4    19
V    RW    NP    
LIM
0    1    1
V    RW    NP    
LIM
0    1    1

*
* RxMCS Map is 16 bits, The 2bit Max MCS for n SS field.
* Indicates the maximum MCS that can be received for each
* number of spacial streams. Riva supports MCS 0-9
*
WNI_CFG_VHT_RX_MCS_MAP  I    4    19
V    RW    NP    
LIM
0    0xFFFF    0xFFFE
V    RW    NP    
LIM
0    0xFFFF    0xFFFE

* TxMCS Map is 16 bits, The 2bit Max MCS for n SS field.
* Indicates the maximum MCS that can be transmitted for each
* number of spacial streams.
*
WNI_CFG_VHT_TX_MCS_MAP  I    4    19
V    RW    NP    
LIM
0    0xFFFF    0xFFFE
V    RW    NP    
LIM
0    0xFFFF    0xFFFE

*
* Rx Highest supported data rate.
*
WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE  I    4    19
V    RW    NP    
LIM
0    390   0
V    RW    NP    
LIM
0    390   0

*
* Tx Highest supported data rate.
*
WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE  I    4    19
V    RW    NP    
LIM
0    390    0
V    RW    NP    
LIM
0    390    0

*
* VHT Operation Information
* Channel Width set to zero for 20/40MHz.
* set to 1 for 80MHz. 2->160Mhz, 3->80+80MHz
*
WNI_CFG_VHT_CHANNEL_WIDTH  I    4    19
V    RW    NP    
LIM
0    3    0
V    RW    NP    
LIM
0    3    0

#ENUM 20_40MHZ       0
#ENUM 80MHZ          1
#ENUM 160MHZ         2
#ENUM 80_PLUS_80MHZ  3
*
* Channel center freq Seg1 
*
WNI_CFG_VHT_CHANNEL_CENTER_FREQ_SEGMENT1  I    4    19
V    RW    NP    
LIM
0    256   0 
V    RW    NP    
LIM
0    256   0

*
* Channel center freq Seg2 for 80+80 Mhz
*
WNI_CFG_VHT_CHANNEL_CENTER_FREQ_SEGMENT2  I    4    19
V    RW    NP    
LIM
0    0     0 
V    RW    NP    
LIM
0    0     0

*
* Basic MCS Set
*
WNI_CFG_VHT_BASIC_MCS_SET  I    4    19
V    RW    NP    
LIM
0    0xFFFF    0xFFFE
V    RW    NP    
LIM
0    0xFFFF    0xFFFE

*
* MU-MIMO Capable STA Count
*
WNI_CFG_VHT_MU_MIMO_CAP_STA_COUNT  I    4    19
V    RW    NP    
LIM
0     4    0 
V    RW    NP    
LIM
0     4     0

*
* Spatial Stream Under-Utilization
*
WNI_CFG_VHT_SS_UNDER_UTIL  I    4    19
V    RW    NP    
LIM
0     0    0 
V    RW    NP    
LIM
0     0     0

*
* Forty MHZ Utilization
*
WNI_CFG_VHT_40MHZ_UTILIZATION  I    4    19
V    RW    NP    
LIM
0     0    0 
V    RW    NP    
LIM
0     0     0

*
* Eighty MHz Utilization
*
WNI_CFG_VHT_80MHZ_UTILIZATION  I    4    19
V    RW    NP    
LIM
0     0    0 
V    RW    NP    
LIM
0     0     0

*
* Hundred Sixty MHz Utilization
*
WNI_CFG_VHT_160MHZ_UTILIZATION  I    4    19
V    RW    NP    
LIM
0     0    0 
V    RW    NP    
LIM
0     0     0

*
* Maximum AMSDU length
* User can set it to either 3839 or 7935 bytes. 
*
WNI_CFG_MAX_AMSDU_LENGTH    I    4    7
V    RW    NP    RESTART
LIM
0    1    0
V    RW    NP    RESTART
LIM
0    1    0

#ENUM SHORT_3839_BYTES   0
#ENUM LONG_7935__BYTES   1


*
* Minimum MPDU Start Spacing
* Determines the minimum time between the start of adjacent MPDUs within an AMPDU.
* Set to 0 for no restriction
* Set to 1 for 1/4 s
* Set to 2 for 1/2 s
* Set to 3 for 1 s
* Set to 4 for 2 s
* Set to 5 for 4 s
* Set to 6 for 8 s
* Set to 7 for 16 s
* default is set to 0
WNI_CFG_MPDU_DENSITY    I    4    7
V    RW    NP    RESTART
LIM
0    7    0
V    RW    NP    RESTART
LIM
0    7    0

*
* NUM BUFFERS ADVERTISED
* Defines number of buffers advertised in ADDBA
*
WNI_CFG_NUM_BUFF_ADVERT  I    4    7
V    RW    NP    
LIM
0    128    64
V    RW    NP    
LIM
0    128    64

*
* Maximum Rx AMPDU Factor
* Indicates the maximum length of A-MPDU
* that the STA can receive.
* The Maximum Rx A-MPDU defined by this field is equal to  (2 ^ (13 + MAX RX AMPDU FActor))-1  octets.
* Maximum Rx A-MPDU Factor is an integer in the range 0 to 3.
* default is set to 2 for 32K max RX side.
*
WNI_CFG_MAX_RX_AMPDU_FACTOR    I    4    7
V    RW    NP    RESTART
LIM
0    3    3
V    RW    NP    RESTART
LIM
0    3    3


*
* Short GI support for the reception of 20Mhz packets
* By default it is enabled
*
WNI_CFG_SHORT_GI_20MHZ  I    4    7
V    RW    NP    RESTART
LIM
0    1    1
V    RW    NP    RESTART
LIM
0    1    1


#ENUM ENABLE    1
#ENUM DISABLE   0


*
* Short GI support for the reception of 40Mhz packets
* By default it is enabled
*
WNI_CFG_SHORT_GI_40MHZ  I    4    7
V    RW    NP    RESTART
LIM
0    1    0
V    RW    NP    RESTART
LIM
0    1    1


#ENUM ENABLE    1
#ENUM DISABLE   0


*
* RIFS support on TX Side
* on RX side it is always supported, it is mandatory
*
WNI_CFG_RIFS_ENABLED   I   4   7
V    RW    NP RESTART
NONE
0    1    1
V    RW    NP RESTART
NONE
0    1    1

#ENUM ENABLE  1
#ENUM DISABLE 0


* *********************************************************
*
* Power Save Configuration
*
WNI_CFG_MAX_PS_POLL    I    4    5
V    RW    NP
LIM
0     255     0
NV    RW    NP
LIM
0     255     0


WNI_CFG_NUM_BEACON_PER_RSSI_AVERAGE    I    4    5
V    RW    NP
LIM
1    20    20
NV    RW    NP
LIM
1    20    20


*
* Period for which Firmware will collect the 
* RSSI stats. Its in units of beacon interval. 
* Rssi Filter period should always be >=
* the num_beacon_per_rssi_average.
*
WNI_CFG_RSSI_FILTER_PERIOD    I    4    5
V    RW    NP
LIM
0    255    5
NV    RW    NP
LIM
0    255    5


WNI_CFG_MIN_RSSI_THRESHOLD    I    4    5
V    RW    NP
LIM
0    10    10
NV    RW    NP
LIM
0    10    10


WNI_CFG_NTH_BEACON_FILTER    I    4    5
V    RW    NP
LIM
0    255   10
NV    RW    NP
LIM
0    255    10


WNI_CFG_BROADCAST_FRAME_FILTER_ENABLE    I    4    5
V    RW    NP
LIM
0    1    0
NV    RW    NP
LIM
0    1    0


WNI_CFG_SCAN_IN_POWERSAVE    I    4    5
V    RW    NP
LIM
0    1    1
V    RW    NP
LIM
0    1    1


*
* Ignore DTIM support - If disabled(value=0), HAL will 
* try to align the Listen Interval to the DTIM 
* period and the following rules will be applied:
* 1) If LI=DTIM, then set LI=DTIM
* 2) If LI<DTIM, then align LI to DTIM
* 3) If LI>DTIM, then set LI=DTIM 
*
WNI_CFG_IGNORE_DTIM    I    4    5
V    RW    NP
NONE
0    1    0
V    RW    NP
NONE
0    1    0

* *********************************************************
*
* WoWLAN Configuration  The following configurations 
* are valid only when magicPktEnable = 1. 
*
WNI_CFG_WOWLAN_UCAST_PATTERN_FILTER_ENABLE    I    4    5
V    RW    NP
NONE
0     1     1
NV    RW    NP
NONE
0     1     0


WNI_CFG_WOWLAN_CHANNEL_SWITCH_ENABLE    I    4    5
V    RW    NP
NONE
0     1     1
NV    RW    NP
NONE
0     1     0


WNI_CFG_WOWLAN_DEAUTH_ENABLE    I    4    5
V    RW    NP
NONE
0     1     1
NV    RW    NP
NONE
0     1     0


WNI_CFG_WOWLAN_DISASSOC_ENABLE    I    4    5
V    RW    NP
NONE
0     1     1
NV    RW    NP
NONE
0     1     0


WNI_CFG_WOWLAN_MAX_MISSED_BEACON   I    4    5
V    RW    NP
NONE
0    65535    40
NV    RW    NP
NONE
0    65535    40

*
* Timeout value in units of us. It requests
* hardware to unconditionally wake up after
* it has stayed in WoWLAN mode for some time.
*
WNI_CFG_WOWLAN_MAX_SLEEP_PERIOD   I    4    5
V    RW    NP
NONE
0    65535    65535
NV    RW    NP
NONE
0    65535    65535


*
* BA timeout in TUs, set to 1 minute = approx 58593 TUs
* 16 bit wide
*
WNI_CFG_BA_TIMEOUT  I    4    7
V    RW    NP   RESTART
HAL
0    0xffff    0
V    RW    NP
HAL
0    0xffff    0


*
* This threshold is registered with a traffic monitoring interface (probably HAL),
* on a per-STA, per-TID basis. Once this threshold has been reached,
* HAL will indicate to PE that the threshold has been reached for that TID.
* PE is then free to negotiate a BA session for that peer
* defaults to 128
* 16 bit wide
*
WNI_CFG_BA_THRESHOLD_HIGH     I    4    7
V    RW    NP   RESTART
HAL
0    0xffff    0x80
V    RW    NP
HAL
0    0xffff    0x80


*
* MAX BA Buffers to be allocated.
* This count is system wide.
* 16 bit wide
*
WNI_CFG_MAX_BA_BUFFERS     I    4    7
V    RW    NP   RESTART
HAL
0    2560    2560
V    RW    NP
HAL
0    2560    2560


*
* MAX BA Sessions.
* This count is system wide.
* 16 bit wide
*
WNI_CFG_MAX_BA_SESSIONS     I    4    7
V    RW    NP   RESTART
HAL
0    64    40
V    RW    NP
HAL
0    64    40


*
* BA setup based on Traffic
*
WNI_CFG_BA_AUTO_SETUP     I    4    7
V    RW    NP   RESTART
HAL
0    1    1
V    RW    NP  RESTART
HAL
0    1    1

#ENUM ENABLE  1
#ENUM DISABLE 0

*
* Decline an ADDBA Request
*
WNI_CFG_ADDBA_REQ_DECLINE     I    4    7
V    RW    NP   RESTART
LIM
0    0xff    0
V    RW    NP  RESTART
LIM
0    0xff    0

*
* Delete all Rx BA sessions in 2.4 GHz
* when BTC requests to disable agg.
*
WNI_CFG_DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC I    4    7
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    0


*
* Valid Channel List
*

WNI_CFG_BG_SCAN_CHANNEL_LIST    S    100    8
V    RW    NP
LIM
55   36 40 44 48 52 56 60 64 1 6 11 34 38 42 46 2 3 4 5 7 8 9 10 12 13 14 100 104 108 112 116 120 124 128 132 136 140 149 151 153 155 157 159 161 50 54 58 62 240 242 244 246 248 250 252
V    RW    NP
LIM
55   36 40 44 48 52 56 60 64 1 6 11 34 38 42 46 2 3 4 5 7 8 9 10 12 13 14 100 104 108 112 116 120 124 128 132 136 140 149 151 153 155 157 159 161 50 54 58 62 240 242 244 246 248 250 252


*
* AMPDU default TX medium Time (in us)
*
WNI_CFG_MAX_MEDIUM_TIME    I    4    8
V    RW    NP
HAL
0    65535    2048
V    RW    NP
HAL
0    65535    2048


*
* Maximum number of MPDUs in single A-MPDU. 
*
WNI_CFG_MAX_MPDUS_IN_AMPDU    I    4    8
V    RW    NP
HAL
0    65535    64
V    RW    NP
HAL
0    65535    64


*
* Auto BSSID - When set, BSSID is generated automatically in IBSS, else BSSID in cfg will be used.
*

WNI_CFG_IBSS_AUTO_BSSID      I    4   0
V    RW    NP
NONE
0    1     1
NV   RW    NP
NONE
0    1     1

*
* Include Additional IEs in probe request.
*
WNI_CFG_PROBE_REQ_ADDNIE_FLAG    I    4    0
V    RW    NP
NONE
0 1 0
V    RW    NP
NONE
0 1 0

*
* Include Additional IE in probe request.
*
WNI_CFG_PROBE_REQ_ADDNIE_DATA    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0

*
* Include Additional IEs in probe response.
*
WNI_CFG_PROBE_RSP_ADDNIE_FLAG    I    4    0
V    RW    NP
NONE
0 1 0
V    RW    NP
NONE
0 1 0

*
* Include Additional IE in probe response.
*
WNI_CFG_PROBE_RSP_ADDNIE_DATA1    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0

*
* Include Additional IE in probe response.
*
WNI_CFG_PROBE_RSP_ADDNIE_DATA2    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0

*
* Include Additional IE in probe response.
*
WNI_CFG_PROBE_RSP_ADDNIE_DATA3    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0

*
* Include Additional IEs in assoc response.
*
WNI_CFG_ASSOC_RSP_ADDNIE_FLAG    I    4    0
V    RW    NP
NONE
0 1 0
V    RW    NP
NONE
0 1 0

*
* Include Additional IE in assoc response.
*
WNI_CFG_ASSOC_RSP_ADDNIE_DATA    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0

*
* Include Additional P2P IEs in probe request.
*
WNI_CFG_PROBE_REQ_ADDNP2PIE_FLAG    I    4    0
V    RW    NP
NONE
0 1 0
V    RW    NP
NONE
0 1 0

*
* Include Additional P2P IE in probe request.
*
WNI_CFG_PROBE_REQ_ADDNP2PIE_DATA    S     255    0
V    RW    NP
NONE
0 0
V    RW    NP
NONE
0 0


*
* Include Additional IEs in probe response/beacon.
*
WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG    I    4    0
V    RW    NP
LIM
0 1 0
V    RW    NP
LIM
0 1 0


*
* Include Additional IEs in probe response/beacon.
*
WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA    S    255    0
V    RW    NP
LIM
0 0
V    RW    NP
LIM
0 0


*
* wpsApEnable and wpsStaEnable is specified in here
* wpsApEnable is bit #0 and wpsStaEnable is bit #1
*
WNI_CFG_WPS_ENABLE  I   4   7
V    RW     NP
LIM
0    0xff    0 
V    RW     NP
LIM
0    0xff    0

#ENUM AP         1
#ENUM STA        2

WNI_CFG_WPS_STATE  I   4   7
V    RW     NP
LIM
0    0xff   1 
V    RW     NP
LIM
0    0xff   1

*
* TRUE => include this information in Probe Requests, FALSE => omit it
*

WNI_CFG_WPS_PROBE_REQ_FLAG    I    4    7
V    RW    NP
LIM
0 1 0
V    RW    NP
LIM
0 1 0

*
* Wi-Fi Protected Setup Version
*
* This  one-byte field is broken into a four-bit major
* part using the top MSBs and four-bit  minor part
* using the LSBs. As an example, version 3.2 would be 0x32.
*

WNI_CFG_WPS_VERSION  I   4   7
V    RW     NP
LIM
0    0xff   0x10 
V    RW     NP
LIM
0    0xff   0x10

*
* Wi-Fi Protected Setup Request type
* 0x00: Enrollee, Info only
* 0x01: Enrollee, open 802.1X
* 0x02: Registrar
* 0x03: WLAN Manager Registrar

WNI_CFG_WPS_REQUEST_TYPE  I   4   7
V    RW     NP
LIM
0    0xff   0x00 
V    RW     NP
LIM
0    0xff   0x03

* Configuration Method(s)
*
* The Config Methods Data component lists the configuration methods
* the Enrollee or Registrar supports.  The list is a bitwise OR of
* values from the table below. In addition to Config Methods, APs and
* STAs that support the UPnP Management Interface must support the
* Permitted Config Methods attribute, which is used to control the
* Config Methods that are enabled on that AP.
*
* Value   Hardware Interface
* 0x0001  USBA (Flash Drive)
* 0x0002  Ethernet
* 0x0004  Label
* 0x0008  Display
* 0x0010  External NFC Token
* 0x0020  Integrated NFC Token
* 0x0040  NFC Interface
* 0x0080  PushButton
* 0x0100  Keypad
*
* The bottom 16 bits contain the configuration method(s) when acting
* as an Enrollee, and the top 16 when acting as a Registrar.
*
* QNE-TODO: Merge this with the inappropriately named
* 'WNI_CFG_WSC_AP_CFG_METHOD'-- this one can serve both puposes.
*

WNI_CFG_WPS_CFG_METHOD  I   4   7
V    RW    NP
LIM
0    0xFFFFFFFF   0x00000008
V    RW    NP
LIM
0    0xFFFFFFFF   0x018c018e

* UUID
* The universally unique identifier (UUID) element is a unique
* GUID generated by the Enrollee or Registrar. It uniquely identifies
* an operational device and should survive reboots and resets.  The
* UUID is provided in binary format. If the device also supports UPnP,
* then the UUID corresponds to the UPnP UUID.
*
* QNE-TODO: Re-name their cfg from 'WNI_CFG_UUID'

WNI_CFG_WPS_UUID    S    16    8
V    RW    NP
LIM
6    0xa 0xb 0xc 0xd 0xe 0xf 
V    RW    NP
LIM
6    0xa 0xb 0xc 0xd 0xe 0xf 

************************************************************************
* The following cfgs contains the primary type of the device. Its format
* follows:
*
*  0 1 2 3
*  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
*  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*  | Attribute ID                   | Length                       |
*  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*  | Category ID                    | OUI (1-2)                    |
*  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*  | OUI (3-4)                      | Sub Category ID              |
*  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*
* Vendor-specific sub-categories  are designated by  setting the OUI  to the
* value associated with  that vendor.  Note that a  four-byte subdivided OUI
* is used. For the predefined values, the  Wi-Fi Alliance OUI of 00 50 F2 04
* is used.  The predefined values  for Category ID  and Sub Category  ID are
* provided in the next table. There  is no way to indicate a vendor-specific
* main device  category. The OUI applies  only to the  interpretation of the
* Sub Category. If  a vendor does not use sub categories  for their OUI, the
* three-byte OUI  occupies the first  three bytes of  the OUI field  and the
* fourth byte is set to zero.
*
*  Category              ID Value  Sub Category             ID Value
*  Computer              1         PC                       1
*                                  Server                   2
*                                  Media Center             3
*  Input Device          2
*  Printers, Scanners,             Printer                  1
*  Faxes and Copiers     3         Scanner                  2
*  Camera                4         Digital Still Camera     1
*  Storage               5         NAS                      1
*  Network                         AP                       1
*  Infrastructure        6         Router                   2
*                                  Switch                   3
*  Displays              7         Television               1
*                                  Electronic Picture Frame 2
*                                  Projector                3
*  Multimedia Devices    8         DAR                      1
*                                  PVR                      2
*                                  MCX                      3
*  Gaming Devices        9         Xbox                     1
*                                  Xbox360                  2
*                                  Playstation              3
*  Telephone             10        Windows Mobile           1
*
************************************************************************

* QNE-TODO: Rename their cfg from 'WNI_CFG_PRIM_DEVICE_CATEGORY'
WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY  I   4   7
V    RW     NP
LIM
0    0xffff   1
V    RW     NP
LIM
0    0xffff   6

* QNE-TODO: Rename their cfg from 'WNI_CFG_PRIM_DEVICE_OUI'
WNI_CFG_WPS_PIMARY_DEVICE_OUI  I   4   7
V    RW     NP
LIM
0    0xffffffff   0x0050f204 
V    RW     NP
LIM
0    0xffffffff   0x0050f204

* QNE-TODO: Rename their cfg from 'WNI_CFG_PRIM_DEVICE_SUB_CATEGORY'
WNI_CFG_WPS_DEVICE_SUB_CATEGORY  I   4   7
V    RW     NP
LIM
0    0xffff   1
V    RW     NP
LIM
0    0xffff   1

* Association State
*

* The Association State component shows the configuration and previous
* association state of the wireless station when sending a Discovery
* request.
*
* Association State    Description
* 0                    Not Associated
* 1                    Connection Success
* 2                    Configuration Failure
* 3                    Association Failure
* 4                    IP Failure

WNI_CFG_WPS_ASSOCIATION_STATE  I   4   7
V    RW     NP
LIM
0    0xffff   0
V    RW     NP
LIM
0    0xffff   0

* Configuration Error
*
* The  Configuration  Error  component   shows  the  result  of  the  device
* attempting to configure itself and to associate with the WLAN.
*
*  Configuration Error  Description
*   0                   No Error
*   1                   OOB Interface Read Error
*   2                   Decryption CRC Failure
*   3                   2.4 channel not supported
*   4                   5.0 channel not supported
*   5                   Signal too weak
*   6                   Network auth failure
*   7                   Network association failure
*   8                   No DHCP response
*   9                   Failed DHCP config
*  10                   IP address conflict
*  11                   Couldnt connect to Registrar
*  12                   Multiple PBC sessions detected
*  13                   Rogue activity suspected
*  14                   Device busy
*  15                   Setup locked
*  16                   Message Timeout
*  17                   Registration Session Timeout
*  18                   Device Password Auth Failure
*
* The Device busy error is returned if the sending device is unable to
* respond to the request due to some internal conflict or resource
* contention issue. For example, if a device is only capable of
* performing a single instance of the Registration Protocol at a time,
* it may return this error in response to attempts to start another
* instance in the middle of an active session.

WNI_CFG_WPS_CONFIGURATION_ERROR  I   4   7
V    RW     NP
LIM
0    0xffff   0
V    RW     NP
LIM
0    0xffff   0

* Device Password ID
*

* This  attribute is  used  to identify  a  device password.  There are  six
* predefined values  and ten reserved values.  If the Device  Password ID is
* Default,  the Enrollee  should use  its PIN  password (from  the  label or
* display).  This  password may  correspond  to  the  label, display,  or  a
* user-defined  password that has  been configured  to replace  the original
* device password.
*
* User-specified indicates that the user  has overridden the password with a
* manually  selected value.  Machine-specified  indicates that  the original
* PIN  password has  been overridden  by a  strong,  machinegenerated device
* password  value.  The Rekey  value  indicates  that  the device's  256-bit
* rekeying password  will be used.  The PushButton value indicates  that the
* PIN  is  the all-zero  value  reserved  for  the PushButton  Configuration
* method.
*
* The Registrar-specified value indicates a  PIN that has been obtained from
* the Registrar (via a display  or other out-of-band method). This value may
* be further  augmented with the  optional 'Identity' attribute in  M1. This
* augmentation is useful when multiple predefined UserID/PIN pairs have been
* established  by a  Registrar such  as  an authenticator  used for  Hotspot
* access. If the  Device Password ID in  M1 is not one of  the predefined or
* reserved values, it corresponds to a password given to the Registrar as an
* OOB Device Password.
*
*  Value            Description
*  0x0000           Default (PIN)
*  0x0001           User-specified
*  0x0002           Machine-specified
*  0x0003           Rekey
*  0x0004           PushButton
*  0x0005           Registrar-specified
*  0x0006 - 0x000F  Reserved'
*

WNI_CFG_WPS_DEVICE_PASSWORD_ID  I   4   7
V    RW     NP
LIM
0    0xffffffff   0 
V    RW     NP
LIM
0    0xffffffff   0

*
* WPS Association
*
* Wi-Fi Protected Setup requires  a prospective enrollee to associate to
* an AP  in the  network in which  the STA  would like to  enroll.  Once
* associated,  the enrollment  takes  place over  an EAPOL  conversation
* (there's  actually  a  new   EAP  method:  EAP-WSC).   The  STA  would
* presumably  send an EAPOL-Start  over his  new link,  to which  the AP
* would respond with  an EAP Identity Request.  When  the STA sends back
* "WSC-Enrollee-1" as his EAP Identity, the AP knows that he's got a WPS
* supplicant on his hands, and proceeds to talk EAP-WSC.
*
* Toward the end of the  specification's development, a problem came up.
* Microsoft's EAP supplicant  on XP SP1 & SP2  will send an EAPOL-Start,
* no matter  what.  Even  if the  AP is beaconing  WPA-PSK, say,  the MS
* supplicant will send  an EAPOL-Start.  If it receives  an EAP Identity
* Request  in return,  it decides  that the  AP is  really  using 802.1x
* authentication, and proceeds on that assumption.
*
* Now, imagine an AP that is configured for WPA-PSK, and is WPS-capable.
* It receives  an association  request from some  STA, and then  sees an
* EAPOL-Start from the newly joined STA.  It naturally sends back an EAP
* Identity Request  to see  if the  new STA wants  to talk  EAP-WSC.  On
* Windows XP SP1 & SP2, the  supplicant will take that to mean that this
* AP is using 802.1x authentication, and will never let the user provide
* the PSK. Consequently,  WZC will never be able  to associate with this
* AP.
*
* Naturally,  Microsoft's  solution was  to  have  the  world change  to
* accommodate them.  After a lot of back & forth, the WFA decided on the
* following change to the WPS spec: when associating for purposes of WPS
* enrollment, "A  client that intends to  use the EAP-WSC  method with a
* WSC  enabled AP may  include a  WSC IE  in its  802.11 (re)association
* request. If a WSC IE is present in the (re)association request, the AP
* shall engage  in EAP-WSC with the  station and must  not attempt other
* security handshake.  If the client  does not include  a WSC IE  in its
* 802.11 (re)association request, it must send its 802.11 Authentication
* frame  with  Authentication set  to  open  and  an 802.11  Association
* Request frame without  an RSN IE or SSN IE,  regardless of the network
* type that is  hosted by the AP. On  successful association, the client
* will   then   send  an   EAPOL-Start   to   the   AP  and   wait   for
* EAP-Request/Identity.  When  the   client  receives  an  EAP  Request/
* Identity,   it  will  respond   with  EAP-Response/Identity   and  the
* appropriate WSC string to indicate  if it is an Enrollee or Registrar.
* '
*
* This configuration variable contains a bitvector:
*
* 0x0001 Incldue the WPS Information Element in Assoc Request frames
* 0x0002 Elide the the WPA and RSN Information Elements from the
*        Assoc Request frame
*

WNI_CFG_WPS_ASSOC_METHOD    I    4    7
V    RW    NP
LIM
0 0xffff 0
V    RW    NP
LIM
0 0xffff 0

*
* Low gain override
*

WNI_CFG_LOW_GAIN_OVERRIDE    I    4    9
V    RW    NP
HAL
0    1    0
V    RW    NP
HAL
0    1    0

*
* Listen Mode Enable/Disable
*

WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE    I    4    7
V    RW    NP
HAL
0    128    128
V    RW    NP
HAL
0    128    128

*
* On chip reodering polling threshold
*

WNI_CFG_RPE_POLLING_THRESHOLD    I    4    2
V    RW    NP
HAL
0    65535    10
V    RW    NP
HAL
0    65535    10

*
* On chip reodering aging threshold for AC0
*

WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG    I    4    2
V    RW    NP
HAL
0    65535    30
V    RW    NP
HAL
0    65535    30

*
* On chip reodering aging threshold for AC1
*

WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG    I    4    2
V    RW    NP
HAL
0    65535    30
V    RW    NP
HAL
0    65535    30

*
* On chip reodering aging threshold for AC2
*

WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG    I    4    2
V    RW    NP
HAL
0    65535    30
V    RW    NP
HAL
0    65535    30

*
* On chip reodering aging threshold for AC3
*

WNI_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG    I    4    2
V    RW    NP
HAL
0    65535    30
V    RW    NP
HAL
0    65535    30

*
* Number of On-Chip reorder sessions
*

WNI_CFG_NO_OF_ONCHIP_REORDER_SESSIONS    I    4    2
V    RW    NP
HAL
0    2    1
V    RW    NP
HAL
0    2    1


*
* Single RC for all TID 
*

WNI_CFG_SINGLE_TID_RC    I    4    7
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    1

*
* RRM Enabled 
*

WNI_CFG_RRM_ENABLED    I    4    8
V    RW    NP 
NONE
0    1    0
V    RW    NP 
NONE
0    1    0

*
* RRM measurement max duration. Section 11.10.3 802.11k-2008.
* Max Duration represented as maxDuration inTUs = 2^(*WNI_CFG_RRM_IN_CHAN_MAX - 4) * bcnIntvl
* Operating channel max measurement duration.
*

WNI_CFG_RRM_OPERATING_CHAN_MAX    I    4    8
V    RW    NP 
NONE
0    8    0
V    RW    NP 
NONE
0    8    0

*
* Non-Operating channel max measurement duration.
*

WNI_CFG_RRM_NON_OPERATING_CHAN_MAX    I    4    8
V    RW    NP 
NONE
0    8    0
V    RW    NP 
NONE
0    8    0
   
*
* TX power control feature
*

WNI_CFG_TX_PWR_CTRL_ENABLE    I   4   8
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    1

*
*  MCAST BCAST filter Setting
*  0: No filter, 1: Block Mcast, 2: Block Bcast, 3: Block Mcast and Bcast
*

WNI_CFG_MCAST_BCAST_FILTER_SETTING    I    4    7
V    RW    NP
HAL
0    3    0
V    RW    NP
HAL
0    3    0

*
*  BTC DHCP No of Bt slots to block 
*
WNI_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK    I    4    7
V    RW    NP
HAL
0    0xFF     0
V    RW    NP
HAL
0    0xFF     0

*
*  Config parameter to Enable/Disable Dynamic PS-Poll mechanism 
*  0: Disable, x: FW will send x number of NULL frames before switching to PS-Poll mexhanism
*
WNI_CFG_DYNAMIC_PS_POLL_VALUE    I    4    7
V    RW    NP
HAL
0    0xFF    0
V    RW    NP
HAL
0    0xFF    0

*
* PS Data InActivity Timeout (TU)
*

WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT    I    4    7
V    RW    NP
HAL
0    80    0
NV    RW    NP
NONE
0    80    0

*
*  Config parameter to Enable/Disable Telescopic Bcn Wakeups 
*  0: Disable, 1: Enable
*

WNI_CFG_TELE_BCN_WAKEUP_EN    I    4    7
V    RW    NP
HAL
0    1    0
V    RW    NP
HAL
0    1    0


*
*  Config parameter for Transient LI 
*  0: Disable, x: Transient LI
*

WNI_CFG_TELE_BCN_TRANS_LI    I    4    7
V    RW    NP
HAL
0    7    3
V    RW    NP
HAL
0    7    3

*
*  Config parameter for Idle bcns for Transient LI 
*  x: Num Idle bcns before switch to trans LI
*

WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS    I    4    7
V    RW    NP
HAL
5    255    10
V    RW    NP
HAL
5    255    10

*
*  Config parameter for Max LI 
*  0: Disable, x: Max LI
*

WNI_CFG_TELE_BCN_MAX_LI    I    4    7
V    RW    NP
HAL
0    7    5
V    RW    NP
HAL
0    7    5

*
*  Config parameter for Idle bcns for max LI 
*  x: Num Idle bcns before switch to max LI
*

WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS    I    4    7
V    RW    NP
HAL
5    255    15
V    RW    NP
HAL
5    255    15

*
*  BTC DHCP No of Bt sub interval during DHCP 
*
WNI_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS    I    4    7
V    RW    NP
HAL
0    0xFF     7
V    RW    NP
HAL
0    0xFF     7

* 
* Infra STA mode Keep alive period (in secs) for 
* sending keep alive (Qos)Null frames to the AP.
* 0 = disabled. Recommended values is 30 secs
*
WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD   I    4    7
V    RW    NP
HAL
0    65535    0
V    RW    NP
HAL
0    65535    0

* Limit on number of associated stations
* (applies to peer stations in IBSS, SoftAP, BT-AMP AP, & P2P-GO modes)
*

WNI_CFG_ASSOC_STA_LIMIT    I   4   8
V    RW    NP
LIM
1    32    10
V    RW    NP
LIM
1    32    10

*
*  SAP channel select start channel number
*
WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL    I    4    7
V    RW    NP
NONE
1    0xFC  1   
V    RW    NP
NONE
1    0xFC  1

*
*  SAP channel select end channel number
*
WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL    I    4    7
V    RW    NP
NONE
1    0xFC  11
V    RW    NP
NONE
1    0xFC  11

*
*  SAP channel select operating band
*  0- 2.4GHZ / 1- Low 5GHZ /2-MID /3-HIGH/4-Japan4.9GHZ
*
WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND     I    4    7
V    RW    NP
NONE
0    0x4     0
V    RW    NP
NONE
0    0x4     0

* 
* Softap data available poll period (in milliseconds) for 
* queueing (Qos)Null frames to the station if there 
* is no data available and PS-Poll/Trigger frame is pending.
* 0 = disabled. Recommended values is 5ms
*
WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD   I    4    8
V    RW    NP
NONE
0    65535    5
V    RW    NP
NONE
0    65535    5

*
* Close loop power control will be enabled if value is set to 1
* 
*
*
WNI_CFG_ENABLE_CLOSE_LOOP  I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* LTE Coexistence will be enabled if value is set to 1
* 
*
*
WNI_CFG_ENABLE_LTE_COEX  I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* AP Keep Alive Timeout (TU)
*
WNI_CFG_AP_KEEP_ALIVE_TIMEOUT    I    4    7
V    RW    NP
HAL
1    255    20
V    RW    NP
HAL
1    255    20

*
* GO Keep Alive Timeout (TU)
*
WNI_CFG_GO_KEEP_ALIVE_TIMEOUT    I    4    7
V    RW    NP
HAL
1    255    20
V    RW    NP
HAL
1    255    20

*
* MC Addr List power control will be enabled if value is set to 1
* 
*
*
WNI_CFG_ENABLE_MC_ADDR_LIST  I   4   0
V    RW    NP
HAL
0    1     0
V    RW    NP
HAL
0    1     0

*
* UC Filter will be enabled if value is set to 1
*
*
*
WNI_CFG_ENABLE_UC_FILTER  I   4   0
V    RW    NP
HAL
0    1     0
V    RW    NP
HAL
0    1     0

*
* Low Power Image Transition will be enabled if value is set to 1
* 
*
*
WNI_CFG_ENABLE_LPWR_IMG_TRANSITION  I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* MCC Adaptive Scheduler will be enabled if value is set to 1
* 
*
*
WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED  I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0
*
*Disable LDPC in STA mode when AP is TXBF capable
*
*
*
WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP  I   4   0
V    RW    NP
NONE
0    1     0
V    RW    NP
NONE
0    1     0

*
* AP Link Monitor Timeout (TU)
*
WNI_CFG_AP_LINK_MONITOR_TIMEOUT    I    4    7
V    RW    NP
HAL
1    255    3
V    RW    NP
HAL
1    255    3

*
*TDLS Station's UAPSD MASK Configuration
*
*
*
WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK  I   4   7
V    RW    NP
LIM
0    15    0
V    RW    NP
LIM
0    15   0
*
*TDLS Stations Buffer STA Capability
*
*
*
WNI_CFG_TDLS_BUF_STA_ENABLED  I   4   7
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    0
*TDLS Stations PUAPSD Inactivity Timer
*
*
*
WNI_CFG_TDLS_PUAPSD_INACT_TIME  I   4   7
V    RW    NP
LIM
0    10    0
V    RW    NP
LIM
0    10    0
*TDLS Stations PUAPSD RX Frame Threshold
*
*
*
WNI_CFG_TDLS_RX_FRAME_THRESHOLD  I   4   7
V    RW    NP
LIM
10   20    10
V    RW    NP
LIM
10   20    10
*
*MCC ENABLE/DISABLE ADAPTIVE RX Drain feature
*
*
*
WNI_CFG_ENABLE_ADAPT_RX_DRAIN I   4   7
V    RW    NP
HAL
0    1    1
NV    RW    NP
HAL
0    1    1
*
* FlexConnect Power Factor
* Default is set to 0 (disable)
*
*
WNI_CFG_FLEX_CONNECT_POWER_FACTOR  I   4   0
V    RW    NP
NONE
0    9     0
V    RW    NP
NONE
0    9     0

*
* Antenna Diversity
*
* 0 = disabled
* 1 = Ant 1
* 2 = Ant 2
* 3 = Adaptive
*
WNI_CFG_ANTENNA_DIVESITY    I    4    7
V    RW    NP
HAL
0    3    0
V    RW    NP
HAL
0    3    0

* GO Link Monitor Timeout (TU)
*
WNI_CFG_GO_LINK_MONITOR_TIMEOUT    I    4    7
V    RW    NP
HAL
3   50    10
V    RW    NP
HAL
3   50    10
*
*

* ATH Enable/Disable
*
WNI_CFG_ATH_DISABLE	I    4    7
V    RW    NP
NONE
0   1    0
V    RW    NP
NONE
0   1    0
* BTC Active WLAN Len
*
WNI_CFG_BTC_ACTIVE_WLAN_LEN    I    4    7
V    RW    NP
HAL
0    250000    60000
V    RW    NP
HAL
0    250000    60000
*
*

* BTC Active BT Len
*
WNI_CFG_BTC_ACTIVE_BT_LEN    I    4    7
V    RW    NP
HAL
0    250000    90000
V    RW    NP
HAL
0    250000    90000
*
*

* BTC SAP Active WLAN Len
*
WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN    I    4    7
V    RW    NP
HAL
0    250000    60000
V    RW    NP
HAL
0    250000    60000
*
*

* BTC SAP Active BT Len
*
WNI_CFG_BTC_SAP_ACTIVE_BT_LEN    I    4    7
V    RW    NP
HAL
0    250000    90000
V    RW    NP
HAL
0    250000    90000
*
*

* RMC action period frequency (milli seconds)
*
WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY    I    4    7
V    RW    NP
HAL
0   0xFFFFFFFF    300
V    RW    NP
HAL
0   0xFFFFFFFF    300
*
*

* Rssi probe interval (milli seconds)
*
WNI_CFG_ASD_PROBE_INTERVAL    I    4    7
V    RW    NP
HAL
10    100    50
V    RW    NP
HAL
10    100    50
*
*

*Rssi threshold to trigger probing and slecting
*
WNI_CFG_ASD_TRIGGER_THRESHOLD    I    4    7
V    RW    NP
HAL
0    120     45
V    RW    NP
HAL
0    120    45
*
*

*Rssi Hysteresis threshold for RSSI-RTT
*
WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD    I    4    7
V    RW    NP
HAL
0    100    0
V    RW    NP
HAL
0    100    0
*
*

* Debug p2p remain on channel
*
WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL    I    4    7
V    RW    NP
NONE
0    1    0
V    RW    NP
NONE
0    1    0

* BTC CTS2S during SCO
*
WNI_CFG_BTC_CTS2S_DURING_SCO    I    4    7
V    RW    NP
HAL
0    1     0
V    RW    NP
HAL
0    1     0
*
*

*************************************
* Feature:   Channel Bonding 2.4G
*************************************

WNI_CFG_CHANNEL_BONDING_24G    I    4    12
V    RW    NP    RESTART
LIM
0    1     0
V    RW    NP    RESTART
LIM
0    1     0

*
*  OBSS PASSIVE Channel Time (TU)
*

WNI_CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME    I    4    9
V    RW    NP
NONE
5    1000    20
V    RW    NP
NONE
5    1000    20

*
*  OBSS ACTIVE Channel Time (TU)
*

WNI_CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME    I    4    9
V    RW    NP
NONE
10    1000    10
V    RW    NP
NONE
10    1000    10

*
*  OBSS SCAN WIDTH TRIGGER Interval (TU)
*

WNI_CFG_OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL    I    4    9
V    RW    NP
NONE
10    900    200
V    RW    NP
NONE
10    900    200

*
*  OBSS SCAN passive total per chanenl (TU)
*

WNI_CFG_OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL    I    4    9
V    RW    NP
NONE
200    10000    200
V    RW    NP
NONE
200    10000    200

*
*  OBSS SCAN active total per Channel (TU)
*

WNI_CFG_OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL    I    4    9
V    RW    NP
NONE
20    10000    20
V    RW    NP
NONE
20    10000    20

*
*  OBSS Width Channel Transition Delay Factor
*

WNI_CFG_OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR  I    4    9
V    RW    NP
NONE
5    100    5
V    RW    NP
NONE
5    100    5

*
*  OBSS SCAN Activity Threshold(TU)
*

WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD    I    4    9
V    RW    NP
NONE
0    100    25
V    RW    NP
NONE
0    100    25
