/*
 * 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.
 */
* 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    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    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 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    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    0
V    RW    NP    
LIM
0    1    0

*
* 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    0
V    RW    NP    
LIM
0    1    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
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    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    45
V    RW    NP    
LIM
0    128    45

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

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

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

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