* Copyright (c) 2012, 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    2000
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    RO    NP RESTART
NONE
6    0x22 0x22 0x11 0x11 0x33 0x33
V    RO    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    31     0
V    RW    NP
HAL
0    31     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

* *********************************************************
*
* 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 14
V    RW    NP
NONE
3 36 126 14

*
* 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   3
V   RW    NP
NONE
0   7   3

*
* 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    0
V    RW    NP RESTART
LIM
0    3    0

#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    1
V    RW    NP    
LIM
0    1    1

*
* Compressed Steering Number of Beamformer Antennas Supported
* Riva/Pronto does not support, default set to 0
*
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED  I    4    19
V    RW    NP    
LIM
0    1    0
V    RW    NP    
LIM
0    1    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    1    1
V    RW    NP    
LIM
0    1    1

*
* 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
1    434   434
V    RW    NP    
LIM
1    434   434

*
* Tx Highest supported data rate.
*
WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE  I    4    19
V    RW    NP    
LIM
1    434    434
V    RW    NP    
LIM
1    434    434

*
* 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    3     0 
V    RW    NP    
LIM
0    3     0

*
* 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


*
* 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    20
NV    RW    NP
LIM
0    255    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.
* This value is used ONLY for CCX and 11r Fasttransition
*
WNI_CFG_FT_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

*
* 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    10    10
V    RW    NP
LIM
1    10    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
