diff --git a/fw/wmi.h b/fw/wmi.h index d022f8573a23..30b01c6857ea 100644 --- a/fw/wmi.h +++ b/fw/wmi.h @@ -146,7 +146,6 @@ typedef enum { TX_USAGE = 0x02, /* default Tx Key - Static WEP only */ PMK_USAGE = 0x04, /* PMK cache */ PASN_USAGE = 0x08, /* is PASN based key */ - LTF_USAGE = 0x10, /* is LTF key seed */ } KEY_USAGE; /* * List of Events (target to host) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index adc7ef1e7a25..6f3ab3fcba78 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1231,6 +1231,14 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_sscan_per_detector_info, WMITLV_TAG_STRUC_wmi_ctrl_path_odd_addr_read_struct, WMITLV_TAG_STRUC_wmi_vdev_multiple_peer_group_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_set_ltf_key_seed_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_event_fixed_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_event_fixed_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_param, + WMITLV_TAG_STRUC_wmi_rtt_pasn_deauth_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1716,6 +1724,9 @@ typedef enum { OP(WMI_SAWF_SVC_CLASS_DISABLE_CMDID) \ OP(WMI_SOC_TQM_RESET_ENABLE_DISABLE_CMDID) \ OP(WMI_VDEV_MULTIPLE_PEER_GROUP_CMDID) \ + OP(WMI_VDEV_SET_LTF_KEY_SEED_CMDID) \ + OP(WMI_RTT_PASN_AUTH_STATUS_CMD) \ + OP(WMI_RTT_PASN_DEAUTH_CMD) \ /* add new CMD_LIST elements above this line */ @@ -1995,6 +2006,8 @@ typedef enum { OP(WMI_RESMGR_CHAN_TIME_QUOTA_CHANGED_EVENTID) \ OP(WMI_PDEV_PKTLOG_DECODE_INFO_EVENTID) \ OP(WMI_SPECTRAL_CAPABILITIES_EVENTID) \ + OP(WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID) \ + OP(WMI_RTT_PASN_PEER_DELETE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -2454,6 +2467,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_FD_TMPL_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_INSTALL_KEY_CMDID); +/* VDEV set LTF key seed Cmd */ +#define WMITLV_TABLE_WMI_VDEV_SET_LTF_KEY_SEED_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_set_ltf_key_seed_cmd_fixed_param, wmi_vdev_set_ltf_key_seed_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, key_seed, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_LTF_KEY_SEED_CMDID); + /* VDEV WNM SLEEP MODE Cmd */ #define WMITLV_TABLE_WMI_VDEV_WNM_SLEEPMODE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_VDEV_WNM_SLEEPMODE_CMD_fixed_param, WMI_VDEV_WNM_SLEEPMODE_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4907,6 +4926,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SOC_TQM_RESET_ENABLE_DISABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, wds_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MULTIPLE_PEER_GROUP_CMDID); +/* RTT 11az PASN authentication status cmd */ +#define WMITLV_TABLE_WMI_RTT_PASN_AUTH_STATUS_CMD(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_cmd_fixed_param, wmi_rtt_pasn_auth_status_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_auth_status_param, pasn_auth_status_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_AUTH_STATUS_CMD); + +/* RTT 11az PASN deauthentication cmd */ +#define WMITLV_TABLE_WMI_RTT_PASN_DEAUTH_CMD(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_deauth_cmd_fixed_param, wmi_rtt_pasn_deauth_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_DEAUTH_CMD); + /************************** TLV definitions of WMI events *******************************/ @@ -6633,6 +6663,20 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RESMGR_CHAN_TIME_QUOTA_CHANGED_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_pktlog_decode_info_evt_fixed_param, wmi_pdev_pktlog_decode_info_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_PKTLOG_DECODE_INFO_EVENTID); +/* RTT 11az PASN peer create request event */ +#define WMITLV_TABLE_WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_event_fixed_param, \ + wmi_rtt_pasn_peer_create_req_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_peer_create_req_param, rtt_pasn_peer_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID); + +/* RTT 11az PASN peer delete event */ +#define WMITLV_TABLE_WMI_RTT_PASN_PEER_DELETE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_event_fixed_param, \ + wmi_rtt_pasn_peer_delete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_peer_delete_param, rtt_pasn_peer_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_PEER_DELETE_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d67d8c5e2cc8..ecdd09f1ce49 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -581,6 +581,8 @@ typedef enum { WMI_VDEV_UPDATE_MAC_ADDR_CMDID, /* WMI cmd to perform operation on multiple peer based on subcmd type */ WMI_VDEV_MULTIPLE_PEER_GROUP_CMDID, + /** Set LTF key seed which will be further used to derive LTF keys */ + WMI_VDEV_SET_LTF_KEY_SEED_CMDID, /* peer specific commands */ @@ -944,6 +946,10 @@ typedef enum { WMI_RTT_MEASREQ_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_RTT), /** request to report a tsf measurement */ WMI_RTT_TSF_CMDID, + /** RTT 11az PASN authentication status */ + WMI_RTT_PASN_AUTH_STATUS_CMD, + /** RTT 11az PASN deauthentication cmd */ + WMI_RTT_PASN_DEAUTH_CMD, /** spectral scan command */ /** configure spectral scan */ @@ -1844,6 +1850,10 @@ typedef enum { WMI_TSF_MEASUREMENT_REPORT_EVENTID, /** RTT error report */ WMI_RTT_ERROR_REPORT_EVENTID, + /** RTT 11az PASN peer create request */ + WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID, + /** RTT 11az PASN peer delete event */ + WMI_RTT_PASN_PEER_DELETE_EVENTID, /*STATS specific events*/ /** txrx stats event requested by host */ @@ -12494,6 +12504,22 @@ typedef struct { */ } wmi_vdev_install_key_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_ltf_key_seed_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** MAC address used for deriving */ + wmi_mac_addr peer_macaddr; + /** authentication mode */ + A_UINT32 rsn_authmode; + /** LTF key seed length */ + A_UINT32 key_seed_len; +/* + * Following this struct are this TLV. + * A_UINT8 key_seed[key_seed_len]; <-- actual LTF key seed; + */ +} wmi_vdev_set_ltf_key_seed_cmd_fixed_param; + /** Preamble types to be used with VDEV fixed rate configuration */ typedef enum { WMI_RATE_PREAMBLE_OFDM, @@ -14951,6 +14977,7 @@ enum wmi_peer_type { WMI_PEER_TYPE_OCB = 3, /* Peer is a OCB Peer */ WMI_PEER_TYPE_NAN_DATA = 4, /* Peer is NAN DATA */ WMI_PEER_TYPE_TRANS_BSS = 5, /* For creating BSS peer when connecting with non-transmit AP */ + WMI_PEER_TYPE_PASN = 6, /* Peer is used for Pre-Association Security Negotiation */ WMI_PEER_TYPE_HOST_MAX = 127, /* Host <-> Target Peer type is assigned up to 127 */ /* Reserved from 128 - 255 for target internal use.*/ WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created during offload roam */ @@ -18044,6 +18071,7 @@ typedef enum event_type_e { WOW_TWT_EVENT, /* 32 + 10 */ WOW_DCS_INTERFERENCE_DET, /* 32 + 11 */ WOW_ROAM_STATS_EVENT, /* 32 + 12 */ + WOW_RTT_11AZ_EVENT, /* 32 + 13 */ } WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -18121,6 +18149,7 @@ typedef enum wake_reason_e { WOW_REASON_DCS_INT_DET, WOW_REASON_ROAM_STATS, WOW_REASON_MDNS_WAKEUP, + WOW_REASON_RTT_11AZ, /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -30496,6 +30525,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_UPDATE_MAC_ADDR_CMDID); WMI_RETURN_STRING(WMI_SOC_TQM_RESET_ENABLE_DISABLE_CMDID); WMI_RETURN_STRING(WMI_VDEV_MULTIPLE_PEER_GROUP_CMDID); + WMI_RETURN_STRING(WMI_VDEV_SET_LTF_KEY_SEED_CMDID); + WMI_RETURN_STRING(WMI_RTT_PASN_AUTH_STATUS_CMD); + WMI_RETURN_STRING(WMI_RTT_PASN_DEAUTH_CMD); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -37283,6 +37315,92 @@ typedef struct { */ } wmi_vdev_multiple_peer_group_cmd_fixed_param; +#define WMI_RTT_PASN_PEER_CREATE_SECURITY_MODE_GET(flag) WMI_GET_BITS(flag, 0, 2) +#define WMI_RTT_PASN_PEER_CREATE_SECURITY_MODE_SET(flag,val) WMI_SET_BITS(flag, 0, 2, val) +#define WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_GET(flag) WMI_GET_BITS(flag, 2, 1) +#define WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_SET(flag,val) WMI_SET_BITS(flag, 2, 1, val) + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_event_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; +/** + * The following TLV will follow this fixed_param TLV: + * + * wmi_rtt_pasn_peer_create_req_param rtt_pasn_peer_param[] + */ +} wmi_rtt_pasn_peer_create_req_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_param */ + + wmi_mac_addr self_mac_addr; /* self MAC address (can be vdev address or random mac address) */ + wmi_mac_addr dest_mac_addr; /* MAC address of the peer */ + + A_UINT32 control_flag; /* some control information here */ + /********************************************************************************* + * Bits 1:0: Security mode, check wmi_rtt_security_mode for detail. + * Host driver to request supplicant to derive and install PASN keys if security mode is set. + * Bit 2: Force_self_mac_addr_use, To indicate supplicant/hostapd to use this self mac addr to (re)generate PASN keys, + * and flush old cache( if it exists) for dest_mac_addr with old self_mac_addr. + * Bits 31:3: Reserved + */ +} wmi_rtt_pasn_peer_create_req_param; + + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_cmd_fixed_param */ +/** + * The following TLV will follow this fixed_param TLV: + * + * wmi_rtt_pasn_auth_status_param pasn_auth_status_param[] + */ +} wmi_rtt_pasn_auth_status_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_param */ + /* MAC address of the peer */ + wmi_mac_addr peer_mac_addr; + /* Return status. 0 for success, non-zero otherwise */ + A_UINT32 status; +} wmi_rtt_pasn_auth_status_param; + + +#define WMI_RTT_PASN_PEER_DELETE_DELETED_BIT_GET(flag) WMI_GET_BITS(flag, 0, 1) +#define WMI_RTT_PASN_PEER_DELETE_DELETED_BIT_SET(flag,val) WMI_SET_BITS(flag, 0, 1, val) +#define WMI_RTT_PASN_PEER_DELETE_FLUSH_KEYS_GET(flag) WMI_GET_BITS(flag, 1, 1) +#define WMI_RTT_PASN_PEER_DELETE_FLUSH_KEYS_SET(flag,val) WMI_SET_BITS(flag, 1, 1, val) + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_event_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; +/** + * The following TLV will follow this fixed_param TLV: + * + * wmi_rtt_pasn_peer_delete_param rtt_pasn_peer_param[] + */ +} wmi_rtt_pasn_peer_delete_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_param */ + /* MAC address of the peer */ + wmi_mac_addr peer_mac_addr; + /* some control information here */ + A_UINT32 control_flag; +/********************************************************************************** + * Bit 0: peer_deleted (This is set to 1 if peer has already been deleted by the target) + * Bit 1: flush keys (This is set to 1 if target wants the cached PASN keys to be flushed) + * Bits 31:2: reserved + */ +} wmi_rtt_pasn_peer_delete_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_deauth_cmd_fixed_param */ + /* MAC address of the peer */ + wmi_mac_addr peer_mac_addr; +} wmi_rtt_pasn_deauth_cmd_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 79cb81a4527c..916f8e0092f2 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_ 1106 +#define __WMI_REVISION_ 1107 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work