1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name #ifndef WLAN_PMO_COMMON_CFG_H__ 21*5113495bSYour Name #define WLAN_PMO_COMMON_CFG_H__ 22*5113495bSYour Name 23*5113495bSYour Name #include "wlan_pmo_common_public_struct.h" 24*5113495bSYour Name 25*5113495bSYour Name #ifdef CONNECTION_ROAMING_CFG 26*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_MIN 0 27*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_MAX 10 28*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_DEFAULT 3 29*5113495bSYour Name #else 30*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_MIN 0 31*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_MAX 10 32*5113495bSYour Name # define CONDTIMSKIPPING_NUMBER_DEFAULT 0 33*5113495bSYour Name #endif 34*5113495bSYour Name 35*5113495bSYour Name /* 36*5113495bSYour Name * <ini> 37*5113495bSYour Name * hostArpOffload - Enable/disable host ARP offload 38*5113495bSYour Name * @Min: 0 39*5113495bSYour Name * @Max: 1 40*5113495bSYour Name * @Default: 1 41*5113495bSYour Name * 42*5113495bSYour Name * This ini is used to enable/disable firmware's capability of sending ARP 43*5113495bSYour Name * response to clients. 44*5113495bSYour Name * 45*5113495bSYour Name * Usage: External 46*5113495bSYour Name * 47*5113495bSYour Name * </ini> 48*5113495bSYour Name */ 49*5113495bSYour Name #define CFG_PMO_ENABLE_HOST_ARPOFFLOAD CFG_INI_BOOL( \ 50*5113495bSYour Name "hostArpOffload", \ 51*5113495bSYour Name 1, \ 52*5113495bSYour Name "enable/disable host ARP offload") 53*5113495bSYour Name 54*5113495bSYour Name /* 55*5113495bSYour Name * <ini> 56*5113495bSYour Name * gHwFilterMode - configure hardware filter for DTIM mode 57*5113495bSYour Name * @Min: 0 58*5113495bSYour Name * @Max: 3 59*5113495bSYour Name * @Default: 1 60*5113495bSYour Name * 61*5113495bSYour Name * The hardware filter is only effective in DTIM mode. Use this configuration 62*5113495bSYour Name * to blanket drop broadcast/multicast packets at the hardware level, without 63*5113495bSYour Name * waking up the firmware 64*5113495bSYour Name * 65*5113495bSYour Name * Takes a bitmap of frame types to drop 66*5113495bSYour Name * @E.g. 67*5113495bSYour Name * # disable feature 68*5113495bSYour Name * gHwFilterMode=0 69*5113495bSYour Name * # drop all broadcast frames, except ARP (default) 70*5113495bSYour Name * gHwFilterMode=1 71*5113495bSYour Name * # drop all multicast frames, except ICMPv6 72*5113495bSYour Name * gHwFilterMode=2 73*5113495bSYour Name * # drop all broadcast and multicast frames, except ARP and ICMPv6 74*5113495bSYour Name * gHwFilterMode=3 75*5113495bSYour Name * 76*5113495bSYour Name * Related: N/A 77*5113495bSYour Name * 78*5113495bSYour Name * Usage: Internal/External 79*5113495bSYour Name * 80*5113495bSYour Name * </ini> 81*5113495bSYour Name */ 82*5113495bSYour Name #define CFG_PMO_HW_FILTER_MODE CFG_INI_UINT( \ 83*5113495bSYour Name "gHwFilterMode", \ 84*5113495bSYour Name 0, \ 85*5113495bSYour Name 3, \ 86*5113495bSYour Name 1, \ 87*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 88*5113495bSYour Name "hardware filter for DTIM mode") 89*5113495bSYour Name 90*5113495bSYour Name /* 91*5113495bSYour Name * <ini> 92*5113495bSYour Name * ssdp - Enable/disable SSDP 93*5113495bSYour Name * @Min: 0 94*5113495bSYour Name * @Max: 1 95*5113495bSYour Name * @Default: 1 96*5113495bSYour Name * 97*5113495bSYour Name * This ini is used to enable/disable Simple Service Discovery Protocol(SSDP). 98*5113495bSYour Name * 99*5113495bSYour Name * Usage: External 100*5113495bSYour Name * 101*5113495bSYour Name * </ini> 102*5113495bSYour Name */ 103*5113495bSYour Name #define CFG_PMO_ENABLE_HOST_SSDP CFG_INI_BOOL( \ 104*5113495bSYour Name "ssdp", \ 105*5113495bSYour Name 1, \ 106*5113495bSYour Name "Enable/disable ssdp") 107*5113495bSYour Name 108*5113495bSYour Name /* 109*5113495bSYour Name * <ini> 110*5113495bSYour Name * hostNSOffload - Enable/disable NS offload 111*5113495bSYour Name * @Min: 0 112*5113495bSYour Name * @Max: 1 113*5113495bSYour Name * @Default: 1 114*5113495bSYour Name * 115*5113495bSYour Name * This ini is used to enable/disable NS offload. 116*5113495bSYour Name * 117*5113495bSYour Name * Usage: External 118*5113495bSYour Name * 119*5113495bSYour Name * </ini> 120*5113495bSYour Name */ 121*5113495bSYour Name #define CFG_PMO_ENABLE_HOST_NSOFFLOAD CFG_INI_BOOL( \ 122*5113495bSYour Name "hostNSOffload", \ 123*5113495bSYour Name 1, \ 124*5113495bSYour Name "Enable/disable NS offload") 125*5113495bSYour Name 126*5113495bSYour Name /* 127*5113495bSYour Name * <ini> 128*5113495bSYour Name * CFG_PMO_ENABLE_IGMP_OFFLOAD - Enable/disable igmp offload 129*5113495bSYour Name * @Min: 0 130*5113495bSYour Name * @Max: 1 131*5113495bSYour Name * @Default: 0 132*5113495bSYour Name * 133*5113495bSYour Name * This ini is used to enable/disable igmp offload feature to fw. 134*5113495bSYour Name * 135*5113495bSYour Name * Usage: External 136*5113495bSYour Name * 137*5113495bSYour Name * </ini> 138*5113495bSYour Name */ 139*5113495bSYour Name #define CFG_PMO_ENABLE_IGMP_OFFLOAD CFG_INI_BOOL( \ 140*5113495bSYour Name "igmp_offload_enable", \ 141*5113495bSYour Name 0, \ 142*5113495bSYour Name "Enable/disable IGMP offload") 143*5113495bSYour Name 144*5113495bSYour Name /* 145*5113495bSYour Name * <ini> 146*5113495bSYour Name * gEnableDynamicDTIM - Enable Dynamic DTIM 147*5113495bSYour Name * @Min: 0 148*5113495bSYour Name * @Max: 10 149*5113495bSYour Name * @Default: 0 150*5113495bSYour Name * 151*5113495bSYour Name * This ini is used to enable/disable dynamic DTIM. 152*5113495bSYour Name * 153*5113495bSYour Name * 0 - Disable Dynamic DTIM 154*5113495bSYour Name * 1 to 10 - SLM will switch to DTIM specified here when host suspends and 155*5113495bSYour Name * switch DTIM1 when host resumes 156*5113495bSYour Name * 157*5113495bSYour Name * Usage: External 158*5113495bSYour Name * 159*5113495bSYour Name * </ini> 160*5113495bSYour Name */ 161*5113495bSYour Name #define CFG_PMO_ENABLE_DYNAMIC_DTIM CFG_INI_UINT( \ 162*5113495bSYour Name "gEnableDynamicDTIM", \ 163*5113495bSYour Name 0, \ 164*5113495bSYour Name 10, \ 165*5113495bSYour Name 0, \ 166*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 167*5113495bSYour Name "Enable Dynamic DTIM") 168*5113495bSYour Name 169*5113495bSYour Name /* 170*5113495bSYour Name * <ini> 171*5113495bSYour Name * gEnableModulatedDTIM/ConDTIMSkipping_Number - Enable/Disable modulated DTIM 172*5113495bSYour Name * feature 173*5113495bSYour Name * @Min: 0 174*5113495bSYour Name * @Max: 10 175*5113495bSYour Name * @Default: 0 176*5113495bSYour Name * 177*5113495bSYour Name * This ini is used to enable/disable modulated DTIM feature. 178*5113495bSYour Name * 179*5113495bSYour Name * 0 - Disable modulated DTIM. 180*5113495bSYour Name * 1 to 10 - The maximum No. of modulated DTIM period used for calculating the 181*5113495bSYour Name * target listen interval. 182*5113495bSYour Name * 183*5113495bSYour Name * The target listen interval will be updated to firmware when host driver is 184*5113495bSYour Name * setting the suspend DTIM parameters. 185*5113495bSYour Name * 186*5113495bSYour Name * This configuration will be ignored when dynamic DTIM is enabled(by 187*5113495bSYour Name * gEnableDynamicDTIM). 188*5113495bSYour Name * 189*5113495bSYour Name * Usage: External 190*5113495bSYour Name * 191*5113495bSYour Name * </ini> 192*5113495bSYour Name */ 193*5113495bSYour Name 194*5113495bSYour Name /* 195*5113495bSYour Name * <ini> 196*5113495bSYour Name * gEnableModulatedDTIM/ConDTIMSkipping_Number - Enable/Disable modulated DTIM 197*5113495bSYour Name * feature 198*5113495bSYour Name * @Min: 0 199*5113495bSYour Name * @Max: 10 200*5113495bSYour Name * @Default: 0 201*5113495bSYour Name * 202*5113495bSYour Name * This ini is used to enable/disable modulated DTIM feature. 203*5113495bSYour Name * 204*5113495bSYour Name * 0 - Disable modulated DTIM. 205*5113495bSYour Name * 1 to 10 - The maximum No. of modulated DTIM period used for calculating the 206*5113495bSYour Name * target listen interval. 207*5113495bSYour Name * 208*5113495bSYour Name * The target listen interval will be updated to firmware when host driver is 209*5113495bSYour Name * setting the suspend DTIM parameters. 210*5113495bSYour Name * 211*5113495bSYour Name * This configuration will be ignored when dynamic DTIM is enabled(by 212*5113495bSYour Name * gEnableDynamicDTIM). 213*5113495bSYour Name * 214*5113495bSYour Name * Usage: External 215*5113495bSYour Name * 216*5113495bSYour Name * </ini> 217*5113495bSYour Name */ 218*5113495bSYour Name #define CFG_PMO_ENABLE_MODULATED_DTIM CFG_INI_UINT( \ 219*5113495bSYour Name "gEnableModulatedDTIM ConDTIMSkipping_Number", \ 220*5113495bSYour Name CONDTIMSKIPPING_NUMBER_MIN, \ 221*5113495bSYour Name CONDTIMSKIPPING_NUMBER_MAX, \ 222*5113495bSYour Name CONDTIMSKIPPING_NUMBER_DEFAULT, \ 223*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 224*5113495bSYour Name "Enable/disable modulated DTIM feature") 225*5113495bSYour Name 226*5113495bSYour Name /* 227*5113495bSYour Name * <ini> 228*5113495bSYour Name * gMCAddrListEnable - Enable/disable multicast MAC address list feature 229*5113495bSYour Name * @Min: 0 230*5113495bSYour Name * @Max: 1 231*5113495bSYour Name * @Default: 1 232*5113495bSYour Name * 233*5113495bSYour Name * This ini is used to enable/disable multicast MAC address list feature. 234*5113495bSYour Name * Default: Enable 235*5113495bSYour Name * 236*5113495bSYour Name * Related: None 237*5113495bSYour Name * 238*5113495bSYour Name * Supported Feature: STA 239*5113495bSYour Name * 240*5113495bSYour Name * Usage: Internal/External 241*5113495bSYour Name * 242*5113495bSYour Name * </ini> 243*5113495bSYour Name */ 244*5113495bSYour Name #define CFG_PMO_MC_ADDR_LIST_ENABLE CFG_INI_BOOL( \ 245*5113495bSYour Name "gMCAddrListEnable", \ 246*5113495bSYour Name 1, \ 247*5113495bSYour Name "Enable/disable multicast MAC address list feature") 248*5113495bSYour Name 249*5113495bSYour Name /* 250*5113495bSYour Name * <ini> 251*5113495bSYour Name * gOptimizedPowerManagement - Optimized Power Management 252*5113495bSYour Name * @Min: 0 253*5113495bSYour Name * @Max: 2 254*5113495bSYour Name * @Default: 1 255*5113495bSYour Name * 256*5113495bSYour Name * This ini is used to set Optimized Power Management configuration: 257*5113495bSYour Name * Current values of gOptimizedPowerManagement: 258*5113495bSYour Name * 0 -> Disable optimized power management 259*5113495bSYour Name * 1 -> Enable optimized power management 260*5113495bSYour Name * 2 -> User Defined 261*5113495bSYour Name * 262*5113495bSYour Name * Related: None 263*5113495bSYour Name * 264*5113495bSYour Name * Supported Feature: Optimized Power Management 265*5113495bSYour Name * 266*5113495bSYour Name * Usage: External 267*5113495bSYour Name * 268*5113495bSYour Name * </ini> 269*5113495bSYour Name */ 270*5113495bSYour Name #define CFG_PMO_POWERSAVE_MODE CFG_INI_UINT( \ 271*5113495bSYour Name "gOptimizedPowerManagement", \ 272*5113495bSYour Name 0, \ 273*5113495bSYour Name 2, \ 274*5113495bSYour Name 1, \ 275*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 276*5113495bSYour Name "Optimized Power Management") 277*5113495bSYour Name 278*5113495bSYour Name /* 279*5113495bSYour Name * <ini> 280*5113495bSYour Name * enable_mod_dtim_on_system_suspend - enable modulated DTIM 281*5113495bSYour Name * on system suspend display off case 282*5113495bSYour Name * @Min: 0 283*5113495bSYour Name * @Max: 1 284*5113495bSYour Name * @Default: 0 285*5113495bSYour Name * 286*5113495bSYour Name * This ini is used to set modulated DTIM configuration: 287*5113495bSYour Name * Current values of enable_mod_dtim_on_system_suspend: 288*5113495bSYour Name * 0 -> Modulated DTIM will be enabled for every wow entry 289*5113495bSYour Name * (RTPM wow + System suspend wow) 290*5113495bSYour Name * 1 -> Enable modulated DTIM only for System suspend wow. 291*5113495bSYour Name * For RTPM wow, the device will stay in DTIM 1 (non-modulated DTIM) 292*5113495bSYour Name * 293*5113495bSYour Name * Related: None 294*5113495bSYour Name * 295*5113495bSYour Name * Supported Feature: Modulated DTIM 296*5113495bSYour Name * 297*5113495bSYour Name * Usage: External 298*5113495bSYour Name * 299*5113495bSYour Name * </ini> 300*5113495bSYour Name */ 301*5113495bSYour Name #define CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND CFG_INI_BOOL( \ 302*5113495bSYour Name "enable_mod_dtim_on_system_suspend", \ 303*5113495bSYour Name 0, \ 304*5113495bSYour Name "Modulated DTIM on System suspend wow") 305*5113495bSYour Name 306*5113495bSYour Name /* 307*5113495bSYour Name * <ini> 308*5113495bSYour Name * gEnableForcedDTIM - Enable/Disable forced DTIM feature 309*5113495bSYour Name * @Min: 0 310*5113495bSYour Name * @Max: 1 311*5113495bSYour Name * @Default: 0 312*5113495bSYour Name * 313*5113495bSYour Name * This ini is used to enable/disable forced DTIM feature. 314*5113495bSYour Name * 315*5113495bSYour Name * 0 - Disable forced DTIM. 316*5113495bSYour Name * 1 - Enable forced DTIM 317*5113495bSYour Name * 318*5113495bSYour Name * 319*5113495bSYour Name * Usage: External 320*5113495bSYour Name * 321*5113495bSYour Name * </ini> 322*5113495bSYour Name */ 323*5113495bSYour Name #define CFG_PMO_ENABLE_FORCED_DTIM CFG_INI_BOOL( \ 324*5113495bSYour Name "gEnableForcedDTIM", \ 325*5113495bSYour Name 0, \ 326*5113495bSYour Name "Enable/disable Forced DTIM feature") 327*5113495bSYour Name 328*5113495bSYour Name /* 329*5113495bSYour Name * <ini> 330*5113495bSYour Name * gMaxPsPoll - Max powersave poll 331*5113495bSYour Name * @Min: 0 332*5113495bSYour Name * @Max: 255 333*5113495bSYour Name * @Default: 0 334*5113495bSYour Name * 335*5113495bSYour Name * This ini is used to set max powersave poll. 336*5113495bSYour Name * 337*5113495bSYour Name * Usage: External 338*5113495bSYour Name * 339*5113495bSYour Name * </ini> 340*5113495bSYour Name */ 341*5113495bSYour Name #define CFG_PMO_MAX_PS_POLL CFG_INI_UINT( \ 342*5113495bSYour Name "gMaxPsPoll", \ 343*5113495bSYour Name 0, \ 344*5113495bSYour Name 255, \ 345*5113495bSYour Name 0, \ 346*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 347*5113495bSYour Name "Max powersave poll") 348*5113495bSYour Name 349*5113495bSYour Name /* 350*5113495bSYour Name * <ini> 351*5113495bSYour Name * gEnableWoW - Enable/Disable WoW 352*5113495bSYour Name * @Min: 0 353*5113495bSYour Name * @Max: 3 354*5113495bSYour Name * @Default: 3 355*5113495bSYour Name * 356*5113495bSYour Name * This ini is used to enable/disable WoW. Configurations are as follows: 357*5113495bSYour Name * 0 - Disable both magic pattern match and pattern byte match. 358*5113495bSYour Name * 1 - Enable magic pattern match on all interfaces. 359*5113495bSYour Name * 2 - Enable pattern byte match on all interfaces. 360*5113495bSYour Name * 3 - Enable both magic pattern and pattern byte match on all interfaces. 361*5113495bSYour Name * 362*5113495bSYour Name * Related: None 363*5113495bSYour Name * 364*5113495bSYour Name * Supported Feature: Power Save 365*5113495bSYour Name * 366*5113495bSYour Name * Usage: External 367*5113495bSYour Name * 368*5113495bSYour Name * </ini> 369*5113495bSYour Name */ 370*5113495bSYour Name #define CFG_PMO_WOW_ENABLE CFG_INI_UINT("gEnableWoW", \ 371*5113495bSYour Name 0, 3, 3, \ 372*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 373*5113495bSYour Name "Enable WoW Support") 374*5113495bSYour Name 375*5113495bSYour Name /* 376*5113495bSYour Name * <ini> 377*5113495bSYour Name * gSuspendMode - Suspend mode configuration 378*5113495bSYour Name * @Min: 0 379*5113495bSYour Name * @Max: 3 380*5113495bSYour Name * @Default: 2 381*5113495bSYour Name * 382*5113495bSYour Name * This ini is used to set suspend mode. Configurations are as follows: 383*5113495bSYour Name * 0 - Does not support suspend. 384*5113495bSYour Name * 1 - Legency suspend mode, PDEV suspend. 385*5113495bSYour Name * 2 - WOW suspend mode. 386*5113495bSYour Name * 3 - Shutdown wlan while suspend. 387*5113495bSYour Name * 388*5113495bSYour Name * Related: None 389*5113495bSYour Name * 390*5113495bSYour Name * Supported Feature: Power Save 391*5113495bSYour Name * 392*5113495bSYour Name * Usage: External 393*5113495bSYour Name * 394*5113495bSYour Name * </ini> 395*5113495bSYour Name */ 396*5113495bSYour Name #define CFG_PMO_SUSPEND_MODE CFG_INI_UINT("gSuspendMode", \ 397*5113495bSYour Name 0, 3, 2, \ 398*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 399*5113495bSYour Name "Suspend mode") 400*5113495bSYour Name 401*5113495bSYour Name /* 402*5113495bSYour Name * <ini> 403*5113495bSYour Name * gActiveModeOffload - Active offload mode configuration 404*5113495bSYour Name * @Min: 0 405*5113495bSYour Name * @Max: 1 406*5113495bSYour Name * @Default: 1 407*5113495bSYour Name * 408*5113495bSYour Name * When set to 1 active mode offload will be enabled. 409*5113495bSYour Name * 410*5113495bSYour Name * If active mode offload is enabled then all applicable data offload/filtering 411*5113495bSYour Name * is enabled immediately in FW once config is available in WLAN driver and FW 412*5113495bSYour Name * caches this configuration across suspend/resume; 413*5113495bSYour Name * If active mode offload is disabled then all applicable data offload/filtering 414*5113495bSYour Name * is enabled during cfg80211 suspend and disabled during cfg80211 resume. 415*5113495bSYour Name * 416*5113495bSYour Name * Supported Feature: Active mode offload 417*5113495bSYour Name * 418*5113495bSYour Name * Usage: External 419*5113495bSYour Name * 420*5113495bSYour Name * </ini> 421*5113495bSYour Name */ 422*5113495bSYour Name #define CFG_PMO_ACTIVE_MODE CFG_INI_BOOL("gActiveModeOffload", \ 423*5113495bSYour Name 1, \ 424*5113495bSYour Name "Enable active mode offload") 425*5113495bSYour Name 426*5113495bSYour Name /* 427*5113495bSYour Name * <ini> 428*5113495bSYour Name * g_auto_detect_power_failure_mode - Auto detect power save failure mode 429*5113495bSYour Name * @Min: PMO_FW_TO_CRASH_ON_PWR_FAILURE 430*5113495bSYour Name * @Max: PMO_AUTO_PWR_FAILURE_DETECT_DISABLE 431*5113495bSYour Name * @Default: PMO_FW_TO_CRASH_ON_PWR_FAILURE 432*5113495bSYour Name * 433*5113495bSYour Name * Specifies the behavior of FW in case of CHIP_POWER_SAVE_FAIL_DETECTED event 434*5113495bSYour Name * 435*5113495bSYour Name * Supported Feature: Auto detect power save failure 436*5113495bSYour Name * 437*5113495bSYour Name * Usage: External 438*5113495bSYour Name * 439*5113495bSYour Name * </ini> 440*5113495bSYour Name */ 441*5113495bSYour Name #define CFG_PMO_PWR_FAILURE CFG_INI_UINT("g_auto_detect_power_failure_mode", \ 442*5113495bSYour Name PMO_FW_TO_CRASH_ON_PWR_FAILURE, \ 443*5113495bSYour Name PMO_AUTO_PWR_FAILURE_DETECT_DISABLE, \ 444*5113495bSYour Name PMO_FW_TO_CRASH_ON_PWR_FAILURE, \ 445*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 446*5113495bSYour Name "Auto detect power save failure mode") 447*5113495bSYour Name 448*5113495bSYour Name /* 449*5113495bSYour Name * <ini> 450*5113495bSYour Name * gEnableSapSuspend - Enable/disable SAP Suspend 451*5113495bSYour Name * @Min: 0 452*5113495bSYour Name * @Max: 1 453*5113495bSYour Name * @Default: 0 454*5113495bSYour Name * 455*5113495bSYour Name * 456*5113495bSYour Name * Related: None 457*5113495bSYour Name * 458*5113495bSYour Name * Supported Feature: SAP 459*5113495bSYour Name * 460*5113495bSYour Name * Usage: External 461*5113495bSYour Name * 462*5113495bSYour Name * </ini> 463*5113495bSYour Name */ 464*5113495bSYour Name #define CFG_ENABLE_SAP_SUSPEND CFG_INI_BOOL( \ 465*5113495bSYour Name "gEnableSapSuspend", \ 466*5113495bSYour Name 1, \ 467*5113495bSYour Name "Enable/disable SAP Suspend") 468*5113495bSYour Name 469*5113495bSYour Name /* 470*5113495bSYour Name * <ini> 471*5113495bSYour Name * g_wow_data_inactivity_timeout - Data activity timeout in wow mode. 472*5113495bSYour Name * @Min: 1 473*5113495bSYour Name * @Max: 255 474*5113495bSYour Name * @Default: 50 475*5113495bSYour Name * 476*5113495bSYour Name * This ini is used to set data inactivity timeout in wow mode and 477*5113495bSYour Name * the value is honored in firmware when User defined OPM is set 478*5113495bSYour Name * 479*5113495bSYour Name * Supported Feature: inactivity timeout in wow mode 480*5113495bSYour Name * 481*5113495bSYour Name * Usage: External 482*5113495bSYour Name * 483*5113495bSYour Name * </ini> 484*5113495bSYour Name */ 485*5113495bSYour Name #define CFG_PMO_WOW_DATA_INACTIVITY_TIMEOUT CFG_INI_UINT( \ 486*5113495bSYour Name "g_wow_data_inactivity_timeout", \ 487*5113495bSYour Name 1, \ 488*5113495bSYour Name 255, \ 489*5113495bSYour Name 50, \ 490*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 491*5113495bSYour Name "Data activity timeout in wow mode") 492*5113495bSYour Name /* 493*5113495bSYour Name * <ini> 494*5113495bSYour Name * g_wow_spec_wake_interval - OPM Speculative wake interval in wow mode. 495*5113495bSYour Name * @Min: 0 496*5113495bSYour Name * @Max: 255 497*5113495bSYour Name * @Default: 0 498*5113495bSYour Name * 499*5113495bSYour Name * This ini is used to set OPM speculative wake interval in wow mode and 500*5113495bSYour Name * the value is honored in firmware when User defined OPM is set 501*5113495bSYour Name * 502*5113495bSYour Name * Supported Feature: OPM Speculative wake interval in wow mode 503*5113495bSYour Name * 504*5113495bSYour Name * Usage: External 505*5113495bSYour Name * 506*5113495bSYour Name * </ini> 507*5113495bSYour Name */ 508*5113495bSYour Name #define CFG_PMO_WOW_SPEC_WAKE_INTERVAL CFG_INI_UINT( \ 509*5113495bSYour Name "g_wow_spec_wake_interval", \ 510*5113495bSYour Name 0, \ 511*5113495bSYour Name 255, \ 512*5113495bSYour Name 0, \ 513*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 514*5113495bSYour Name "Speculative wake interval in wow mode") 515*5113495bSYour Name /* 516*5113495bSYour Name * <ini> 517*5113495bSYour Name * gRArateLimitInterval - RA rate limit interval 518*5113495bSYour Name * @Min: 60 519*5113495bSYour Name * @Max: 3600 520*5113495bSYour Name * @Default: 60 521*5113495bSYour Name * This ini is used to set RA rate limit interval. 522*5113495bSYour Name * 523*5113495bSYour Name * Usage: External 524*5113495bSYour Name * 525*5113495bSYour Name * </ini> 526*5113495bSYour Name */ 527*5113495bSYour Name #define CFG_RA_RATE_LIMIT_INTERVAL CFG_INI_UINT( \ 528*5113495bSYour Name "gRArateLimitInterval", \ 529*5113495bSYour Name 60, \ 530*5113495bSYour Name 3600, \ 531*5113495bSYour Name 60, \ 532*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 533*5113495bSYour Name "RA rate limit interval") 534*5113495bSYour Name 535*5113495bSYour Name /* 536*5113495bSYour Name * <ini> 537*5113495bSYour Name * enable_bus_suspend_in_sap_mode - enable PCIe bus suspend as part of 538*5113495bSYour Name * platform system suspend for SAP with one or more clients connected 539*5113495bSYour Name * @Min: 0 540*5113495bSYour Name * @Max: 1 541*5113495bSYour Name * @Default: 1 542*5113495bSYour Name * 543*5113495bSYour Name * This ini is used to PCIe bus suspend as part of platform system suspend for 544*5113495bSYour Name * SAP with one or more clients connected 545*5113495bSYour Name * 546*5113495bSYour Name * 0: PCIe Bus suspend is not supported in SAP mode with one or more clients 547*5113495bSYour Name * connected 548*5113495bSYour Name * 1: PCIe Bus suspend is supported in SAP mode with one or more clients 549*5113495bSYour Name * connected 550*5113495bSYour Name * Related: SAP clients connected bus suspend(D3 WoW) is only supported 551*5113495bSYour Name * when IPA is disabled 552*5113495bSYour Name * 553*5113495bSYour Name * Supported Feature: Power Save 554*5113495bSYour Name * 555*5113495bSYour Name * Usage: Internal 556*5113495bSYour Name * 557*5113495bSYour Name * </ini> 558*5113495bSYour Name */ 559*5113495bSYour Name #define CFG_ENABLE_BUS_SUSPEND_IN_SAP_MODE CFG_INI_BOOL( \ 560*5113495bSYour Name "enable_bus_suspend_in_sap_mode", \ 561*5113495bSYour Name 1, \ 562*5113495bSYour Name "This ini is used to enable bus suspend in SAP mode") 563*5113495bSYour Name 564*5113495bSYour Name /* 565*5113495bSYour Name * <ini> 566*5113495bSYour Name * enable_bus_suspend_in_go_mode - enable PCIe bus suspend as part of 567*5113495bSYour Name * platform system suspend for P2PGO with one or more clients connected 568*5113495bSYour Name * @Min: 0 569*5113495bSYour Name * @Max: 1 570*5113495bSYour Name * @Default: 1 571*5113495bSYour Name * 572*5113495bSYour Name * This ini is used to PCIe bus suspend as part of platform system suspend for 573*5113495bSYour Name * P2PGO with one or more clients connected 574*5113495bSYour Name * 575*5113495bSYour Name * 0: PCIe Bus suspend is not supported in P2PGO mode with one or more clients 576*5113495bSYour Name * connected 577*5113495bSYour Name * 1: PCIe Bus suspend is supported in P2PGO mode with one or more clients 578*5113495bSYour Name * connected 579*5113495bSYour Name * Related: P2P GO clients connected bus suspend(D3 WoW) is only supported 580*5113495bSYour Name * when IPA is disabled 581*5113495bSYour Name * 582*5113495bSYour Name * Supported Feature: Power Save 583*5113495bSYour Name * 584*5113495bSYour Name * Usage: Internal 585*5113495bSYour Name * 586*5113495bSYour Name * </ini> 587*5113495bSYour Name */ 588*5113495bSYour Name #define CFG_ENABLE_BUS_SUSPEND_IN_GO_MODE CFG_INI_BOOL( \ 589*5113495bSYour Name "enable_bus_suspend_in_go_mode", \ 590*5113495bSYour Name 1, \ 591*5113495bSYour Name "This ini is used to enable bus suspend in P2PGO mode") 592*5113495bSYour Name 593*5113495bSYour Name /* 594*5113495bSYour Name * <ini> 595*5113495bSYour Name * igmp_version_support - Configure igmp version 596*5113495bSYour Name * @Min: 0x00000000 597*5113495bSYour Name * @Max: 0x7 598*5113495bSYour Name * @Default: 0x7 599*5113495bSYour Name * 600*5113495bSYour Name * This ini is used to configure version while offloading igmp 601*5113495bSYour Name * 602*5113495bSYour Name * Bit 0: support igmp version 1 603*5113495bSYour Name * Bit 1: support igmp version 2 604*5113495bSYour Name * Bit 2: support igmp version 3 605*5113495bSYour Name */ 606*5113495bSYour Name #define CFG_IGMP_VERSION_SUPPORT CFG_INI_UINT( \ 607*5113495bSYour Name "igmp_version_support", \ 608*5113495bSYour Name 0x00000000, \ 609*5113495bSYour Name 0x7, \ 610*5113495bSYour Name 0x7, \ 611*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 612*5113495bSYour Name "configure igmp offload support version") 613*5113495bSYour Name 614*5113495bSYour Name /* 615*5113495bSYour Name * <ini> 616*5113495bSYour Name * disconnect_sap_tdls_in_wow - disconnect sap tdls in wow 617*5113495bSYour Name * @Min: 0 618*5113495bSYour Name * @Max: 1 619*5113495bSYour Name * @Default: 0 620*5113495bSYour Name * 621*5113495bSYour Name * Due to the limitation on third party platform, add ini to take 622*5113495bSYour Name * special care of the below wow case to avoid fw crash. 623*5113495bSYour Name * The sap/p2p_go shall kick out all the connected sta/p2p_gc and 624*5113495bSYour Name * then go to suspend considering d0wow/d3wow is not supported. 625*5113495bSYour Name * Teardown tdls link proactively since auto sleep mechanism not 626*5113495bSYour Name * supported. 627*5113495bSYour Name * 628*5113495bSYour Name * Usage: External 629*5113495bSYour Name * 630*5113495bSYour Name * </ini> 631*5113495bSYour Name */ 632*5113495bSYour Name #define CFG_DISCONNECT_SAP_TDLS_IN_WOW CFG_INI_BOOL( \ 633*5113495bSYour Name "disconnect_sap_tdls_in_wow", \ 634*5113495bSYour Name 0, \ 635*5113495bSYour Name "disconnect sap tdls in wow") 636*5113495bSYour Name 637*5113495bSYour Name /* 638*5113495bSYour Name * <ini> 639*5113495bSYour Name * action_on_page_fault - Host action on page fault wakeup event 640*5113495bSYour Name * @Min: PMO_PF_HOST_ACTION_NO_OP 641*5113495bSYour Name * @Max: PMO_PF_HOST_ACTION_MAX - 1 642*5113495bSYour Name * @Default: PMO_PF_HOST_ACTION_NO_OP 643*5113495bSYour Name * 644*5113495bSYour Name * This INI is used to determine host behavior on WOW_REASON_PAGE_FAULT wakeup 645*5113495bSYour Name * event. 646*5113495bSYour Name * For ex: If action is to trigger SSR, min_pagefault_wakeups_for_action = 30, 647*5113495bSYour Name * interval_for_pagefault_wakeup_counts = 180000 (3 mins) and 648*5113495bSYour Name * ssr_frequency_on_pagefault = 3600000 (1hr), in this case host will trigger 649*5113495bSYour Name * the SSR if it receives 30 wakeups because of pagefaults in 3 mins, host will 650*5113495bSYour Name * trigger SSR only once in 1 hr. Once the SSR is triggered, host will not 651*5113495bSYour Name * trigger next SSR for next 1 hr even if it receives 30 wakeups from fw because 652*5113495bSYour Name * of pagefaults. This 1 hr time is getting monitored from last SSR. 653*5113495bSYour Name * 654*5113495bSYour Name * </ini> 655*5113495bSYour Name */ 656*5113495bSYour Name #define CFG_HOST_ACTION_ON_PAGEFAULT CFG_INI_UINT( \ 657*5113495bSYour Name "action_on_page_fault", \ 658*5113495bSYour Name PMO_PF_HOST_ACTION_NO_OP, \ 659*5113495bSYour Name PMO_PF_HOST_ACTION_MAX - 1, \ 660*5113495bSYour Name PMO_PF_HOST_ACTION_NO_OP, \ 661*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 662*5113495bSYour Name "Host action on FW pagefault event") 663*5113495bSYour Name 664*5113495bSYour Name /* 665*5113495bSYour Name * <ini> 666*5113495bSYour Name * min_pagefault_wakeups_for_action - Min number of pagefaults wakeups to 667*5113495bSYour Name * initiate host action. 668*5113495bSYour Name * @Min: 2 669*5113495bSYour Name * @Max: 255 670*5113495bSYour Name * @Default: 30 671*5113495bSYour Name * 672*5113495bSYour Name * This ini is used to get the count of max pagefault wakeups to reach before 673*5113495bSYour Name * host takes action. 674*5113495bSYour Name * If the count is reached within the wakeup time interval host will either 675*5113495bSYour Name * trigger SSR (within the limits of SSR trigger freq) or may notify APPS or 676*5113495bSYour Name * ignore if no action is set. 677*5113495bSYour Name * For ex: If SSR on pagefault = 1, min_pagefault_wakeups_for_action = 30, 678*5113495bSYour Name * interval_for_pagefault_wakeup_counts = 180000 (3 mins) and 679*5113495bSYour Name * ssr_frequency_on_pagefault = 3600000 (1hr), in this case host will trigger 680*5113495bSYour Name * the SSR if it receives 30 wakeups because of pagefaults in 3 mins, host will 681*5113495bSYour Name * trigger SSR only once in 1 hr. Once the SSR is triggered, host will not 682*5113495bSYour Name * trigger next SSR for next 1 hr even if it receives 30 wakeups from fw because 683*5113495bSYour Name * of pagefaults. This 1 hr time is getting monitored from last SSR. 684*5113495bSYour Name */ 685*5113495bSYour Name #define CFG_MIN_PAGEFAULT_WAKEUPS_FOR_ACTION CFG_INI_UINT( \ 686*5113495bSYour Name "min_pagefault_wakeups_for_action", \ 687*5113495bSYour Name 2, \ 688*5113495bSYour Name 255, \ 689*5113495bSYour Name 30, \ 690*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 691*5113495bSYour Name "Max number of pagefaults wakeups to trigger SSR") 692*5113495bSYour Name 693*5113495bSYour Name /* 694*5113495bSYour Name * <ini> 695*5113495bSYour Name * interval_for_pagefault_wakeup_counts - Time in ms in which 696*5113495bSYour Name * min_pagefault_wakeups_for_action needs to be monitored 697*5113495bSYour Name * @Min: 60000 (1min) 698*5113495bSYour Name * @Max: 18000000 (5hrs) 699*5113495bSYour Name * @Default: 180000 (3 mins) 700*5113495bSYour Name * 701*5113495bSYour Name * This ini define time in ms in which min_pagefault_wakeups_for_host action 702*5113495bSYour Name * needs to be monitored. If in interval_for_pagefault_wakeup_counts ms, 703*5113495bSYour Name * min_pagefault_wakeups_for_action is reached host will trigger the action. 704*5113495bSYour Name * SSR is triggered only once in ssr_frequency_on_pagefault interval. 705*5113495bSYour Name * For ex: If SSR on pagefault = 1, min_pagefault_wakeups_for_action = 30, 706*5113495bSYour Name * interval_for_pagefault_wakeup_counts = 180000 (3 mins) and 707*5113495bSYour Name * ssr_frequency_on_pagefault = 3600000 (1hr), in this case host will trigger 708*5113495bSYour Name * the SSR if it receives 30 wakeups because of pagefaults in 3 mins, host will 709*5113495bSYour Name * trigger SSR only once in 1 hr. Once the SSR is triggered, host will not 710*5113495bSYour Name * trigger next SSR for next 1 hr even if it receives 30 wakeups from fw because 711*5113495bSYour Name * of pagefaults. This 1 hr time is getting monitored from last SSR. 712*5113495bSYour Name */ 713*5113495bSYour Name #define CFG_INTERVAL_FOR_PAGEFAULT_WAKEUP_COUNT CFG_INI_UINT( \ 714*5113495bSYour Name "interval_for_pagefault_wakeup_counts", \ 715*5113495bSYour Name 60000, \ 716*5113495bSYour Name 18000000, \ 717*5113495bSYour Name 180000, \ 718*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 719*5113495bSYour Name "Interval in which min_pagefault_wakeups_for_ssr needs to be monitored") 720*5113495bSYour Name 721*5113495bSYour Name /* 722*5113495bSYour Name * <ini> 723*5113495bSYour Name * ssr_frequency_on_pagefault - Time in ms in which host needs to trigger the 724*5113495bSYour Name * next SSR 725*5113495bSYour Name * @Min: 60000 726*5113495bSYour Name * @Max: 7200000 727*5113495bSYour Name * @Default: 3600000 (1 hr) 728*5113495bSYour Name * 729*5113495bSYour Name * This ini define time in ms in which next SSR needs to be triggered if 730*5113495bSYour Name * min_pagefault_wakeups_for_action is reached in 731*5113495bSYour Name * interval_for_pagefault_wakeup_counts time. 732*5113495bSYour Name * INIs max_pagefault_wakeups_for_ssr, interval_for_pagefault_wakeup_counts and 733*5113495bSYour Name * ssr_frequency_on_pagefault needs to be considered together. 734*5113495bSYour Name * For ex: If enable_ssr_on_page_fault = 1, min_pagefault_wakeups_for_ssr = 30, 735*5113495bSYour Name * interval_for_pagefault_wakeup_counts = 180000 (3 mins) and 736*5113495bSYour Name * ssr_frequency_on_pagefault = 3600000 (1hr), in this case host will trigger 737*5113495bSYour Name * the SSR if it receives 30 wakeups because of pagefaults in 3 mins, host will 738*5113495bSYour Name * trigger SSR only once in 1 hr. Once the SSR is triggered, host will not 739*5113495bSYour Name * trigger next SSR for next 1 hr even if it receives 30 wakeups from fw because 740*5113495bSYour Name * of pagefaults. This 1 hr time is getting monitored from last SSR. 741*5113495bSYour Name */ 742*5113495bSYour Name #define CFG_SSR_FREQUENCY_ON_PAGEFAULT CFG_INI_UINT( \ 743*5113495bSYour Name "ssr_frequency_on_pagefault", \ 744*5113495bSYour Name 60000, \ 745*5113495bSYour Name 7200000, \ 746*5113495bSYour Name 3600000, \ 747*5113495bSYour Name CFG_VALUE_OR_DEFAULT, \ 748*5113495bSYour Name "Interval in which min_pagefault_wakeups_for_ssr needs to be monitored") 749*5113495bSYour Name 750*5113495bSYour Name /* 751*5113495bSYour Name * <ini> 752*5113495bSYour Name * gEnableIcmpOffload - Enable/disable ICMP offload 753*5113495bSYour Name * @Min: 0 754*5113495bSYour Name * @Max: 1 755*5113495bSYour Name * @Default: 0 756*5113495bSYour Name * 757*5113495bSYour Name * This ini is used to enable/disable firmware's capability of sending ICMP 758*5113495bSYour Name * response to clients. 759*5113495bSYour Name * 760*5113495bSYour Name * Supported Feature: STA 761*5113495bSYour Name * 762*5113495bSYour Name * Usage: External 763*5113495bSYour Name * 764*5113495bSYour Name * </ini> 765*5113495bSYour Name */ 766*5113495bSYour Name #define CFG_ENABLE_ICMP_OFFLOAD CFG_INI_BOOL( \ 767*5113495bSYour Name "gEnableIcmpOffload", \ 768*5113495bSYour Name 0, \ 769*5113495bSYour Name "enable/disable ICMP offload") 770*5113495bSYour Name 771*5113495bSYour Name #define CFG_PMO_COMMON_ALL \ 772*5113495bSYour Name CFG(CFG_ENABLE_SAP_SUSPEND) \ 773*5113495bSYour Name CFG(CFG_PMO_ENABLE_HOST_ARPOFFLOAD) \ 774*5113495bSYour Name CFG(CFG_PMO_HW_FILTER_MODE) \ 775*5113495bSYour Name CFG(CFG_PMO_ENABLE_HOST_SSDP) \ 776*5113495bSYour Name CFG(CFG_PMO_ENABLE_HOST_NSOFFLOAD) \ 777*5113495bSYour Name CFG(CFG_PMO_ENABLE_IGMP_OFFLOAD) \ 778*5113495bSYour Name CFG(CFG_PMO_ENABLE_DYNAMIC_DTIM) \ 779*5113495bSYour Name CFG(CFG_PMO_ENABLE_MODULATED_DTIM) \ 780*5113495bSYour Name CFG(CFG_PMO_ENABLE_FORCED_DTIM) \ 781*5113495bSYour Name CFG(CFG_PMO_MC_ADDR_LIST_ENABLE) \ 782*5113495bSYour Name CFG(CFG_PMO_POWERSAVE_MODE) \ 783*5113495bSYour Name CFG(CFG_PMO_MAX_PS_POLL) \ 784*5113495bSYour Name CFG(CFG_PMO_WOW_ENABLE) \ 785*5113495bSYour Name CFG(CFG_PMO_SUSPEND_MODE) \ 786*5113495bSYour Name CFG(CFG_PMO_ACTIVE_MODE) \ 787*5113495bSYour Name CFG(CFG_PMO_PWR_FAILURE) \ 788*5113495bSYour Name CFG(CFG_PMO_WOW_DATA_INACTIVITY_TIMEOUT) \ 789*5113495bSYour Name CFG(CFG_PMO_WOW_SPEC_WAKE_INTERVAL) \ 790*5113495bSYour Name CFG(CFG_RA_RATE_LIMIT_INTERVAL) \ 791*5113495bSYour Name CFG(CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND) \ 792*5113495bSYour Name CFG(CFG_ENABLE_BUS_SUSPEND_IN_SAP_MODE) \ 793*5113495bSYour Name CFG(CFG_ENABLE_BUS_SUSPEND_IN_GO_MODE)\ 794*5113495bSYour Name CFG(CFG_DISCONNECT_SAP_TDLS_IN_WOW) \ 795*5113495bSYour Name CFG(CFG_IGMP_VERSION_SUPPORT) \ 796*5113495bSYour Name CFG(CFG_ENABLE_ICMP_OFFLOAD) \ 797*5113495bSYour Name CFG(CFG_HOST_ACTION_ON_PAGEFAULT) \ 798*5113495bSYour Name CFG(CFG_MIN_PAGEFAULT_WAKEUPS_FOR_ACTION) \ 799*5113495bSYour Name CFG(CFG_INTERVAL_FOR_PAGEFAULT_WAKEUP_COUNT) \ 800*5113495bSYour Name CFG(CFG_SSR_FREQUENCY_ON_PAGEFAULT) 801*5113495bSYour Name 802*5113495bSYour Name #endif /* WLAN_PMO_COMMON_CFG_H__ */ 803