From 02050863748264eb7176ddea50ef35b0565d76c8 Mon Sep 17 00:00:00 2001 From: Srinivas Girigowda Date: Thu, 15 Dec 2016 20:48:54 -0800 Subject: qcacld-2.0: Enable feature bits in get_supported_features() Enable feature bits WIFI_FEATURE_CONTROL_ROAMING, WIFI_FEATURE_IE_WHITELIST and WIFI_FEATURE_SCAN_RAND. Change-Id: Ia0f136e038e7da040faae04eaa11bcf56bb72443 CRs-Fixed: 1102187 --- CORE/HDD/inc/wlan_hdd_cfg80211.h | 4 ++++ CORE/HDD/inc/wlan_hdd_main.h | 46 ++++++++++++++++++++++++++++++++++++++++ CORE/HDD/src/wlan_hdd_cfg80211.c | 9 ++++++++ 3 files changed, 59 insertions(+) diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h index a3fd0ff0fafc..3e46b3e16ba7 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg80211.h +++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h @@ -1519,6 +1519,10 @@ enum qca_wlan_vendor_features { #define WIFI_FEATURE_MKEEP_ALIVE 0x100000 /* WiFi mkeep_alive */ #define WIFI_FEATURE_CONFIG_NDO 0x200000 /* ND offload configure */ #define WIFI_FEATURE_TX_TRANSMIT_POWER 0x400000 /* Tx transmit power levels */ +#define WIFI_FEATURE_CONTROL_ROAMING 0x800000 /* Enable/Disable roaming */ +#define WIFI_FEATURE_IE_WHITELIST 0x1000000 /* Support Probe IE white listing */ +#define WIFI_FEATURE_SCAN_RAND 0x2000000 /* Support MAC & Probe Sequence Number randomization */ + /* Add more features here */ #define WIFI_TDLS_SUPPORT BIT(0) diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h index 6dfaed94332d..0361d6cfe267 100644 --- a/CORE/HDD/inc/wlan_hdd_main.h +++ b/CORE/HDD/inc/wlan_hdd_main.h @@ -2168,6 +2168,52 @@ static inline void hdd_init_ll_stats_ctx(hdd_context_t *hdd_ctx) } #endif /* WLAN_FEATURE_LINK_LAYER_STATS */ +#ifdef FEATURE_WLAN_LFR +static inline bool hdd_driver_roaming_supported(hdd_context_t *hdd_ctx) +{ + return hdd_ctx->cfg_ini->isFastRoamIniFeatureEnabled; +} +#else +static inline bool hdd_driver_roaming_supported(hdd_context_t *hdd_ctx) +{ + return false; +} +#endif + +#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD +static inline bool hdd_firmware_roaming_supported(hdd_context_t *hdd_ctx) +{ + return hdd_ctx->cfg_ini->isRoamOffloadScanEnabled; +} +#else +static inline bool hdd_firmware_roaming_supported(hdd_context_t *hdd_ctx) +{ + return false; +} +#endif + +static inline bool hdd_roaming_supported(hdd_context_t *hdd_ctx) +{ + bool val; + + val = hdd_driver_roaming_supported(hdd_ctx) || + hdd_firmware_roaming_supported(hdd_ctx); + + return val; +} + +#ifdef CFG80211_SCAN_RANDOM_MAC_ADDR +static inline bool hdd_scan_random_mac_addr_supported(void) +{ + return true; +} +#else +static inline bool hdd_scan_random_mac_addr_supported(void) +{ + return false; +} +#endif + void hdd_get_fw_version(hdd_context_t *hdd_ctx, uint32_t *major_spid, uint32_t *minor_spid, uint32_t *siid, uint32_t *crmid); diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 17762bcc25a5..532ec5a24fe7 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -1537,6 +1537,15 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy, if (hdd_link_layer_stats_supported()) fset |= WIFI_FEATURE_LINK_LAYER_STATS; + if (hdd_roaming_supported(pHddCtx)) + fset |= WIFI_FEATURE_CONTROL_ROAMING; + + if (pHddCtx->cfg_ini->probe_req_ie_whitelist) + fset |= WIFI_FEATURE_IE_WHITELIST; + + if (hdd_scan_random_mac_addr_supported()) + fset |= WIFI_FEATURE_SCAN_RAND; + skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(fset) + NLMSG_HDRLEN); -- cgit v1.2.3