summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmarnath Hullur Subramanyam <amarnath@codeaurora.org>2015-07-13 05:50:56 -0700
committerVineeta Srivastava <vsrivastava@google.com>2015-07-22 12:53:41 -0700
commitd405594245a93a08025d2ef8d76c9e459ba5657f (patch)
tree5424a6135fb1f1a2911324e6bc28378e5bf15faf
parent637a6f7d11d04193356ec12a95712e4f2bfd20a0 (diff)
downloadandroid_hardware_qcom_wlan-d405594245a93a08025d2ef8d76c9e459ba5657f.tar.gz
android_hardware_qcom_wlan-d405594245a93a08025d2ef8d76c9e459ba5657f.tar.bz2
android_hardware_qcom_wlan-d405594245a93a08025d2ef8d76c9e459ba5657f.zip
Wifi-HAL: Add GSCAN CAPABILITIES event
Add support for GSCAN CAPABILITIES event as part of the Debug Framework. Change-Id: I8c90e56637171a9719f97dc112042037a600e79e
-rw-r--r--qcwcn/wifi_hal/wifilogger_diag.cpp116
-rw-r--r--qcwcn/wifi_hal/wifilogger_diag.h1
-rw-r--r--qcwcn/wifi_hal/wifilogger_event_defs.h14
-rw-r--r--qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h19
4 files changed, 143 insertions, 7 deletions
diff --git a/qcwcn/wifi_hal/wifilogger_diag.cpp b/qcwcn/wifi_hal/wifilogger_diag.cpp
index 5e11271..d021541 100644
--- a/qcwcn/wifi_hal/wifilogger_diag.cpp
+++ b/qcwcn/wifi_hal/wifilogger_diag.cpp
@@ -107,6 +107,106 @@ static wifi_error update_connectivity_ring_buf(hal_info *info,
return WIFI_SUCCESS;
}
+#define SCAN_CAP_ENTRY_SIZE 1024
+static wifi_error process_log_extscan_capabilities(hal_info *info,
+ u8* buf, int length)
+{
+ wifi_ring_buffer_driver_connectivity_event *pConnectEvent;
+ wifi_ring_buffer_entry *pRingBufferEntry;
+ wlan_ext_scan_capabilities_payload_type *pScanCapabilities;
+ wifi_gscan_capabilities gscan_cap;
+ gscan_capabilities_vendor_data_t cap_vendor_data;
+ tlv_log *pTlv;
+ int tot_len = sizeof(wifi_ring_buffer_driver_connectivity_event);
+ u8 out_buf[SCAN_CAP_ENTRY_SIZE];
+ wifi_error status;
+
+ pRingBufferEntry = (wifi_ring_buffer_entry *)&out_buf[0];
+ memset(pRingBufferEntry, 0, SCAN_CAP_ENTRY_SIZE);
+ pConnectEvent = (wifi_ring_buffer_driver_connectivity_event *)
+ (pRingBufferEntry + 1);
+
+ pConnectEvent->event = WIFI_EVENT_G_SCAN_CAPABILITIES;
+ pTlv = &pConnectEvent->tlvs[0];
+
+ pScanCapabilities = (wlan_ext_scan_capabilities_payload_type *)buf;
+ pTlv = addLoggerTlv(WIFI_TAG_REQUEST_ID,
+ sizeof(pScanCapabilities->request_id),
+ (u8 *)&pScanCapabilities->request_id, pTlv);
+ tot_len += sizeof(tlv_log) + sizeof(pScanCapabilities->request_id);
+
+ gscan_cap.max_scan_cache_size =
+ pScanCapabilities->extscan_cache_capabilities.scan_cache_entry_size;
+ gscan_cap.max_scan_buckets =
+ pScanCapabilities->extscan_cache_capabilities.max_buckets;
+ gscan_cap.max_ap_cache_per_scan =
+ pScanCapabilities->extscan_cache_capabilities.max_bssid_per_scan;
+ gscan_cap.max_rssi_sample_size = FEATURE_NOT_SUPPORTED;
+ gscan_cap.max_scan_reporting_threshold =
+ pScanCapabilities->extscan_cache_capabilities.max_table_usage_threshold;
+ gscan_cap.max_hotlist_bssids =
+ pScanCapabilities->extscan_hotlist_monitor_capabilities.max_hotlist_entries;
+ gscan_cap.max_hotlist_ssids =
+ pScanCapabilities->extscan_capabilities.num_extscan_hotlist_ssid;
+ gscan_cap.max_significant_wifi_change_aps = FEATURE_NOT_SUPPORTED;
+ gscan_cap.max_bssid_history_entries = FEATURE_NOT_SUPPORTED;
+ gscan_cap.max_number_epno_networks =
+ pScanCapabilities->extscan_capabilities.num_epno_networks;
+ gscan_cap.max_number_epno_networks_by_ssid =
+ pScanCapabilities->extscan_capabilities.num_epno_networks;
+ gscan_cap.max_number_of_white_listed_ssid =
+ pScanCapabilities->extscan_capabilities.num_roam_ssid_whitelist;
+
+ pTlv = addLoggerTlv(WIFI_TAG_GSCAN_CAPABILITIES,
+ sizeof(wifi_gscan_capabilities),
+ (u8 *)&gscan_cap, pTlv);
+ tot_len += sizeof(tlv_log) + sizeof(wifi_gscan_capabilities);
+
+ cap_vendor_data.hotlist_mon_table_id =
+ pScanCapabilities->extscan_hotlist_monitor_capabilities.table_id;
+ cap_vendor_data.wlan_hotlist_entry_size =
+ pScanCapabilities->extscan_hotlist_monitor_capabilities.wlan_hotlist_entry_size;
+ cap_vendor_data.cache_cap_table_id =
+ pScanCapabilities->extscan_cache_capabilities.table_id;
+ cap_vendor_data.requestor_id =
+ pScanCapabilities->extscan_capabilities.requestor_id;
+ cap_vendor_data.vdev_id =
+ pScanCapabilities->extscan_capabilities.vdev_id;
+ cap_vendor_data.num_extscan_cache_tables =
+ pScanCapabilities->extscan_capabilities.num_extscan_cache_tables;
+ cap_vendor_data.num_wlan_change_monitor_tables =
+ pScanCapabilities->extscan_capabilities.num_wlan_change_monitor_tables;
+ cap_vendor_data.num_hotlist_monitor_tables =
+ pScanCapabilities->extscan_capabilities.num_hotlist_monitor_tables;
+ cap_vendor_data.rtt_one_sided_supported =
+ pScanCapabilities->extscan_capabilities.rtt_one_sided_supported;
+ cap_vendor_data.rtt_11v_supported =
+ pScanCapabilities->extscan_capabilities.rtt_11v_supported;
+ cap_vendor_data.rtt_ftm_supported =
+ pScanCapabilities->extscan_capabilities.rtt_ftm_supported;
+ cap_vendor_data.num_extscan_cache_capabilities =
+ pScanCapabilities->extscan_capabilities.num_extscan_cache_capabilities;
+ cap_vendor_data.num_extscan_wlan_change_capabilities =
+ pScanCapabilities->extscan_capabilities.num_extscan_wlan_change_capabilities;
+ cap_vendor_data.num_extscan_hotlist_capabilities =
+ pScanCapabilities->extscan_capabilities.num_extscan_hotlist_capabilities;
+ cap_vendor_data.num_roam_bssid_blacklist =
+ pScanCapabilities->extscan_capabilities.num_roam_bssid_blacklist;
+ cap_vendor_data.num_roam_bssid_preferred_list =
+ pScanCapabilities->extscan_capabilities.num_roam_bssid_preferred_list;
+
+ pTlv = addLoggerTlv(WIFI_TAG_VENDOR_SPECIFIC,
+ sizeof(gscan_capabilities_vendor_data_t),
+ (u8 *)&cap_vendor_data, pTlv);
+ tot_len += sizeof(tlv_log) + sizeof(gscan_capabilities_vendor_data_t);
+
+ status = update_connectivity_ring_buf(info, pRingBufferEntry, tot_len);
+ if (status != WIFI_SUCCESS) {
+ ALOGE("Failed to write ext scan capabilities event into ring buffer");
+ }
+ return status;
+}
+
static wifi_error process_bt_coex_scan_event(hal_info *info,
u32 id, u8* buf, int length)
{
@@ -781,6 +881,22 @@ static wifi_error process_fw_diag_msg(hal_info *info, u8* buf, u16 length)
break;
case WLAN_DIAG_TYPE_LOG:
{
+ id = diag_msg_hdr->diag_id;
+ payloadlen = diag_msg_hdr->u.payload_len;
+
+ switch (id) {
+ case LOG_WLAN_EXTSCAN_CAPABILITIES:
+ status = process_log_extscan_capabilities(info,
+ diag_msg_hdr->payload,
+ payloadlen);
+ if (status != WIFI_SUCCESS) {
+ ALOGE("Failed to process extscan capabilities");
+ return status;
+ }
+ break;
+ default:
+ return WIFI_SUCCESS;
+ }
}
break;
case WLAN_DIAG_TYPE_MSG:
diff --git a/qcwcn/wifi_hal/wifilogger_diag.h b/qcwcn/wifi_hal/wifilogger_diag.h
index 6bba3db..38bbde9 100644
--- a/qcwcn/wifi_hal/wifilogger_diag.h
+++ b/qcwcn/wifi_hal/wifilogger_diag.h
@@ -45,6 +45,7 @@
#define ANI_NL_MSG_LOG_HOST_PRINT_TYPE 89
#define WLAN_PKT_LOG_STATS 0x18E0
+#define FEATURE_NOT_SUPPORTED 0xFF
/*
* - verbose_level 0 corresponds to no collection
diff --git a/qcwcn/wifi_hal/wifilogger_event_defs.h b/qcwcn/wifi_hal/wifilogger_event_defs.h
index a02fdad..baf9bee 100644
--- a/qcwcn/wifi_hal/wifilogger_event_defs.h
+++ b/qcwcn/wifi_hal/wifilogger_event_defs.h
@@ -324,7 +324,7 @@ typedef struct {
u16 Tsco;
u8 Rsco;
} __attribute__((packed)) wlan_bt_coex_bt_sco_stop_payload_type;
-/*End EVENT_WLAN_BT_COEX_BT_SCO_STOP*/
+/* End EVENT_WLAN_BT_COEX_BT_SCO_STOP */
/* EVENT_WLAN_BT_COEX_BT_SCAN_START */
typedef struct {
@@ -332,16 +332,16 @@ typedef struct {
u8 scan_bitmap;
} __attribute__((packed)) wlan_bt_coex_bt_scan_start_payload_type;
-/*End EVENT_WLAN_BT_COEX_BT_SCAN_START*/
+/* End EVENT_WLAN_BT_COEX_BT_SCAN_START */
/* EVENT_WLAN_BT_COEX_BT_SCAN_STOP */
typedef struct {
u8 scan_type;
u8 scan_bitmap;
} __attribute__((packed)) wlan_bt_coex_bt_scan_stop_payload_type;
-/*End EVENT_WLAN_BT_COEX_BT_SCAN_STOP*/
+/* End EVENT_WLAN_BT_COEX_BT_SCAN_STOP */
-/*EVENT_WIFI_BT_COEX_BT_HID_START */
+/* EVENT_WIFI_BT_COEX_BT_HID_START */
typedef struct {
u8 link_id;
u8 link_state;
@@ -349,7 +349,7 @@ typedef struct {
u8 Tsniff;
u8 attempts;
} __attribute__((packed)) wlan_bt_coex_bt_hid_start_payload_type;
-/*End EVENT_WIFI_BT_COEX_BT_HID_START */
+/* End EVENT_WIFI_BT_COEX_BT_HID_START */
/* EVENT_WIFI_BT_COEX_BT_HID_STOP */
typedef struct {
@@ -378,7 +378,7 @@ typedef struct {
} __attribute__((packed)) wlan_ext_scan_results_available_payload_type;
/* End EVENT_WLAN_EXTSCAN_RESULTS_AVAILABLE */
-/* EVENT_WLAN_EXTSCAN_CAPABILITIES */
+/* Log LOG_WLAN_EXTSCAN_CAPABILITIES */
typedef struct {
u32 header;
u32 request_id;
@@ -423,7 +423,7 @@ typedef struct {
wlan_extscan_cache_capabilities extscan_cache_capabilities;
wlan_extscan_hotlist_monitor_capabilities extscan_hotlist_monitor_capabilities;
} __attribute__((packed)) wlan_ext_scan_capabilities_payload_type;
-/* End EVENT_WLAN_EXTSCAN_CAPABILITIES*/
+/* End LOG_WLAN_EXTSCAN_CAPABILITIES */
/* EVENT_WLAN_BEACON_RECEIVED */
typedef struct {
diff --git a/qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h b/qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h
index 8b8aadf..148e3d5 100644
--- a/qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h
+++ b/qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h
@@ -108,4 +108,23 @@ typedef struct {
u8 fInitiator;
} __attribute__((packed)) addba_failed_vendor_data_t;
+typedef struct {
+ u32 hotlist_mon_table_id;
+ u32 wlan_hotlist_entry_size;
+ u32 cache_cap_table_id;
+ u32 max_scan_cache_entries;
+ u32 requestor_id;
+ u32 vdev_id;
+ u32 num_extscan_cache_tables;
+ u32 num_wlan_change_monitor_tables;
+ u32 num_hotlist_monitor_tables;
+ u32 rtt_one_sided_supported;
+ u32 rtt_11v_supported;
+ u32 rtt_ftm_supported;
+ u32 num_extscan_cache_capabilities;
+ u32 num_extscan_wlan_change_capabilities;
+ u32 num_extscan_hotlist_capabilities;
+ u32 num_roam_bssid_blacklist;
+ u32 num_roam_bssid_preferred_list;
+} __attribute__((packed)) gscan_capabilities_vendor_data_t;
#endif /* __WIFI_HAL_WIFILOGGER_VENDOR_EVENTS_H__ */