* Copyright (c) 2014-2015 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.

* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.

*
* 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    1048576   2347
V    RW    NP
HAL
0    1048576   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  11G_ONLY      5
#ENUM  11N_ONLY      6
#ENUM  11AC          7
#ENUM  11AC_ONLY     8






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

*
* Listen Interval
*

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

*
* Valid Channel List
*

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

*
* Current Channel
*

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


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

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


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

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

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

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

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

#ENUM AUTO	                                0

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

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

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

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

#ENUM 0_25MBPS_SLR_20MHZ_SIMO               29
#ENUM 0_5MBPS_SLR_20MHZ_SIMO                30

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

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

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

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

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

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

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

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

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

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

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

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

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

*
* Shared key authentication supported
*

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

*
* Open system authentication supported
*

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

*
* Authentication Type (change requires restart)
*

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

*
* CF Poll Request (change requires restart)
*

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

*
* Privacy Enabled (change requires restart)
*

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

*
* Short Preamble (change requires restart)
*

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

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

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


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


*
* QOS Enabled (change requires restart)
*

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

*
* HCF Enabled (change requires restart)
*

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

*
* RSN (11i/WPA) Enabled
*

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

*
* Background scanning periodicity (kilo usec)
*

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

*
* Max number of Preauthentication
*

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

*
* Preauthentication Cleanup Timeout (kilo usec)
*

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

*
* Release AID Timeout
*

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

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

*
* Probe response wait time out after heartbeat failure
*

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

*
* Manufacturer OUI (from eeprom)
*

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

*
* Manufacture Name (from eeprom)
*

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

*
* Model Number (from eeprom)
*

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



*
* Model Name (from eeprom)
* WFR4031
*

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




*
* Manufacture Product Name (from eeprom)
*

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


*
* Manufacture Product Version (from eeprom)
*

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

*
* Multi Domain Capability (11d) Enable
*

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

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

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

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

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

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


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

#ENUM CARRIER      1
#ENUM CORRELATION  2



*
* Current TX Antenna
*

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

*
* Current RX Antenna
*

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

*
* Current TX Power Level
*

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


*




* 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


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

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

* ****************************************
*



* 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

*
* 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 does not support,Pronto supports, default set to 0
*
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED  I    4    19
V    RW    NP
LIM
0    4    0
V    RW    NP
LIM
0    4    0

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

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

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

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

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

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

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

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

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

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

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

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

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

*
* Channel center freq Seg1
*
WNI_CFG_VHT_CHANNEL_CENTER_FREQ_SEGMENT1  I    4    19
V    RW    NP
LIM
0    256   0
V    RW    NP
LIM
0    256   0

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

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

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

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

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

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

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

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

#ENUM SHORT_3839_BYTES   0
#ENUM LONG_7935__BYTES   1


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

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

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


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


#ENUM ENABLE    1
#ENUM DISABLE   0


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


#ENUM ENABLE    1
#ENUM DISABLE   0


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

#ENUM ENABLE  1
#ENUM DISABLE 0


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


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


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


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


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


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


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


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

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


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


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


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


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

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


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


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


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


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


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

#ENUM ENABLE  1
#ENUM DISABLE 0

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

*
* 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    1000    0
V    RW    NP
HAL
0    1000    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    0x5     0
V    RW    NP
NONE
0    0x5     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    65535    20
V    RW    NP
HAL
1    65535    20

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

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

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

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

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

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

*
*TDLS Station's UAPSD MASK Configuration
*
*
*
WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK  I   4   7
V    RW    NP
LIM
0    15    0
V    RW    NP
LIM
0    15   0
*
*TDLS Stations Buffer STA Capability
*
*
*
WNI_CFG_TDLS_BUF_STA_ENABLED  I   4   7
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    0
*TDLS Stations PUAPSD Inactivity Timer
*
*
*
WNI_CFG_TDLS_PUAPSD_INACT_TIME  I   4   7
V    RW    NP
LIM
0    10    0
V    RW    NP
LIM
0    10    0
*TDLS Stations PUAPSD RX Frame Threshold
*
*
*
WNI_CFG_TDLS_RX_FRAME_THRESHOLD  I   4   7
V    RW    NP
LIM
10   20    10
V    RW    NP
LIM
10   20    10

*
* PMF SA Query Maximum Retries
*

WNI_CFG_PMF_SA_QUERY_MAX_RETRIES    I    4    1
V    RW   NP RESTART
NONE
0    20   5
V    RW   NP RESTART
NONE
0    20   5

*
* PMF SA Query Retry Interval (in TUs)
*

WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    I    4    1
V    RW   NP RESTART
NONE
10    2000 200
V    RW   NP RESTART
NONE
10    2000 200


*
*MCC ENABLE/DISABLE ADAPTIVE RX Drain feature
*
*
*
WNI_CFG_ENABLE_ADAPT_RX_DRAIN I   4   7
V    RW    NP
HAL
0    1    1
NV    RW    NP
HAL
0    1    1

*
* FlexConnect Power Factor
* Default is set to 0 (disable)
*
*
WNI_CFG_FLEX_CONNECT_POWER_FACTOR  I   4   0
V    RW    NP
NONE
0    9     0
V    RW    NP
NONE
0    9     0

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

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

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

* Current RSSI value (of connected AP)
*
WNI_CFG_CURRENT_RSSI I    4    7
V    RW    NP
NONE
0   127    0
V    RW    NP
NONE
0   127    0

* RTT3 Bit Value
*
WNI_CFG_RTT3_ENABLE    I    1    1
V    RW    NP
NONE
0    1    1
V    RW    NP
NONE
0    1    1

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

*
* TDLS Off Channel Implementation
*
WNI_CFG_TDLS_OFF_CHANNEL_ENABLED    I    4    7
V    RW    NP
LIM
0    1     0
V    RW    NP
LIM
0    1     0

WNI_CFG_IBSS_ATIM_WIN_SIZE I    4    7
V    RW    NP
NONE
0   100    0
V    RW    NP
NONE
0   100    0

*
* DFS Master capability (11h) enable/disable
*

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

WNI_CFG_VHT_ENABLE_TXBF_20MHZ    I    4    7
V    RW    NP
NONE
0    1    0
V    RW    NP
NONE
0    1    0
*
*TDLS WMM Mode
*
*
WNI_CFG_TDLS_WMM_MODE_ENABLED   I   4   7
V    RW    NP
LIM
0    1    0
V    RW    NP
LIM
0    1    0
