diff options
author | Amarnath Hullur Subramanyam <amarnath@codeaurora.org> | 2015-07-13 05:50:56 -0700 |
---|---|---|
committer | Vineeta Srivastava <vsrivastava@google.com> | 2015-07-22 12:53:41 -0700 |
commit | d405594245a93a08025d2ef8d76c9e459ba5657f (patch) | |
tree | 5424a6135fb1f1a2911324e6bc28378e5bf15faf | |
parent | 637a6f7d11d04193356ec12a95712e4f2bfd20a0 (diff) | |
download | android_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.cpp | 116 | ||||
-rw-r--r-- | qcwcn/wifi_hal/wifilogger_diag.h | 1 | ||||
-rw-r--r-- | qcwcn/wifi_hal/wifilogger_event_defs.h | 14 | ||||
-rw-r--r-- | qcwcn/wifi_hal/wifilogger_vendor_tag_defs.h | 19 |
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__ */ |