qcacld: CL 996776 fw common files
This change is for wmi header files for extscan implementation.
CRs-Fixed: 684385
Change-Id: I4727f079c70790e7eac5b10072c113f5cd0a8ec7
diff --git a/CORE/SERVICES/COMMON/wlan_module_ids.h b/CORE/SERVICES/COMMON/wlan_module_ids.h
index 7d8ca1d..abec4d2 100644
--- a/CORE/SERVICES/COMMON/wlan_module_ids.h
+++ b/CORE/SERVICES/COMMON/wlan_module_ids.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011, 2014 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -82,6 +82,7 @@
WLAN_MODULE_IBSS_PWRSAVE,
WLAN_MODULE_HIF_UART,
WLAN_MODULE_LPI,
+ WLAN_MODULE_EXTSCAN,
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
} WLAN_MODULE_ID;
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h
index fd6e9b2..4f4ee13 100644
--- a/CORE/SERVICES/COMMON/wmi_services.h
+++ b/CORE/SERVICES/COMMON/wmi_services.h
@@ -106,6 +106,7 @@
WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, /* TDLS UAPSD Sleep STA support */
WMI_SERVICE_IBSS_PWRSAVE, /* IBSS power save support */
WMI_SERVICE_LPASS, /*Service to support LPASS*/
+ WMI_SERVICE_EXTSCAN, /* Extended Scans */
WMI_MAX_SERVICE=128 /* max service */
} WMI_SERVICE;
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index 6f6bef6..07bad20 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -462,6 +462,30 @@
WMITLV_TAG_STRUC_wmi_lpi_stop_scan_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_lpi_result_event_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_state_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_bucket_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_bucket_channel_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_start_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_stop_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_configure_wlan_change_monitor_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_wlan_change_bssid_param_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_configure_hotlist_monitor_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_get_cached_results_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_get_wlan_change_results_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_set_capabilities_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_get_capabilities_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_operation_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_start_stop_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_table_usage_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_wlan_descriptor_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_rssi_info_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_cached_results_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_wlan_change_results_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_wlan_change_result_bssid_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_hotlist_match_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_capabilities_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_cache_capabilities_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_wlan_change_monitor_capabilities_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_extscan_hotlist_monitor_capabilities_event_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -631,7 +655,16 @@
OP(WMI_CLEAR_LINK_STATS_CMDID) \
OP(WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID) \
OP(WMI_LPI_START_SCAN_CMDID) \
- OP(WMI_LPI_STOP_SCAN_CMDID)
+ OP(WMI_LPI_STOP_SCAN_CMDID) \
+ OP(WMI_EXTSCAN_START_CMDID) \
+ OP(WMI_EXTSCAN_STOP_CMDID) \
+ OP(WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID) \
+ OP(WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID) \
+ OP(WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID) \
+ OP(WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID) \
+ OP(WMI_EXTSCAN_SET_CAPABILITIES_CMDID) \
+ OP(WMI_EXTSCAN_GET_CAPABILITIES_CMDID)
+
/*
* IMPORTANT: Please add _ALL_ WMI Events Here.
@@ -706,7 +739,14 @@
OP(WMI_PEER_LINK_STATS_EVENTID) \
OP(WMI_RADIO_LINK_STATS_EVENTID) \
OP(WMI_LPI_RESULT_EVENTID) \
- OP(WMI_PEER_STATE_EVENTID)
+ OP(WMI_PEER_STATE_EVENTID) \
+ OP(WMI_EXTSCAN_START_STOP_EVENTID) \
+ OP(WMI_EXTSCAN_OPERATION_EVENTID) \
+ OP(WMI_EXTSCAN_TABLE_USAGE_EVENTID) \
+ OP(WMI_EXTSCAN_CACHED_RESULTS_EVENTID) \
+ OP(WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID) \
+ OP(WMI_EXTSCAN_HOTLIST_MATCH_EVENTID) \
+ OP(WMI_EXTSCAN_CAPABILITIES_EVENTID)
/* TLV definitions of WMI commands */
@@ -870,6 +910,64 @@
WMITLV_CREATE_PARAM_STRUC(WMI_START_SCAN_CMDID);
+/* Start ExtScan Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_START_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_start_cmd_fixed_param, wmi_extscan_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_ssid, ssid_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, bssid_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, ie_data, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_bucket, bucket_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_bucket_channel, channel_list, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_START_CMDID);
+
+/* Stop ExtScan Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_STOP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_stop_cmd_fixed_param, wmi_extscan_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_STOP_CMDID);
+
+/* Start ExtScan BSSID Monitoring Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_configure_wlan_change_monitor_cmd_fixed_param, wmi_extscan_configure_wlan_change_monitor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_change_bssid_param, wlan_change_descriptor_list, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID);
+
+/* Start Hot List Monitoring Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_configure_hotlist_monitor_cmd_fixed_param, wmi_extscan_configure_hotlist_monitor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_hotlist_entry, hotlist, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID);
+
+/* Get ExtScan BSSID/RSSI list Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_get_cached_results_cmd_fixed_param, wmi_extscan_get_cached_results_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID);
+
+/* Get ExtScan BSSID monitor results Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_get_wlan_change_results_cmd_fixed_param, wmi_extscan_get_wlan_change_results_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID);
+
+/* Set ExtScan Capabilities Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_SET_CAPABILITIES_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_set_capabilities_cmd_fixed_param, wmi_extscan_set_capabilities_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_cache_capabilities, extscan_cache_capabilities, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_change_monitor_capabilities, wlan_change_capabilities, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_hotlist_monitor_capabilities, hotlist_capabilities, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_SET_CAPABILITIES_CMDID);
+
+/* Get ExtScan Capabilities Cmd */
+#define WMITLV_TABLE_WMI_EXTSCAN_GET_CAPABILITIES_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_get_capabilities_cmd_fixed_param, wmi_extscan_get_capabilities_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_GET_CAPABILITIES_CMDID);
+
/* P2P set vendor ID data Cmd */
#define WMITLV_TABLE_WMI_P2P_SET_VENDOR_IE_DATA_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_set_vendor_ie_data_cmd_fixed_param, wmi_p2p_set_vendor_ie_data_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -1736,6 +1834,58 @@
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_scan_event_fixed_param, wmi_scan_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_SCAN_EVENTID);
+/* ExtScan Start/Stop Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_START_STOP_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_start_stop_event_fixed_param, wmi_extscan_start_stop_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_START_STOP_EVENTID);
+
+/* ExtScan Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_OPERATION_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_operation_event_fixed_param, wmi_extscan_operation_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, bucket_id, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_OPERATION_EVENTID);
+
+/* ExtScan Table Usage Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_TABLE_USAGE_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_table_usage_event_fixed_param, wmi_extscan_table_usage_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_TABLE_USAGE_EVENTID);
+
+/* ExtScan Result Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_CACHED_RESULTS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_cached_results_event_fixed_param, wmi_extscan_cached_results_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_descriptor, bssid_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_rssi_info, rssi_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, ie_list, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_CACHED_RESULTS_EVENTID);
+
+/* ExtScan Monitor RSSI List Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_wlan_change_results_event_fixed_param, wmi_extscan_wlan_change_results_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_change_result_bssid, bssid_signal_descriptor_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, rssi_list, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID);
+
+/* ExtScan Hot List Match Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_HOTLIST_MATCH_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_hotlist_match_event_fixed_param, wmi_extscan_hotlist_match_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_descriptor, hotlist_match, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_HOTLIST_MATCH_EVENTID);
+
+/* ExtScan Hot List Match Event */
+#define WMITLV_TABLE_WMI_EXTSCAN_CAPABILITIES_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_extscan_capabilities_event_fixed_param, wmi_extscan_capabilities_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_cache_capabilities, extscan_cache_capabilities, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_wlan_change_monitor_capabilities, wlan_change_capabilities, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_extscan_hotlist_monitor_capabilities, hotlist_capabilities, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_EXTSCAN_CAPABILITIES_EVENTID);
+
/* Update_whal_mib_stats Event */
#define WMITLV_TABLE_WMI_UPDATE_WHAL_MIB_STATS_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_update_whal_mib_stats_event_fixed_param, wmi_update_whal_mib_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 6ae0030..72de951 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -174,6 +174,7 @@
WMI_GRP_COEX,
WMI_GRP_OBSS_OFL,
WMI_GRP_LPI,
+ WMI_GRP_EXTSCAN,
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -646,6 +647,15 @@
/**LPI scan stop command*/
WMI_LPI_STOP_SCAN_CMDID,
+ /** ExtScan commands */
+ WMI_EXTSCAN_START_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_EXTSCAN),
+ WMI_EXTSCAN_STOP_CMDID,
+ WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID,
+ WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID,
+ WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID,
+ WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID,
+ WMI_EXTSCAN_SET_CAPABILITIES_CMDID,
+ WMI_EXTSCAN_GET_CAPABILITIES_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -873,6 +883,14 @@
/* LPI Event */
WMI_LPI_RESULT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_LPI),
+ /* ExtScan events */
+ WMI_EXTSCAN_START_STOP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_EXTSCAN),
+ WMI_EXTSCAN_OPERATION_EVENTID,
+ WMI_EXTSCAN_TABLE_USAGE_EVENTID,
+ WMI_EXTSCAN_CACHED_RESULTS_EVENTID,
+ WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID,
+ WMI_EXTSCAN_HOTLIST_MATCH_EVENTID,
+ WMI_EXTSCAN_CAPABILITIES_EVENTID,
} WMI_EVT_ID;
/* defines for OEM message sub-types */
@@ -7471,6 +7489,638 @@
A_UINT32 tlv_header;
} wmi_chan_avoid_update_cmd_param;
+/* ExtScan operation mode */
+typedef enum {
+ WMI_EXTSCAN_MODE_NONE = 0x0000,
+ WMI_EXTSCAN_MODE_START = 0x0001, // ExtScan/TableMonitoring operation started
+ WMI_EXTSCAN_MODE_STOP = 0x0002, // ExtScan/TableMonitoring operation stopped
+ WMI_EXTSCAN_MODE_IGNORED = 0x0003, // ExtScan command ignored due to error
+} wmi_extscan_operation_mode;
+
+/* Channel Mask */
+typedef enum {
+ WMI_CHANNEL_BAND_UNSPECIFIED = 0x0000,
+ WMI_CHANNEL_BAND_24 = 0x0001, // 2.4 channel
+ WMI_CHANNEL_BAND_5_NON_DFS = 0x0002, // 5G Channels (No DFS channels)
+ WMI_CHANNEL_BAND_DFS = 0x0004, // DFS channels
+} wmi_channel_band_mask;
+
+typedef enum {
+ WMI_EXTSCAN_CYCLE_STARTED_EVENT = 0x0001,
+ WMI_EXTSCAN_CYCLE_COMPLETED_EVENT = 0x0002,
+ WMI_EXTSCAN_BUCKET_STARTED_EVENT = 0x0004,
+ WMI_EXTSCAN_BUCKET_COMPLETED_EVENT = 0x0008,
+ WMI_EXTSCAN_BUCKET_FAILED_EVENT = 0x0010,
+ WMI_EXTSCAN_BUCKET_OVERRUN_EVENT = 0x0020,
+
+ WMI_EXTSCAN_EVENT_MAX = 0x8000
+} wmi_extscan_event_type;
+
+#define WMI_EXTSCAN_CYCLE_EVENTS_MASK (WMI_EXTSCAN_CYCLE_STARTED_EVENT | \
+ WMI_EXTSCAN_CYCLE_COMPLETED_EVENT)
+
+#define WMI_EXTSCAN_BUCKET_EVENTS_MASK (WMI_EXTSCAN_BUCKET_STARTED_EVENT | \
+ WMI_EXTSCAN_BUCKET_COMPLETED_EVENT | \
+ WMI_EXTSCAN_BUCKET_FAILED_EVENT | \
+ WMI_EXTSCAN_BUCKET_OVERRUN_EVENT)
+
+typedef enum {
+ WMI_EXTSCAN_NO_FORWARDING = 0x0000,
+ WMI_EXTSCAN_FORWARD_FRAME_TO_HOST = 0x0001
+} wmi_extscan_forwarding_flags;
+
+typedef enum {
+ WMI_EXTSCAN_USE_MSD = 0x0001, // Use Motion Sensor Detection */
+} wmi_extscan_configuration_flags;
+
+typedef enum {
+ WMI_EXTSCAN_STATUS_OK = 0,
+ WMI_EXTSCAN_STATUS_ERROR = 0x80000000,
+ WMI_EXTSCAN_STATUS_INVALID_PARAMETERS,
+ WMI_EXTSCAN_STATUS_INTERNAL_ERROR
+} wmi_extscan_start_stop_status;
+
+typedef struct {
+ /** Request ID - to identify command. Cannot be 0 */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting ExtScan */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+} wmi_extscan_command_id;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /** channel number */
+ A_UINT32 channel;
+
+ /** dwell time in msec - use defaults if 0 */
+ A_UINT32 min_dwell_time;
+ A_UINT32 max_dwell_time;
+ /** passive/active channel and other flags */
+ A_UINT32 control_flags; // 0 => active, 1 => passive scan; ignored for DFS
+} wmi_extscan_bucket_channel;
+
+/* Scan Bucket specification */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /** Bucket ID - 0-based */
+ A_UINT32 bucket_id;
+ /** ExtScan events subscription - events to be reported to client (see wmi_extscan_event_type) */
+ A_UINT32 notify_extscan_events;
+ /** Options to forward scan results - see wmi_extscan_forwarding_flags */
+ A_UINT32 forwarding_flags;
+ /** ExtScan configuration flags - wmi_extscan_configuration_flags */
+ A_UINT32 configuration_flags;
+ /** multiplier to be applied to the periodic scan's base period */
+ A_UINT32 base_period_multiplier;
+ /** dwell time in msec on active channels - use defaults if 0 */
+ A_UINT32 min_dwell_time_active;
+ A_UINT32 max_dwell_time_active;
+ /** dwell time in msec on passive channels - use defaults if 0 */
+ A_UINT32 min_dwell_time_passive;
+ A_UINT32 max_dwell_time_passive;
+ /** see wmi_channel_band_mask; when equal to WMI_CHANNEL_UNSPECIFIED, use channel list */
+ A_UINT32 channel_band;
+ /** number of channels (if channel_band is WMI_CHANNEL_UNSPECIFIED) */
+ A_UINT32 num_channels;
+/** Followed by the variable length TLV chan_list:
+ * wmi_extscan_bucket_channel chan_list[] */
+} wmi_extscan_bucket;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_start_cmd_fixed_param */
+ /** Request ID - to identify command. Cannot be 0 */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting ExtScan */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+ /** Base period (milliseconds) used by scan buckets to define periodicity of the scans */
+ A_UINT32 base_period;
+ /** Maximum number of iterations to run - one iteration is the scanning of the least frequent bucket */
+ A_UINT32 max_iterations;
+ /** Options to forward scan results - see wmi_extscan_forwarding_flags */
+ A_UINT32 forwarding_flags;
+ /** ExtScan configuration flags - wmi_extscan_configuration_flags */
+ A_UINT32 configuration_flags;
+ /** ExtScan events subscription - bitmask indicating which events should be send to client (see wmi_extscan_event_type) */
+ A_UINT32 notify_extscan_events;
+ /** Scan Priority, input to scan scheduler */
+ A_UINT32 scan_priority;
+ /** Maximum number of BSSIDs to cache on each scan cycle */
+ A_UINT32 max_bssids_per_scan_cycle;
+ /** Minimum RSSI value to report */
+ A_UINT32 min_rssi;
+ /** Maximum table usage in percentage */
+ A_UINT32 max_table_usage;
+ /** default dwell time in msec on active channels */
+ A_UINT32 min_dwell_time_active;
+ A_UINT32 max_dwell_time_active;
+ /** default dwell time in msec on passive channels */
+ A_UINT32 min_dwell_time_passive;
+ A_UINT32 max_dwell_time_passive;
+ /** min time in msec on the BSS channel,only valid if atleast one VDEV is active*/
+ A_UINT32 min_rest_time;
+ /** max rest time in msec on the BSS channel,only valid if at least one VDEV is active*/
+ /** the scanner will rest on the bss channel at least min_rest_time. after min_rest_time the scanner
+ * will start checking for tx/rx activity on all VDEVs. if there is no activity the scanner will
+ * switch to off channel. if there is activity the scanner will let the radio on the bss channel
+ * until max_rest_time expires.at max_rest_time scanner will switch to off channel
+ * irrespective of activity. activity is determined by the idle_time parameter.
+ */
+ A_UINT32 max_rest_time;
+ /** time before sending next set of probe requests.
+ * The scanner keeps repeating probe requests transmission with period specified by repeat_probe_time.
+ * The number of probe requests specified depends on the ssid_list and bssid_list
+ */
+ /** Max number of probes to be sent */
+ A_UINT32 n_probes;
+ /** time in msec between 2 sets of probe requests. */
+ A_UINT32 repeat_probe_time;
+ /** time in msec between 2 consequetive probe requests with in a set. */
+ A_UINT32 probe_spacing_time;
+ /** data inactivity time in msec on bss channel that will be used by scanner for measuring the inactivity */
+ A_UINT32 idle_time;
+ /** maximum time in msec allowed for scan */
+ A_UINT32 max_scan_time;
+ /** delay in msec before sending first probe request after switching to a channel */
+ A_UINT32 probe_delay;
+ /** Scan control flags */
+ A_UINT32 scan_ctrl_flags;
+ /** Burst duration time in msec*/
+ A_UINT32 burst_duration;
+
+ /** number of bssids in the TLV bssid_list[] */
+ A_UINT32 num_bssid;
+ /** number of ssid in the TLV ssid_list[] */
+ A_UINT32 num_ssids;
+ /** number of bytes in TLV ie_data[] */
+ A_UINT32 ie_len;
+ /** number of buckets in the TLV bucket_list[] */
+ A_UINT32 num_buckets;
+ /** number of channels in channel_list[] determined by the
+ sum of wmi_extscan_bucket.num_channels in array */
+
+/**
+ * TLV (tag length value ) parameters follow the extscan_cmd
+ * structure. The TLV's are:
+ * wmi_ssid ssid_list[];
+ * wmi_mac_addr bssid_list[];
+ * A_UINT8 ie_data[];
+ * wmi_extscan_bucket bucket_list[];
+ * wmi_extscan_bucket_channel channel_list[];
+ */
+} wmi_extscan_start_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_stop_cmd_fixed_param */
+ /** Request ID - to match running command. 0 matches any request */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting stop */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+} wmi_extscan_stop_cmd_fixed_param;
+
+enum wmi_extscan_get_cached_results_flags {
+ WMI_EXTSCAN_GET_CACHED_RESULTS_FLAG_NONE = 0x0000,
+ WMI_EXTSCAN_GET_CACHED_RESULTS_FLAG_FLUSH_TABLE = 0x0001
+};
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_get_cached_results_cmd_fixed_param */
+ /** request ID - used to correlate command with events */
+ A_UINT32 request_id;
+ /** Requestor ID - client that requested results */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+ /** maximum number of results to be returned */
+ A_UINT32 max_results;
+ /** flush BSSID list - wmi_extscan_get_cached_results_flags */
+ A_UINT32 control_flags; // enum wmi_extscan_get_cached_results_flags
+} wmi_extscan_get_cached_results_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_get_wlan_change_results_cmd_fixed_param */
+ /** request ID - used to correlate command with events */
+ A_UINT32 request_id;
+ /** Requestor ID - client that requested results */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+} wmi_extscan_get_wlan_change_results_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /**bssid */
+ wmi_mac_addr bssid;
+ /**channel number */
+ A_UINT32 channel;
+ /**upper RSSI limit */
+ A_UINT32 upper_rssi_limit;
+ /**lower RSSI limit */
+ A_UINT32 lower_rssi_limit;
+} wmi_extscan_wlan_change_bssid_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_configure_wlan_change_monitor_cmd_fixed_param */
+ /** Request ID - to identify command. Cannot be 0 */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting wlan change monitoring */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /** operation mode: start/stop */
+ A_UINT32 mode; // wmi_extscan_operation_mode
+ /** number of rssi samples to store */
+ A_UINT32 max_rssi_samples;
+ /** number of samples to use to calculate RSSI average */
+ A_UINT32 rssi_averaging_samples;
+ /** number of scans to confirm loss of contact with RSSI */
+ A_UINT32 lost_ap_scan_count;
+ /** number of out-of-range BSSIDs necessary to send event */
+ A_UINT32 max_out_of_range_count;
+ /** total number of bssid signal descriptors (in all pages) */
+ A_UINT32 total_entries;
+ /** index of the first bssid entry found in the TLV wlan_change_descriptor_list*/
+ A_UINT32 first_entry_index;
+ /** number of bssid signal descriptors in this page */
+ A_UINT32 num_entries_in_page;
+ /* Following this structure is the TLV:
+ * wmi_extscan_wlan_change_bssid_param wlan_change_descriptor_list[]; // number of elements given by field num_page_entries.
+ */
+} wmi_extscan_configure_wlan_change_monitor_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /**bssid */
+ wmi_mac_addr bssid;
+ /**RSSI threshold for reporting */
+ A_UINT32 min_rssi;
+ /**channel number */
+ A_UINT32 channel;
+} wmi_extscan_hotlist_entry;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_configure_hotlist_monitor_cmd_fixed_param */
+ /** Request ID - to identify command. Cannot be 0 */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting hotlist monitoring */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) that is requesting scan */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /** operation mode: start/stop */
+ A_UINT32 mode; // wmi_extscan_operation_mode
+ /**total number of bssids (in all pages) */
+ A_UINT32 total_entries;
+ /**index of the first bssid entry found in the TLV wmi_extscan_hotlist_entry*/
+ A_UINT32 first_entry_index;
+ /**number of bssids in this page */
+ A_UINT32 num_entries_in_page;
+ /* Following this structure is the TLV:
+ * wmi_extscan_hotlist_entry hotlist[]; // number of elements given by field num_page_entries.
+ */
+} wmi_extscan_configure_hotlist_monitor_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /** size in bytes of scan cache entry */
+ A_UINT32 scan_cache_entry_size;
+ /** maximum number of scan cache entries */
+ A_UINT32 max_scan_cache_entries;
+ /** maximum number of buckets per extscan request */
+ A_UINT32 max_buckets;
+ /** maximum number of BSSIDs that will be stored in each scan (best n/w as per RSSI) */
+ A_UINT32 max_bssid_per_scan;
+ /** table usage level at which indication must be sent to host */
+ A_UINT32 max_table_usage_threshold;
+} wmi_extscan_cache_capabilities;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /** size in bytes of wlan change entry */
+ A_UINT32 wlan_change_entry_size;
+ /** maximum number of entries in wlan change table */
+ A_UINT32 max_wlan_change_entries;
+ /** number of RSSI samples used for averaging RSSI */
+ A_UINT32 max_rssi_averaging_samples;
+ /** number of BSSID/RSSI entries (BSSID pointer, RSSI, timestamp) that device can hold */
+ A_UINT32 max_rssi_history_entries;
+} wmi_extscan_wlan_change_monitor_capabilities;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /** size in bytes of hotlist entry */
+ A_UINT32 wlan_hotlist_entry_size;
+ /** maximum number of entries in wlan change table */
+ A_UINT32 max_hotlist_entries;
+} wmi_extscan_hotlist_monitor_capabilities;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_set_capabilities_cmd_fixed_param */
+ /** Request ID - matches request ID used to start hot list monitoring */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting stop */
+ A_UINT32 requestor_id;
+ /** number of extscan caches */
+ A_UINT32 num_extscan_cache_tables;
+ /** number of wlan change lists */
+ A_UINT32 num_wlan_change_monitor_tables;
+ /** number of hotlists */
+ A_UINT32 num_hotlist_monitor_tables;
+ /** if one sided rtt data collection is supported */
+ A_UINT32 rtt_one_sided_supported;
+ /** if 11v data collection is supported */
+ A_UINT32 rtt_11v_supported;
+ /** if 11mc data collection is supported */
+ A_UINT32 rtt_ftm_supported;
+ /** number of extscan cache capabilities (one per table) */
+ A_UINT32 num_extscan_cache_capabilities;
+ /** number of wlan change capabilities (one per table) */
+ A_UINT32 num_extscan_wlan_change_capabilities;
+ /** number of extscan hotlist capabilities (one per table) */
+ A_UINT32 num_extscan_hotlist_capabilities;
+ /* Following this structure is the TLV:
+ * wmi_extscan_cache_capabilities extscan_cache_capabilities; // number of capabilities given by num_extscan_caches
+ * wmi_extscan_wlan_change_monitor_capabilities wlan_change_capabilities; // number of capabilities given by num_wlan_change_monitor_tables
+ * wmi_extscan_hotlist_monitor_capabilities hotlist_capabilities; // number of capabilities given by num_hotlist_monitor_tables
+ */
+} wmi_extscan_set_capabilities_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_get_capabilities_cmd_fixed_param */
+ /** Request ID - matches request ID used to start hot list monitoring */
+ A_UINT32 request_id;
+ /** Requestor ID - client requesting capabilities */
+ A_UINT32 requestor_id;
+} wmi_extscan_get_capabilities_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_start_stop_event_fixed_param */
+ /** Request ID of the operation that was started/stopped */
+ A_UINT32 request_id;
+ /** Requestor ID of the operation that was started/stopped */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the operation that was started/stopped */
+ A_UINT32 vdev_id;
+ /** extscan WMI command */
+ A_UINT32 command;
+ /** operation mode: start/stop */
+ A_UINT32 mode; // wmi_extscan_operation_mode
+ /**success/failure */
+ A_UINT32 status; // enum wmi_extscan_start_stop_status
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+} wmi_extscan_start_stop_event_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_operation_event_fixed_param */
+ /** Request ID of the extscan operation that is currently running */
+ A_UINT32 request_id;
+ /** Requestor ID of the extscan operation that is currently running */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the extscan operation that is currently running */
+ A_UINT32 vdev_id;
+ /** scan event (wmi_scan_event_type) */
+ A_UINT32 event; // wmi_extscan_event_type
+ /** table ID - to allow support for multiple simultaneous requests */
+ A_UINT32 table_id;
+ /**number of buckets */
+ A_UINT32 num_buckets;
+ /* Following this structure is the TLV:
+ * A_UINT32 bucket_id[]; // number of elements given by field num_buckets.
+ */
+} wmi_extscan_operation_event_fixed_param;
+
+/* Types of extscan tables */
+typedef enum {
+ EXTSCAN_TABLE_NONE = 0,
+ EXTSCAN_TABLE_BSSID = 1,
+ EXTSCAN_TABLE_RSSI = 2,
+} wmi_extscan_table_type;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_table_usage_event_fixed_param */
+ /** Request ID of the extscan operation that is currently running */
+ A_UINT32 request_id;
+ /** Requestor ID of the extscan operation that is currently running */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the extscan operation that is currently running */
+ A_UINT32 vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /**see wmi_extscan_table_type for table reporting usage */
+ A_UINT32 table_type;
+ /**number of entries in use */
+ A_UINT32 entries_in_use;
+ /**maximum number of entries in table */
+ A_UINT32 maximum_entries;
+} wmi_extscan_table_usage_event_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /**RSSI */
+ A_UINT32 rssi;
+ /**time stamp in seconds */
+ A_UINT32 tstamp;
+} wmi_extscan_rssi_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /**bssid */
+ wmi_mac_addr bssid;
+ /**ssid */
+ wmi_ssid ssid;
+ /**channel number */
+ A_UINT32 channel;
+ /* capabilities */
+ A_UINT32 capabilities;
+ /* beacon interval in TUs */
+ A_UINT32 beacon_interval;
+ /**time stamp in seconds - time last seen */
+ A_UINT32 tstamp;
+ /**flags - _tExtScanEntryFlags */
+ A_UINT32 flags;
+ /**RTT in ns */
+ A_UINT32 rtt;
+ /**rtt standard deviation */
+ A_UINT32 rtt_sd;
+ /* rssi information */
+ A_UINT32 number_rssi_samples;
+ /** IE length */
+ A_UINT32 ie_length; // length of IE data
+} wmi_extscan_wlan_descriptor;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_cached_results_event_fixed_param */
+ /** Request ID of the WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID */
+ A_UINT32 request_id;
+ /** Requestor ID of the WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID */
+ A_UINT32 vdev_id;
+ /** Request ID of the extscan operation that is currently running */
+ A_UINT32 extscan_request_id;
+ /** Requestor ID of the extscan operation that is currently running */
+ A_UINT32 extscan_requestor_id;
+ /** VDEV id(interface) of the extscan operation that is currently running */
+ A_UINT32 extscan_vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /**current time stamp in seconds. Used to provide a baseline for the relative timestamps returned for each block and entry */
+ A_UINT32 current_tstamp;
+ /**total number of bssids (in all pages) */
+ A_UINT32 total_entries;
+ /**index of the first bssid entry found in the TLV wmi_extscan_wlan_descriptor*/
+ A_UINT32 first_entry_index;
+ /**number of bssids in this page */
+ A_UINT32 num_entries_in_page;
+ /* Followed by the variable length TLVs
+ * wmi_extscan_wlan_descriptor bssid_list[]
+ * wmi_extscan_rssi_info rssi_list[]
+ * A_UINT8 ie_list[]
+ */
+} wmi_extscan_cached_results_event_fixed_param;
+
+typedef enum {
+ EXTSCAN_WLAN_CHANGE_FLAG_NONE = 0x00,
+ EXTSCAN_WLAN_CHANGE_FLAG_OUT_OF_RANGE = 0x01,
+ EXTSCAN_WLAN_CHANGE_FLAG_AP_LOST = 0x02,
+} wmi_extscan_wlan_change_flags;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_ARRAY_STRUC */
+ /**bssid */
+ wmi_mac_addr bssid;
+ /**time stamp in seconds */
+ A_UINT32 tstamp;
+ /**upper RSSI limit */
+ A_UINT32 upper_rssi_limit;
+ /**lower RSSI limit */
+ A_UINT32 lower_rssi_limit;
+ /** channel */
+ A_UINT32 channel; /* in MHz */
+ /**current RSSI average */
+ A_UINT32 rssi_average;
+ /**flags - wmi_extscan_wlan_change_flags */
+ A_UINT32 flags;
+ /**legnth of RSSI history to follow (number of values) */
+ A_UINT32 num_rssi_samples;
+} wmi_extscan_wlan_change_result_bssid;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_wlan_change_results_event_fixed_param */
+ /** Request ID of the WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID command that requested the results */
+ A_UINT32 request_id;
+ /** Requestor ID of the WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID command that requested the results */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID command that requested the results */
+ A_UINT32 vdev_id;
+ /** Request ID of the WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID command that configured the table */
+ A_UINT32 config_request_id;
+ /** Requestor ID of the WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID command that configured the table */
+ A_UINT32 config_requestor_id;
+ /** VDEV id(interface) of the WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID command that configured the table */
+ A_UINT32 config_vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /**number of entries with RSSI out of range or BSSID not detected */
+ A_UINT32 change_count;
+ /**total number of bssid signal descriptors (in all pages) */
+ A_UINT32 total_entries;
+ /**index of the first bssid signal descriptor entry found in the TLV wmi_extscan_wlan_descriptor*/
+ A_UINT32 first_entry_index;
+ /**number of bssids signal descriptors in this page */
+ A_UINT32 num_entries_in_page;
+ /* Following this structure is the TLV:
+ * wmi_extscan_wlan_change_result_bssid bssid_signal_descriptor_list[]; // number of descriptors given by field num_entries_in_page.
+ * Following this structure is the list of RSSI values (each is an A_UINT8):
+ * A_UINT8 rssi_list[]; // last N RSSI values.
+ */
+} wmi_extscan_wlan_change_results_event_fixed_param;
+
+enum _tExtScanEntryFlags
+{
+ WMI_HOTLIST_FLAG_NONE = 0x00,
+ WMI_HOTLIST_FLAG_PRESENCE = 0x01
+};
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_hotlist_match_event_fixed_param */
+ /** Request ID of the WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID that configured the table */
+ A_UINT32 config_request_id;
+ /** Requestor ID of the WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID that configured the table */
+ A_UINT32 config_requestor_id;
+ /** VDEV id(interface) of the WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID that configured the table */
+ A_UINT32 config_vdev_id;
+ /** table ID - to allow support for multiple simultaneous tables */
+ A_UINT32 table_id;
+ /**total number of bssids (in all pages) */
+ A_UINT32 total_entries;
+ /**index of the first bssid entry found in the TLV wmi_extscan_wlan_descriptor*/
+ A_UINT32 first_entry_index;
+ /**number of bssids in this page */
+ A_UINT32 num_entries_in_page;
+ /* Following this structure is the TLV:
+ * wmi_extscan_wlan_descriptor hotlist_match[]; // number of descriptors given by field num_entries_in_page.
+ */
+} wmi_extscan_hotlist_match_event_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_extscan_capabilities_event_fixed_param */
+ /** Request ID of the WMI_EXTSCAN_GET_CAPABILITIES_CMDID */
+ A_UINT32 request_id;
+ /** Requestor ID of the WMI_EXTSCAN_GET_CAPABILITIES_CMDID */
+ A_UINT32 requestor_id;
+ /** VDEV id(interface) of the WMI_EXTSCAN_GET_CAPABILITIES_CMDID */
+ A_UINT32 vdev_id;
+ /** number of extscan caches */
+ A_UINT32 num_extscan_cache_tables;
+ /** number of wlan change lists */
+ A_UINT32 num_wlan_change_monitor_tables;
+ /** number of hotlists */
+ A_UINT32 num_hotlist_monitor_tables;
+ /** if one sided rtt data collection is supported */
+ A_UINT32 rtt_one_sided_supported;
+ /** if 11v data collection is supported */
+ A_UINT32 rtt_11v_supported;
+ /** if 11mc data collection is supported */
+ A_UINT32 rtt_ftm_supported;
+ /** number of extscan cache capabilities (one per table) */
+ A_UINT32 num_extscan_cache_capabilities;
+ /** number of wlan change capabilities (one per table) */
+ A_UINT32 num_extscan_wlan_change_capabilities;
+ /** number of extscan hotlist capabilities (one per table) */
+ A_UINT32 num_extscan_hotlist_capabilities;
+ /* Following this structure are the TLVs describing the capabilities of of the various types of lists. The FW theoretically
+ * supports multiple lists of each type.
+ *
+ * wmi_extscan_cache_capabilities extscan_cache_capabilities[] // capabilities of extscan cache (BSSID/RSSI lists)
+ * wmi_extscan_wlan_change_monitor_capabilities wlan_change_capabilities[] // capabilities of wlan_change_monitor_tables
+ * wmi_extscan_hotlist_monitor_capabilities hotlist_capabilities[] // capabilities of hotlist_monitor_tables
+ */
+} wmi_extscan_capabilities_event_fixed_param;
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index 3a1d8b0..2e6ab07 100644
--- a/CORE/SERVICES/COMMON/wmi_version.h
+++ b/CORE/SERVICES/COMMON/wmi_version.h
@@ -36,7 +36,8 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
-#define __WMI_REVISION_ 54
+
+#define __WMI_REVISION_ 55
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index a241117..11dc1da 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -540,6 +540,14 @@
CASE_RETURN_STRING(WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID);
CASE_RETURN_STRING(WMI_LPI_START_SCAN_CMDID);
CASE_RETURN_STRING(WMI_LPI_STOP_SCAN_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_START_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_STOP_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_SET_CAPABILITIES_CMDID);
+ CASE_RETURN_STRING(WMI_EXTSCAN_GET_CAPABILITIES_CMDID);
}
return "Invalid WMI cmd";
}