diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 763467dba8..86899dab79 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -926,6 +926,8 @@ static void mlme_init_sap_protection_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_IGNORE_PEER_HT_MODE); sap_protection_params->enable_ap_obss_protection = cfg_get(psoc, CFG_AP_OBSS_PROTECTION_ENABLE); + sap_protection_params->is_ap_prot_enabled = + cfg_get(psoc, CFG_AP_ENABLE_PROTECTION_MODE); sap_protection_params->ap_protection_mode = cfg_get(psoc, CFG_AP_PROTECTION_MODE); } diff --git a/components/mlme/dispatcher/inc/cfg_sap_protection.h b/components/mlme/dispatcher/inc/cfg_sap_protection.h index 2a271db1a6..4454392303 100644 --- a/components/mlme/dispatcher/inc/cfg_sap_protection.h +++ b/components/mlme/dispatcher/inc/cfg_sap_protection.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 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 @@ -58,9 +58,31 @@ */ #define CFG_IGNORE_PEER_HT_MODE CFG_INI_BOOL( \ "gignore_peer_ht_opmode", \ - 0, \ + false, \ "ignore the peer ht mode") +/* + * + * gEnableApProt - Enable/Disable AP protection + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to enable/disable AP protection + * + * Related: None. + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ +#define CFG_AP_ENABLE_PROTECTION_MODE CFG_INI_BOOL( \ + "gEnableApProt", \ + true, \ + "enable protection on sap") + /* * * gApProtection - Set AP protection parameter @@ -113,13 +135,14 @@ */ #define CFG_AP_OBSS_PROTECTION_ENABLE CFG_INI_BOOL( \ "gEnableApOBSSProt", \ - 0, \ + false, \ "Enable/Disable AP OBSS protection") #define CFG_SAP_PROTECTION_ALL \ CFG(CFG_PROTECTION_ENABLED) \ CFG(CFG_FORCE_POLICY_PROTECTION) \ CFG(CFG_IGNORE_PEER_HT_MODE) \ + CFG(CFG_AP_ENABLE_PROTECTION_MODE) \ CFG(CFG_AP_PROTECTION_MODE) \ CFG(CFG_AP_OBSS_PROTECTION_ENABLE) diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h index 91a51789b4..a9173f15cd 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h @@ -762,6 +762,14 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc, struct wma_tgt_cfg *cfg); #endif +/** + * wlan_mlme_is_ap_prot_enabled() - check if sap protection is enabled + * @psoc: pointer to psoc object + * + * Return: is_ap_prot_enabled flag + */ +bool wlan_mlme_is_ap_prot_enabled(struct wlan_objmgr_psoc *psoc); + /** * wlan_mlme_get_ap_protection_mode() - Get ap_protection_mode value * @psoc: pointer to psoc object diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index e3eae5ba95..f9e1bb040c 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -924,6 +924,7 @@ struct wlan_mlme_feature_flag { * @ignore_peer_ht_opmode: Ignore the ht opmode of the peer. Dynamic via INI * @enable_ap_obss_protection: enable/disable AP OBSS protection * @protection_force_policy: Protection force policy. Static via cfg + * @is_ap_prot_enabled: Enable/disable SAP protection * @ap_protection_mode: AP protection bitmap * @protection_enabled: Force enable protection. static via cfg */ @@ -931,6 +932,7 @@ struct wlan_mlme_sap_protection { bool ignore_peer_ht_opmode; bool enable_ap_obss_protection; uint8_t protection_force_policy; + bool is_ap_prot_enabled; uint16_t ap_protection_mode; uint32_t protection_enabled; }; diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index 95283bad3e..20c92471be 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -1648,6 +1648,21 @@ QDF_STATUS ucfg_mlme_get_oce_sap_enabled_info(struct wlan_objmgr_psoc *psoc, return wlan_mlme_get_oce_sap_enabled_info(psoc, value); } +/** + * ucfg_mlme_is_ap_prot_enabled() - Check if sap is enabled + * @psoc: pointer to psoc object + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * sap protection enabled/disabled + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline +bool ucfg_mlme_is_ap_prot_enabled(struct wlan_objmgr_psoc *psoc) +{ + return wlan_mlme_is_ap_prot_enabled(psoc); +} + /** * ucfg_mlme_get_ap_protection_mode() - Get ap protection mode info * @psoc: pointer to psoc object diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c index 8153e9aa2c..2dc0483cba 100644 --- a/components/mlme/dispatcher/src/wlan_mlme_api.c +++ b/components/mlme/dispatcher/src/wlan_mlme_api.c @@ -1793,6 +1793,17 @@ QDF_STATUS wlan_mlme_get_oce_sap_enabled_info(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +bool wlan_mlme_is_ap_prot_enabled(struct wlan_objmgr_psoc *psoc) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) + return false; + + return mlme_obj->cfg.sap_protection_cfg.is_ap_prot_enabled; +} + QDF_STATUS wlan_mlme_get_ap_protection_mode(struct wlan_objmgr_psoc *psoc, uint16_t *value) { diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 510b8dfb61..5b70f5b8f6 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -115,34 +115,6 @@ enum hdd_dot11_mode { eHDD_DOT11_MODE_11ax, }; -/* - * - * gScanAgingTime - Set scan aging time - * @Min: 0 - * @Max: 200 - * @Default: 30 - * - * This ini is used to set scan aging timeout value - * in secs. For example after 30 secs the bss results - * greater than 30secs age will be flushed. - * - * Related: None - * - * Supported Feature: Scan - * - * Usage: External - * - * - */ -#define CFG_SCAN_AGING_PARAM_NAME "gScanAgingTime" -#define CFG_SCAN_AGING_PARAM_MIN (0) -#define CFG_SCAN_AGING_PARAM_MAX (200) -#ifdef QCA_WIFI_NAPIER_EMULATION -#define CFG_SCAN_AGING_PARAM_DEFAULT (90) -#else -#define CFG_SCAN_AGING_PARAM_DEFAULT (30) -#endif - /* * * extscan_adaptive_dwell_mode - Enable adaptive dwell mode @@ -196,28 +168,6 @@ enum hdd_dot11_mode { #define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ax #define CFG_DOT11_MODE_MAX eHDD_DOT11_MODE_11ax -/* - * - * gEnableApProt - Enable/Disable AP protection - * @Min: 0 - * @Max: 1 - * @Default: 1 - * - * This ini is used to enable/disable AP protection - * - * Related: None. - * - * Supported Feature: SAP - * - * Usage: Internal/External - * - * - */ -#define CFG_AP_ENABLE_PROTECTION_MODE_NAME "gEnableApProt" -#define CFG_AP_ENABLE_PROTECTION_MODE_MIN (0) -#define CFG_AP_ENABLE_PROTECTION_MODE_MAX (1) -#define CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT (1) - /* WMM configuration */ /* * @@ -268,11 +218,6 @@ enum hdd_dot11_mode { #define CFG_DHCP_SERVER_IP_DEFAULT "" #endif /* DHCP_SERVER_OFFLOAD */ -#define CFG_ENABLE_MAC_ADDR_SPOOFING "gEnableMacAddrSpoof" -#define CFG_ENABLE_MAC_ADDR_SPOOFING_MIN (0) -#define CFG_ENABLE_MAC_ADDR_SPOOFING_MAX (1) -#define CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT (1) - /* * * gSAP11ACOverride - Override bw to 11ac for SAP in driver even if supplicant @@ -410,7 +355,6 @@ struct hdd_config { /* Config parameters */ bool enable_connected_scan; enum hdd_dot11_mode dot11Mode; - bool apProtEnabled; #ifdef FEATURE_WLAN_DYNAMIC_CVM /* Bitmap for operating voltage corner mode */ @@ -422,13 +366,11 @@ struct hdd_config { bool enable_mtrace; #endif bool prevent_link_down; - uint8_t scanAgingTimeout; bool fEnableSNRMonitoring; bool advertiseConcurrentOperation; #ifdef DHCP_SERVER_OFFLOAD uint8_t dhcpServerIP[IPADDR_STRING_LENGTH]; #endif /* DHCP_SERVER_OFFLOAD */ - bool enable_mac_spoofing; uint8_t sap_11ac_override; uint8_t go_11ac_override; bool apf_enabled; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index de3db00fd6..9b3e11f4e2 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -63,13 +63,6 @@ struct reg_table_entry g_registry_table[] = { CFG_DOT11_MODE_MIN, CFG_DOT11_MODE_MAX), - REG_VARIABLE(CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer, - struct hdd_config, apProtEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT, - CFG_AP_ENABLE_PROTECTION_MODE_MIN, - CFG_AP_ENABLE_PROTECTION_MODE_MAX), - REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer, struct hdd_config, DelayedTriggerFrmInt, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -77,13 +70,6 @@ struct reg_table_entry g_registry_table[] = { CFG_TL_DELAYED_TRGR_FRM_INT_MIN, CFG_TL_DELAYED_TRGR_FRM_INT_MAX), - REG_VARIABLE(CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer, - struct hdd_config, scanAgingTimeout, - VAR_FLAGS_OPTIONAL, - CFG_SCAN_AGING_PARAM_DEFAULT, - CFG_SCAN_AGING_PARAM_MIN, - CFG_SCAN_AGING_PARAM_MAX), - REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer, struct hdd_config, fEnableSNRMonitoring, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, @@ -98,13 +84,6 @@ struct reg_table_entry g_registry_table[] = { (void *)CFG_DHCP_SERVER_IP_DEFAULT), #endif /* DHCP_SERVER_OFFLOAD */ - REG_VARIABLE(CFG_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer, - struct hdd_config, enable_mac_spoofing, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT, - CFG_ENABLE_MAC_ADDR_SPOOFING_MIN, - CFG_ENABLE_MAC_ADDR_SPOOFING_MAX), - REG_VARIABLE(CFG_SAP_11AC_OVERRIDE_NAME, WLAN_PARAM_Integer, struct hdd_config, sap_11ac_override, VAR_FLAGS_OPTIONAL | diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 3bb2da1cae..034a549997 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -3291,11 +3291,11 @@ __wlan_hdd_cfg80211_set_scanning_mac_oui(struct wiphy *wiphy, struct hdd_context *hdd_ctx = wiphy_priv(wiphy); struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_MAX + 1]; QDF_STATUS status; - int ret; - int len; + int ret, len; struct net_device *ndev = wdev->netdev; struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(ndev); mac_handle_t mac_handle; + bool mac_spoofing_enabled; hdd_enter_dev(wdev->netdev); @@ -3308,7 +3308,8 @@ __wlan_hdd_cfg80211_set_scanning_mac_oui(struct wiphy *wiphy, if (ret) return ret; - if (!hdd_ctx->config->enable_mac_spoofing) { + mac_spoofing_enabled = ucfg_scan_is_mac_spoofing_enabled(hdd_ctx->psoc); + if (!mac_spoofing_enabled) { hdd_debug("MAC address spoofing is not enabled"); return -ENOTSUPP; } @@ -12448,16 +12449,8 @@ int wlan_hdd_cfg80211_update_band(struct hdd_context *hdd_ctx, struct wiphy *wip (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)) static void wlan_hdd_cfg80211_scan_randomization_init(struct wiphy *wiphy) { - struct hdd_context *hdd_ctx; - - hdd_ctx = wiphy_priv(wiphy); - - if (false == hdd_ctx->config->enable_mac_spoofing) { - hdd_warn("MAC address spoofing is not enabled"); - } else { - wiphy->features |= NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR; - wiphy->features |= NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR; - } + wiphy->features |= NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR; + wiphy->features |= NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR; } #else static void wlan_hdd_cfg80211_scan_randomization_init(struct wiphy *wiphy) @@ -12658,6 +12651,7 @@ int wlan_hdd_cfg80211_init(struct device *dev, int num_dsrc_ch, len_dsrc_ch, num_srd_ch, len_srd_ch; uint32_t *cipher_suites; uint8_t allow_mcc_go_diff_bi = 0, enable_mcc = 0; + bool mac_spoofing_enabled; hdd_enter(); @@ -12837,7 +12831,8 @@ int wlan_hdd_cfg80211_init(struct device *dev, hdd_add_channel_switch_support(&wiphy->flags); wiphy->max_num_csa_counters = WLAN_HDD_MAX_NUM_CSA_COUNTERS; - if (pCfg->enable_mac_spoofing) + mac_spoofing_enabled = ucfg_scan_is_mac_spoofing_enabled(hdd_ctx->psoc); + if (mac_spoofing_enabled) wlan_hdd_cfg80211_scan_randomization_init(wiphy); wlan_hdd_cfg80211_action_frame_randomization_init(wiphy); diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 5418b8ea31..290e142ab5 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -4906,7 +4906,7 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter, /* pConfig->channel = pCommitConfig->channel; */ /* Protection parameter to enable or disable */ - pConfig->protEnabled = iniConfig->apProtEnabled; + pConfig->protEnabled = ucfg_mlme_is_ap_prot_enabled(hdd_ctx->psoc); status = ucfg_mlme_get_sap_chan_switch_rate_enabled(hdd_ctx->psoc, &val); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index b4c2500b77..95caf59bb0 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -14545,11 +14545,7 @@ static int hdd_update_scan_config(struct hdd_context *hdd_ctx) QDF_STATUS status; uint32_t mcast_mcc_rest_time = 0; - /* convert to ms */ - scan_cfg.scan_cache_aging_time = - cfg->scanAgingTimeout * 1000; scan_cfg.is_snr_monitoring_enabled = cfg->fEnableSNRMonitoring; - scan_cfg.enable_mac_spoofing = cfg->enable_mac_spoofing; status = ucfg_mlme_get_sta_miracast_mcc_rest_time(hdd_ctx->psoc, &mcast_mcc_rest_time); if (!QDF_IS_STATUS_SUCCESS(status)) {