diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 3d41c1fda4..726672965f 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -3867,12 +3867,15 @@ typedef struct { A_UINT32 num_obss_tx_ppdu_success; A_UINT32 num_obss_tx_ppdu_failure; - /* num_sr_tx_tranmissions: + /* num_sr_tx_transmissions: * Counter of TX done by aborting other BSS RX with spatial reuse * (for cases where rx RSSI from other BSS is below the packet-detection * threshold for doing spatial reuse) */ - A_UINT32 num_sr_tx_tranmissions; + union { + A_UINT32 num_sr_tx_transmissions; /* CORRECTED - use this one */ + A_UINT32 num_sr_tx_tranmissions; /* DEPRECATED - has typo in name */ + }; /* num_sr_rx_ge_pd_rssi_thr * counter of rx from other BSS for which RSSI was above the * packet-detection threshold specified for enabling spatial reuse diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 095940f3f5..354d8863fb 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -402,6 +402,9 @@ typedef enum { WMI_SERVICE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENT= 217, /* target will send WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENT */ WMI_SERVICE_RX_FSE_SUPPORT = 218, /* target supports flow search through RxOLE FSE hw block */ WMI_SERVICE_FREQINFO_IN_METADATA = 219, /* FW provides freq_info during spectral scan */ + WMI_SERVICE_EXT2_MSG = 220, /* WMI_SERVICE_READY_EXT2 msg is sent by target */ + WMI_SERVICE_WPA3_SAE_ROAM_SUPPORT = 221, /* Indicates FW supports WPA3 SAE roaming */ + WMI_SERVICE_WPA3_OWE_ROAM_SUPPORT = 222, /* Indicates FW supports WPA3 OWE roaming */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 984e69e448..f1bdbaaafb 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -994,6 +994,13 @@ typedef enum { WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param, WMITLV_TAG_STRUC_wmi_oem_data_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_roam_enable_disable_trigger_reason_fixed_param, + WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_preauth_status_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_preauth_start_event_fixed_param, + WMITLV_TAG_STRUC_wmi_set_elna_bypass_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_pmkid_request_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1398,6 +1405,9 @@ typedef enum { OP(WMI_VDEV_DELETE_ALL_PEER_CMDID) \ OP(WMI_OEM_DATA_CMDID) \ OP(WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID) \ + OP(WMI_ROAM_PREAUTH_STATUS_CMDID) \ + OP(WMI_SET_ELNA_BYPASS_CMDID) \ + OP(WMI_GET_ELNA_BYPASS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1408,6 +1418,7 @@ typedef enum { #define WMITLV_ALL_EVT_LIST(OP) \ OP(WMI_SERVICE_READY_EVENTID) \ OP(WMI_SERVICE_READY_EXT_EVENTID) \ + OP(WMI_SERVICE_READY_EXT2_EVENTID) \ OP(WMI_READY_EVENTID) \ OP(WMI_SCAN_EVENTID) \ OP(WMI_PDEV_TPC_CONFIG_EVENTID) \ @@ -1630,6 +1641,9 @@ typedef enum { OP(WMI_TWT_BTWT_REMOVE_STA_COMPLETE_EVENTID) \ OP(WMI_VDEV_DELETE_ALL_PEER_RESP_EVENTID) \ OP(WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID) \ + OP(WMI_ROAM_PREAUTH_START_EVENTID) \ + OP(WMI_GET_ELNA_BYPASS_EVENTID) \ + OP(WMI_ROAM_PMKID_REQUEST_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3076,6 +3090,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_DEAUTH_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param, wmi_roam_idle_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_IDLE_CONFIG_CMDID); +/* Roam Pre-Authentication completion status */ +#define WMITLV_TABLE_WMI_ROAM_PREAUTH_STATUS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_preauth_status_cmd_fixed_param, wmi_roam_preauth_status_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, pmkid, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PREAUTH_STATUS_CMDID); + +/** Roam PMKID request event */ +#define WMITLV_TABLE_WMI_ROAM_PMKID_REQUEST_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_pmkid_request_event_fixed_param, wmi_roam_pmkid_request_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_pmkid_request_tlv_param, pmkid_request, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PMKID_REQUEST_EVENTID); + /* Screen Status Command parameters */ #define WMITLV_TABLE_WMI_IDLE_TRIGGER_MONITOR_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param, wmi_idle_trigger_monitor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3097,6 +3123,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DSM_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_blacklist_with_timeout_tlv_param, blacklist_with_timeout, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BLACKLIST_EVENTID); +/* Roam Pre-Authentication Start Event */ +#define WMITLV_TABLE_WMI_ROAM_PREAUTH_START_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_preauth_start_event_fixed_param, wmi_roam_preauth_start_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PREAUTH_START_EVENTID); + #define WMITLV_TABLE_WMI_LPI_RESULT_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_lpi_result_event_fixed_param, wmi_lpi_result_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) @@ -4025,6 +4056,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RAP_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, oem_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DATA_CMDID); +/* Set ELNA BYPASS cmd */ +#define WMITLV_TABLE_WMI_SET_ELNA_BYPASS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_elna_bypass_cmd_fixed_param, wmi_set_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SET_ELNA_BYPASS_CMDID); + +/* Get ELNA BYPASS cmd */ +#define WMITLV_TABLE_WMI_GET_ELNA_BYPASS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param, wmi_get_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -4059,6 +4100,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_AVAILABLE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_CHAN_RF_CHARACTERIZATION_INFO, wmi_chan_rf_characterization_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); +/* SERVICE_READY_EXT2 event */ +#define WMITLV_TABLE_WMI_SERVICE_READY_EXT2_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param, wmi_service_ready_ext2_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); + #define WMITLV_TABLE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param, wmi_chan_rf_characterization_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_CHAN_RF_CHARACTERIZATION_INFO, wmi_chan_rf_characterization_info, WMITLV_SIZE_VAR) @@ -5453,6 +5499,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_RAP_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MGMT_OFFLOAD_EVENTID); +/* get ELNA BYPASS status event */ +#define WMITLV_TABLE_WMI_GET_ELNA_BYPASS_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param, wmi_get_elna_bypass_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_EVENTID); + + #ifdef __cplusplus } #endif diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index fe9438cbdd..4c21999559 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -708,6 +708,8 @@ typedef enum { DEPRECATED__WMI_ROAM_DSM_FILTER_CMDID, /** Enable or disable roaming triggers */ WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID, + /** Pre-Authentication completion status command */ + WMI_ROAM_PREAUTH_STATUS_CMDID, /** offload scan specific commands */ /** set offload scan AP profile */ @@ -985,6 +987,10 @@ typedef enum { WMI_GET_TPC_POWER_CMDID, /* Specify when to start monitoring for idle state */ WMI_IDLE_TRIGGER_MONITOR_CMDID, + /** set ELNA BYPASS status */ + WMI_SET_ELNA_BYPASS_CMDID, + /** get ELNA BYPASS status */ + WMI_GET_ELNA_BYPASS_CMDID, /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -1345,6 +1351,9 @@ typedef enum { WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID, + /** 2nd extension of SERVICE_READY msg with extra target capability info */ + WMI_SERVICE_READY_EXT2_EVENTID, + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV), @@ -1529,6 +1538,10 @@ typedef enum { WMI_ROAM_SCAN_STATS_EVENTID, /** Blacklisted AP information event */ WMI_ROAM_BLACKLIST_EVENTID, + /** Roam Pre-Authentication start event */ + WMI_ROAM_PREAUTH_START_EVENTID, + /** Roaming PMKID request event */ + WMI_ROAM_PMKID_REQUEST_EVENTID, /** P2P disc found */ WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), @@ -1731,6 +1744,9 @@ typedef enum { /** event to provide MU-EDCA Parameters (to update host's beacon config) */ WMI_MUEDCA_PARAMS_CONFIG_EVENTID, + /** event to get ELNA BYPASS status */ + WMI_GET_ELNA_BYPASS_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), /** upload H_CV info WMI event @@ -2542,6 +2558,10 @@ typedef struct { */ } wmi_service_ready_ext_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ +} wmi_service_ready_ext2_event_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param */ /* @@ -8462,6 +8482,11 @@ typedef struct { * added to AST table for traffic flow between mesh stations */ #define WMI_UNIFIED_VDEV_SUBTYPE_MESH_11S 0x6 +/* Subtype to indicate that the AP VAP is in smart monitor mode + * This is needed to differentiate in firmware betweem normal AP mode + * with smart monitor AP mode + */ +#define WMI_UNIFIED_VDEV_SUBTYPE_SMART_MON 0x7 /** values for vdev_start_request flags */ /** Indicates that AP VDEV uses hidden ssid. only valid for @@ -12142,7 +12167,7 @@ typedef struct { * Default value: 300 will be set if invalid value is given */ A_UINT32 stick_time_seconds; - /* Disassoc time threshold in milli seconds + /* Disassoc time threshold in milliseconds * This time threshold allows the target to judge whether the STA * should can move to another AP immediately, or if the STA has time * to calculate roaming candidates. @@ -12191,15 +12216,17 @@ typedef struct { /** unique id identifying the VDEV, generated by the caller */ A_UINT32 vdev_id; /** roam scan period value */ - A_UINT32 roam_scan_period; + A_UINT32 roam_scan_period; /* units = milliseconds */ /** Aging for Roam scans */ A_UINT32 roam_scan_age; /** Inactivity monitoring time to consider device is in inactive state with data count is less than roam_inactive_count */ - A_UINT32 inactivity_time_period; /* units = milli seconds */ + A_UINT32 inactivity_time_period; /* units = milliseconds */ /** Maximum allowed data packets count during inactivity_time_period */ A_UINT32 roam_inactive_count; /** New roam scan period after device is in inactivity state */ - A_UINT32 roam_scan_period_after_inactivity; /* units = milli seconds */ + A_UINT32 roam_scan_period_after_inactivity; /* units = milliseconds */ + /** roam full scan period value */ + A_UINT32 roam_full_scan_period; /* units = milliseconds */ } wmi_roam_scan_period_fixed_param; /** @@ -12270,6 +12297,8 @@ enum { WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384, WMI_AUTH_FT_RSNA_FILS_SHA256, WMI_AUTH_FT_RSNA_FILS_SHA384, + WMI_AUTH_WPA3_SAE, + WMI_AUTH_WPA3_OWE, }; typedef enum { @@ -12877,7 +12906,7 @@ typedef struct { A_UINT32 tlv_header; /** Blaclisted AP mac address */ wmi_mac_addr bssid; - /** How much time in milli seconds to keep AP in blacklist */ + /** How much time in milliseconds to keep AP in blacklist */ A_UINT32 timeout; } wmi_roam_blacklist_with_timeout_tlv_param; @@ -12893,6 +12922,21 @@ typedef struct { */ } wmi_roam_blacklist_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; + /** candidate AP mac address */ + wmi_mac_addr bssid; +} wmi_roam_pmkid_request_tlv_param; + +/** WMI_ROAM_PMKID_REQUEST_EVENT: generated whenever FW needs the PMKID while roaming **/ +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_pmkid_request_event_fixed_param */ + A_UINT32 vdev_id; + /* This TLV is followed by further TLVs: + * wmi_roam_pmkid_request_tlv_param pmkid_request[] + */ +} wmi_roam_pmkid_request_event_fixed_param; + /** WMI_ROAM_EVENT: roam event triggering the host roam logic. * generated when ever a better AP is found in the recent roam scan (or) * when beacon miss is detected (or) when a DEAUTH/DISASSOC is received @@ -24289,6 +24333,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_TWT_BTWT_INVITE_STA_CMDID); WMI_RETURN_STRING(WMI_TWT_BTWT_REMOVE_STA_CMDID); WMI_RETURN_STRING(WMI_OEM_DATA_CMDID); + WMI_RETURN_STRING(WMI_ROAM_PREAUTH_STATUS_CMDID); + WMI_RETURN_STRING(WMI_SET_ELNA_BYPASS_CMDID); + WMI_RETURN_STRING(WMI_GET_ELNA_BYPASS_CMDID); } return "Invalid WMI cmd"; @@ -25657,6 +25704,30 @@ typedef enum { */ #define WLAN_PDEV_MAX_NUM_BSSID_DISALLOW_LIST 28 +/** Roam Pre-Authentication completion status */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_preauth_status_cmd_fixed_param */ + A_UINT32 vdev_id; + /* preauth_status, 0 - Success, Non Zero - Failure + * Refer to IEEE Std 802.11-2016 Table 9-46 for meaning of status values. + */ + A_UINT32 preauth_status; + /* AP BSSID for which pre-authentication is completed */ + wmi_mac_addr candidate_ap_bssid; + /** + * PMKID computed after successful pre-authentication. This is valid only if preauth_status is success + * A_UINT8 pmkid[]; + */ +} wmi_roam_preauth_status_cmd_fixed_param; + +/** Roam Pre-Authentication start event */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_preauth_start_event_fixed_param */ + A_UINT32 vdev_id; + /* AP BSSID for which host needs to start pre-authentication */ + wmi_mac_addr candidate_ap_bssid; +} wmi_roam_preauth_start_event_fixed_param; + typedef struct { /* * The timestamp is in units of ticks of a 19.2MHz clock. @@ -27281,6 +27352,32 @@ typedef struct { A_UINT32 valid_fields; } wlanfw_iface_combination; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_set_elna_bypass_cmd_fixed_param */ + A_UINT32 tlv_header; + /* VDEV identifier */ + A_UINT32 vdev_id; + /** 1-Enable, 0-Disable */ + A_UINT32 en_dis; +} wmi_set_elna_bypass_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param */ + A_UINT32 tlv_header; + /* VDEV identifier */ + A_UINT32 vdev_id; +} wmi_get_elna_bypass_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param */ + /* VDEV identifier */ + A_UINT32 vdev_id; + /** 1-Enable, 0-Disable */ + A_UINT32 en_dis; +} wmi_get_elna_bypass_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9788da4cb9..bb206cce7c 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_ 692 +#define __WMI_REVISION_ 698 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work