* Copyright (c) 2014 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    64    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    32    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    32    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    32    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    32    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

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

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

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

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


*
* Valid Channel List
*

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


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


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


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

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

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

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

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

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

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

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

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

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

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

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


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


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


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

#ENUM AP         1
#ENUM STA        2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Association State
*

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

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

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

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

* Device Password ID
*

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

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

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

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

*
* Low gain override
*

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

*
* Listen Mode Enable/Disable
*

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

*
* On chip reodering polling threshold
*

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

*
* On chip reodering aging threshold for AC0
*

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

*
* On chip reodering aging threshold for AC1
*

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

*
* On chip reodering aging threshold for AC2
*

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

*
* On chip reodering aging threshold for AC3
*

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

*
* Number of On-Chip reorder sessions
*

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


*
* Single RC for all TID
*

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

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