diff --git a/fw/htt.h b/fw/htt.h index 0389c15ffca1..f4b9b21cec5e 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -201,9 +201,10 @@ * 3.77 Add HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE msg. * 3.78 Add htt_ppdu_id def. * 3.79 Add HTT_NUM_AC_WMM def. + * 3.80 Add add WDS_FREE_COUNT bitfield in T2H PEER_UNMAP_V2 msg. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 79 +#define HTT_CURRENT_VERSION_MINOR 80 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -9454,7 +9455,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * |-----------------------------------------------------------------------| * | Peer Delete Duration | * |-----------------------------------------------------------------------| - * | Reserved_0 | + * | Reserved_0 | WDS Free Count | * |-----------------------------------------------------------------------| * | Reserved_1 | * |-----------------------------------------------------------------------| @@ -9493,6 +9494,9 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * Bits 31:0 * Purpose: Time taken to delete peer, in msec, * Used for monitoring / debugging PEER delete response delay + * - PEER_WDS_FREE_COUNT + * Bits 15:0 + * Purpose: Count of WDS entries deleted associated to peer deleted */ #define HTT_RX_PEER_UNMAP_V2_VDEV_ID_M HTT_RX_PEER_MAP_V2_VDEV_ID_M @@ -9509,6 +9513,9 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_M 0xffffffff #define HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_S 0 +#define HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_M 0x0000ffff +#define HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_S 0 + #define HTT_RX_PEER_UNMAP_V2_VDEV_ID_SET HTT_RX_PEER_MAP_V2_VDEV_ID_SET #define HTT_RX_PEER_UNMAP_V2_VDEV_ID_GET HTT_RX_PEER_MAP_V2_VDEV_ID_GET @@ -9526,9 +9533,18 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_GET(word) \ (((word) & HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_M) >> HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_S) +#define HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT, value); \ + (word) |= (value) << HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_S; \ + } while (0) +#define HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_GET(word) \ + (((word) & HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_M) >> HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_S) + #define HTT_RX_PEER_UNMAP_V2_MAC_ADDR_OFFSET 4 /* bytes */ #define HTT_RX_PEER_UNMAP_V2_NEXT_HOP_OFFSET 8 /* bytes */ #define HTT_RX_PEER_UNMAP_V2_PEER_DELETE_DURATION_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_UNMAP_V2_PEER_WDS_FREE_COUNT_OFFSET 16 /* bytes */ #define HTT_RX_PEER_UNMAP_V2_BYTES 28 diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d919898987e8..6b706c4480b4 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1055,6 +1055,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_rnr_bss_tbtt_info, WMITLV_TAG_STRUC_WMI_MAC_PHY_CAPABILITIES_EXT, WMITLV_TAG_STRUC_WMI_HAL_REG_CAPABILITIES_EXT2, + WMITLV_TAG_STRUC_wmi_roam_pmk_cache_synch_tlv_param, } WMITLV_TAG_ID; /* @@ -4602,7 +4603,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_EVENTID); 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_roam_fils_synch_tlv_param, roam_fils_synch_info, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_key_material_ext, key_ext, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_key_material_ext, key_ext, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_pmk_cache_synch_tlv_param, roam_pmk_cache_synch_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_EVENTID); /* Roam Synch frame Event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ad15e990c0d3..5c00b0792d83 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4573,9 +4573,19 @@ typedef struct { } 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. -*/ + * FW sends PMK cache of roamed candidate to host to sync pmk cache with host + */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_pmk_cache_synch_tlv_param */ + A_UINT32 pmk_len; + A_UINT8 pmk[WMI_MAX_PMK_LEN]; + A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; +} wmi_roam_pmk_cache_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. + */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_update_whal_mib_stats_event_fixed_param */ /** ack count, it is an incremental number, not accumulated number */ @@ -7976,6 +7986,8 @@ typedef struct { /** peer MAC address */ wmi_mac_addr peer_macaddr; A_UINT32 key_type; /* use standard cipher types - see WMI_CIPHER_ defs */ + /** key index **/ + A_UINT32 key_ix; } wmi_peer_tx_pn_request_cmd_fixed_param; typedef struct { @@ -7992,6 +8004,8 @@ typedef struct { * how many bytes within pn[] are filled with valid data. */ A_UINT8 pn[16]; + /** key index **/ + A_UINT32 key_ix; } wmi_peer_tx_pn_response_event_fixed_param; typedef struct { @@ -13641,6 +13655,7 @@ typedef struct { A_UINT32 max_mlme_sw_retries; /* maximum number of software retries for preauth and reassoc req */ A_UINT32 no_ack_timeout; /* In msec. duration to wait before another SW retry made if no ack seen for previous frame */ A_UINT32 roam_candidate_validity_time; /* In msec. validity duration of each entry in roam cache. If the value is 0x0, this field should be disregarded. */ + A_UINT32 roam_to_current_bss_disable; /* Disable roaming to current bss */ } wmi_roam_offload_tlv_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b29d05309037..f30e9c3edcc6 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_ 801 +#define __WMI_REVISION_ 804 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work