Loading fw/htt_stats.h +36 −1 Original line number Diff line number Diff line Loading @@ -1353,7 +1353,7 @@ typedef enum { HTT_STATS_PREAM_HT, HTT_STATS_PREAM_VHT, HTT_STATS_PREAM_HE, HTT_STATS_PREAM_RSVD, HTT_STATS_PREAM_EHT, HTT_STATS_PREAM_RSVD1, HTT_STATS_PREAM_COUNT, Loading Loading @@ -3525,6 +3525,7 @@ typedef struct { #define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2 /* 12, 13 */ #define HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2 /* 14, 15 */ #define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4 Loading @@ -3551,6 +3552,18 @@ typedef struct { ((_var) |= ((_val) << HTT_TX_PDEV_RATE_STATS_MAC_ID_S)); \ } while (0) /* * Introduce new TX counters to support 320MHz support and punctured modes */ typedef enum { HTT_TX_PDEV_STATS_PUNCTURED_NONE = 0, HTT_TX_PDEV_STATS_PUNCTURED_20 = 1, HTT_TX_PDEV_STATS_PUNCTURED_40 = 2, HTT_TX_PDEV_STATS_PUNCTURED_80 = 3, HTT_TX_PDEV_STATS_PUNCTURED_120 = 4, HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS = 5 } HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_TYPE; typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -3652,6 +3665,11 @@ typedef struct { A_UINT32 ax_mu_mimo_tx_gi_ext[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS]; /* 11AX VHT DL MU OFDMA extended TX guard interval stats for MCS 12/13 */ A_UINT32 ofdma_tx_gi_ext[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS]; /* Stats for MCS 14/15 */ A_UINT32 tx_mcs_ext_2[HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 tx_bw_320mhz; A_UINT32 tx_gi_ext_2[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 tx_su_punctured_mode[HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS]; } htt_tx_pdev_rate_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_RATE Loading @@ -3672,12 +3690,14 @@ typedef struct { #define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8 #define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2 /* 12, 13 */ #define HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2 /* 14, 15 */ #define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT 14 /* 0-13 */ #define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4 #define HTT_RX_PDEV_STATS_TOTAL_BW_COUNTERS \ (HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS + HTT_RX_PDEV_STATS_NUM_BW_COUNTERS) #define HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS 5 /* 20, 40, 80, 160, 320Mhz */ #define HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 8 #define HTT_RX_PDEV_STATS_ULMUMIMO_NUM_SPATIAL_STREAMS 8 #define HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT Loading Loading @@ -3717,6 +3737,16 @@ typedef struct { ((_var) |= ((_val) << HTT_RX_PDEV_RATE_STATS_MAC_ID_S)); \ } while (0) /* Introduce new RX counters to support 320MHZ support and punctured modes */ typedef enum { HTT_RX_PDEV_STATS_PUNCTURED_NONE = 0, HTT_RX_PDEV_STATS_PUNCTURED_20 = 1, HTT_RX_PDEV_STATS_PUNCTURED_40 = 2, HTT_RX_PDEV_STATS_PUNCTURED_80 = 3, HTT_RX_PDEV_STATS_PUNCTURED_120 = 4, HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS = 5 } HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_TYPE; typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -3861,6 +3891,11 @@ typedef struct { A_UINT32 rx_11ax_su_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; A_UINT32 rx_11ax_mu_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; A_UINT32 rx_11ax_dl_ofdma_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; /* MCS 14,15 */ A_UINT32 rx_mcs_ext_2[HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 rx_bw_ext[HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS]; A_UINT32 rx_gi_ext_2[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS][HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 rx_su_punctured_mode[HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS]; } htt_rx_pdev_rate_ext_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT Loading fw/wlan_module_ids.h +2 −1 Original line number Diff line number Diff line /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * Loading Loading @@ -120,6 +120,7 @@ typedef enum { WLAN_MODULE_SHO, /* 0x56 */ /* SAP HW offload */ WLAN_MODULE_MLO_MGR, /* 0x57 */ /* MLO manager */ WLAN_MODULE_PEER_INIT, /* 0x58 */ /* peer init connection handling */ WLAN_MODULE_STA_MLO_PS, /* 0x59 */ /* MLO PS manager */ WLAN_MODULE_ID_MAX, Loading fw/wmi_services.h +1 −0 Original line number Diff line number Diff line Loading @@ -533,6 +533,7 @@ typedef enum { WMI_SERVICE_11AX_TDLS_SUPPORT = 288, /* Indicates FW supports 11ax TDLS. Host should enable 11ax on TDLS only when FW indicates the support. */ WMI_SERVICE_11BE = 289, /* Indicates FW supports 11be */ WMI_SERVICE_BIG_DATA_SUPPORT = 290, /* Indicates FW supports Big Data feature */ WMI_SERVICE_EAPOL_OVER_NWIFI = 291, /* Indicates FW supports sending eapol frames in native wifi mode even when the vdev is brought up in raw ethernet mode */ WMI_MAX_EXT2_SERVICE Loading fw/wmi_tlv_defs.h +23 −3 Original line number Diff line number Diff line Loading @@ -1153,6 +1153,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_extd_stats, WMITLV_TAG_STRUC_wmi_peer_assoc_mlo_params, WMITLV_TAG_STRUC_wmi_vdev_smart_monitor_event_fixed_param, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, WMITLV_TAG_STRUC_wmi_mgmt_rx_fw_consumed_hdr, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, } WMITLV_TAG_ID; /* Loading Loading @@ -1615,6 +1618,7 @@ typedef enum { OP(WMI_MLO_READY_CMDID) \ OP(WMI_MLO_TEARDOWN_CMDID) \ OP(WMI_VDEV_IGMP_OFFLOAD_CMDID) \ OP(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -1881,6 +1885,7 @@ typedef enum { OP(WMI_MLO_SETUP_COMPLETE_EVENTID) \ OP(WMI_MLO_TEARDOWN_COMPLETE_EVENTID) \ OP(WMI_VDEV_SMART_MONITOR_EVENTID) \ OP(WMI_MGMT_RX_FW_CONSUMED_EVENTID) \ /* add new EVT_LIST elements above this line */ Loading Loading @@ -2553,14 +2558,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CLEAR_LINK_STATS_CMDID); /* Request stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_link_stats_cmd_fixed_param, wmi_request_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_link_stats_cmd_fixed_param, wmi_request_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_LINK_STATS_CMDID); /* Request for unified Link Layer and get station stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_unified_ll_get_sta_cmd_fixed_param, wmi_request_unified_ll_get_sta_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID); Loading Loading @@ -4654,6 +4663,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, WMI_IPV4_ADDR, mc_ipv4_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IGMP_OFFLOAD_CMDID); /* WMI CMD to receive the management filter criteria from the host for Rx REO */ #define WMITLV_TABLE_WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading Loading @@ -4896,9 +4910,15 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID); #define WMITLV_TABLE_WMI_MGMT_RX_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr, wmi_mgmt_rx_hdr, hdr, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, wmi_mgmt_rx_reo_params, reo_params, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* Management Rx FW Consumed Event */ #define WMITLV_TABLE_WMI_MGMT_RX_FW_CONSUMED_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_fw_consumed_hdr, wmi_mgmt_rx_fw_consumed_hdr, hdr, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_FW_CONSUMED_EVENTID); /* TBTT offset Event */ #define WMITLV_TABLE_WMI_TBTTOFFSET_UPDATE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param, wmi_tbtt_offset_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ Loading fw/wmi_unified.h +197 −7 Original line number Diff line number Diff line Loading @@ -678,6 +678,8 @@ typedef enum { WMI_FD_TMPL_CMDID, /** Transmit QoS null Frame over wmi interface */ WMI_QOS_NULL_FRAME_TX_SEND_CMDID, /** WMI CMD to receive the management filter criteria from the host for RX REO */ WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID, /** commands to directly control ba negotiation directly from host. only used in test mode */ Loading Loading @@ -1686,6 +1688,9 @@ typedef enum { /** Event for QoS null frame TX completion */ WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID, /** WMI event for Firmware Consumed/Dropped Rx management frames indication */ WMI_MGMT_RX_FW_CONSUMED_EVENTID, /* ADDBA Related WMI Events*/ /** Indication the completion of the prior Loading Loading @@ -3826,20 +3831,26 @@ typedef struct { * 1-> MLO support * 2-3-> Reserved * Refer to the WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION macros. * Bits 6 - is_sap_connected_d3wow_enabled * Bit 6 - is_sap_connected_d3wow_enabled * Enable D3WoW for SAP w/ clients connected * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_SAP_CONNECTED_D3WOW_ENABLED * GET/SET macros. * Bits 7 - is_go_connected_d3wow_enabled * Bit 7 - is_go_connected_d3wow_enabled * Enable D3WoW for GO w/ clients connected * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_GO_CONNECTED_D3WOW_ENABLED * GET/SET macros. * Bit 8 - enable_dynamic_pcie_gen_speed_switch * enable dynamic pcie gen speed switch * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED * GET/SET macros. * * Bits 31:8 - Reserved * Bits 31:9 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate Loading Loading @@ -4150,6 +4161,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAGS2_IS_GO_CONNECTED_D3WOW_ENABLED_SET(flags2, value) \ WMI_SET_BITS(flags2, 7, 1, value) #define WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED_GET(flags2) \ WMI_GET_BITS(flags2, 8, 1) #define WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED_SET(flags2, value) \ WMI_SET_BITS(flags2, 8, 1, value) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 0, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_SET(host_service_flags, val) \ Loading @@ -4175,6 +4191,11 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_REG_CC_EXT_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 4, 1, val) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_CHANNEL_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 5, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_CHANNEL_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 5, 1, val) typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ Loading Loading @@ -4631,9 +4652,6 @@ typedef enum { /* Extend 6ghz channel measure time */ #define WMI_SCAN_FLAG_EXT_6GHZ_EXTEND_MEASURE_TIME 0x00000400 /* Force unicast address in RA */ #define WMI_SCAN_FLAG_EXT_FORCE_UNICAST_RA 0x00000800 /** * Currently passive scan has higher priority than beacon and * beacon miss would happen irrespective of dwell time. Loading @@ -4643,6 +4661,9 @@ typedef enum { */ #define WMI_SCAN_FLAG_EXT_PASSIVE_SCAN_START_TIME_ENHANCE 0x00000800 /* Force unicast address in RA */ #define WMI_SCAN_FLAG_EXT_FORCE_UNICAST_RA 0x00001000 /** * new 6 GHz flags per chan (short ssid or bssid) in struct * wmi_hint_freq_short_ssid or wmi_hint_freq_bssid Loading Loading @@ -5053,6 +5074,79 @@ typedef struct { #define MAX_ANTENNA_EIGHT 8 /** Helper macro for params GET/SET of MGMT_RX_FW_CONSUMED_EVENTID */ #define WMI_MGMT_RX_FW_CONSUMED_PARAM_PEER_ID_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 0, 16) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_PEER_ID_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 0, 16, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_IEEE_LINK_ID_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 16, 3) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_IEEE_LINK_ID_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 16, 3, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_SUBTYPE_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 28, 4) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_SUBTYPE_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 28, 4, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_VALID_GET(mgmt_pkt_ctr_info) WMI_GET_BITS(mgmt_pkt_ctr_info, 15, 1) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_VALID_SET(mgmt_pkt_ctr_info, value) WMI_SET_BITS(mgmt_pkt_ctr_info, 15, 1, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_GET(mgmt_pkt_ctr_info) WMI_GET_BITS(mgmt_pkt_ctr_info, 16, 16) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_SET(mgmt_pkt_ctr_info, value) WMI_SET_BITS(mgmt_pkt_ctr_info, 16, 16, value) typedef struct { A_UINT32 tlv_header; /* WMITLV_TAG_STRUCT_wmi_mgmt_rx_fw_consumed_hdr */ A_UINT32 rx_tsf_l32; /* h/w assigned timestamp of the rx frame in micro sec */ A_UINT32 rx_tsf_u32 ;/* h/w assigned timestamp of the rx frame in micro sec */ A_UINT32 pdev_id; /* pdev_id for identifying the MAC the rx mgmt frame was received by */ /** * peer_info_subtype * * [15:0]: ml_peer_id, ML peer_id unique across chips * [18:16]: ieee_link_id, protocol link id on which the rx frame is received * [27:19]: reserved * [31:28]: subtype, subtype of the received MGMT frame */ A_UINT32 peer_info_subtype; A_UINT32 chan_freq; /* frequency in MHz of the channel on which this frame was received */ /* Timestamp (in micro sec) of the last fw consumed/dropped mgmt. frame, same across chips */ A_UINT32 global_timestamp; /** * mgmt_pkt_ctr_info * * [14:0]: reserved * [15]: mgmt_pkt_ctr_valid * [31:16]: mgmt_pkt_ctr, Sequence number of the last fw consumed mgmt frame */ A_UINT32 mgmt_pkt_ctr_info; } wmi_mgmt_rx_fw_consumed_hdr; /** Helper macro for param GET/SET of mgmt_rx_reo_params */ #define WMI_MGMT_RX_REO_PARAM_IEEE_LINK_ID_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 12, 3) #define WMI_MGMT_RX_REO_PARAM_IEEE_LINK_ID_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 12, 3, value) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_VALID_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 15, 1) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_VALID_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 15, 1, value) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 16, 16) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 16, 16, value) /** Data structure of the TLV to add in RX EVENTID for providing REO params * like global_timestamp and mgmt_pkt_ctr */ typedef struct { A_UINT32 tlv_header; /*TLV WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params*/ /* Timestamp (in micro sec) of the last fw forwarded mgmt. frame, same across chips */ A_UINT32 global_timestamp; /** * mgmt_pkt_ctr_link_info * * [11:0]: reserved * [14:12]: ieee_link_id, protocol link id on which the rx frame is received * [15]: mgmt_pkt_ctr_valid * [31:16]: mgmt_pkt_ctr, Sequence number of the last fw forwarded mgmt frame */ A_UINT32 mgmt_pkt_ctr_link_info; } wmi_mgmt_rx_reo_params; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr */ /** channel on which this frame is received (channel number) */ Loading Loading @@ -5107,8 +5201,30 @@ typedef struct { /* This TLV is optionally followed by array of struct: * wmi_rssi_ctl_ext rssi_ctl_ext; */ /* * This TLV is followed by struct: * wmi_mgmt_rx_reo_params reo_params;// MGMT rx REO params */ } wmi_mgmt_rx_hdr; /* WMI CMD to receive the management filter criteria from the host */ typedef struct { A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_mgmt_reo_filter_cmd_fixed_param */ A_UINT32 pdev_id; /* pdev_id for identifying the MAC */ /* filter: * Each bit represents the possible combination of frame type (2 bits) * and subtype (4 bits) * There would be 64 such combinations as per the 802.11 standard * For Exp : We have beacon frame, we will take the type and subtype * of this frame and concatenate the bits, it will give 6 bits * number. We need to go to that bit position in the below * 2 filter_low and filter_high bitmap and set the bit. */ A_UINT32 filter_low; A_UINT32 filter_high; } wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param; typedef enum { PKT_CAPTURE_MODE_DISABLE = 0, PKT_CAPTURE_MODE_MGMT_ONLY, Loading Loading @@ -8466,6 +8582,17 @@ typedef struct { A_UINT32 stats_clear_req_mask; /** identifies which peer stats to be cleared. Valid only while clearing PER_REER */ wmi_mac_addr peer_macaddr; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be cleared for the VDEVs in vdev_id_bitmap in the bitmap when * it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should * only be cleared for the peers with the MLD MAC addresses specified * in the array. */ } wmi_clear_link_stats_cmd_fixed_param; /* Link Stats configuration params. Trigger the link layer statistics collection*/ Loading Loading @@ -15772,6 +15899,13 @@ typedef struct { * 1 - To enable FT-IM */ A_UINT32 ft_im_for_deauth; /* * FW can prefer doing over-the-ds fast BSS transition instead of * over-the-air if associated and target AP are both capable of FT over DS. * 0 - To disable FT-over-DS * 1 - To enable FT-over-DS */ A_UINT32 ft_over_ds_enable; } wmi_roam_11r_offload_tlv_param; /* This TLV will be filled only in case of ESE */ Loading Loading @@ -16231,8 +16365,13 @@ typedef struct { /** consider roam trigger if connected AP rssi is worse than trigger_rssi_threshold */ A_INT32 trigger_rssi_threshold; /* Units in dbm*/ /* * Consider AP as roam candidate only if AP rssi is better than * Consider 2.4GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold * If valid (non-zero) cand_ap_min_rssi_threshold_5g and * cand_ap_min_rssi_threshold_6g values are provided, * then cand_ap_min_rssi_threshold should only be applied to 2.4 GHz APs. * But if cand_ap_min_rssi_threshold_5g and cand_ap_min_rssi_threshold_6g * are zeros, then cand_ap_min_rssi_threshold should be applied to all APs. */ A_INT32 cand_ap_min_rssi_threshold; /* Units in dbm */ /* Roam score delta in %. Loading @@ -16247,6 +16386,16 @@ typedef struct { Ex: Reason code in the BTM response frame Valid values are 0 - 255 */ A_UINT32 reason_code; /* * Consider 5GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold_5g */ A_INT32 cand_ap_min_rssi_threshold_5g; /* Units in dbm */ /* * Consider 6GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold_6g */ A_INT32 cand_ap_min_rssi_threshold_6g; /* Units in dbm */ } wmi_configure_roam_trigger_parameters; /** Loading Loading @@ -28579,6 +28728,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_MLO_READY_CMDID); WMI_RETURN_STRING(WMI_MLO_TEARDOWN_CMDID); WMI_RETURN_STRING(WMI_VDEV_IGMP_OFFLOAD_CMDID); WMI_RETURN_STRING(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID); } return "Invalid WMI cmd"; Loading Loading @@ -29599,6 +29749,7 @@ typedef enum _WMI_ADD_TWT_STATUS_T { WMI_ADD_TWT_STATUS_ROAM_IN_PROGRESS, /* Roaming in progress */ WMI_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS, /* Channel switch in progress */ WMI_ADD_TWT_STATUS_SCAN_IN_PROGRESS, /* Scan in progress */ WMI_ADD_TWT_STATUS_DIALOG_ID_BUSY, /* FW is in the process of handling this dialog */ } WMI_ADD_TWT_STATUS_T; typedef struct { Loading Loading @@ -32374,8 +32525,47 @@ typedef struct { * The rx_ts_reset flag will be set to 1 upon every reset of rx_start_ts. */ A_UINT32 rx_ts_reset; /* * MCS and Guard Interval. * MCS: For legacy mode only * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * 8: invalid entry * * GI: For Legacy mode only * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us * 4: invalid entry * * Bits 0:3 mcs * Bits 4:6 gi_type * Bits 7:31 reserved */ A_UINT32 mcs_gi_info; } wmi_peer_cfr_capture_event_fixed_param; #define WMI_CFR_MCS_GET(mcs_gi_info) \ WMI_GET_BITS(mcs_gi_info, 0, 4) #define WMI_CFR_MCS_SET(mcs_gi_info, value) \ WMI_SET_BITS(mcs_gi_info, 0, 4, value) #define WMI_CFR_GI_TYPE_GET(mcs_gi_info) \ WMI_GET_BITS(mcs_gi_info, 4, 3) #define WMI_CFR_GI_TYPE_SET(mcs_gi_info, value) \ WMI_SET_BITS(mcs_gi_info, 4, 3, value) #define WMI_UNIFIED_CHAIN_PHASE_MASK 0x0000ffff #define WMI_UNIFIED_CHAIN_PHASE_GET(tlv, chain_idx) \ ((A_UINT16) ((tlv)->chain_phase[chain_idx] & WMI_UNIFIED_CHAIN_PHASE_MASK)) Loading
fw/htt_stats.h +36 −1 Original line number Diff line number Diff line Loading @@ -1353,7 +1353,7 @@ typedef enum { HTT_STATS_PREAM_HT, HTT_STATS_PREAM_VHT, HTT_STATS_PREAM_HE, HTT_STATS_PREAM_RSVD, HTT_STATS_PREAM_EHT, HTT_STATS_PREAM_RSVD1, HTT_STATS_PREAM_COUNT, Loading Loading @@ -3525,6 +3525,7 @@ typedef struct { #define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2 /* 12, 13 */ #define HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2 /* 14, 15 */ #define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4 Loading @@ -3551,6 +3552,18 @@ typedef struct { ((_var) |= ((_val) << HTT_TX_PDEV_RATE_STATS_MAC_ID_S)); \ } while (0) /* * Introduce new TX counters to support 320MHz support and punctured modes */ typedef enum { HTT_TX_PDEV_STATS_PUNCTURED_NONE = 0, HTT_TX_PDEV_STATS_PUNCTURED_20 = 1, HTT_TX_PDEV_STATS_PUNCTURED_40 = 2, HTT_TX_PDEV_STATS_PUNCTURED_80 = 3, HTT_TX_PDEV_STATS_PUNCTURED_120 = 4, HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS = 5 } HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_TYPE; typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -3652,6 +3665,11 @@ typedef struct { A_UINT32 ax_mu_mimo_tx_gi_ext[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS]; /* 11AX VHT DL MU OFDMA extended TX guard interval stats for MCS 12/13 */ A_UINT32 ofdma_tx_gi_ext[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS]; /* Stats for MCS 14/15 */ A_UINT32 tx_mcs_ext_2[HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 tx_bw_320mhz; A_UINT32 tx_gi_ext_2[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 tx_su_punctured_mode[HTT_TX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS]; } htt_tx_pdev_rate_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_RATE Loading @@ -3672,12 +3690,14 @@ typedef struct { #define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8 #define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */ #define HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2 /* 12, 13 */ #define HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2 /* 14, 15 */ #define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT 14 /* 0-13 */ #define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4 #define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5 #define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4 #define HTT_RX_PDEV_STATS_TOTAL_BW_COUNTERS \ (HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS + HTT_RX_PDEV_STATS_NUM_BW_COUNTERS) #define HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS 5 /* 20, 40, 80, 160, 320Mhz */ #define HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 8 #define HTT_RX_PDEV_STATS_ULMUMIMO_NUM_SPATIAL_STREAMS 8 #define HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT Loading Loading @@ -3717,6 +3737,16 @@ typedef struct { ((_var) |= ((_val) << HTT_RX_PDEV_RATE_STATS_MAC_ID_S)); \ } while (0) /* Introduce new RX counters to support 320MHZ support and punctured modes */ typedef enum { HTT_RX_PDEV_STATS_PUNCTURED_NONE = 0, HTT_RX_PDEV_STATS_PUNCTURED_20 = 1, HTT_RX_PDEV_STATS_PUNCTURED_40 = 2, HTT_RX_PDEV_STATS_PUNCTURED_80 = 3, HTT_RX_PDEV_STATS_PUNCTURED_120 = 4, HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS = 5 } HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_TYPE; typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -3861,6 +3891,11 @@ typedef struct { A_UINT32 rx_11ax_su_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; A_UINT32 rx_11ax_mu_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; A_UINT32 rx_11ax_dl_ofdma_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT]; /* MCS 14,15 */ A_UINT32 rx_mcs_ext_2[HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 rx_bw_ext[HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS]; A_UINT32 rx_gi_ext_2[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS][HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS]; A_UINT32 rx_su_punctured_mode[HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS]; } htt_rx_pdev_rate_ext_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT Loading
fw/wlan_module_ids.h +2 −1 Original line number Diff line number Diff line /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * Loading Loading @@ -120,6 +120,7 @@ typedef enum { WLAN_MODULE_SHO, /* 0x56 */ /* SAP HW offload */ WLAN_MODULE_MLO_MGR, /* 0x57 */ /* MLO manager */ WLAN_MODULE_PEER_INIT, /* 0x58 */ /* peer init connection handling */ WLAN_MODULE_STA_MLO_PS, /* 0x59 */ /* MLO PS manager */ WLAN_MODULE_ID_MAX, Loading
fw/wmi_services.h +1 −0 Original line number Diff line number Diff line Loading @@ -533,6 +533,7 @@ typedef enum { WMI_SERVICE_11AX_TDLS_SUPPORT = 288, /* Indicates FW supports 11ax TDLS. Host should enable 11ax on TDLS only when FW indicates the support. */ WMI_SERVICE_11BE = 289, /* Indicates FW supports 11be */ WMI_SERVICE_BIG_DATA_SUPPORT = 290, /* Indicates FW supports Big Data feature */ WMI_SERVICE_EAPOL_OVER_NWIFI = 291, /* Indicates FW supports sending eapol frames in native wifi mode even when the vdev is brought up in raw ethernet mode */ WMI_MAX_EXT2_SERVICE Loading
fw/wmi_tlv_defs.h +23 −3 Original line number Diff line number Diff line Loading @@ -1153,6 +1153,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_extd_stats, WMITLV_TAG_STRUC_wmi_peer_assoc_mlo_params, WMITLV_TAG_STRUC_wmi_vdev_smart_monitor_event_fixed_param, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, WMITLV_TAG_STRUC_wmi_mgmt_rx_fw_consumed_hdr, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, } WMITLV_TAG_ID; /* Loading Loading @@ -1615,6 +1618,7 @@ typedef enum { OP(WMI_MLO_READY_CMDID) \ OP(WMI_MLO_TEARDOWN_CMDID) \ OP(WMI_VDEV_IGMP_OFFLOAD_CMDID) \ OP(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -1881,6 +1885,7 @@ typedef enum { OP(WMI_MLO_SETUP_COMPLETE_EVENTID) \ OP(WMI_MLO_TEARDOWN_COMPLETE_EVENTID) \ OP(WMI_VDEV_SMART_MONITOR_EVENTID) \ OP(WMI_MGMT_RX_FW_CONSUMED_EVENTID) \ /* add new EVT_LIST elements above this line */ Loading Loading @@ -2553,14 +2558,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CLEAR_LINK_STATS_CMDID); /* Request stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_link_stats_cmd_fixed_param, wmi_request_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_link_stats_cmd_fixed_param, wmi_request_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_LINK_STATS_CMDID); /* Request for unified Link Layer and get station stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_unified_ll_get_sta_cmd_fixed_param, wmi_request_unified_ll_get_sta_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID); Loading Loading @@ -4654,6 +4663,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, WMI_IPV4_ADDR, mc_ipv4_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IGMP_OFFLOAD_CMDID); /* WMI CMD to receive the management filter criteria from the host for Rx REO */ #define WMITLV_TABLE_WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading Loading @@ -4896,9 +4910,15 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID); #define WMITLV_TABLE_WMI_MGMT_RX_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr, wmi_mgmt_rx_hdr, hdr, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, wmi_mgmt_rx_reo_params, reo_params, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* Management Rx FW Consumed Event */ #define WMITLV_TABLE_WMI_MGMT_RX_FW_CONSUMED_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_fw_consumed_hdr, wmi_mgmt_rx_fw_consumed_hdr, hdr, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_FW_CONSUMED_EVENTID); /* TBTT offset Event */ #define WMITLV_TABLE_WMI_TBTTOFFSET_UPDATE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param, wmi_tbtt_offset_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ Loading
fw/wmi_unified.h +197 −7 Original line number Diff line number Diff line Loading @@ -678,6 +678,8 @@ typedef enum { WMI_FD_TMPL_CMDID, /** Transmit QoS null Frame over wmi interface */ WMI_QOS_NULL_FRAME_TX_SEND_CMDID, /** WMI CMD to receive the management filter criteria from the host for RX REO */ WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID, /** commands to directly control ba negotiation directly from host. only used in test mode */ Loading Loading @@ -1686,6 +1688,9 @@ typedef enum { /** Event for QoS null frame TX completion */ WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID, /** WMI event for Firmware Consumed/Dropped Rx management frames indication */ WMI_MGMT_RX_FW_CONSUMED_EVENTID, /* ADDBA Related WMI Events*/ /** Indication the completion of the prior Loading Loading @@ -3826,20 +3831,26 @@ typedef struct { * 1-> MLO support * 2-3-> Reserved * Refer to the WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION macros. * Bits 6 - is_sap_connected_d3wow_enabled * Bit 6 - is_sap_connected_d3wow_enabled * Enable D3WoW for SAP w/ clients connected * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_SAP_CONNECTED_D3WOW_ENABLED * GET/SET macros. * Bits 7 - is_go_connected_d3wow_enabled * Bit 7 - is_go_connected_d3wow_enabled * Enable D3WoW for GO w/ clients connected * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_GO_CONNECTED_D3WOW_ENABLED * GET/SET macros. * Bit 8 - enable_dynamic_pcie_gen_speed_switch * enable dynamic pcie gen speed switch * 0-> disable the feature * 1-> enable the feature * Refer to the WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED * GET/SET macros. * * Bits 31:8 - Reserved * Bits 31:9 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate Loading Loading @@ -4150,6 +4161,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAGS2_IS_GO_CONNECTED_D3WOW_ENABLED_SET(flags2, value) \ WMI_SET_BITS(flags2, 7, 1, value) #define WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED_GET(flags2) \ WMI_GET_BITS(flags2, 8, 1) #define WMI_RSRC_CFG_FLAGS2_IS_DYNAMIC_PCIE_GEN_SPEED_SWITCH_ENABLED_SET(flags2, value) \ WMI_SET_BITS(flags2, 8, 1, value) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 0, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_SET(host_service_flags, val) \ Loading @@ -4175,6 +4191,11 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_REG_CC_EXT_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 4, 1, val) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_CHANNEL_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 5, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_CHANNEL_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 5, 1, val) typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ Loading Loading @@ -4631,9 +4652,6 @@ typedef enum { /* Extend 6ghz channel measure time */ #define WMI_SCAN_FLAG_EXT_6GHZ_EXTEND_MEASURE_TIME 0x00000400 /* Force unicast address in RA */ #define WMI_SCAN_FLAG_EXT_FORCE_UNICAST_RA 0x00000800 /** * Currently passive scan has higher priority than beacon and * beacon miss would happen irrespective of dwell time. Loading @@ -4643,6 +4661,9 @@ typedef enum { */ #define WMI_SCAN_FLAG_EXT_PASSIVE_SCAN_START_TIME_ENHANCE 0x00000800 /* Force unicast address in RA */ #define WMI_SCAN_FLAG_EXT_FORCE_UNICAST_RA 0x00001000 /** * new 6 GHz flags per chan (short ssid or bssid) in struct * wmi_hint_freq_short_ssid or wmi_hint_freq_bssid Loading Loading @@ -5053,6 +5074,79 @@ typedef struct { #define MAX_ANTENNA_EIGHT 8 /** Helper macro for params GET/SET of MGMT_RX_FW_CONSUMED_EVENTID */ #define WMI_MGMT_RX_FW_CONSUMED_PARAM_PEER_ID_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 0, 16) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_PEER_ID_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 0, 16, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_IEEE_LINK_ID_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 16, 3) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_IEEE_LINK_ID_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 16, 3, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_SUBTYPE_GET(peer_info_subtype) WMI_GET_BITS(peer_info_subtype, 28, 4) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_SUBTYPE_SET(peer_info_subtype, value) WMI_SET_BITS(peer_info_subtype, 28, 4, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_VALID_GET(mgmt_pkt_ctr_info) WMI_GET_BITS(mgmt_pkt_ctr_info, 15, 1) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_VALID_SET(mgmt_pkt_ctr_info, value) WMI_SET_BITS(mgmt_pkt_ctr_info, 15, 1, value) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_GET(mgmt_pkt_ctr_info) WMI_GET_BITS(mgmt_pkt_ctr_info, 16, 16) #define WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_SET(mgmt_pkt_ctr_info, value) WMI_SET_BITS(mgmt_pkt_ctr_info, 16, 16, value) typedef struct { A_UINT32 tlv_header; /* WMITLV_TAG_STRUCT_wmi_mgmt_rx_fw_consumed_hdr */ A_UINT32 rx_tsf_l32; /* h/w assigned timestamp of the rx frame in micro sec */ A_UINT32 rx_tsf_u32 ;/* h/w assigned timestamp of the rx frame in micro sec */ A_UINT32 pdev_id; /* pdev_id for identifying the MAC the rx mgmt frame was received by */ /** * peer_info_subtype * * [15:0]: ml_peer_id, ML peer_id unique across chips * [18:16]: ieee_link_id, protocol link id on which the rx frame is received * [27:19]: reserved * [31:28]: subtype, subtype of the received MGMT frame */ A_UINT32 peer_info_subtype; A_UINT32 chan_freq; /* frequency in MHz of the channel on which this frame was received */ /* Timestamp (in micro sec) of the last fw consumed/dropped mgmt. frame, same across chips */ A_UINT32 global_timestamp; /** * mgmt_pkt_ctr_info * * [14:0]: reserved * [15]: mgmt_pkt_ctr_valid * [31:16]: mgmt_pkt_ctr, Sequence number of the last fw consumed mgmt frame */ A_UINT32 mgmt_pkt_ctr_info; } wmi_mgmt_rx_fw_consumed_hdr; /** Helper macro for param GET/SET of mgmt_rx_reo_params */ #define WMI_MGMT_RX_REO_PARAM_IEEE_LINK_ID_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 12, 3) #define WMI_MGMT_RX_REO_PARAM_IEEE_LINK_ID_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 12, 3, value) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_VALID_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 15, 1) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_VALID_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 15, 1, value) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_GET(mgmt_pkt_ctr_link_info) WMI_GET_BITS(mgmt_pkt_ctr_link_info, 16, 16) #define WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_SET(mgmt_pkt_ctr_link_info, value) WMI_SET_BITS(mgmt_pkt_ctr_link_info, 16, 16, value) /** Data structure of the TLV to add in RX EVENTID for providing REO params * like global_timestamp and mgmt_pkt_ctr */ typedef struct { A_UINT32 tlv_header; /*TLV WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params*/ /* Timestamp (in micro sec) of the last fw forwarded mgmt. frame, same across chips */ A_UINT32 global_timestamp; /** * mgmt_pkt_ctr_link_info * * [11:0]: reserved * [14:12]: ieee_link_id, protocol link id on which the rx frame is received * [15]: mgmt_pkt_ctr_valid * [31:16]: mgmt_pkt_ctr, Sequence number of the last fw forwarded mgmt frame */ A_UINT32 mgmt_pkt_ctr_link_info; } wmi_mgmt_rx_reo_params; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr */ /** channel on which this frame is received (channel number) */ Loading Loading @@ -5107,8 +5201,30 @@ typedef struct { /* This TLV is optionally followed by array of struct: * wmi_rssi_ctl_ext rssi_ctl_ext; */ /* * This TLV is followed by struct: * wmi_mgmt_rx_reo_params reo_params;// MGMT rx REO params */ } wmi_mgmt_rx_hdr; /* WMI CMD to receive the management filter criteria from the host */ typedef struct { A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_mgmt_reo_filter_cmd_fixed_param */ A_UINT32 pdev_id; /* pdev_id for identifying the MAC */ /* filter: * Each bit represents the possible combination of frame type (2 bits) * and subtype (4 bits) * There would be 64 such combinations as per the 802.11 standard * For Exp : We have beacon frame, we will take the type and subtype * of this frame and concatenate the bits, it will give 6 bits * number. We need to go to that bit position in the below * 2 filter_low and filter_high bitmap and set the bit. */ A_UINT32 filter_low; A_UINT32 filter_high; } wmi_mgmt_rx_reo_filter_configuration_cmd_fixed_param; typedef enum { PKT_CAPTURE_MODE_DISABLE = 0, PKT_CAPTURE_MODE_MGMT_ONLY, Loading Loading @@ -8466,6 +8582,17 @@ typedef struct { A_UINT32 stats_clear_req_mask; /** identifies which peer stats to be cleared. Valid only while clearing PER_REER */ wmi_mac_addr peer_macaddr; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be cleared for the VDEVs in vdev_id_bitmap in the bitmap when * it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should * only be cleared for the peers with the MLD MAC addresses specified * in the array. */ } wmi_clear_link_stats_cmd_fixed_param; /* Link Stats configuration params. Trigger the link layer statistics collection*/ Loading Loading @@ -15772,6 +15899,13 @@ typedef struct { * 1 - To enable FT-IM */ A_UINT32 ft_im_for_deauth; /* * FW can prefer doing over-the-ds fast BSS transition instead of * over-the-air if associated and target AP are both capable of FT over DS. * 0 - To disable FT-over-DS * 1 - To enable FT-over-DS */ A_UINT32 ft_over_ds_enable; } wmi_roam_11r_offload_tlv_param; /* This TLV will be filled only in case of ESE */ Loading Loading @@ -16231,8 +16365,13 @@ typedef struct { /** consider roam trigger if connected AP rssi is worse than trigger_rssi_threshold */ A_INT32 trigger_rssi_threshold; /* Units in dbm*/ /* * Consider AP as roam candidate only if AP rssi is better than * Consider 2.4GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold * If valid (non-zero) cand_ap_min_rssi_threshold_5g and * cand_ap_min_rssi_threshold_6g values are provided, * then cand_ap_min_rssi_threshold should only be applied to 2.4 GHz APs. * But if cand_ap_min_rssi_threshold_5g and cand_ap_min_rssi_threshold_6g * are zeros, then cand_ap_min_rssi_threshold should be applied to all APs. */ A_INT32 cand_ap_min_rssi_threshold; /* Units in dbm */ /* Roam score delta in %. Loading @@ -16247,6 +16386,16 @@ typedef struct { Ex: Reason code in the BTM response frame Valid values are 0 - 255 */ A_UINT32 reason_code; /* * Consider 5GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold_5g */ A_INT32 cand_ap_min_rssi_threshold_5g; /* Units in dbm */ /* * Consider 6GHz AP as roam candidate only if AP rssi is better than * cand_ap_min_rssi_threshold_6g */ A_INT32 cand_ap_min_rssi_threshold_6g; /* Units in dbm */ } wmi_configure_roam_trigger_parameters; /** Loading Loading @@ -28579,6 +28728,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_MLO_READY_CMDID); WMI_RETURN_STRING(WMI_MLO_TEARDOWN_CMDID); WMI_RETURN_STRING(WMI_VDEV_IGMP_OFFLOAD_CMDID); WMI_RETURN_STRING(WMI_MGMT_RX_REO_FILTER_CONFIGURATION_CMDID); } return "Invalid WMI cmd"; Loading Loading @@ -29599,6 +29749,7 @@ typedef enum _WMI_ADD_TWT_STATUS_T { WMI_ADD_TWT_STATUS_ROAM_IN_PROGRESS, /* Roaming in progress */ WMI_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS, /* Channel switch in progress */ WMI_ADD_TWT_STATUS_SCAN_IN_PROGRESS, /* Scan in progress */ WMI_ADD_TWT_STATUS_DIALOG_ID_BUSY, /* FW is in the process of handling this dialog */ } WMI_ADD_TWT_STATUS_T; typedef struct { Loading Loading @@ -32374,8 +32525,47 @@ typedef struct { * The rx_ts_reset flag will be set to 1 upon every reset of rx_start_ts. */ A_UINT32 rx_ts_reset; /* * MCS and Guard Interval. * MCS: For legacy mode only * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * 8: invalid entry * * GI: For Legacy mode only * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us * 4: invalid entry * * Bits 0:3 mcs * Bits 4:6 gi_type * Bits 7:31 reserved */ A_UINT32 mcs_gi_info; } wmi_peer_cfr_capture_event_fixed_param; #define WMI_CFR_MCS_GET(mcs_gi_info) \ WMI_GET_BITS(mcs_gi_info, 0, 4) #define WMI_CFR_MCS_SET(mcs_gi_info, value) \ WMI_SET_BITS(mcs_gi_info, 0, 4, value) #define WMI_CFR_GI_TYPE_GET(mcs_gi_info) \ WMI_GET_BITS(mcs_gi_info, 4, 3) #define WMI_CFR_GI_TYPE_SET(mcs_gi_info, value) \ WMI_SET_BITS(mcs_gi_info, 4, 3, value) #define WMI_UNIFIED_CHAIN_PHASE_MASK 0x0000ffff #define WMI_UNIFIED_CHAIN_PHASE_GET(tlv, chain_idx) \ ((A_UINT16) ((tlv)->chain_phase[chain_idx] & WMI_UNIFIED_CHAIN_PHASE_MASK))