diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 21960d2e23b9..3a8251bb9ddc 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -210,7 +210,7 @@ typedef enum { WMI_SERVICE_CHAN_LOAD_INFO=128, /* The values in WMI_CHAN_INFO_EVENTID is the difference in cycle counters */ WMI_SERVICE_TX_PPDU_INFO_STATS_SUPPORT=129, /* support to report tx ppdu info stats via htt events */ WMI_SERVICE_VDEV_LIMIT_OFFCHAN_SUPPORT=130, /* support to report the offchannel duration limiting capability on connected interface */ - + WMI_SERVICE_FILS_SUPPORT=131, /* support for FILS */ /******* ADD NEW SERVICES HERE *******/ WMI_MAX_EXT_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 4fa05f5a4e84..d073cb30df95 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -846,6 +846,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_roam_fils_synch_tlv_param, WMITLV_TAG_STRUC_wmi_gtk_offload_extended_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_bg_scan_roaming_param, } WMITLV_TAG_ID; /* @@ -1506,7 +1507,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_MODE); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_scan_rssi_threshold_fixed_param, wmi_roam_scan_rssi_threshold_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_extended_threshold_param, extended_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_earlystop_rssi_thres_param, earlystop_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_dense_thres_param, dense_param, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_dense_thres_param, dense_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_bg_scan_roaming_param, bg_scan_param, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_RSSI_THRESHOLD); @@ -4531,12 +4533,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLAN_COEX_BT_ACTIVITY_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_therm_throt_level_stats_info, therm_throt_level_stats_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_THERM_THROT_STATS_EVENTID); - -/* UNIT-TEST Event */ + +/* UNIT-TEST Event */ #define WMITLV_TABLE_WMI_UNIT_TEST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_unit_test_event_fixed_param, wmi_unit_test_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) -WMITLV_CREATE_PARAM_STRUC(WMI_UNIT_TEST_EVENTID); + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_UNIT_TEST_EVENTID); #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e7e25152d683..f22b399eaee7 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2744,9 +2744,9 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_start_scan_cmd_fixed_param */ - /** Scan ID */ + /** Scan ID (lower 16 bits) MSB 4 bits is used to identify scan client based on enum WMI_SCAN_CLIENT_ID */ A_UINT32 scan_id; - /** Scan requestor ID */ + /** Scan requestor ID (lower 16 bits) is used by scan client to classify the scan source, reason, ...etc */ A_UINT32 scan_req_id; /** VDEV id(interface) that is requesting scan */ A_UINT32 vdev_id; @@ -3113,7 +3113,7 @@ typedef struct { typedef struct { A_UINT32 tlv_header; A_UINT32 pmk_len; - A_UINT8 pmk[WMI_MAX_PMK_LEN];/* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, + A_UINT8 pmk[WMI_MAX_PMK_LEN];/* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, in spite of the automatic byte-swap applied to WMI messages during download*/ A_UINT32 pmkid_len; A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; @@ -3128,7 +3128,7 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_update_pmk_cache_cmd_fixed_param */ - A_UINT32 op_flag; //option to flush all the cache at once + A_UINT32 op_flag; //option to flush all the cache at once A_UINT32 vdev_id; A_UINT32 num_cache; /** @@ -3143,7 +3143,7 @@ typedef struct { #define WMI_FILS_MAX_RRK_LEN 64 #define WMI_FILS_MAX_RIK_LEN 64 -/* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, +/* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, in spite of the automatic byte-swap applied to WMI messages during download*/ typedef struct { @@ -3166,30 +3166,30 @@ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_fils_offload_tlv_param */ A_UINT32 flags; wmi_erp_info vdev_erp_info; -} wmi_roam_fils_offload_tlv_param; +} wmi_roam_fils_offload_tlv_param; typedef struct { A_UINT32 tlv_header; /** tag WMITLV_TAG_STRUC_wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param**/ A_UINT32 flags; A_UINT32 vdev_id; A_UINT32 size; - A_UINT32 pkt_type; // filled using enum wmi_fils_hlp_pkt_type + A_UINT32 pkt_type; // filled using enum wmi_fils_hlp_pkt_type // A_UINT8 fils_hlp_pkt[]; } wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param; #define WMI_MAX_KEK_LEN 64 -#define GTK_OFFLOAD_KEK_EXTENDED_BYTES WMI_MAX_KEK_LEN /*KEK len has been increased to 64 to support FILS security. +#define GTK_OFFLOAD_KEK_EXTENDED_BYTES WMI_MAX_KEK_LEN /*KEK len has been increased to 64 to support FILS security. To not break backward compatibility, new GTK_OFFLOAD_KEK_EXTENDED_BYTES has been defined without modifying old GTK_OFFLOAD_KEK_BYTES */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_fils_synch_tlv_param */ - A_UINT32 update_erp_next_seq_num;// Boolean denoting whether next erp_seq_num changed or not. + A_UINT32 update_erp_next_seq_num;// Boolean denoting whether next erp_seq_num changed or not. A_UINT32 next_erp_seq_num; - A_UINT32 kek_len; + A_UINT32 kek_len; A_UINT8 kek[WMI_MAX_KEK_LEN]; - A_UINT32 pmk_len; + A_UINT32 pmk_len; A_UINT8 pmk[WMI_MAX_PMK_LEN]; - A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; + A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; A_UINT8 realm[WMI_FILS_MAX_REALM_LEN]; A_UINT32 realm_len; } wmi_roam_fils_synch_tlv_param; @@ -9453,6 +9453,7 @@ typedef struct { * wmi_roam_scan_extended_threshold_param extended_param; * wmi_roam_earlystop_rssi_thres_param earlystop_param; * wmi_roam_dense_thres_param dense_param; + * wmi_roam_bg_scan_roaming_param bg_scan_param; */ } wmi_roam_scan_rssi_threshold_fixed_param; @@ -9552,6 +9553,19 @@ enum { WMI_AUTH_RSNA_FILS_SHA384, }; +typedef enum { + WMI_SCAN_CLIENT_NLO = 0x1, /* 1 */ + WMI_SCAN_CLIENT_EXTSCAN, /* 2 */ + WMI_SCAN_CLIENT_ROAM, /* 3 */ + WMI_SCAN_CLIENT_P2P, /* 4 */ + WMI_SCAN_CLIENT_LPI, /* 5 */ + WMI_SCAN_CLIENT_NAN, /* 6 */ + WMI_SCAN_CLIENT_ANQP, /* 7 */ + WMI_SCAN_CLIENT_OBSS, /* 8 */ + WMI_SCAN_CLIENT_PLM, /* 9 */ + WMI_SCAN_CLIENT_HOST, /* 10 */ +} WMI_SCAN_CLIENT_ID; + typedef struct { /** authentication mode (defined above) */ A_UINT32 rsn_authmode; @@ -9639,6 +9653,15 @@ typedef struct { A_UINT32 roam_dense_traffic_thres; } wmi_roam_dense_thres_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_bg_scan_roaming_param */ + A_UINT32 tlv_header; + /** rssi threshold in dBm below which roaming will be triggered during background scan(non-roam scan). 0 will disable this threshold */ + A_UINT32 roam_bg_scan_bad_rssi_thresh; + /** bitmap for which scan client will enable/disable background roaming. bit position is mapped to the enum WMI_SCAN_CLIENT_ID. 1 = enable, 0 = disable */ + A_UINT32 roam_bg_scan_client_bitmap; +} wmi_roam_bg_scan_roaming_param; + /** Beacon filter wmi command info */ #define BCN_FLT_MAX_SUPPORTED_IES 256 @@ -11721,14 +11744,14 @@ typedef struct { A_UINT8 replay_counter[GTK_REPLAY_COUNTER_BYTES]; /* replay counter for re-key */ } WMI_GTK_OFFLOAD_CMD_fixed_param; -typedef struct { +typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_gtk_offload_extended_tlv_param */ A_UINT32 vdev_id; /** unique id identifying the VDEV */ A_UINT32 flags; /* control flags, GTK offload command use high byte */ A_UINT32 kek_len; A_UINT8 KEK[GTK_OFFLOAD_KEK_EXTENDED_BYTES]; /* key encryption key */ A_UINT8 KCK[GTK_OFFLOAD_KCK_BYTES]; /* key confirmation key */ - A_UINT8 replay_counter[GTK_REPLAY_COUNTER_BYTES]; /* replay counter for re-key */ + A_UINT8 replay_counter[GTK_REPLAY_COUNTER_BYTES]; /* replay counter for re-key */ } wmi_gtk_offload_fils_tlv_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 3974af3cb6bd..c3a6fe96380a 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_ 420 +#define __WMI_REVISION_ 421 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work