/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* 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.
*/
#ifndef WLAN_PMO_CFG_H__
#define WLAN_PMO_CFG_H__
#include "wlan_pmo_common_public_struct.h"
/*
*
* hostArpOffload - Enable/disable host ARP offload
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable host ARP offload.
*
* Usage: External
*
*
*/
#define CFG_PMO_ENABLE_HOST_ARPOFFLOAD CFG_INI_BOOL( \
"hostArpOffload", \
1, \
"enable/disable host arp offload")
/*
*
* gHwFilterMode - configure hardware filter for DTIM mode
* @Min: 0
* @Max: 3
* @Default: 1
*
* The hardware filter is only effective in DTIM mode. Use this configuration
* to blanket drop broadcast/multicast packets at the hardware level, without
* waking up the firmware
*
* Takes a bitmap of frame types to drop
* @E.g.
* # disable feature
* gHwFilterMode=0
* # drop all broadcast frames, except ARP (default)
* gHwFilterMode=1
* # drop all multicast frames, except ICMPv6
* gHwFilterMode=2
* # drop all broadcast and multicast frames, except ARP and ICMPv6
* gHwFilterMode=3
*
* Related: N/A
*
* Usage: Internal/External
*
*
*/
#define CFG_PMO_HW_FILTER_MODE CFG_INI_UINT( \
"gHwFilterMode", \
0, \
3, \
1, \
CFG_VALUE_OR_DEFAULT, \
"hardware filter for DTIM mode")
/*
*
* ssdp - Enable/disable ssdp
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable ssdp.
*
* Usage: External
*
*
*/
#define CFG_PMO_ENABLE_HOST_SSDP CFG_INI_BOOL( \
"ssdp", \
1, \
"Enable/disable ssdp")
#ifdef FEATURE_RUNTIME_PM
/*
*
* gRuntimePMDelay - Set runtime pm's inactivity timer
* @Min: 100
* @Max: 10000
* @Default: 500
*
* This ini is used to set runtime pm's inactivity timer value.
* the wlan driver will wait for this number of milliseconds of
* inactivity before performing a runtime suspend.
*
* Related: gRuntimePM
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_PMO_RUNTIME_PM_DELAY CFG_INI_UINT( \
"gRuntimePMDelay", \
100, \
10000, \
500, \
CFG_VALUE_OR_DEFAULT, \
"Set runtime pm's inactivity timer")
#endif /* FEATURE_RUNTIME_PM */
/*
*
* hostNSOffload - Enable/disable NS offload
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable NS offload.
*
* Usage: External
*
*
*/
#define CFG_PMO_ENABLE_HOST_NSOFFLOAD CFG_INI_BOOL( \
"hostNSOffload", \
1, \
"Enable/disable NS offload")
/*
*
* gEnableDynamicDTIM - Enable Dynamic DTIM
* @Min: 0
* @Max: 9
* @Default: 0
*
* This ini is used to enable/disable ssdp.
*
* 0 -Disable DynamicDTIM
* 1 to 5 - SLM will switch to DTIM specified here when host suspends and
* switch DTIM1 when host resumes
*
* Usage: External
*
*
*/
#define CFG_PMO_ENABLE_DYNAMIC_DTIM CFG_INI_UINT( \
"gEnableDynamicDTIM", \
0, \
9, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Enable Dynamic DTIM")
/*
*
* gEnableDynamicDTIM - Enable/Disable modulated DTIM feature
* @Min: 0
* @Max: 5
* @Default: 0
*
* This ini is used to enable/disable modulated DTIM feature.
*
* Usage: External
*
*
*/
#define CFG_PMO_ENABLE_MODULATED_DTIM CFG_INI_UINT( \
"gEnableModulatedDTIM", \
0, \
5, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Enable/disable modulated DTIM feature")
/*
*
* gMCAddrListEnable - Enable/disable multicast MAC address list feature
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable multicast MAC address list feature.
* Default: Enable
*
* Related: None
*
* Supported Feature: STA
*
* Usage: Internal/External
*
*
*/
#define CFG_PMO_MC_ADDR_LIST_ENABLE CFG_INI_BOOL( \
"gMCAddrListEnable", \
1, \
"Enable/disable multicast MAC address list feature")
/*
*
* gEnablePowerSaveOffload - Enable Power Save Offload
* @Min: 0
* @Max: 5
* @Default: 0
*
* This ini is used to set Power Save Offload configuration:
* Current values of gEnablePowerSaveOffload:
* 0 -> Power save offload is disabled
* 1 -> Legacy Power save enabled + Deep sleep Disabled
* 2 -> QPower enabled + Deep sleep Disabled
* 3 -> Legacy Power save enabled + Deep sleep Enabled
* 4 -> QPower enabled + Deep sleep Enabled
* 5 -> Duty cycling QPower enabled
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_PMO_POWERSAVE_OFFLOAD CFG_INI_UINT( \
"gEnablePowerSaveOffload", \
0, \
5, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Enable Power Save Offload")
/*
*
* gMaxPsPoll - Max powersave poll
* @Min: 0
* @Max: 255
* @Default: 0
*
* This ini is used to set max powersave poll.
*
* Usage: External
*
*
*/
#define CFG_PMO_MAX_PS_POLL CFG_INI_UINT( \
"gMaxPsPoll", \
0, \
255, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Max powersave poll")
/*
*
* gEnableWoW - Enable/Disable WoW
* @Min: 0
* @Max: 3
* @Default: 3
*
* This ini is used to enable/disable WoW. Configurations are as follows:
* 0 - Disable both magic pattern match and pattern byte match.
* 1 - Enable magic pattern match on all interfaces.
* 2 - Enable pattern byte match on all interfaces.
* 3 - Enable both magic patter and pattern byte match on all interfaces.
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_PMO_WOW_ENABLE CFG_INI_UINT("gEnableWoW", \
0, 3, 3, \
CFG_VALUE_OR_DEFAULT, \
"Enable WoW Support")
/*
*
* wowlan_deauth_enable - Enable/Disable wowlan deauth enable
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable wowlan deauth enable.
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_PMO_WOWLAN_DEAUTH_ENABLE CFG_INI_BOOL("wowlan_deauth_enable", \
1, \
"Enable WoWLan deauth")
/*
*
* wowlan_disassoc_enable - Enable/Disable wowlan disassoc enable
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable wowlan disassoc enable.
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_PMO_WOWLAN_DISASSOC_ENABLE CFG_INI_BOOL("wowlan_disassoc_enable", \
1, \
"Enable WoW Support")
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
/*
*
* gExtWoWgotoSuspend - Enable/Disable Extended WoW
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable Extended WoW.
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_GOTO_SUSPEND CFG_INI_BOOL("gExtWoWgotoSuspend", \
1, \
"Enable Ext WoW goto support")
/*
*
* gExtWowApp1WakeupPinNumber - Set wakeup1 PIN number
* @Min: 0
* @Max: 255
* @Default: 12
*
* This ini is used to set EXT WOW APP1 wakeup PIN number
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_APP1_WAKE_PIN_NUMBER \
CFG_INI_UINT("gExtWowApp1WakeupPinNumber", \
0, 255, 12, \
CFG_VALUE_OR_DEFAULT, \
"Set wakeup1 PIN number")
/*
*
* gExtWowApp2WakeupPinNumber - Set wakeup2 PIN number
* @Min: 0
* @Max: 255
* @Default: 16
*
* This ini is used to set EXT WOW APP2 wakeup PIN number
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_APP2_WAKE_PIN_NUMBER \
CFG_INI_UINT("gExtWowApp2WakeupPinNumber", \
0, 255, 16, \
CFG_VALUE_OR_DEFAULT, \
"Set wakeup2 PIN number")
/*
*
* gExtWoWApp2KAInitPingInterval - Set Keep Alive Init Ping Interval
* @Min: 0
* @Max: 0xffffffff
* @Default: 240
*
* This ini is used to set Keep Alive Init Ping Interval for EXT WOW
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_KA_INIT_PING_INTERVAL \
CFG_INI_UINT("gExtWoWApp2KAInitPingInterval", \
0, 0xffffffff, 240, \
CFG_VALUE_OR_DEFAULT, \
"Set Keep Alive Init Ping Interval")
/*
*
* gExtWoWApp2KAMinPingInterval - Set Keep Alive Minimum Ping Interval
* @Min: 0
* @Max: 0xffffffff
* @Default: 240
*
* This ini is used to set Keep Alive Minimum Ping Interval for EXT WOW
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_KA_MIN_PING_INTERVAL \
CFG_INI_UINT("gExtWoWApp2KAMinPingInterval", \
0, 0xffffffff, 240, \
CFG_VALUE_OR_DEFAULT, \
"Set Keep Alive Minimum Ping Interval")
/*
*
* gExtWoWApp2KAMaxPingInterval - Set Keep Alive Maximum Ping Interval
* @Min: 0
* @Max: 0xffffffff
* @Default: 1280
*
* This ini is used to set Keep Alive Maximum Ping Interval for EXT WOW
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_KA_MAX_PING_INTERVAL \
CFG_INI_UINT("gExtWoWApp2KAMaxPingInterval", \
0, 0xffffffff, 1280, \
CFG_VALUE_OR_DEFAULT, \
"Set Keep Alive Maximum Ping Interval")
/*
*
* gExtWoWApp2KAIncPingInterval - Set Keep Alive increment of Ping Interval
* @Min: 0
* @Max: 0xffffffff
* @Default: 4
*
* This ini is used to set Keep Alive increment of Ping Interval for EXT WOW
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_KA_INC_PING_INTERVAL \
CFG_INI_UINT("gExtWoWApp2KAIncPingInterval", \
0, 0xffffffff, 4, \
CFG_VALUE_OR_DEFAULT, \
"Set Keep Alive increment of Ping Interval")
/*
*
* gExtWoWApp2KAIncPingInterval - Set TCP source port
* @Min: 0
* @Max: 65535
* @Default: 5000
*
* This ini is used to set TCP source port when EXT WOW is enabled
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_TCP_SRC_PORT \
CFG_INI_UINT("gExtWoWApp2KAIncPingInterval", \
0, 65535, 5000, \
CFG_VALUE_OR_DEFAULT, \
"Set TCP source port")
/*
*
* gExtWoWApp2TcpDstPort - Set TCP Destination port
* @Min: 0
* @Max: 65535
* @Default: 5001
*
* This ini is used to set TCP Destination port when EXT WOW is enabled
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_TCP_DST_PORT \
CFG_INI_UINT("gExtWoWApp2TcpDstPort", \
0, 65535, 5001, \
CFG_VALUE_OR_DEFAULT, \
"Set TCP Destination port")
/*
*
* gExtWoWApp2TcpTxTimeout - Set TCP tx timeout
* @Min: 0
* @Max: 0xffffffff
* @Default: 200
*
* This ini is used to set TCP Tx timeout when EXT WOW is enabled
*
* Related: None
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_TCP_TX_TIMEOUT \
CFG_INI_UINT("gExtWoWApp2TcpTxTimeout", \
0, 0xffffffff, 200, \
CFG_VALUE_OR_DEFAULT, \
"Set TCP tx timeout")
/*
*
* gExtWoWApp2TcpRxTimeout - Set TCP rx timeout
* @Min: 0
* @Max: 0xffffffff
* @Default: 200
*
* This ini is used to set TCP Rx timeout when EXT WOW is enabled
*
* Supported Feature: Power Save
*
* Usage: External
*
*
*/
#define CFG_EXTWOW_TCP_RX_TIMEOUT \
CFG_INI_UINT("gExtWoWApp2TcpRxTimeout", \
0, 0xffffffff, 200, \
CFG_VALUE_OR_DEFAULT, \
"ExtWow App2 tcp rx timeout")
#endif
/*
*
* gBpfFilterEnable - APF feature support configuration
* @Min: 0
* @Max: 1
* @Default: 1
*
* When set to 1 APF feature will be enabled.
*
* Supported Feature: Android packet filter
*
* Usage: External
*
*
*/
#define CFG_PMO_APF_ENABLE CFG_INI_BOOL("gBpfFilterEnable", \
1, \
"Enable APF Support")
/*
*
* gActiveModeOffload - Active offload mode configuration
* @Min: 0
* @Max: 1
* @Default: 1
*
* When set to 1 active mode offload will be enabled.
*
* If active mode offload is enabled then all applicable data offload/filtering
* is enabled immediately in FW once config is available in WLAN driver and FW
* caches this configuration across suspend/resume;
* If active mode offload is disabled then all applicable data offload/filtering
* is enabled during cfg80211 suspend and disabled during cfg80211 resume.
*
* Supported Feature: Active mode offload
*
* Usage: External
*
*
*/
#define CFG_PMO_ACTIVE_MODE CFG_INI_BOOL("gActiveModeOffload", \
1, \
"Enable active mode offload")
/*
*
* gwow_pulse_support - WOW pulse feature configuration
* @Min: 0
* @Max: 1
* @Default: 0
*
* When set to 1 WOW pulse feature will be enabled.
*
* Related: gwow_pulse_pin, gwow_pulse_interval_low, gwow_pulse_interval_high
*
* Supported Feature: WOW pulse
*
* Usage: External
*
*
*/
#define CFG_PMO_WOW_PULSE_ENABLE CFG_INI_BOOL("gwow_pulse_support", \
0, \
"Enable wow pulse")
/*
*
* gwow_pulse_pin - GPIO pin for WOW pulse
* @Min: 0
* @Max: 254
* @Default: 35
*
* Which PIN to send the Pulse
*
* Supported Feature: WOW pulse
*
* Usage: External
*
*
*/
#define CFG_PMO_WOW_PULSE_PIN CFG_INI_UINT("gwow_pulse_pin", \
0, 254, 35, \
CFG_VALUE_OR_DEFAULT, \
"Pin for wow pulse")
/*
*
* gwow_pulse_interval_low - Pulse interval low
* @Min: 160
* @Max: 480
* @Default: 180
*
* The interval of low level in the pulse
*
* Supported Feature: WOW pulse
*
* Usage: External
*
*
*/
#define CFG_PMO_WOW_PULSE_LOW CFG_INI_UINT("gwow_pulse_interval_low", \
160, 480, 180, \
CFG_VALUE_OR_DEFAULT, \
"Interval of low pulse")
/*
*
* gwow_pulse_interval_high - Pulse interval high
* @Min: 20
* @Max: 40
* @Default: 20
*
* The interval of high level in the pulse
*
* Supported Feature: WOW pulse
*
* Usage: External
*
*
*/
#define CFG_PMO_WOW_PULSE_HIGH CFG_INI_UINT("gwow_pulse_interval_high", \
20, 40, 20, \
CFG_VALUE_OR_DEFAULT, \
"Interval of high pulse")
/*
*
* g_auto_detect_power_failure_mode - Auto detect power save failure mode
* @Min: PMO_FW_TO_CRASH_ON_PWR_FAILURE
* @Max: PMO_AUTO_PWR_FAILURE_DETECT_DISABLE
* @Default: PMO_FW_TO_CRASH_ON_PWR_FAILURE
*
* Specifies the behavior of FW in case of CHIP_POWER_SAVE_FAIL_DETECTED event
*
* Supported Feature: Auto detect power save failure
*
* Usage: External
*
*
*/
#define CFG_PMO_PWR_FAILURE CFG_INI_UINT("g_auto_detect_power_failure_mode", \
PMO_FW_TO_CRASH_ON_PWR_FAILURE, \
PMO_AUTO_PWR_FAILURE_DETECT_DISABLE, \
PMO_FW_TO_CRASH_ON_PWR_FAILURE, \
CFG_VALUE_OR_DEFAULT, \
"Auto detect power save failure mode")
/*
*
* g_enable_packet_filter_bitmap - Packet filters configuration
* @Min: 0
* @Max: 63
* @Default: 0
*
* To enable packet filters when target goes to suspend, clear when resume:
* bit-0 : IPv6 multicast
* bit-1 : IPv4 multicast
* bit-2 : IPv4 broadcast
* bit-3 : XID - Exchange station Identification packet, solicits the
* identification of the receiving station
* bit-4 : STP - Spanning Tree Protocol, builds logical loop free topology
* bit-5 : DTP/LLC/CDP
* DTP - Dynamic Trunking Protocol is used by Cisco switches to
* negotiate whether an interconnection between two switches
* should be put into access or trunk mode
* LLC - Logical link control, used for multiplexing, flow & error
* control
* CDP - Cisco Discovery Protocol packet contains information about the
* cisco devices in the network
*
* Supported Feature: Packet filtering
*
* Usage: Internal/External
*
*
*/
#define CFG_PMO_PKT_FILTER CFG_INI_UINT("g_enable_packet_filter_bitmap", \
0, 63, 0, \
CFG_VALUE_OR_DEFAULT, \
"Packet filter bitmap configure")
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
#define CFG_EXTWOW_ALL \
CFG(CFG_EXTWOW_GOTO_SUSPEND) \
CFG(CFG_EXTWOW_APP1_WAKE_PIN_NUMBER) \
CFG(CFG_EXTWOW_APP2_WAKE_PIN_NUMBER) \
CFG(CFG_EXTWOW_KA_INIT_PING_INTERVAL) \
CFG(CFG_EXTWOW_KA_MIN_PING_INTERVAL) \
CFG(CFG_EXTWOW_KA_MAX_PING_INTERVAL) \
CFG(CFG_EXTWOW_KA_INC_PING_INTERVAL) \
CFG(CFG_EXTWOW_TCP_SRC_PORT) \
CFG(CFG_EXTWOW_TCP_DST_PORT) \
CFG(CFG_EXTWOW_TCP_TX_TIMEOUT) \
CFG(CFG_EXTWOW_TCP_RX_TIMEOUT)
#else
#define CFG_EXTWOW_ALL
#endif
#ifdef FEATURE_WLAN_APF
#define CFG_PMO_APF_ALL \
CFG(CFG_PMO_APF_ENABLE)
#else
#define CFG_PMO_APF_ALL
#endif
#ifdef WLAN_FEATURE_WOW_PULSE
#define CFG_WOW_ALL \
CFG(CFG_PMO_WOW_PULSE_ENABLE) \
CFG(CFG_PMO_WOW_PULSE_PIN) \
CFG(CFG_PMO_WOW_PULSE_LOW) \
CFG(CFG_PMO_WOW_PULSE_HIGH)
#else
#define CFG_WOW_ALL
#endif
#ifdef WLAN_FEATURE_PACKET_FILTERING
#define CFG_PACKET_FILTERING_ALL \
CFG(CFG_PMO_PKT_FILTER)
#else
#define CFG_PACKET_FILTERING_ALL
#endif
#ifdef FEATURE_RUNTIME_PM
#define CFG_RUNTIME_PM_ALL \
CFG(CFG_PMO_RUNTIME_PM_DELAY)
#else
#define CFG_RUNTIME_PM_ALL
#endif
#define CFG_PMO_BASIC_ALL \
CFG(CFG_PMO_ENABLE_HOST_ARPOFFLOAD) \
CFG(CFG_PMO_HW_FILTER_MODE) \
CFG(CFG_PMO_ENABLE_HOST_SSDP) \
CFG(CFG_PMO_ENABLE_HOST_NSOFFLOAD) \
CFG(CFG_PMO_ENABLE_DYNAMIC_DTIM) \
CFG(CFG_PMO_ENABLE_MODULATED_DTIM) \
CFG(CFG_PMO_MC_ADDR_LIST_ENABLE) \
CFG(CFG_PMO_POWERSAVE_OFFLOAD) \
CFG(CFG_PMO_MAX_PS_POLL) \
CFG(CFG_PMO_WOWLAN_DEAUTH_ENABLE) \
CFG(CFG_PMO_WOWLAN_DISASSOC_ENABLE) \
CFG(CFG_PMO_WOW_ENABLE) \
CFG(CFG_PMO_ACTIVE_MODE) \
CFG(CFG_PMO_PWR_FAILURE)
#define CFG_PMO_ALL \
CFG_EXTWOW_ALL \
CFG_PACKET_FILTERING_ALL \
CFG_PMO_APF_ALL \
CFG_PMO_BASIC_ALL \
CFG_RUNTIME_PM_ALL \
CFG_WOW_ALL
#endif /* WLAN_PMO_CFG_H__ */