From 53ceeaad7fd3983b8159b6c36aefa186d3247e27 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 4 Aug 2021 09:47:30 -0700 Subject: [PATCH] fw-api: CL 14990944 - update fw common interface files Change-Id: Ia6c310f4902782d035265bd80e507c5ab560a97b WMI: add BTM info to roaming msgs CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 ++- fw/wmi_unified.h | 73 +++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 75 insertions(+), 4 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 040ce2e95a49..72a1deaac36b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1194,6 +1194,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_ml_key_material_param, WMITLV_TAG_STRUC_wmi_roam_cnd_vendor_scoring_param, WMITLV_TAG_STRUC_wmi_owe_ap_profile, + WMITLV_TAG_STRUC_wmi_roam_btm_request_candidate_info_tlv_param, } WMITLV_TAG_ID; /* @@ -4353,7 +4354,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_frame_info, roam_frame_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_initial_info, roam_initial_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_btm_response_info, roam_btm_response_info, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_msg_info, roam_msg_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_msg_info, roam_msg_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_btm_request_candidate_info, roam_btm_request_candidate_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_STATS_EVENTID); /* Motion detection cmd */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 811c611464a1..7d363b6cdaf2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -31448,9 +31448,11 @@ typedef struct { #endif struct { /* opaque space reservation for vendor-specific fields */ - A_UINT32 vendor_specific2[3]; + A_UINT32 vendor_specific2[4]; }; }; + /* btm_req_dialog_token: dialog token number in BTM request frame */ + A_UINT32 btm_req_dialog_token; } wmi_roam_trigger_reason; typedef struct { @@ -31467,6 +31469,12 @@ typedef struct { A_UINT32 roam_scan_channel_count; /* Number of channels scanned during roam scan */ A_UINT32 roam_ap_count; /* Number of roamable APs */ A_UINT32 frame_info_count; /* Number of frame info */ + /* + * scan_complete_timestamp is the absolute time w.r.t host timer + * which is synchronized between the host and target. + * This timestamp indicates the time when roam scan finished. + */ + A_UINT32 scan_complete_timestamp; /* milli second units */ } wmi_roam_scan_info; typedef struct { @@ -31584,6 +31592,12 @@ typedef struct { */ A_UINT32 neighbor_report_response_timestamp; /* in milli seconds */ A_UINT32 neighbor_report_channel_count; /* Number of channels received in neighbor report response */ + A_UINT32 btm_query_token; /* btm query dialog token */ + /* btm_query_reason_code: + * Transition Query Reasons are enumerated in table 7-43x + * of the 802.11v spec. + */ + A_UINT32 btm_query_reason_code; } wmi_roam_neighbor_report_info; typedef struct { @@ -31613,8 +31627,20 @@ typedef struct { * This timestamp indicates the time when btm response is sent. */ A_UINT32 timestamp; /* milli second units */ + A_UINT32 btm_resp_dialog_token; /* dialog_token in btm response frame */ + /* btm_resp_bss_termination_delay: + * bss_termination_delay in btm response frame is the number of minutes + * that the responding STA requests the BSS to delay termination. + */ + A_UINT32 btm_resp_bss_termination_delay; } wmi_roam_btm_response_info; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_btm_request_candidate_info_tlv_param */ + wmi_mac_addr btm_candidate_bssid; /* BTM candidate MAC address */ + A_UINT32 preference; /* preference in Preference IE */ +} wmi_roam_btm_request_candidate_info; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_channel_info_tlv_param */ A_UINT32 channel; /* Channel frequency in MHz */ @@ -31627,14 +31653,57 @@ typedef struct { /* * frame_info = frame_type | (frame_subtype << 2) | (request_or_response << 6)| (seq_num << 16) * frame_type(2 bits), frame_subtype(4 bits) are from 802.11 spec. + * If frame_type is WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT, frame_subtype + * should be one of value in WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE. * request_or_response(1 bit) - Valid if frame_subtype is authentication. * 0 - Authentication request 1 - Authentication response * seq_num(16 bits) - frame sequence number */ A_UINT32 frame_info; - A_UINT32 status_code; /* Status code from 802.11 spec, section 9.4.1.9 */ + + /* status_code: + * For Rx frames : Status code from 802.11 spec, section 9.4.1.9 + * For Rx frames (deauth / disassoc) : Reason code from 802.11 spec, + * section 9.4.1.7 + * For Tx frames : Status_code should be one of value in + * WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS + */ + A_UINT32 status_code; + /* + * rssi_dbm_abs + * Last known RSSI of the current BSSID at the moment when the frame + * was sent and received. + * This rssi value is valid for deauth / disassoc frame only. + * The rssi_dbm_abs value is the absolute value of the RSSI in dBm units. + * For example, if the RSSI is -40 dBm, rssi_dbm_abs will be 40. + */ + A_UINT32 rssi_dbm_abs; + /* retry_count + * To show how many times the same frame (but with different + * sequence number) is retransmitted, in protocol level. + */ + A_UINT32 retry_count; } wmi_roam_frame_info; +typedef enum { + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT = 3, +} WMI_ROAM_FRAME_INFO_FRAME_TYPE; + +typedef enum { + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_M1 = 1, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_M2, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_M3, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_M4, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_GTK_M1, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE_GTK_M2, +} WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE; + +typedef enum { + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_ACK = 0, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_NO_ACK, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_FAIL, +} WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_initial_info_tlv_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5eeae98250d4..747acc8f0eb4 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,7 @@ #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_ 1038 +#define __WMI_REVISION_ 1039 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work