diff options
| author | tinlin <tinlin@codeaurora.org> | 2017-11-21 12:40:58 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-11-28 02:48:01 -0800 |
| commit | 50dfebf8647eaa0923b3457301a09a7cae181d39 (patch) | |
| tree | daa9af9f087abca58001c4bb2c9137038e12db72 | |
| parent | 6eb12dc08e943965cbe600719b2263d4d302d4c8 (diff) | |
qcacld-2.0: CL 3298756 - Update fw common interface files
Add a series of wmi roam related struct
Change-Id: I02aa176e7931c4f44b44c4c8600bbddb0e430913
CRs-fixed: 865207
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 27 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 109 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 |
3 files changed, 134 insertions, 4 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index b60f11db995e..966b52998642 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -833,6 +833,12 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_limit_offchan_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_roam_rssi_rejection_oce_config_param, WMITLV_TAG_STRUC_wmi_unit_test_event_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_fils_offload_tlv_param, + WMITLV_TAG_STRUC_wmi_pdev_update_pmk_cache_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pmk_cache, + 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_ID; /* @@ -1168,6 +1174,8 @@ typedef enum { OP(WMI_OEM_DMA_RING_CFG_REQ_CMDID) \ OP(WMI_PDEV_BSS_CHAN_INFO_REQUEST_CMDID) \ OP(WMI_VDEV_LIMIT_OFFCHAN_CMDID) \ + OP(WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID) \ + OP(WMI_PDEV_UPDATE_PMK_CACHE_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -1476,7 +1484,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RMV_BCN_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_11r_offload_tlv_param, offload_11r_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_ese_offload_tlv_param, offload_ese_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_tlv_buf_len_param, assoc_ie_len_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, assoc_ie_buf, WMITLV_SIZE_VAR) + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, assoc_ie_buf, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_fils_offload_tlv_param, offload_fils_info_param, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_MODE); /* Roam scan Rssi Threshold Cmd */ @@ -1660,6 +1669,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_CHANNEL_CMDID); +#define WMITLV_TABLE_WMI_PDEV_UPDATE_PMK_CACHE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_update_pmk_cache_cmd_fixed_param, wmi_pdev_update_pmk_cache_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pmk_cache, pmk_cache, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UPDATE_PMK_CACHE_CMDID); + +#define WMITLV_TABLE_WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param, wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, fils_hlp_pkt, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID); + /* Echo Cmd */ #define WMITLV_TABLE_WMI_ECHO_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_echo_cmd_fixed_param, wmi_echo_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -1700,7 +1719,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_P2P_GO_SET_BEACON_IE); /* GTK offload Cmd */ #define WMITLV_TABLE_WMI_GTK_OFFLOAD_CMDID(id,op,buf,len) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_GTK_OFFLOAD_CMD_fixed_param, WMI_GTK_OFFLOAD_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_GTK_OFFLOAD_CMD_fixed_param, WMI_GTK_OFFLOAD_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_gtk_offload_fils_tlv_param, wmi_fils_gtk_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_GTK_OFFLOAD_CMDID); @@ -3583,7 +3603,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, status, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, reassoc_req_frame, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_hw_mode_transition_event_fixed_param, hw_mode_transition_fixed_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_hw_mode_response_vdev_mac_entry, wmi_pdev_set_hw_mode_response_vdev_mac_mapping, WMITLV_SIZE_VAR) + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_hw_mode_response_vdev_mac_entry, wmi_pdev_set_hw_mode_response_vdev_mac_mapping, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_fils_synch_tlv_param, roam_fils_synch_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_EVENTID); /* WOW Wakeup Host Event */ diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index 6d0e82acde9c..07f0ff835c6c 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -372,6 +372,10 @@ typedef enum { WMI_PDEV_DIV_GET_RSSI_ANTID_CMDID, /* get bss chan info */ WMI_PDEV_BSS_CHAN_INFO_REQUEST_CMDID, + /* update pmk cache info */ + WMI_PDEV_UPDATE_PMK_CACHE_CMDID, + /* update fils HLP */ + WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -3119,6 +3123,99 @@ typedef struct { /* followed by WMITLV_TAG_ARRAY_BYTE */ } wmi_diag_event_fixed_param; +#define WMI_MAX_PMKID_LEN 16 +#define WMI_MAX_PMK_LEN 64 + +#define WMI_PMK_CACHE_CAT_FLAG_BSSID 0x1 +#define WMI_PMK_CACHE_CAT_FLAG_SSID_CACHE_ID 0x2 + +#define WMI_PMK_CACHE_ACTION_FLAG_ADD_ENTRY 0x1 +#define WMI_PMK_CACHE_ACTION_FLAG_DEL_ENTRY 0x2 + +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, + in spite of the automatic byte-swap applied to WMI messages during download*/ + A_UINT32 pmkid_len; + A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; + wmi_mac_addr bssid; + wmi_ssid ssid; + A_UINT32 cache_id; + A_UINT32 cat_flag; // whether (bssid) or (ssid,cache_id) is valid + A_UINT32 action_flag; // add/delete the entry +} wmi_pmk_cache; + +#define WMI_PMK_CACHE_OP_FLAG_FLUSH_ALL 0x1 + +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 vdev_id; + A_UINT32 num_cache; + /** + * TLV (tag length value) parameters follow the update_pmk_cache cmd + * structure. The TLV's are: + * wmi_pmk_cache cache_list[]; + */ +} wmi_pdev_update_pmk_cache_cmd_fixed_param; + +#define WMI_FILS_MAX_USERNAME_LEN 16 +#define WMI_FILS_MAX_REALM_LEN 256 +#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, +in spite of the automatic byte-swap applied to WMI messages during download*/ + +typedef struct { + A_UINT8 username[WMI_FILS_MAX_USERNAME_LEN]; + A_UINT32 username_length; + A_UINT32 next_erp_seq_num; + A_UINT8 rRk[WMI_FILS_MAX_RRK_LEN]; + A_UINT32 rRk_length; + A_UINT8 rIk[WMI_FILS_MAX_RIK_LEN]; + A_UINT32 rIk_length; + A_UINT8 realm[WMI_FILS_MAX_REALM_LEN]; + A_UINT32 realm_len; +} wmi_erp_info; + +enum wmi_fils_hlp_pkt_type { + WMI_FILS_HLP_PKT_TYPE_DHCP_DISCOVER = 1, +}; + +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; + +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_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. + 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 next_erp_seq_num; + A_UINT32 kek_len; + A_UINT8 kek[WMI_MAX_KEK_LEN]; + A_UINT32 pmk_len; + A_UINT8 pmk[WMI_MAX_PMK_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; + /* * If FW has multiple active channels due to MCC(multi channel concurrency), * then these stats are combined stats for all the active channels. @@ -9531,6 +9628,8 @@ enum { WMI_AUTH_RSNA_8021X_SHA256, WMI_AUTH_CCKM_WPA, WMI_AUTH_CCKM_RSNA, + WMI_AUTH_RSNA_FILS_SHA256, + WMI_AUTH_RSNA_FILS_SHA384, }; typedef struct { @@ -11703,6 +11802,16 @@ typedef struct { }WMI_GTK_OFFLOAD_CMD_fixed_param; 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 */ +} wmi_gtk_offload_fils_tlv_param; + +typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_PMF_OFFLOAD_SET_SA_QUERY_CMD_fixed_param */ A_UINT32 vdev_id; A_UINT32 sa_query_retry_interval; /* in msec */ diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 4b979d180c02..7618da7c8dd1 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/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_ 419 +#define __WMI_REVISION_ 420 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work |
