diff --git a/fw_offload/dispatcher/inc/cfg_fwol_generic.h b/fw_offload/dispatcher/inc/cfg_fwol_generic.h index ffc7ac071f..1c667125e9 100644 --- a/fw_offload/dispatcher/inc/cfg_fwol_generic.h +++ b/fw_offload/dispatcher/inc/cfg_fwol_generic.h @@ -393,7 +393,7 @@ #ifdef DHCP_SERVER_OFFLOAD /* - * gEnableDeauthToDisassocMap + * gDHCPServerOffloadEnable * @Min: 0 * @Max: 1 * @Default: 0 @@ -407,7 +407,7 @@ * */ #define CFG_DHCP_SERVER_OFFLOAD_SUPPORT CFG_INI_BOOL( \ - "gEnableDeauthToDisassocMap", \ + "gDHCPServerOffloadEnable", \ 0, \ "DHCP Server offload support") diff --git a/mlme/core/src/wlan_mlme_main.c b/mlme/core/src/wlan_mlme_main.c index 94ad206061..224615e3af 100644 --- a/mlme/core/src/wlan_mlme_main.c +++ b/mlme/core/src/wlan_mlme_main.c @@ -347,6 +347,8 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc, gen->fw_timeout_crash = cfg_get(psoc, CFG_CRASH_FW_TIMEOUT); gen->debug_packet_log = cfg_get(psoc, CFG_ENABLE_DEBUG_PACKET_LOG); + gen->enable_deauth_to_disassoc_map = + cfg_get(psoc, CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP); mlme_init_pmf_cfg(psoc, gen); mlme_init_lpass_support_cfg(psoc, gen); @@ -1150,6 +1152,8 @@ static void mlme_init_sap_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_SAP_FORCE_11N_FOR_11AC); sap_cfg->go_force_11n_for_11ac = cfg_get(psoc, CFG_GO_FORCE_11N_FOR_11AC); + sap_cfg->ap_random_bssid_enable = + cfg_get(psoc, CFG_AP_ENABLE_RANDOM_BSSID); } @@ -1251,6 +1255,8 @@ static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc, sta->current_rssi = (uint32_t)cfg_default(CFG_CURRENT_RSSI); sta->allow_tpc_from_ap = cfg_get(psoc, CFG_TX_POWER_CTRL); + sta->sta_keepalive_method = + cfg_get(psoc, CFG_STA_KEEPALIVE_METHOD); } #ifdef WLAN_FEATURE_ROAM_OFFLOAD diff --git a/mlme/dispatcher/inc/cfg_mlme_generic.h b/mlme/dispatcher/inc/cfg_mlme_generic.h index 0d60a3ffbe..1d5e4d067e 100644 --- a/mlme/dispatcher/inc/cfg_mlme_generic.h +++ b/mlme/dispatcher/inc/cfg_mlme_generic.h @@ -503,6 +503,28 @@ CFG_VALUE_OR_DEFAULT, \ "ITO Repeat Count") +/* + * + * gEnableDeauthToDisassocMap - Enables deauth to disassoc map + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to set default disassoc map + * + * Related: None + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#define CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP CFG_INI_BOOL( \ + "gEnableDeauthToDisassocMap", \ + 0, \ + "Enables deauth to disassoc map") + /* * * gEnableDebugLog - Enable/Disable the Connection related logs @@ -548,6 +570,7 @@ CFG(CFG_ENABLE_CRASH_INJECT) \ CFG(CFG_ENABLE_LPASS_SUPPORT) \ CFG(CFG_ENABLE_SELF_RECOVERY) \ + CFG(CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP) \ CFG(CFG_SAP_DOT11MC) \ CFG(CFG_ENABLE_FATAL_EVENT_TRIGGER) \ CFG(CFG_SUB_20_CHANNEL_WIDTH) \ diff --git a/mlme/dispatcher/inc/cfg_mlme_sap.h b/mlme/dispatcher/inc/cfg_mlme_sap.h index f4a098acd8..5fed6ceb8f 100644 --- a/mlme/dispatcher/inc/cfg_mlme_sap.h +++ b/mlme/dispatcher/inc/cfg_mlme_sap.h @@ -578,7 +578,31 @@ "GO force 11n for 11ac") +/* + * + * gEnableApRandomBssid - Create ramdom BSSID + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to create a random BSSID in SoftAP mode to meet + * the Android requirement. + * + * Related: None. + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ +#define CFG_AP_ENABLE_RANDOM_BSSID CFG_INI_BOOL( \ + "gEnableApRandomBssid", \ + 0, \ + "Create ramdom BSSID") + #define CFG_SAP_ALL \ + CFG(CFG_AP_ENABLE_RANDOM_BSSID) \ CFG(CFG_SSID) \ CFG(CFG_BEACON_INTERVAL) \ CFG(CFG_DTIM_PERIOD) \ diff --git a/mlme/dispatcher/inc/cfg_mlme_sta.h b/mlme/dispatcher/inc/cfg_mlme_sta.h index 5bb9eb3531..32f1e9cb22 100644 --- a/mlme/dispatcher/inc/cfg_mlme_sta.h +++ b/mlme/dispatcher/inc/cfg_mlme_sta.h @@ -397,6 +397,33 @@ 1, \ "Support for AP power constraint") +/* + * + * gStaKeepAliveMethod - Which keepalive method to use + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini determines which keepalive method to use for station interfaces + * 1) Use null data packets + * 2) Use gratuitous ARP packets + * + * Related: gStaKeepAlivePeriod, gApKeepAlivePeriod, gGoKeepAlivePeriod + * + * Supported Feature: STA, Keepalive + * + * Usage: External + * + * + */ +#define CFG_STA_KEEPALIVE_METHOD CFG_INI_INT( \ + "gStaKeepAliveMethod", \ + MLME_STA_KEEPALIVE_NULL_DATA, \ + MLME_STA_KEEPALIVE_COUNT - 1, \ + MLME_STA_KEEPALIVE_GRAT_ARP, \ + CFG_VALUE_OR_DEFAULT, \ + "Which keepalive method to use") + #define CFG_STA_ALL \ CFG(CFG_INFRA_STA_KEEP_ALIVE_PERIOD) \ CFG(CFG_TGT_GTX_USR_CFG) \ @@ -411,6 +438,7 @@ CFG(CFG_FILS_MAX_CHAN_GUARD_TIME) \ CFG(CFG_FORCE_RSNE_OVERRIDE) \ CFG(CFG_SINGLE_TID_RC) \ + CFG(CFG_STA_KEEPALIVE_METHOD) \ CFG(CFG_WT_CNF_TIMEOUT) \ CFG(CFG_CURRENT_RSSI) \ CFG(CFG_TX_POWER_CTRL) diff --git a/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/mlme/dispatcher/inc/wlan_mlme_public_struct.h index d171c955f0..8436f1857f 100644 --- a/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -568,6 +568,7 @@ struct wlan_mlme_cfg_sap { uint8_t sap_pref_chan_location; bool sap_force_11n_for_11ac; bool go_force_11n_for_11ac; + bool ap_random_bssid_enable; }; /** @@ -935,6 +936,7 @@ struct wlan_mlme_generic { uint8_t debug_packet_log; bool enabled_11h; bool enabled_11d; + bool enable_deauth_to_disassoc_map; }; /* @@ -1046,6 +1048,19 @@ struct wlan_mlme_nss_chains { bool disable_tx_mrc[NSS_CHAINS_BAND_MAX]; }; +/** + * enum station_keepalive_method - available keepalive methods for stations + * @MLME_STA_KEEPALIVE_NULL_DATA: null data packet + * @MLME_STA_KEEPALIVE_GRAT_ARP: gratuitous ARP packet + * @MLME_STA_KEEPALIVE_COUNT: number of method options available + */ +enum station_keepalive_method { + MLME_STA_KEEPALIVE_NULL_DATA, + MLME_STA_KEEPALIVE_GRAT_ARP, + /* keep at the end */ + MLME_STA_KEEPALIVE_COUNT +}; + /** * struct wlan_mlme_sta_cfg - MLME STA configuration items * @sta_keep_alive_period: Sends NULL frame to AP period @@ -1082,6 +1097,7 @@ struct wlan_mlme_sta_cfg { bool force_rsne_override; bool single_tid; bool allow_tpc_from_ap; + enum station_keepalive_method sta_keepalive_method; }; /** diff --git a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index ab08b1abaa..7e0f21a03d 100644 --- a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -2473,6 +2473,17 @@ QDF_STATUS ucfg_mlme_get_current_mcs_set(struct wlan_objmgr_psoc *psoc, uint8_t *buf, qdf_size_t *len); +/** + * ucfg_mlme_get_sta_keepalive_method() - Get sta_keepalive_method + * @psoc: pointer to psoc object + * @val: Value to pass to the caller + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_get_sta_keepalive_method(struct wlan_objmgr_psoc *psoc, + enum station_keepalive_method *val); + /** * ucfg_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction * for VI @@ -3068,4 +3079,30 @@ ucfg_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc, bool value) return wlan_mlme_set_sap_uapsd_flag(psoc, value); } +/** + * ucfg_mlme_get_enable_deauth_to_disassoc_map() - Enable deauth_to_disassoc_map + * @psoc: pointer to psoc object + * @value: Value that needs to be set from the caller + * + * UCFG API to be used by HDD/OSIF callers + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_get_enable_deauth_to_disassoc_map(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * ucfg_mlme_get_ap_random_bssid_enable() - Enable random bssid + * @psoc: pointer to psoc object + * @value: Value that needs to be set from the caller + * + * UCFG API to be used by HDD/OSIF callers + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_get_ap_random_bssid_enable(struct wlan_objmgr_psoc *psoc, + bool *value); + #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/mlme/dispatcher/src/wlan_mlme_ucfg_api.c b/mlme/dispatcher/src/wlan_mlme_ucfg_api.c index 533e045dca..835d38321d 100644 --- a/mlme/dispatcher/src/wlan_mlme_ucfg_api.c +++ b/mlme/dispatcher/src/wlan_mlme_ucfg_api.c @@ -1231,3 +1231,52 @@ ucfg_mlme_set_ps_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } + +QDF_STATUS +ucfg_mlme_get_sta_keepalive_method(struct wlan_objmgr_psoc *psoc, + enum station_keepalive_method *val) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + mlme_err("mlme obj null"); + return QDF_STATUS_E_INVAL; + } + + *val = mlme_obj->cfg.sta.sta_keepalive_method; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_mlme_get_enable_deauth_to_disassoc_map(struct wlan_objmgr_psoc *psoc, + bool *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + mlme_err("mlme obj null"); + return QDF_STATUS_E_INVAL; + } + + *value = mlme_obj->cfg.gen.enable_deauth_to_disassoc_map; + return QDF_STATUS_SUCCESS; +} + + +QDF_STATUS +ucfg_mlme_get_ap_random_bssid_enable(struct wlan_objmgr_psoc *psoc, + bool *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + mlme_err("mlme obj null"); + return QDF_STATUS_E_INVAL; + } + + *value = mlme_obj->cfg.sap_cfg.ap_random_bssid_enable; + return QDF_STATUS_SUCCESS; +} diff --git a/pmo/core/src/wlan_pmo_main.c b/pmo/core/src/wlan_pmo_main.c index b75bdb49a4..8b1b837c0d 100644 --- a/pmo/core/src/wlan_pmo_main.c +++ b/pmo/core/src/wlan_pmo_main.c @@ -175,6 +175,7 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc, wlan_pmo_runtime_pm_init_cfg(psoc, psoc_cfg); psoc_cfg->auto_power_save_fail_mode = cfg_get(psoc, CFG_PMO_PWR_FAILURE); + psoc_cfg->enable_sap_suspend = cfg_get(psoc, CFG_ENABLE_SAP_SUSPEND); } QDF_STATUS pmo_psoc_open(struct wlan_objmgr_psoc *psoc) diff --git a/pmo/dispatcher/inc/wlan_pmo_common_cfg.h b/pmo/dispatcher/inc/wlan_pmo_common_cfg.h index 34a28e86cc..88eef48354 100644 --- a/pmo/dispatcher/inc/wlan_pmo_common_cfg.h +++ b/pmo/dispatcher/inc/wlan_pmo_common_cfg.h @@ -346,7 +346,29 @@ CFG_VALUE_OR_DEFAULT, \ "Auto detect power save failure mode") +/* + * + * gEnableSapSuspend - Enable/disable SAP Suspend + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * + * Related: None + * + * Supported Feature: SAP + * + * Usage: External + * + * + */ +#define CFG_ENABLE_SAP_SUSPEND CFG_INI_BOOL( \ + "gEnableSapSuspend", \ + 1, \ + "Enable/disable SAP Suspend") + #define CFG_PMO_COMMON_ALL \ + CFG(CFG_ENABLE_SAP_SUSPEND) \ CFG(CFG_PMO_ENABLE_HOST_ARPOFFLOAD) \ CFG(CFG_PMO_HW_FILTER_MODE) \ CFG(CFG_PMO_ENABLE_HOST_SSDP) \ diff --git a/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h b/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h index 7b1b6fa3bb..0d455491ad 100644 --- a/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h +++ b/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h @@ -392,6 +392,8 @@ struct pmo_psoc_cfg { #ifdef WLAN_FEATURE_PACKET_FILTERING uint8_t packet_filters_bitmap; #endif + bool enable_sap_suspend; + }; /** diff --git a/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h b/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h index b759d3a6c6..6b8422fc6c 100644 --- a/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h @@ -1780,4 +1780,14 @@ ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc *psoc) return 0; } #endif /* FEATURE_RUNTIME_PM */ + +/** + * ucfg_pmo_get_enable_sap_suspend - Return enable_sap_suspend value to caller + * @psoc: Pointer to psoc object + * + * Return: The value of enable_sap_suspend as stored in CFG + */ +bool +ucfg_pmo_get_enable_sap_suspend(struct wlan_objmgr_psoc *psoc); + #endif /* end of _WLAN_PMO_UCFG_API_H_ */ diff --git a/pmo/dispatcher/src/wlan_pmo_ucfg_api.c b/pmo/dispatcher/src/wlan_pmo_ucfg_api.c index b9d4a6c671..775212ff74 100644 --- a/pmo/dispatcher/src/wlan_pmo_ucfg_api.c +++ b/pmo/dispatcher/src/wlan_pmo_ucfg_api.c @@ -782,3 +782,11 @@ ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc *psoc) return pmo_psoc_ctx->psoc_cfg.extwow_app2_tcp_rx_timeout; } #endif + +bool +ucfg_pmo_get_enable_sap_suspend(struct wlan_objmgr_psoc *psoc) +{ + struct pmo_psoc_priv_obj *pmo_psoc_ctx = pmo_psoc_get_priv(psoc); + + return pmo_psoc_ctx->psoc_cfg.enable_sap_suspend; +}