summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortinlin <tinlin@codeaurora.org>2017-11-21 12:40:58 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-28 02:48:01 -0800
commit50dfebf8647eaa0923b3457301a09a7cae181d39 (patch)
treedaa9af9f087abca58001c4bb2c9137038e12db72
parent6eb12dc08e943965cbe600719b2263d4d302d4c8 (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.h27
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h109
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
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