From ded9ba29d254fbec2bf1c31e3022e2aa03357203 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 1 Nov 2022 18:00:55 -0700 Subject: [PATCH 01/59] fw-api: CL 20152213 - update fw common interface files RTT OEM: add chain_index init,resp info in measreq_peer_info TLV Change-Id: I64c7ae62ee04bf6adf8b59b1c70b95cba21766bc CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 692bf026d1c5..f7fd2a8705e7 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -603,6 +603,7 @@ typedef enum { WMI_SERVICE_WMI_SERVICE_WPA3_SHA384_ROAM_SUPPORT = 350, /* Indicates FW supports WPA3 SHA384 roaming */ WMI_SERVICE_ODD_LIVEDUMP_SUPPORT = 351, /* Support for ODD Livedump from the FW */ WMI_SERVICE_EIRP_PREFERRED_SUPPORT = 352, /* Support for OOBE feature where only EIRP powers will be sent in 6 GHz TPC WMI */ + WMI_SERVICE_RTT_TX_RX_CHAIN_IDX_SUPPORT = 353, /* FW Supports configuring Tx and Rx Chainmask in intiator and Responder */ WMI_MAX_EXT2_SERVICE From 0cdf002737b92d6e8d57840cfcb460395e75697f Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 2 Nov 2022 18:01:03 -0700 Subject: [PATCH 02/59] fw-api: CL 20167573 - update fw common interface files HTT stats: add peer_ax_ofdma_stats TLV Change-Id: I9e700f063acbe4553423984618597b5c5f81ac1c CRs-Fixed: 2262693 --- fw/htt.h | 1 + fw/htt_stats.h | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index e277103f6557..1279a129d7be 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -766,6 +766,7 @@ typedef enum { HTT_STATS_TX_PDEV_AP_EDCA_PARAMS_STATS_TAG = 171, /* htt_tx_pdev_ap_edca_params_stats_tlv_v */ HTT_STATS_TXBF_OFDMA_AX_STEER_MPDU_STATS_TAG = 172, /* htt_txbf_ofdma_ax_steer_mpdu_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_STEER_MPDU_STATS_TAG = 173, /* htt_txbf_ofdma_be_steer_mpdu_stats_tlv */ + HTT_STATS_PEER_AX_OFDMA_STATS_TAG = 174, /* htt_peer_ax_ofdma_stats_tlv */ HTT_STATS_MAX_TAG, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 2139678f69a8..db8a64dba306 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -147,6 +147,7 @@ enum htt_dbg_ext_stats_type { * 5 bit htt_rx_tid_stats_tlv * 6 bit htt_msdu_flow_stats_tlv * 7 bit htt_peer_sched_stats_tlv + * 8 bit htt_peer_ax_ofdma_stats_tlv * - config_param2: [Bit31 : Bit0] mac_addr31to0 * - config_param3: [Bit15 : Bit0] mac_addr47to32 * [Bit 16] If this bit is set, reset per peer stats @@ -1804,16 +1805,17 @@ typedef enum { } htt_peer_stats_req_mode_t; typedef enum { - HTT_PEER_STATS_CMN_TLV = 0, - HTT_PEER_DETAILS_TLV = 1, - HTT_TX_PEER_RATE_STATS_TLV = 2, - HTT_RX_PEER_RATE_STATS_TLV = 3, - HTT_TX_TID_STATS_TLV = 4, - HTT_RX_TID_STATS_TLV = 5, - HTT_MSDU_FLOW_STATS_TLV = 6, - HTT_PEER_SCHED_STATS_TLV = 7, + HTT_PEER_STATS_CMN_TLV = 0, + HTT_PEER_DETAILS_TLV = 1, + HTT_TX_PEER_RATE_STATS_TLV = 2, + HTT_RX_PEER_RATE_STATS_TLV = 3, + HTT_TX_TID_STATS_TLV = 4, + HTT_RX_TID_STATS_TLV = 5, + HTT_MSDU_FLOW_STATS_TLV = 6, + HTT_PEER_SCHED_STATS_TLV = 7, + HTT_PEER_AX_OFDMA_STATS_TLV = 8, - HTT_PEER_STATS_MAX_TLV = 31, + HTT_PEER_STATS_MAX_TLV = 31, } htt_peer_stats_tlv_enum; typedef struct { @@ -1832,6 +1834,28 @@ typedef struct { A_UINT32 peer_curr_rate_kbps; } htt_peer_sched_stats_tlv; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 peer_id; + A_UINT32 ax_basic_trig_count; + A_UINT32 ax_basic_trig_err; + A_UINT32 ax_bsr_trig_count; + A_UINT32 ax_bsr_trig_err; + A_UINT32 ax_mu_bar_trig_count; + A_UINT32 ax_mu_bar_trig_err; + A_UINT32 ax_basic_trig_with_per; + A_UINT32 ax_bsr_trig_with_per; + A_UINT32 ax_mu_bar_trig_with_per; + /* is_airtime_large_for_dl_ofdma, is_airtime_large_for_ul_ofdma + * These fields contain 2 counters each. The first element in each + * array counts how many times the airtime is short enough to use + * OFDMA, and the second element in each array counts how many times the + * airtime is too large to select OFDMA for the PPDUs involving the peer. + */ + A_UINT32 is_airtime_large_for_dl_ofdma[2]; + A_UINT32 is_airtime_large_for_ul_ofdma[2]; +} htt_peer_ax_ofdma_stats_tlv; + /* config_param0 */ #define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M 0x00000001 @@ -1902,6 +1926,7 @@ typedef struct { * - HTT_STATS_PEER_MSDU_FLOWQ_TAG (multiple) * - HTT_STATS_TX_TID_DETAILS_V1_TAG (multiple) * - HTT_STATS_PEER_SCHED_STATS_TAG + * - HTT_STATS_PEER_AX_OFDMA_STATS_TAG */ /* NOTE: * This structure is for documentation, and cannot be safely used directly. @@ -1919,6 +1944,7 @@ typedef struct _htt_peer_stats { htt_msdu_flow_stats_tlv msdu_flowq[1]; htt_tx_tid_stats_v1_tlv tx_tid_stats_v1[1]; htt_peer_sched_stats_tlv peer_sched_stats; + htt_peer_ax_ofdma_stats_tlv ax_ofdma_stats; } htt_peer_stats_t; /* =========== ACTIVE PEER LIST ========== */ From 7538977c9850fb1851a1564e12fd9e73ddfbea3e Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 4 Nov 2022 18:00:59 -0700 Subject: [PATCH 03/59] fw-api: CL 20197888 - update fw common interface files Change-Id: I359c541678eca44479837ac34fa55b25623a7e29 WMI: combine HE + EHT LTF flags CRs-Fixed: 2262693 --- fw/wmi_unified.h | 21 ++++++++++++++------- fw/wmi_version.h | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 1ccef9f10b3b..0216db463bf7 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -14271,13 +14271,11 @@ typedef enum { /** specify the setting that are valid for auto rate transmissions. * bits 7:0 (LTF): When bitmask is set, then corresponding LTF value is * used for auto rate. - * BIT0 = 1 (WMI_HE_LTF_1X) - * BIT1 = 1 (WMI_HE_LTF_2X) - * BIT2 = 1 (WMI_HE_LTF_4X) - * BIT3 = 1 (WMI_EHT_LTF_1X) - * BIT4 = 1 (WMI_EHT_LTF_2X) - * BIT5 = 1 (WMI_EHT_LTF_4X) - * BIT6-7 = Reserved bits. + * BIT0 = 1 (WMI_HE_LTF_1X or WMI_EHT_LTF_1X depending on + * current rate’s preamble type HE or EHT) + * BIT1 = 1 (WMI_HE_LTF_2X or WMI_EHT_LTF_2X) + * BIT2 = 1 (WMI_HE_LTF_4X or WMI_EHT_LTF_4X) + * BIT3-7 = Reserved bits. * bits 15:8 (SGI): When bitmask is set, then corresponding SGI value is * used for auto rate. * BIT8 = 1 (400 NS) @@ -14864,6 +14862,15 @@ typedef enum { */ WMI_VDEV_PARAM_VDEV_STATS_ID_UPDATE, /* 0x8010 */ + /* + * Enable or disable Extra LTF capability in Auto rate and + * Fixed rate EHT data packet transmissions. + * Even when this vdev param is enabled, Extra LTF may not be + * enabled for all rates in auto rate mode based on other conditions. + * valid values: 0 - Disable Extra LTF, 1- Enable Extra LTF. + */ + WMI_VDEV_PARAM_EXTRA_EHT_LTF, /* 0x8011 */ + /*=== END VDEV_PARAM_PROTOTYPE SECTION ===*/ } WMI_VDEV_PARAM; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 1c777508761d..a811ad58f1b5 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1224 +#define __WMI_REVISION_ 1225 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 0fe421743d2f7344d88feed4cf0f659194ff45f6 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 7 Nov 2022 18:00:58 -0800 Subject: [PATCH 04/59] fw-api: CL 20220890 - update fw common interface files Change-Id: I10438f0696214e052e0be54cca6a686e7b13b60d HTT: fix RXPXU -> RXPCU macro typo CRs-Fixed: 2262693 --- fw/htt.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 1279a129d7be..2c1ed4499a83 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -5951,14 +5951,14 @@ PREPACK struct htt_rx_ring_selection_cfg_t { } while(0) #define HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_M 0x08000000 -#define HTT_RX_RING_SELECTION_CFG_RXPXU_FILTER_S 27 +#define HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_S 27 #define HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_GET(_var) \ (((_var) & HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_M) >> \ - HTT_RX_RING_SELECTION_CFG_RXPXU_FILTER_S) + HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_S) #define HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL( HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER, _val); \ - ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RXPXU_FILTER_S));\ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RXPCU_FILTER_S));\ } while(0) #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_M 0xffffffff From d10f39a348df5225ffe6796268482f187abb9605 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 7 Nov 2022 18:01:36 -0800 Subject: [PATCH 05/59] fw-api: CL 20220934 - update fw common interface files Change-Id: Ied11f7ae30018c245811cd0f8543a219c5f871fd WMI: add RSSI and rx link speed status info to roam_trigger_reason CRs-Fixed: 2262693 --- fw/wmi_unified.h | 20 ++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0216db463bf7..7d73e8d74376 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -35271,6 +35271,12 @@ typedef struct { }; /* btm_req_dialog_token: dialog token number in BTM request frame */ A_UINT32 btm_req_dialog_token; + /* data rssi in dBm when abort to roam scan */ + A_UINT32 data_rssi; + /* data rssi threshold in dBm */ + A_UINT32 data_rssi_threshold; + /* rx linkspeed status, 0:good linkspeed, 1:bad */ + A_UINT32 rx_linkspeed_status; } wmi_roam_trigger_reason; #define WMI_GET_BTCONNECT_STATUS(flags) WMI_GET_BITS(flags, 0, 1) @@ -35307,6 +35313,11 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_channel_info_tlv_param */ A_UINT32 channel; /* Channel frequency in MHz */ + A_UINT32 ch_dwell_type; /* indicates channel dwell type: + * 0 -> unspecified + * 1 -> active + * 2 -> passive + */ } wmi_roam_scan_channel_info; typedef struct { @@ -35388,6 +35399,14 @@ typedef enum { WMI_ROAM_FAIL_REASON_UNKNOWN = 255, } WMI_ROAM_FAIL_REASON_ID; +typedef enum { + WMI_ROAM_ABORT_UNSPECIFIED = 0, /* Target did not specify detailed reason for roam scan being aborted */ + WMI_ROAM_ABORT_LOWRSSI_DATA_RSSI_HIGH = 1, /* Roam scan is not started due to high data RSSI during low-RSSI roaming */ + WMI_ROAM_ABORT_LOWRSSI_LINK_SPEED_GOOD, /* Roam scan is not started due to good link speed during low-RSSI roaming */ + WMI_ROAM_ABORT_BG_DATA_RSSI_HIGH, /* Roam scan is not started due to high data RSSI during background roaming */ + WMI_ROAM_ABORT_BG_RSSI_ABOVE_THRESHOLD, /* Roam scan is not started due to high beacon RSSI during background roaming */ +} WMI_ROAM_FAIL_SUB_REASON_ID; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_result_tlv_param */ /* @@ -35399,6 +35418,7 @@ typedef struct { A_UINT32 roam_status; /* 0 - Roaming is success, 1 - Roaming is failed */ A_UINT32 roam_fail_reason; /* from WMI_ROAM_FAIL_REASON_ID */ wmi_mac_addr bssid; /* bssid corresponds to roam_fail_reason */ + A_UINT32 roam_abort_reason; /* Detail reason for roam scan not start, from WMI_ROAM_FAIL_SUB_REASON_ID */ } wmi_roam_result; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a811ad58f1b5..25d620ad51ad 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1225 +#define __WMI_REVISION_ 1226 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From a6ef93afd5d50b6594bb2c27650bf50bab7a599d Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 9 Nov 2022 18:00:59 -0800 Subject: [PATCH 06/59] fw-api: CL 20254044 - update fw common interface files Change-Id: I033b923f399fc4c1fbcd58eea3229c4a1c126ce1 WMI: add MLO link removal msg defs CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 19 ++++++++++++- fw/wmi_unified.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 88 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 0e04384905eb..7d29b075ed8f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1303,6 +1303,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_livedump_request_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_livedump_response_event_fixed_param, WMITLV_TAG_STRUC_wmi_prb_resp_tmpl_ml_info, + WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_count, + WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update, + WMITLV_TAG_STRUC_wmi_mlo_link_removal_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_removal_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1813,6 +1817,7 @@ typedef enum { OP(WMI_XGAP_ENABLE_CMDID) \ OP(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID) \ OP(WMI_ODD_LIVEDUMP_REQUEST_CMDID) \ + OP(WMI_MLO_LINK_REMOVAL_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2108,6 +2113,7 @@ typedef enum { OP(WMI_PDEV_SCHED_TIDQ_SUSP_INFO_EVENTID) \ OP(WMI_XGAP_ENABLE_COMPLETE_EVENTID) \ OP(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID) \ + OP(WMI_MLO_LINK_REMOVAL_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5442,7 +5448,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_frame_pn_params, pn_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_ml_info, ml_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bpcc_bufp, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_is_my_mgmt_frame, my_frame, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_is_my_mgmt_frame, my_frame, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_removal_tbtt_count, link_removal_tbtt_count, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* Management Rx FW Consumed Event */ @@ -7022,6 +7029,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_XGAP_ENABLE_COMPLETE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_livedump_response_event_fixed_param, wmi_livedump_response_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID); +#define WMITLV_TABLE_WMI_MLO_LINK_REMOVAL_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_removal_cmd_fixed_param, wmi_mlo_link_removal_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, reconfig_ml_ie, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_CMDID); + +#define WMITLV_TABLE_WMI_MLO_LINK_REMOVAL_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_removal_evt_fixed_param, wmi_mlo_link_removal_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update, wmi_mlo_link_removal_tbtt_update, tbtt_update, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_EVENTID); + diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7d73e8d74376..a7c82e8e8644 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1531,6 +1531,8 @@ typedef enum { WMI_MLO_TEARDOWN_CMDID, /** WMI cmd used to setup Tid to Link Mapping for a MLO Peer */ WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID, + /** WMI cmd for dynamically deleting a link from a MLD VAP */ + WMI_MLO_LINK_REMOVAL_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ @@ -2331,6 +2333,8 @@ typedef enum { WMI_MLO_SETUP_COMPLETE_EVENTID, /* Response event for MLO teardown cmd */ WMI_MLO_TEARDOWN_COMPLETE_EVENTID, + /* Response event for Link Removal Cmd */ + WMI_MLO_LINK_REMOVAL_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -12693,6 +12697,10 @@ typedef struct { #define WMI_MLO_FLAGS_SET_EMLSR_SUPPORT(mlo_flags, value) WMI_SET_BITS(mlo_flags, 6, 1, value) #define WMI_MLO_FLAGS_GET_FORCE_LINK_INACTIVE(mlo_flags) WMI_GET_BITS(mlo_flags, 7, 1) #define WMI_MLO_FLAGS_SET_FORCE_LINK_INACTIVE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 7, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_ADD(mlo_flags) WMI_GET_BITS(mlo_flags, 8, 1) +#define WMI_MLO_FLAGS_SET_LINK_ADD(mlo_flags, value) WMI_SET_BITS(mlo_flags, 8, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_DEL(mlo_flags) WMI_GET_BITS(mlo_flags, 9, 1) +#define WMI_MLO_FLAGS_SET_LINK_DEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 9, 1, value) /* this structure used for pass mlo flags*/ typedef struct { @@ -12706,7 +12714,9 @@ typedef struct { mlo_mcast_vdev:1, /* indicate this is the MLO mcast primary vdev */ emlsr_support:1, /* indicate that eMLSR is supported */ mlo_force_link_inactive:1, /* indicate this link is forced inactive */ - unused: 24; + mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP */ + mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP */ + unused: 22; }; A_UINT32 mlo_flags; }; @@ -12717,6 +12727,7 @@ typedef struct { A_UINT32 vdev_id; /** partner vdev_id */ A_UINT32 hw_link_id; /** hw_link_id: Unique link id across SOCs, got as part of QMI handshake */ wmi_mac_addr vdev_macaddr; /** VDEV MAC address */ + wmi_mlo_flags mlo_flags; } wmi_partner_link_params; /* this TLV structure used for pass mlo parameters on vdev create*/ @@ -32709,6 +32720,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_PARAM_ENABLE_SR_PROHIBIT_CMDID); WMI_RETURN_STRING(WMI_XGAP_ENABLE_CMDID); WMI_RETURN_STRING(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_REMOVAL_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -40199,6 +40211,62 @@ typedef struct { A_UINT32 status; } wmi_livedump_response_event_fixed_param; +#define WMI_MLO_LINK_REMOVAL_GET_VDEVID(tbtt_info) WMI_GET_BITS(tbtt_info, 0, 8) +#define WMI_MLO_LINK_REMOVAL_SET_VDEVID(tbtt_info, value) WMI_SET_BITS(tbtt_info, 0, 8, value) +#define WMI_MLO_LINK_REMOVAL_GET_LINKID(tbtt_info) WMI_GET_BITS(tbtt_info, 8, 8) +#define WMI_MLO_LINK_REMOVAL_SET_LINKID(tbtt_info, value) WMI_SET_BITS(tbtt_info, 8, 8, value) +#define WMI_MLO_LINK_REMOVAL_GET_TBTT_COUNT(tbtt_info) WMI_GET_BITS(tbtt_info, 16, 16) +#define WMI_MLO_LINK_REMOVAL_SET_TBTT_COUNT(tbtt_info, value) WMI_SET_BITS(tbtt_info, 16, 16, value) + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_count; */ + A_UINT32 tlv_header; + union { + struct { + A_UINT32 vdev_id:8, + link_id:8, + tbtt_count:16; + }; + A_UINT32 tbtt_info; + }; +} wmi_mlo_link_removal_tbtt_count; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update; */ + A_UINT32 tlv_header; + + A_UINT32 tbtt_count; + + A_UINT32 qtimer_ts_low; /* lower-32 bits */ + A_UINT32 qtimer_ts_high; /* higher-32 bits */ + + A_UINT32 tsf_low; /* lower-32 bits */ + A_UINT32 tsf_high; /* higher-32 bits */ +} wmi_mlo_link_removal_tbtt_update; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_removal_evt_fixed_param; */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + + /* + * Followed by TLVs: + * wmi_mlo_link_removal_tbtt_update + */ +} wmi_mlo_link_removal_evt_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_removal_cmd_fixed_param */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 reconfig_ml_ie_num_bytes_valid; + + /* This TLV is followed by array of bytes: + * A_UINT8 reconfig_ml_ie[]; <-- Entire reconfiguration element (multi-link control + common-info + 1 per-sta profile) + */ +} wmi_mlo_link_removal_cmd_fixed_param; + + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 25d620ad51ad..5998c1d709e0 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1226 +#define __WMI_REVISION_ 1227 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From c8e205ec5d30fbc0547932770339e88309541d7b Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 9 Nov 2022 18:01:41 -0800 Subject: [PATCH 07/59] fw-api: CL 20254047 - update fw common interface files HTT stats: deprecate tx_pdev muedca_params_stats, add mu_edca_params_stats Change-Id: I036fdff76bf1614aca85da3330aa8dfc790710ab CRs-Fixed: 2262693 --- fw/htt.h | 3 ++- fw/htt_stats.h | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 2c1ed4499a83..cf6d3f580808 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -761,12 +761,13 @@ typedef enum { HTT_DBG_ODD_MANDATORY_MUMIMO_TAG = 166, /* htt_odd_mandatory_mumimo_pdev_stats_tlv */ HTT_DBG_ODD_MANDATORY_MUOFDMA_TAG = 167, /* htt_odd_mandatory_muofdma_pdev_stats_tlv */ HTT_STATS_LATENCY_PROF_CAL_STATS_TAG = 168, /* htt_latency_prof_cal_stats_tlv */ - HTT_STATS_TX_PDEV_MUEDCA_PARAMS_STATS_TAG = 169, /* htt_tx_pdev_muedca_params_stats_tlv_v */ + HTT_STATS_TX_PDEV_MUEDCA_PARAMS_STATS_TAG = 169, /* htt_tx_pdev_muedca_params_stats_tlv_v - DEPRECATED */ HTT_STATS_PDEV_BW_MGR_STATS_TAG = 170, /* htt_pdev_bw_mgr_stats_tlv */ HTT_STATS_TX_PDEV_AP_EDCA_PARAMS_STATS_TAG = 171, /* htt_tx_pdev_ap_edca_params_stats_tlv_v */ HTT_STATS_TXBF_OFDMA_AX_STEER_MPDU_STATS_TAG = 172, /* htt_txbf_ofdma_ax_steer_mpdu_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_STEER_MPDU_STATS_TAG = 173, /* htt_txbf_ofdma_be_steer_mpdu_stats_tlv */ HTT_STATS_PEER_AX_OFDMA_STATS_TAG = 174, /* htt_peer_ax_ofdma_stats_tlv */ + HTT_STATS_TX_PDEV_MU_EDCA_PARAMS_STATS_TAG = 175, /* htt_tx_pdev_mu_edca_params_stats_tlv_v */ HTT_STATS_MAX_TAG, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index db8a64dba306..eaa0d801a698 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -941,13 +941,24 @@ typedef struct { * that particular value for the MU EDCA parameter in question. */ #define HTT_STATS_MUEDCA_VALUE_MAX 16 -typedef struct { +typedef struct { /* DEPRECATED */ htt_tlv_hdr_t tlv_hdr; A_UINT32 aifs[HTT_NUM_AC_WMM][HTT_STATS_MUEDCA_VALUE_MAX]; A_UINT32 cw_min[HTT_NUM_AC_WMM][HTT_STATS_MUEDCA_VALUE_MAX]; A_UINT32 cw_max[HTT_NUM_AC_WMM][HTT_STATS_MUEDCA_VALUE_MAX]; } htt_tx_pdev_muedca_params_stats_tlv_v; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 relaxed_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 mumimo_aggressive_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 mumimo_relaxed_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 muofdma_aggressive_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 muofdma_relaxed_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 latency_mu_edca[HTT_NUM_AC_WMM]; + A_UINT32 psd_boost_mu_edca[HTT_NUM_AC_WMM]; +} htt_tx_pdev_mu_edca_params_stats_tlv_v; + typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 ul_mumimo_less_aggressive[HTT_NUM_AC_WMM]; From bdeb27f7001db3353289efedb3984af04c85c02a Mon Sep 17 00:00:00 2001 From: Radha Krishna Simha Jiguru Date: Thu, 27 Oct 2022 14:22:24 +0530 Subject: [PATCH 08/59] fw-api: Add macros for PPE2TCL ring Add macros for PPE2TCL ring to handle required fields Change-Id: Ib083fc87b70c0ee54d89150e565878f3dea95347 CRs-Fixed: 3332152 --- hw/qcn9224/v1/wcss_seq_hwioreg_umac.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/qcn9224/v1/wcss_seq_hwioreg_umac.h b/hw/qcn9224/v1/wcss_seq_hwioreg_umac.h index 6130085d8adf..149bc1ed5932 100644 --- a/hw/qcn9224/v1/wcss_seq_hwioreg_umac.h +++ b/hw/qcn9224/v1/wcss_seq_hwioreg_umac.h @@ -12708,6 +12708,12 @@ out_dword_masked_ns(HWIO_REO_R0_CACHE_CTL_GXI_PRIORITY_ADDR(x),m,v,HWIO_REO_R0_C #define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_BMSK 0x800000 #define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_SHFT 23 +#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_PPE2TCL1_RNG_HALT_STAT_BMSK 0x40000 +#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_PPE2TCL1_RNG_HALT_STAT_SHFT 18 +#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_PPE2TCL1_RNG_HALT_BMSK 0x400 +#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_PPE2TCL1_RNG_HALT_SHFT 10 + + #define HWIO_TCL_R0_CMN_CONFIG_ADDR(x) ((x) + 0x24) #define HWIO_TCL_R0_CMN_CONFIG_VDEVID_MISMATCH_EXCEPTION_BMSK 0x400000 #define HWIO_TCL_R0_CMN_CONFIG_VDEVID_MISMATCH_EXCEPTION_SHFT 22 From 1038b7458a4f5757e9560222ea55773b9d9145fa Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 10 Nov 2022 18:01:02 -0800 Subject: [PATCH 09/59] fw-api: CL 20275495 - update fw common interface files Change-Id: I109b9efd66be46eda70a3aa5dab4d4d7141196b8 WMI: update wmi_hw_bd_status_type enum CRs-Fixed: 2262693 --- fw/wmi_unified.h | 31 +++++++++++++++++++++++-------- fw/wmi_version.h | 2 +- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a7c82e8e8644..bd60de773d0e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3287,18 +3287,33 @@ typedef enum { } WMI_AFC_FEATURE_6G_DEPLOYMENT_TYPE; typedef enum { - WMI_BDF_VERSION_OK = 0, + WMI_BDF_VERSION_CHECK_DISABLED = 0, - /* WMI_BDF_VERSION_TOO_OLD: - * BDF version is older than the oldest version supported by FW. + /* WMI_BDF_VERSION_CHECK_GOOD: + * BDF version is matched with FW. */ - WMI_BDF_VERSION_TOO_OLD = 1, + WMI_BDF_VERSION_CHECK_GOOD = 1, - /* WMI_BDF_VERSION_TOO_NEW: - * BDF version is newer than the newest version supported by FW. + /* WMI_BDF_VERSION_TEMPLATE_TOO_OLD: + * BDF template version is older than the oldest version supported by FW. */ - WMI_BDF_VERSION_TOO_NEW = 2, -} wmi_hw_bd_status_type; + WMI_BDF_VERSION_TEMPLATE_TOO_OLD = 2, + + /* WMI_BDF_VERSION_TEMPLATE_TOO_NEW: + * BDF template version is newer than the newest version supported by FW. + */ + WMI_BDF_VERSION_TEMPLATE_TOO_NEW = 3, + + /* WMI_BDF_VERSION_FW_TOO_OLD: + * FW version is older than the major version supported by BDF. + */ + WMI_BDF_VERSION_FW_TOO_OLD = 4, + + /* WMI_BDF_VERSION_FW_TOO_NEW: + * FW version is newer than the minor version supported by BDF. + */ + WMI_BDF_VERSION_FW_TOO_NEW = 5, +} wmi_bdf_version_status_type; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5998c1d709e0..7615a26df742 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1227 +#define __WMI_REVISION_ 1228 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 4add01fc855ca2d8e69ea761641d1fe73ac4af9b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 11 Nov 2022 06:00:55 -0800 Subject: [PATCH 10/59] fw-api: CL 20281905 - update fw common interface files Change-Id: Ie605e5f0f6359e29e50a46b5f592355ba6aa57f1 WMI: add ROAM_PARAM_ROAM_CONTROL_FULL_SCAN optimization cfg defs CRs-Fixed: 2262693 --- fw/wmi_unified.h | 22 ++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index bd60de773d0e..e543626af2e1 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -35840,6 +35840,28 @@ typedef enum { */ WMI_ROAM_PARAM_ROAM_HO_DELAY_RUNTIME_CONFIG = 4, + /* + * Roam param to enable/disable full scan channel optimization + * As per current implementation of roam scan, if there are no APs found + * during partial scan, immediately a full scan will be initiated as a + * fallback. This includes all channels that were already scanned as part + * of partial scan. + * This flag controls the optimization, to exclude all channels, which are + * already scanned as part of partial scan. + */ + WMI_ROAM_PARAM_ROAM_CONTROL_FULL_SCAN_CHANNEL_OPTIMIZATION = 5, + + /* + * Roam param to enable/disable scanning of 6GHz psc channels + * As per current implementation, Wi-Fi STA scans on all 6GHz PSC channels + * as part of full scan during a roam scan irrespective of whether APs are + * present in 6GHz or not. + * This flag controls the optimization to do the scan in 6GHz PSC channels + * only if channel map or newly received RNR indicates 6GHz APs during + * current 2.4GHz or 5GHz scanning of Roam Full scan. + */ + WMI_ROAM_PARAM_ROAM_CONTROL_FULL_SCAN_6GHZ_PSC_ONLY_WITH_RNR = 6, + /*=== END ROAM_PARAM_PROTOTYPE SECTION ===*/ } WMI_ROAM_PARAM; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7615a26df742..c19e2f9cfc0c 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1228 +#define __WMI_REVISION_ 1229 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From c1e7d501633d29073d505279c1ce0c19c660b568 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 11 Nov 2022 06:01:35 -0800 Subject: [PATCH 11/59] fw-api: CL 20281921 - update fw common interface files Change-Id: I1846a09f05f298a8ebe81dfcfd78f208f588df56 HTC: add LPASS_SERVICE_GROUP def CRs-Fixed: 2262693 --- fw/htc_services.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fw/htc_services.h b/fw/htc_services.h index 8d510dcffff4..ce2fcf85a2ff 100644 --- a/fw/htc_services.h +++ b/fw/htc_services.h @@ -39,6 +39,7 @@ typedef enum { CFG_NV_SERVICE_GROUP = 4, WDI_IPA_SERVICE_GROUP = 5, PACKET_LOG_SERVICE_GROUP = 6, + LPASS_SERVICE_GROUP = 7, HTC_TEST_GROUP = 254, HTC_SERVICE_GROUP_LAST = 255 @@ -98,6 +99,8 @@ typedef enum { #define PACKET_LOG_SVC MAKE_SERVICE_ID(PACKET_LOG_SERVICE_GROUP,0) +#define LPASS_DATA_MSG_SVC MAKE_SERVICE_ID(LPASS_SERVICE_GROUP,0) + /* * Directions for interconnect pipe configuration. * These definitions may be used during configuration and are shared From 604d02aa0691071e5665526c4cd8775cf6a9ff24 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 11 Nov 2022 06:02:18 -0800 Subject: [PATCH 12/59] fw-api: CL 20281973 - update fw common interface files add module IDs for modules within sched_algo Change-Id: I99f7e7bd090d81f6878aaa369e83d5060e8cfe44 CRs-Fixed: 2262693 --- fw/wlan_module_ids.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 97ec58fd0624..54ae443abeaf 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -141,6 +141,15 @@ typedef enum { WLAN_MODULE_XGAP, /* 0x66 */ WLAN_MODULE_MLO_OWNERSHIP_UPDATE, /* 0x67 */ + WLAN_MODULE_SCHED_ALGO_TXBF, /* 0x68 */ + WLAN_MODULE_SCHED_ALGO_DL_MU_MIMO, /* 0x69 */ + WLAN_MODULE_SCHED_ALGO_UL_MU_MIMO, /* 0x6a */ + WLAN_MODULE_SCHED_ALGO_DL_MU_OFDMA, /* 0x6b */ + WLAN_MODULE_SCHED_ALGO_UL_MU_OFDMA, /* 0x6c */ + WLAN_MODULE_SCHED_ALGO_SU, /* 0x6d */ + WLAN_MODULE_SCHED_ALGO_MLO, /* 0x6e */ + WLAN_MODULE_SCHED_ALGO_SAWF, /* 0x6f */ + WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, From 4cef8800602684e8b363f064fe15425c5405290f Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 17 Nov 2022 06:01:11 -0800 Subject: [PATCH 13/59] fw-api: CL 20351206 - update fw common interface files WMI: add MU_RTS,UL_MU_MIMO_TRIGGER in PDEV_PARAM_ENABLE_MBSSID_CTRL_FRAME Also, make cosmetic cleanups in comments: ghz -> GHz, dbm -> dBm, rssi -> RSSI Change-Id: Id25c4c7200609c9ca836d2a8aa997d585ad1828b CRs-Fixed: 2262693 --- fw/wmi_unified.h | 401 ++++++++++++++++++++++++----------------------- fw/wmi_version.h | 2 +- 2 files changed, 205 insertions(+), 198 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e543626af2e1..8ffda8fd864a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -824,11 +824,11 @@ typedef enum { /* Roaming specific commands */ /** set roam scan mode */ WMI_ROAM_SCAN_MODE = WMI_CMD_GRP_START_ID(WMI_GRP_ROAM), - /** set roam scan rssi threshold below which roam scan is enabled */ + /** set roam scan RSSI threshold below which roam scan is enabled */ WMI_ROAM_SCAN_RSSI_THRESHOLD, /** set roam scan period for periodic roam scan mode */ WMI_ROAM_SCAN_PERIOD, - /** set roam scan trigger rssi change threshold */ + /** set roam scan trigger RSSI change threshold */ WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD, /** set roam AP profile */ WMI_ROAM_AP_PROFILE, @@ -1099,7 +1099,7 @@ typedef enum { /** Passpoint list config */ WMI_PASSPOINT_LIST_CONFIG_CMDID, - /** configure supprssing parameters for MAWC */ + /** configure suppressing parameters for MAWC */ WMI_NLO_CONFIGURE_MAWC_CMDID, /* GTK offload Specific WMI commands*/ @@ -1175,7 +1175,7 @@ typedef enum { WMI_SET_ANTENNA_DIVERSITY_CMDID, /** Set OCB Sched Request, deprecated */ WMI_OCB_SET_SCHED_CMDID, - /** Set rssi monitoring config command */ + /** Set RSSI monitoring config command */ WMI_RSSI_BREACH_MONITOR_CONFIG_CMDID, /** Enable/disable Large Receive Offload processing; provide cfg params */ WMI_LRO_CONFIG_CMDID, @@ -1345,7 +1345,7 @@ typedef enum { * OBSS scan offload enable/disable commands * OBSS scan enable CMD will send to FW after VDEV UP, if these conditions are true: * 1. WMI_SERVICE_OBSS_SCAN is reported by FW in service ready, - * 2. STA connect to a 2.4Ghz ht20/ht40 AP, + * 2. STA connect to a 2.4 GHz ht20/ht40 AP, * 3. AP enable 20/40 coexistence (OBSS_IE-74 can be found in beacon or association response) * If OBSS parameters from beacon changed, also use enable CMD to update parameters. * OBSS scan disable CMD will send to FW if have enabled when tearing down connection. @@ -1781,7 +1781,7 @@ typedef enum { /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ WMI_PEER_STA_KICKOUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PEER), - /** Peer Info Event with data_rate, rssi, tx_fail_cnt etc */ + /** Peer Info Event with data_rate, RSSI, tx_fail_cnt etc */ WMI_PEER_INFO_EVENTID, /** Event indicating that TX fail count reaching threshold */ @@ -1809,7 +1809,7 @@ typedef enum { WMI_PEER_RATECODE_LIST_EVENTID, WMI_WDS_PEER_EVENTID, WMI_PEER_STA_PS_STATECHG_EVENTID, - /** Peer Ant Div Info Event with rssi per chain, etc */ + /** Peer Ant Div Info Event with RSSI per chain, etc */ WMI_PEER_ANTDIV_INFO_EVENTID, /* @@ -3387,12 +3387,12 @@ typedef struct { * 1-> MLO support * 2,3-> reserved * Refer to WMI_TARGET_CAP_FLAGS_PEER_METADATA_VERSION macros. - * Bit 2 - UL MUMIMO Rx support on 2.4GHz (AP Mode) - * Bit 3 - UL MUMIMO Tx support on 2.4GHz (STA Mode) - * Bit 4 - UL MUMIMO Rx support on 5GHz (AP Mode) - * Bit 5 - UL MUMIMO Tx support on 5GHz (STA Mode) - * Bit 6 - UL MUMIMO Rx support on 6GHz (AP Mode) - * Bit 7 - UL MUMIMO Tx support on 6GHz (STA Mode) + * Bit 2 - UL MUMIMO Rx support on 2.4 GHz (AP Mode) + * Bit 3 - UL MUMIMO Tx support on 2.4 GHz (STA Mode) + * Bit 4 - UL MUMIMO Rx support on 5 GHz (AP Mode) + * Bit 5 - UL MUMIMO Tx support on 5 GHz (STA Mode) + * Bit 6 - UL MUMIMO Rx support on 6 GHz (AP Mode) + * Bit 7 - UL MUMIMO Tx support on 6 GHz (STA Mode) * Bits 31:8 - Reserved */ A_UINT32 target_cap_flags; @@ -3852,7 +3852,7 @@ typedef struct { /** * @brief num_tdls_conn_table_entries - Number of peers tracked by tdls vdev * @details - * Each TDLS enabled vdev can track outgoing transmits/rssi/rates to/of + * Each TDLS enabled vdev can track outgoing transmits/RSSI/rates to/of * peers in a connection tracking table for possible TDLS link creation * or deletion. This controls the number of tracked peers per vdev. */ @@ -5397,7 +5397,7 @@ typedef struct { #define WMI_SET_FREQ_IN_HINT_FREQ_BSSID(freq, pwmi_hint_freq_bssid_addr) (((pwmi_hint_freq_bssid_addr)->freq_flags) |= ((freq) << 16)) #define WMI_SET_FLAGS_IN_HINT_FREQ_BSSID(flags, pwmi_hint_freq_bssid_addr) (((pwmi_hint_freq_bssid_addr)->freq_flags) |= (flags)) -/** other macro for 6GHZ, TU(time unit), 20TU normally it is 20ms */ +/** other macro for 6 GHZ, TU (time unit), 20TU normally it is 20ms */ #define MAX_NUM_20TU_EACH_CH 6 #define MAX_NUM_S_SSID_EACH_20TU 1 #define MAX_NUM_BSSID_EACH_20TU 3 @@ -5659,13 +5659,13 @@ typedef enum { /* Indicate client hint req is high priority than fw rnr or FILS disc */ #define WMI_SCAN_FLAG_EXT_6GHZ_CLIENT_HIGH_PRIORITY 0x00000080 -/* Force all 6ghz scan channels to active channel */ +/* Force all 6 GHz scan channels to active channel */ #define WMI_SCAN_FLAG_EXT_6GHZ_FORCE_CHAN_ACTIVE 0x00000100 /* Force broadcast address in RA even though specified bssid */ #define WMI_SCAN_FLAG_EXT_FORCE_BRCAST_RA 0x00000200 -/* Extend 6ghz channel measure time */ +/* Extend 6 GHz channel measure time */ #define WMI_SCAN_FLAG_EXT_6GHZ_EXTEND_MEASURE_TIME 0x00000400 /** @@ -5921,7 +5921,7 @@ typedef struct { typedef struct { A_UINT32 time_offset; /* positive offset in secs from the time 11k offload command has been received, 0xFFFFFFFF if offset is not valid */ - A_UINT32 low_rssi_offset; /* positive offset in dB from current low rssi roaming trigger to send neighbor req, 0xFFFFFFFF if offset is not valid */ + A_UINT32 low_rssi_offset; /* positive offset in dB from current low RSSI roaming trigger to send neighbor req, 0xFFFFFFFF if offset is not valid */ A_UINT32 bmiss_count_trigger; /* value 1 is to send neighbor report at 1st BMISS, 0xFFFFFFFF if input is not valid */ A_UINT32 per_threshold_offset; /* percentage offset from the current per_threshold, 0xFFFFFFFF if input is not valid */ A_UINT32 neighbor_report_cache_timeout; /* cache timeout in secs after which neighbor cache is not valid in FW, 0xFFFFFFFF if input is not valid */ @@ -6236,7 +6236,7 @@ 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) */ A_UINT32 channel; - /** snr information used to cal rssi */ + /** snr information used to cal RSSI */ A_UINT32 snr; /** Rate kbps */ A_UINT32 rate; @@ -6372,7 +6372,7 @@ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_hdr */ /* channel frequency in MHz */ A_UINT32 chan_freq; - /** snr information used to cal rssi in dB */ + /** snr information used to cal RSSI in dB */ A_UINT32 snr; /** Rate kbps */ A_UINT32 rate_kbps; @@ -6541,7 +6541,7 @@ typedef struct { A_UINT32 rssi_chain6; A_UINT32 rssi_chain7; /** - * Last calibrated NF value for chain 4 through 7 in dbm + * Last calibrated NF value for chain 4 through 7 in dBm * * nf_list_3: * + [15:0] - chain 4 @@ -8682,6 +8682,8 @@ typedef enum { * ----------------- * 0 | Enable/Disable mBSSID trigger support for basic triggers. * 1 | Enable/Disable mBSSID trigger support for BSR triggers. + * 2 | Enable/Disable mBSSID trigger support for MU RTS. + * 3 | Enable/Disable mBSSID trigger support for UL MUMIMO triggers. */ WMI_PDEV_PARAM_ENABLE_MBSSID_CTRL_FRAME, @@ -8978,6 +8980,10 @@ typedef enum { #define WMI_PDEV_RATE_MAX_NSS_PROBE_INTERVAL_GET(value) WMI_GET_BITS(value, 16, 16) #define WMI_PDEV_RATE_MAX_NSS_PROBE_INTERVAL_SET(_value, value) WMI_SET_BITS(_value, 16, 16, value) +#define WMI_MBSSID_CTRL_FRAME_BASIC_TRIGGER ((A_UINT32) 1 << 0) +#define WMI_MBSSID_CTRL_FRAME_BSR_TRIGGER ((A_UINT32) 1 << 1) +#define WMI_MBSSID_CTRL_FRAME_MU_RTS_TRIGGER ((A_UINT32) 1 << 2) +#define WMI_MBSSID_CTRL_FRAME_UL_MU_MIMO_TRIGGER ((A_UINT32) 1 << 3) typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_param_cmd_fixed_param */ @@ -10364,7 +10370,7 @@ typedef struct { A_UINT32 more_radio_events; /* * For the event WMI_RADIO_LINK_STATS_EVENTID = 0x16004, - * FW may not be able to send all the channels (2Ghz, 5Ghz & 6Ghz) + * FW may not be able to send all the channels (2 GHz, 5 GHz & 6 GHz) * together in one event message, due to buffer size limitations. * To avoid this limitation, FW will send multiple events to HOST * depending upon the number of channels. @@ -12379,18 +12385,18 @@ typedef struct { /** unique id identifying the VDEV, generated by the caller */ A_UINT32 vdev_id; wmi_snr_info vdev_snr; - A_UINT32 tx_frm_cnt[WLAN_MAX_AC];/* Total number of packets(per AC) that were successfully transmitted(with and without retries, including multi-cast, broadcast) */ - A_UINT32 rx_frm_cnt;/* Total number of packets that were successfully received (after appropriate filter rules including multi-cast, broadcast)*/ - A_UINT32 multiple_retry_cnt[WLAN_MAX_AC];/*The number of MSDU packets and MMPDU frames per AC - that the 802.11 station successfully transmitted after more than one retransmission attempt*/ - A_UINT32 fail_cnt[WLAN_MAX_AC]; /*Total number packets(per AC) failed to transmit */ - A_UINT32 rts_fail_cnt;/*Total number of RTS/CTS sequence failures for transmission of a packet*/ - A_UINT32 rts_succ_cnt;/*Total number of RTS/CTS sequence success for transmission of a packet*/ - A_UINT32 rx_err_cnt;/*The receive error count. HAL will provide the RxP FCS error global */ - A_UINT32 rx_discard_cnt;/* The sum of the receive error count and dropped-receive-buffer error count. (FCS error)*/ - A_UINT32 ack_fail_cnt;/*Total number packets failed transmit because of no ACK from the remote entity*/ - A_UINT32 tx_rate_history[MAX_TX_RATE_VALUES];/*History of last ten transmit rate, in units of 500 kbit/sec*/ - A_UINT32 bcn_rssi_history[MAX_RSSI_VALUES];/*History of last ten Beacon rssi of the connected Bss*/ + A_UINT32 tx_frm_cnt[WLAN_MAX_AC]; /* Total number of packets(per AC) that were successfully transmitted(with and without retries, including multi-cast, broadcast) */ + A_UINT32 rx_frm_cnt; /* Total number of packets that were successfully received (after appropriate filter rules including multi-cast, broadcast) */ + A_UINT32 multiple_retry_cnt[WLAN_MAX_AC]; /* The number of MSDU packets and MMPDU frames per AC + that the 802.11 station successfully transmitted after more than one retransmission attempt */ + A_UINT32 fail_cnt[WLAN_MAX_AC]; /* Total number packets(per AC) failed to transmit */ + A_UINT32 rts_fail_cnt; /* Total number of RTS/CTS sequence failures for transmission of a packet */ + A_UINT32 rts_succ_cnt; /* Total number of RTS/CTS sequence success for transmission of a packet */ + A_UINT32 rx_err_cnt; /* The receive error count. HAL will provide the RxP FCS error global */ + A_UINT32 rx_discard_cnt; /* The sum of the receive error count and dropped-receive-buffer error count. (FCS error) */ + A_UINT32 ack_fail_cnt; /* Total number packets failed transmit because of no ACK from the remote entity */ + A_UINT32 tx_rate_history[MAX_TX_RATE_VALUES];/*History of last ten transmit rate, in units of 500 kbit/sec */ + A_UINT32 bcn_rssi_history[MAX_RSSI_VALUES];/*History of last ten Beacon RSSI of the connected Bss */ } wmi_vdev_stats; /* @@ -12427,7 +12433,7 @@ typedef struct { typedef struct { /** peer MAC address */ wmi_mac_addr peer_macaddr; - /** rssi */ + /** RSSI */ A_UINT32 peer_rssi; /** last tx data rate used for peer */ A_UINT32 peer_tx_rate; @@ -13742,7 +13748,7 @@ typedef enum { #define WMI_VDEV_OCE_ESP_FEATURE_BITMAP 0x20 #define WMI_VDEV_OCE_REASSOC_REJECT_FEATURE_BITMAP 0x40 -/** 6GHZ params **/ +/** 6 GHZ params **/ /* Control to enable/disable beacon tx in non-HT duplicate */ #define WMI_VDEV_6GHZ_BITMAP_NON_HT_DUPLICATE_BEACON 0x1 /* Control to enable/disable broadcast probe response tx in non-HT duplicate */ @@ -14538,7 +14544,7 @@ typedef enum { WMI_VDEV_PARAM_ENABLE_MCAST_RC, /* 0x98 */ /* - * Params related to 6GHz operation + * Params related to 6 GHz operation * The parameter value is formed from WMI_VDEV_6GHZ_BITMAP flags. */ WMI_VDEV_PARAM_6GHZ_PARAMS, /* 0x99 */ @@ -17211,7 +17217,8 @@ typedef struct { A_UINT32 min_data_rate; /** HE 6 GHz Band Capabilities of the peer. - * (Defined in 9.4.2.261 HE 6GHz Band Capabilities element in 802.11ax_D5.0) + * (Defined in 9.4.2.261 HE 6 GHz Band Capabilities element in + * 802.11ax_D5.0.) * valid when WMI_PEER_HE is set and WMI_PEER_VHT/HT are not set. */ A_UINT32 peer_he_caps_6ghz; @@ -17465,9 +17472,9 @@ typedef struct _wlan_dcs_im_tgt_stats { /** current running TSF from the TSF-1 */ A_UINT32 reg_tsf32; - /** Known last frame rssi, in case of multiple stations, if + /** Known last frame RSSI, in case of multiple stations, if * and at different ranges, this would not guarantee that - * this is the least rssi. + * this is the least RSSI. */ A_UINT32 last_ack_rssi; @@ -17630,10 +17637,10 @@ typedef struct { /** * WMI_ROAM_SCAN_MODE: Set Roam Scan mode - * the roam scan mode is one of the periodic, rssi change, both, none. + * the roam scan mode is one of the periodic, RSSI change, both, none. * None : Disable Roam scan. No Roam scan at all. * Periodic : Scan periodically with a configurable period. - * Rssi change : Scan when ever rssi to current AP changes by the threshold value + * Rssi change : Scan when ever RSSI to current AP changes by the threshold value * set by WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD command. * Both : Both of the above (scan when either period expires or rss to current AP changes by X amount) * @@ -17675,25 +17682,25 @@ typedef struct { #define WMI_ROAM_SCAN_STOP_CMD 0x1 /** - * WMI_ROAM_SCAN_RSSI_THRESHOLD : set scan rssi threshold - * scan rssi threshold is the rssi threshold below which the FW will start running Roam scans. + * WMI_ROAM_SCAN_RSSI_THRESHOLD : set scan RSSI threshold + * scan RSSI threshold is the RSSI threshold below which the FW will start running Roam scans. * Applicable when WMI_ROAM_SCAN_MODE is not set to none. */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_rssi_threshold_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ A_UINT32 vdev_id; - /** roam scan rssi threshold */ + /** roam scan RSSI threshold */ A_UINT32 roam_scan_rssi_thresh; /** When using Hw generated beacon RSSI interrupts */ A_UINT32 roam_rssi_thresh_diff; /** 5G scan max count */ A_UINT32 hirssi_scan_max_count; - /** 5G scan rssi change threshold value */ + /** 5G scan RSSI change threshold value */ A_UINT32 hirssi_scan_delta; /** 5G scan upper bound */ A_UINT32 hirssi_upper_bound; - /** roam scan rssi threshold for 5G band. + /** roam scan RSSI threshold for 5G band. * offset from roam_scan_rssi_thres, in dB units */ A_INT32 rssi_thresh_offset_5g; @@ -17813,7 +17820,7 @@ typedef struct { A_UINT32 penalty_factor_5g; /** factor by which 5GHz RSSI is penalized */ A_UINT32 max_boost_5g; /** maximum boost that can be applied to a 5GHz RSSI */ A_UINT32 max_penalty_5g; /** maximum penalty that can be applied to a 5GHz RSSI */ - A_UINT32 good_rssi_threshold; /** RSSI below which roam is kicked in by background scan, although rssi is still good */ + A_UINT32 good_rssi_threshold; /** RSSI below which roam is kicked in by background scan, although RSSI is still good */ } wmi_roam_scan_extended_threshold_param; /** @@ -17839,16 +17846,16 @@ typedef struct { } wmi_roam_scan_period_fixed_param; /** - * WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD : rssi delta to trigger the roam scan. + * WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD : RSSI delta to trigger the roam scan. * Rssi change threshold used when mode is Rssi change (or) Both. - * The FW will run the roam scan when ever the rssi changes (up or down) by the value set by this parameter. - * Note scan is triggered based on the rssi threshold condition set by WMI_ROAM_SCAN_RSSI_THRESHOLD + * The FW will run the roam scan when ever the RSSI changes (up or down) by the value set by this parameter. + * Note scan is triggered based on the RSSI threshold condition set by WMI_ROAM_SCAN_RSSI_THRESHOLD */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_rssi_change_threshold_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ A_UINT32 vdev_id; - /** roam scan rssi change threshold value */ + /** roam scan RSSI change threshold value */ A_UINT32 roam_scan_rssi_change_thresh; /** When using Hw generated beacon RSSI interrupts */ A_UINT32 bcn_rssi_weight; @@ -18026,14 +18033,14 @@ typedef struct { WMI_SET_BITS(value32, (8 * (security_index)), 8, score_pcnt) /** - best_rssi_threshold: Roamable AP RSSI equal or better than this threshold, full rssi score 100. Units in dBm. + best_rssi_threshold: Roamable AP RSSI equal or better than this threshold, full RSSI score 100. Units in dBm. good_rssi_threshold: Below this threshold, scoring linear percentage between rssi_good_pcnt and 100. Units in dBm. - bad_rssi_threshold: Between good and bad rssi threshold, scoring linear percentage between rssi_bad_pcnt and rssi_good_pcnt. Units in dBm. - good_rssi_pcnt: Used to assigned scoring percentage of each slot between best to good rssi threshold. Units in percentage. - bad_rssi_pcnt: Used to assigned scoring percentage of each slot between good to bad rssi threshold. Units in percentage. + bad_rssi_threshold: Between good and bad RSSI threshold, scoring linear percentage between rssi_bad_pcnt and rssi_good_pcnt. Units in dBm. + good_rssi_pcnt: Used to assigned scoring percentage of each slot between best to good RSSI threshold. Units in percentage. + bad_rssi_pcnt: Used to assigned scoring percentage of each slot between good to bad RSSI threshold. Units in percentage. good_bucket_size : bucket size of slot in good zone. Units in dB. bad_bucket_size : bucket size of slot in bad zone. Units in dB. - rssi_pref_5g_rssi_thresh: Below rssi threshold, 5G AP have given preference of band percentage. Units in dBm. + rssi_pref_5g_rssi_thresh: Below RSSI threshold, 5G AP have given preference of band percentage. Units in dBm. */ /** The graph below explains how RSSI scoring percentage is calculated @@ -18064,7 +18071,7 @@ t | |___o (x1,y1) (x1 = good_rssi, y1 = good_rssi_pcnt) 40 | o------------ | (x2,y2) (x2 = bad_rssi, y2 = bad_rssi_pcnt) +------o------------o-----------o-------------> - -50 -70 -80 rssi dBm + -50 -70 -80 RSSI dBm | excellent | good | bad | poor | zone | zone | zone | zone @@ -18233,7 +18240,7 @@ typedef struct { /* Vendor specific roam score algorithm ID from WMI_VENDOR_ROAM_SCORE_ALGORITHM_ID enum */ A_UINT32 vendor_roam_score_algorithm_id; /* - * During CU and low rssi based roam triggers, consider AP as + * During CU and low RSSI based roam triggers, consider AP as * roam candidate only if its roam score is better than connected AP score * by at least candidate_min_roam_score_delta. */ @@ -18303,10 +18310,10 @@ typedef struct { /* Roam trigger reason ID from WMI_ROAM_TRIGGER_REASON_ID */ A_UINT32 roam_trigger_reason; /* - * Consider AP as roam candidate only if AP rssi is better than + * Consider AP as roam candidate only if AP RSSI is better than * candidate_min_rssi */ - A_UINT32 candidate_min_rssi; /* units = dbm */ + A_UINT32 candidate_min_rssi; /* units = dBm */ } wmi_roam_cnd_min_rssi_param; /** To match an open AP, the rs_authmode should be set to WMI_AUTH_NONE @@ -18320,8 +18327,8 @@ typedef struct { /** flags as defined above */ A_UINT32 flags; /** - * rssi threshold value in dB: the value of the candidate AP should - * higher by this threshold than the rssi of the currently associated AP. + * RSSI threshold value in dB: the value of the candidate AP should + * higher by this threshold than the RSSI of the currently associated AP. */ A_UINT32 rssi_threshold; /** @@ -18349,7 +18356,7 @@ typedef struct { A_UINT32 rssi_abs_thresh; /** * bg_rssi_threshold value in dB: For background scan the value of - * the candidate AP should be higher by this threshold than the rssi + * the candidate AP should be higher by this threshold than the RSSI * of the currently associated AP. */ A_UINT32 bg_rssi_threshold; @@ -18369,7 +18376,7 @@ typedef struct { * Refer WLAN_ROAM_SCORE_MAX_BAND_INDEX for possible band_idx values. */ A_UINT32 band_idx; - /** Below rssi/cu factor_value & factor_score param values are configured by vendor */ + /** Below RSSI/CU factor_value & factor_score param values are configured by vendor */ A_UINT32 rssi_factor_value1; A_UINT32 rssi_factor_value2; A_UINT32 rssi_factor_value3; @@ -18390,7 +18397,7 @@ typedef struct { * A 'strong' candidate is * 1) Is eligible candidate * (all conditions are met in existing candidate selection). - * 2) Its rssi is better than earlystop threshold. + * 2) Its RSSI is better than earlystop threshold. * Earlystop threshold will be relaxed as each channel is scanned. */ typedef struct { @@ -18404,7 +18411,7 @@ typedef struct { typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_dense_thres_param */ A_UINT32 tlv_header; - /** rssi threshold offset under trffic and dense env */ + /** RSSI threshold offset under trffic and dense env */ A_UINT32 roam_dense_rssi_thres_offset; /** minimum number of APs to determine dense env */ A_UINT32 roam_dense_min_aps; @@ -18423,11 +18430,11 @@ typedef struct { 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 */ + /** 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; - /** roam scan rssi threshold for 2G band. + /** roam scan RSSI threshold for 2 GHz band. * offset from roam_bg_scan_bad_rssi_thresh, in dB units */ A_INT32 bad_rssi_thresh_offset_2g; @@ -18754,7 +18761,7 @@ typedef struct { wmi_mac_addr bssid; /** How much time in milliseconds to keep AP in blacklist */ A_UINT32 timeout; - /** rssi (dBm units) when put in blacklist */ + /** RSSI (dBm units) when put in blacklist */ A_INT32 rssi; /* Blacklist reason from WMI_BLACKLIST_REASON_ID */ A_UINT32 reason; @@ -18808,7 +18815,7 @@ typedef struct { A_UINT32 vdev_id; /** reason for roam event */ A_UINT32 reason; - /** associated AP's rssi calculated by FW when reason code is WMI_ROAM_REASON_LOW_RSSI*/ + /** associated AP's RSSI calculated by FW when reason code is WMI_ROAM_REASON_LOW_RSSI */ A_UINT32 rssi; /** roam notification */ A_UINT32 notif; @@ -18848,7 +18855,7 @@ typedef struct { #define WMI_ROAM_REASON_INVALID 0x0 /** invalid reason. Do not interpret reason field */ #define WMI_ROAM_REASON_BETTER_AP 0x1 /** found a better AP */ #define WMI_ROAM_REASON_BMISS 0x2 /** beacon miss detected */ -#define WMI_ROAM_REASON_LOW_RSSI 0x3 /** connected AP's low rssi condition detected */ +#define WMI_ROAM_REASON_LOW_RSSI 0x3 /** connected AP's low RSSI condition detected */ #define WMI_ROAM_REASON_SUITABLE_AP 0x4 /** found another AP that matches SSID and Security profile in WMI_ROAM_AP_PROFILE, found during scan @@ -19195,10 +19202,10 @@ typedef struct { A_UINT32 trigger_reason; /** Roam trigger reason from WMI_ROAM_TRIGGER_REASON_ID */ A_UINT32 enable; /** 0 - Disable, non-zero - enable */ A_UINT32 scan_mode; /** Scan mode from WMI_ROAM_TRIGGER_SCAN_MODE */ - /** consider roam trigger if connected AP rssi is worse than trigger_rssi_threshold */ - A_INT32 trigger_rssi_threshold; /* Units in dbm*/ + /** consider roam trigger if connected AP RSSI is worse than trigger_rssi_threshold */ + A_INT32 trigger_rssi_threshold; /* Units in dBm */ /* - * Consider 2.4GHz 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, @@ -19206,7 +19213,7 @@ typedef struct { * 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 */ + A_INT32 cand_ap_min_rssi_threshold; /* Units in dBm */ /* Roam score delta in %. * Consider AP as roam candidate only if AP score is at least * roam_score_delta % better than connected AP score. @@ -19220,15 +19227,15 @@ typedef struct { Valid values are 0 - 255 */ A_UINT32 reason_code; /* - * Consider 5GHz AP as roam candidate only if AP rssi is better than + * 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 */ + A_INT32 cand_ap_min_rssi_threshold_5g; /* Units in dBm */ /* - * Consider 6GHz AP as roam candidate only if AP rssi is better than + * Consider 6 GHz 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 */ + A_INT32 cand_ap_min_rssi_threshold_6g; /* Units in dBm */ } wmi_configure_roam_trigger_parameters; /** @@ -20828,11 +20835,11 @@ typedef struct connected_nlo_bss_band_rssi_pref_t { typedef struct connected_nlo_rssi_params_t { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_connected_nlo_rssi_params */ - /* Relative rssi threshold (in dB) by which new BSS should have better rssi than + /* Relative RSSI threshold (in dB) by which new BSS should have better RSSI than * the current connected BSS. */ A_INT32 relative_rssi; - /* The amount of rssi preference (in dB) that can be given to a 5G BSS over 2.4G BSS. */ + /* The amount of RSSI preference (in dB) that can be given to a 5G BSS over 2.4G BSS. */ A_INT32 relative_rssi_5g_pref; } connected_nlo_rssi_params; @@ -20961,7 +20968,7 @@ typedef struct { wmi_ssid ssid; wmi_mac_addr bssid; /* bssid of the network */ A_UINT32 channel_mhz; /* channel frequency in MHz */ - A_UINT32 rssi; /* rssi value */ + A_UINT32 rssi; /* RSSI value */ A_UINT32 rtt; /* timestamp in nanoseconds*/ A_UINT32 rtt_sd; /* standard deviation in rtt */ A_UINT32 beacon_period; /* beacon advertised in the beacon */ @@ -22748,7 +22755,7 @@ typedef struct #define LPI_IE_BITMAP_FLAGS 0x00200000 /* reserved as a bitmap to indicate more scan information; one such use being to indicate if the on-going scan is interrupted or not */ #define LPI_IE_BITMAP_CACHING_REQD 0x00400000 /* extscan will use this field to indicate if this frame info needs to be cached in LOWI LP or not */ #define LPI_IE_BITMAP_REPORT_CONTEXT_HUB 0x00800000 /* extscan will use this field to indicate to LOWI LP whether to report result to context hub or not. */ -#define LPI_IE_BITMAP_CHRE_RADIO_CHAIN 0x01000000 /* include radio chain and rssi per chain information if this bit is set - for CHRE */ +#define LPI_IE_BITMAP_CHRE_RADIO_CHAIN 0x01000000 /* include radio chain and RSSI per chain information if this bit is set - for CHRE */ /* 0x02000000, 0x04000000, and 0x08000000 are unused / available */ @@ -23044,7 +23051,7 @@ typedef struct { wmi_mac_addr peer_mac_address; /** data_rate of the peer */ A_UINT32 data_rate; - /** rssi of the peer */ + /** RSSI of the peer */ A_UINT32 rssi; /** tx fail count */ A_UINT32 tx_fail_cnt; @@ -23102,7 +23109,7 @@ typedef struct { A_UINT32 tlv_header; /** mac addr of the peer */ wmi_mac_addr peer_mac_address; - /** per chain rssi of the peer, for up to 8 chains. + /** per chain RSSI of the peer, for up to 8 chains. * Each chain's entry reports the RSSI for different bandwidths: * bits 7:0 -> primary 20 MHz * bits 15:8 -> secondary 20 MHz of 40 MHz channel (if applicable) @@ -25003,7 +25010,7 @@ typedef struct { * since 4 bits are not enough. */ A_UINT32 roam_reason; - /** associated AP's rssi calculated by FW when reason code is WMI_ROAM_REASON_LOW_RSSI. not valid if roam_reason is BMISS */ + /** associated AP's RSSI calculated by FW when reason code is WMI_ROAM_REASON_LOW_RSSI. not valid if roam_reason is BMISS */ A_UINT32 rssi; /** MAC address of roamed AP */ wmi_mac_addr bssid; /* BSSID */ @@ -25608,7 +25615,7 @@ typedef struct { A_UINT32 table_id; /** operation mode: start/stop */ A_UINT32 mode; /* wmi_extscan_operation_mode */ - /** number of rssi samples to store */ + /** number of RSSI samples to store */ A_UINT32 max_rssi_samples; /** number of samples to use to calculate RSSI average */ A_UINT32 rssi_averaging_samples; @@ -25880,9 +25887,9 @@ typedef struct { A_UINT32 flags; /** RTT in ns */ A_UINT32 rtt; - /** rtt standard deviation */ + /** RTT standard deviation */ A_UINT32 rtt_sd; - /** rssi information */ + /** RSSI information */ A_UINT32 number_rssi_samples; /** IE length */ A_UINT32 ie_length; /* length of IE data */ @@ -28951,73 +28958,73 @@ typedef enum { * A_UINT8 Enable Flag * A_UINT8 Power Table Index * ====================FCC POWER LIMIT VALUE====================== - * A_INT8 FCC 2Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) - * A_INT8 FCC 2Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) - * A_INT8 FCC 2Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) - * A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) - * A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) - * A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 FCC 2 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) + * A_INT8 FCC 2 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) + * A_INT8 FCC 2 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) + * A_INT8 FCC 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 FCC 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 FCC 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 FCC 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 FCC 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 FCC 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 FCC 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 FCC 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 FCC 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 FCC 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 FCC 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 FCC 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 FCC 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 FCC 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 FCC 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) * ====================ICNIRP POWER LIMIT VALUE====================== - * A_INT8 ICNIRP 2Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) - * A_INT8 ICNIRP 2Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) - * A_INT8 ICNIRP 2Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) - * A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) - * A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) - * A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) - * A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) - * A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 ICNIRP 2 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) + * A_INT8 ICNIRP 2 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) + * A_INT8 ICNIRP 2 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) + * A_INT8 ICNIRP 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 ICNIRP 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 ICNIRP 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48) + * A_INT8 ICNIRP 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 ICNIRP 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 ICNIRP 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144) + * A_INT8 ICNIRP 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 ICNIRP 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 ICNIRP 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161) + * A_INT8 ICNIRP 5 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 ICNIRP 5 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 ICNIRP 5 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) + * A_INT8 ICNIRP 6 GHz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149) */ BIOS_PARAM_TYPE_BANDEDGE_CTL_POWER, @@ -30393,7 +30400,7 @@ typedef enum wmi_coex_config_type { WMI_COEX_CONFIG_INQUIRY_STA_TDM = 9, /* config interval (ms units) (arg1 BT, arg2 WLAN) for STA + INQUIRY */ WMI_COEX_CONFIG_INQUIRY_SAP_TDM = 10, /* config interval (ms units) (arg1 BT, arg2 WLAN) for SAP + INQUIRY */ WMI_COEX_CONFIG_INQUIRY_P2P_STA_TDM = 11, /* config interval (ms units) (arg1 BT, arg2 WLAN) for P2P + STA + INQUIRY */ - WMI_COEX_CONFIG_TX_POWER = 12, /* config wlan total tx power when bt coex (arg1 is wlan_tx_power_limit, in 0.5dbm units) */ + WMI_COEX_CONFIG_TX_POWER = 12, /* config wlan total tx power when bt coex (arg1 is wlan_tx_power_limit, in 0.5 dBm units) */ WMI_COEX_CONFIG_PTA_CONFIG = 13, /* config whether enable PTA and GPIO number (arg1 is pta_enable, arg2 is GPIO number used as /BT_ACTIVE/BT_PRIORITY/WLAN_DENY,8 bit for each) */ WMI_COEX_CONFIG_AP_TDM = 14, /* config interval (arg1 duty cycle in ms, arg2 WLAN duration in ms) for AP */ WMI_COEX_CONFIG_WLAN_SCAN_PRIORITY = 15, /* config to set WLAN priority during Off Channel Scan */ @@ -30430,8 +30437,8 @@ typedef enum wmi_coex_config_type { * arg2 - 0 => Equal isolation b/w BT and each WLAN chain (default) * 1 => Different isolation b/w BT and each WLAN chain */ - WMI_COEX_CONFIG_BT_LOW_RSSI_THRESHOLD = 26,/*config BT low rssi threshold (dbm units)*/ - WMI_COEX_CONFIG_BT_INTERFERENCE_LEVEL = 27,/*config bt interference level (dbm units) + WMI_COEX_CONFIG_BT_LOW_RSSI_THRESHOLD = 26, /* config BT low RSSI threshold (dBm units) */ + WMI_COEX_CONFIG_BT_INTERFERENCE_LEVEL = 27, /* config BT interference level (dBm units) arg1 low - lower limit arg2 low - upper limit arg3 medium - lower limit @@ -31691,7 +31698,7 @@ typedef struct { /* * This TLV used for Scan Radio RDP - * We have an RDP which supports Multiband-Frequency (2Ghz, 5Ghz and 6Ghz) + * We have an RDP which supports Multiband-Frequency (2 GHz, 5 GHz and 6 GHz) * on a single radio. * The AP acts as a special VAP. There will not be WMI_VDEV_UP_CMD. * This radio is used only for scanning purpose and to send few MGMT frames. @@ -32158,12 +32165,12 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) /* Roaming specific commands */ /* set roam scan mode */ WMI_RETURN_STRING(WMI_ROAM_SCAN_MODE); - /* set roam scan rssi threshold below which roam + /* set roam scan RSSI threshold below which roam * scan is enabled */ WMI_RETURN_STRING(WMI_ROAM_SCAN_RSSI_THRESHOLD); /* set roam scan period for periodic roam scan mode */ WMI_RETURN_STRING(WMI_ROAM_SCAN_PERIOD); - /* set roam scan trigger rssi change threshold */ + /* set roam scan trigger RSSI change threshold */ WMI_RETURN_STRING(WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD); /* set roam AP profile */ WMI_RETURN_STRING(WMI_ROAM_AP_PROFILE); @@ -34892,8 +34899,8 @@ typedef struct { A_UINT32 trigger_id; /* id from WMI_ROAM_TRIGGER_REASON_ID */ /* interpretation of trigger value is as follows, for different trigger IDs * ID = PER -> value = PER percentage - * ID = LOW_RSSI -> value = rssi in dB wrt noise floor, - * ID = HIGH_RSSI -> value = rssi in dB wrt to noise floor, + * ID = LOW_RSSI -> value = RSSI in dB wrt noise floor, + * ID = HIGH_RSSI -> value = RSSI in dB wrt to noise floor, * ID = DENSE -> value = specification if it is tx or rx traffic threshold, * (see WMI_[RX,TX]_TRAFFIC_ABOVE_THRESHOLD) * ID = PERIODIC -> value = periodicity in ms @@ -34919,23 +34926,23 @@ typedef struct { /** BSS load threshold after which roam scan should trigger */ A_UINT32 bss_load_threshold; /** rssi_2g_threshold - * If connected AP is in 2.4Ghz, then consider bss load roam triggered - * only if load % > bss_load_threshold && connected AP rssi is worse + * If connected AP is in 2.4 GHz, then consider bss load roam triggered + * only if load % > bss_load_threshold && connected AP RSSI is worse * than rssi_2g_threshold. */ - A_INT32 rssi_2g_threshold; /* units = dbm */ + A_INT32 rssi_2g_threshold; /* units = dBm */ /** rssi_5g_threshold - * If connected AP is in 5Ghz, then consider bss load roam triggered - * only if load % > bss_load_threshold && connected AP rssi is worse + * If connected AP is in 5 GHz, then consider bss load roam triggered + * only if load % > bss_load_threshold && connected AP RSSI is worse * than rssi_5g_threshold. */ - A_INT32 rssi_5g_threshold; /* units = dbm */ + A_INT32 rssi_5g_threshold; /* units = dBm */ /** rssi_6g_threshold - * If connected AP is in 6Ghz, then consider bss load roam triggered - * only if load % > bss_load_threshold && connected AP rssi is worse + * If connected AP is in 6 GHz, then consider bss load roam triggered + * only if load % > bss_load_threshold && connected AP RSSI is worse * than rssi_6g_threshold. If rssi_6g_threshold is 0, it should be ignored. */ - A_INT32 rssi_6g_threshold; /* units = dbm */ + A_INT32 rssi_6g_threshold; /* units = dBm */ } wmi_roam_bss_load_config_cmd_fixed_param; /** Deauth roam trigger parameters */ @@ -34950,11 +34957,11 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param */ A_UINT32 vdev_id; - /* 1-Enable, 0-Disable */ + /* 1: Enable, 0: Disable */ A_UINT32 enable; - /* Connected AP band. 0 - Any Band, 1 - 2.4Ghz Band, 2 - 5Ghz Band */ + /* Connected AP band. 0: Any Band, 1: 2.4 GHz Band, 2: 5 GHz Band */ A_UINT32 band; - /* Trigger Idle roaming only if rssi change of connected AP is within rssi_delta during idle time */ + /* Trigger Idle roaming only if RSSI change of connected AP is within rssi_delta during idle time */ A_UINT32 rssi_delta; /* units = dB */ /* Trigger idle roam only if connected RSSI is better than min_rssi */ A_INT32 min_rssi; /* units = dBm */ @@ -34966,8 +34973,8 @@ typedef struct { * 2. No TX/RX data for more than idle_time configured * or TX/RX data packets count is less than data_packet_count * during idle_time - * 3. Connected AP rssi change is not more than rssi_delta - * 4. Connected AP rssi is better than min_rssi. + * 3. Connected AP RSSI change is not more than rssi_delta + * 4. Connected AP RSSI is better than min_rssi. * The purpose of this trigger for idle scan is to issue the scan * even if (moreover, particularly if) the connection to the * existing AP is still good, to keep the STA from getting locked @@ -35155,7 +35162,7 @@ typedef struct { * For example, if num_of_roam_candidates = [2, 3] then channel will * have 5 elements, with the first 2 elements from the first scan, * and the last 3 elements from the second scan. - * A_UINT32 rssi[]; rssi in dB w.r.t. noise floor of candidates + * A_UINT32 rssi[]; RSSI in dB w.r.t. noise floor of candidates * in each roam scan. * The num_of_roam_candidates[] elements specify how many elements * there are within rssi[] for each scan. @@ -35173,7 +35180,7 @@ typedef enum { WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER, WMI_ROAM_TRIGGER_SUB_REASON_BTM_DI_TIMER, /* Roam scan triggered due to BTM Disassoc Imminent timeout */ WMI_ROAM_TRIGGER_SUB_REASON_FULL_SCAN, /* Roam scan triggered due to partial scan failure */ - WMI_ROAM_TRIGGER_SUB_REASON_LOW_RSSI_PERIODIC, /* Roam scan triggered due to Low rssi periodic timer */ + WMI_ROAM_TRIGGER_SUB_REASON_LOW_RSSI_PERIODIC, /* Roam scan triggered due to Low RSSI periodic timer */ WMI_ROAM_TRIGGER_SUB_REASON_CU_PERIODIC, /* Roam scan triggered due to CU periodic timer */ /* PERIODIC_TIMER_AFTER_INACTIVITY: * Roam scan triggered due to periodic timer after device in @@ -35231,7 +35238,7 @@ typedef struct { * if multiple scans are triggered for a single roam trigger. */ A_UINT32 trigger_sub_reason; - A_UINT32 current_rssi; /* Connected AP rssi in dBm */ + A_UINT32 current_rssi; /* Connected AP RSSI in dBm */ /* roam_rssi_threshold: * RSSI threshold value in dBm for low RSSI roam trigger. */ @@ -35298,9 +35305,9 @@ typedef struct { }; /* btm_req_dialog_token: dialog token number in BTM request frame */ A_UINT32 btm_req_dialog_token; - /* data rssi in dBm when abort to roam scan */ + /* data RSSI in dBm when abort to roam scan */ A_UINT32 data_rssi; - /* data rssi threshold in dBm */ + /* data RSSI threshold in dBm */ A_UINT32 data_rssi_threshold; /* rx linkspeed status, 0:good linkspeed, 1:bad */ A_UINT32 rx_linkspeed_status; @@ -35359,14 +35366,14 @@ typedef struct { A_UINT32 candidate_type; /* 0 - Candidate AP, 1 - Connected AP */ wmi_mac_addr bssid; /* AP MAC address */ A_UINT32 channel; /* AP channel frequency in MHz */ - A_UINT32 rssi; /* AP current rssi in dBm */ + A_UINT32 rssi; /* AP current RSSI in dBm */ A_UINT32 cu_load; /* AP current cu load percentage (0-100) */ /* * The score fields below don't have a pre-determined range, * but use the sense that a higher score indicates a better * roam candidate. */ - A_UINT32 rssi_score; /* AP current rssi score */ + A_UINT32 rssi_score; /* AP current RSSI score */ A_UINT32 cu_score; /* AP current cu score */ A_UINT32 total_score; /* AP total score */ A_UINT32 etp; /* AP Estimated Throughput (ETP) value in mbps */ @@ -35556,7 +35563,7 @@ typedef struct { * rssi_dbm_abs * Last known RSSI of the current BSSID at the moment when the frame * was sent and received. - * This rssi value is valid for deauth / disassoc frame only. + * This RSSI value is valid for deauth / disassoc frame only. * The rssi_dbm_abs value is the absolute value of the RSSI in dBm units. * For example, if the RSSI is -40 dBm, rssi_dbm_abs will be 40. */ @@ -35811,14 +35818,14 @@ typedef enum { * default value will be used. * Bit : 8-13 - To indicate the DFS RSSI threshold for current AP * with range 0 to 58, default value is 0 dB - * (DFS rssi threshold = -70 dBm + 0 dB = -70 dBm). + * (DFS RSSI threshold = -70 dBm + 0 dB = -70 dBm). * The specified value (in dB) is added to the -70 dBm * baseline value to get the RSSI threshold in dBm. * If an invalid (out of range) value is provided, the * default value will be used. * Bit : 14-19 - To indicate the DFS RSSI threshold for candidate AP * with range 0 to 58, default value is 0 dB - * (DFS rssi threshold = -70 - 0 = -70 dBm). + * (DFS RSSI threshold = -70 - 0 = -70 dBm). * The specified value (in dB) is added to the -70 dBm * baseline value to get the RSSI threshold in dBm. * If an invalid (out of range) value is provided, the @@ -35852,13 +35859,13 @@ typedef enum { WMI_ROAM_PARAM_ROAM_CONTROL_FULL_SCAN_CHANNEL_OPTIMIZATION = 5, /* - * Roam param to enable/disable scanning of 6GHz psc channels - * As per current implementation, Wi-Fi STA scans on all 6GHz PSC channels + * Roam param to enable/disable scanning of 6 GHz PSC channels + * As per current implementation, Wi-Fi STA scans on all 6 GHz PSC channels * as part of full scan during a roam scan irrespective of whether APs are - * present in 6GHz or not. - * This flag controls the optimization to do the scan in 6GHz PSC channels - * only if channel map or newly received RNR indicates 6GHz APs during - * current 2.4GHz or 5GHz scanning of Roam Full scan. + * present in 6 GHz or not. + * This flag controls the optimization to do the scan in 6 GHz PSC channels + * only if channel map or newly received RNR indicates 6 GHz APs during + * current 2.4 GHz or 5 GHz scanning of Roam Full scan. */ WMI_ROAM_PARAM_ROAM_CONTROL_FULL_SCAN_6GHZ_PSC_ONLY_WITH_RNR = 6, @@ -36346,7 +36353,7 @@ typedef struct { /* * Below structure is related to WMI CMD that configures the default - * minimum (OBSS_MIN) and maximum (OBSS_MAX) Other BSS levels (RSSI in dbm) + * minimum (OBSS_MIN) and maximum (OBSS_MAX) Other BSS levels (RSSI in dBm) * for VDEV of a give type (STA or AP). These thresholds are configured * within the Host and passed down to the FW. FW will use these * default OBSS_MIN and OBSS_MAX values during roaming if the assoc response @@ -37530,7 +37537,7 @@ typedef struct { /* Bit 0: reserved */ -/* Bit 1: support for 320Mhz in 6ghz */ +/* Bit 1: support for 320Mhz in 6 GHz */ #define WMI_EHTCAP_PHY_320MHZIN6GHZ_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[0], 1, 1) #define WMI_EHTCAP_PHY_320MHZIN6GHZ_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[0], 1, 1, value) @@ -37654,7 +37661,7 @@ typedef struct { #define WMI_EHTCAP_PHY_SUPMCS15_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[1], 19, 4) #define WMI_EHTCAP_PHY_SUPMCS15_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[1], 19, 4, value) -/* Bit 55: support of EHT DUP in 6ghz */ +/* Bit 55: support of EHT DUP in 6 GHz */ #define WMI_EHTCAP_PHY_EHTDUPIN6GHZ_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[1], 23, 1) #define WMI_EHTCAP_PHY_EHTDUPIN6GHZ_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[1], 23, 1, value) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c19e2f9cfc0c..a4938b42ec9b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1229 +#define __WMI_REVISION_ 1230 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From efd847ca2a42e33bcc9f5d181ba48d1566c8985b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Nov 2022 06:01:02 -0800 Subject: [PATCH 14/59] fw-api: CL 20374109 - update fw common interface files Change-Id: Iabf56aa80db4687c226fb85e106b3389f4c30842 WMI: add more roaming event info CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 26 ++++++++- fw/wmi_unified.h | 137 ++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 163 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 7d29b075ed8f..62fbafe3ddaa 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1307,6 +1307,18 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update, WMITLV_TAG_STRUC_wmi_mlo_link_removal_evt_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_removal_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_reason_cmm_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_rssi_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_bss_load_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_deauth_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_btm_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_bmiss_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_dense_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_force_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_kickout_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_per_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_periodic_tlv_param, + WMITLV_TAG_STRUC_wmi_roam_trigger_hi_rssi_tlv_param, } WMITLV_TAG_ID; /* @@ -4604,7 +4616,19 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_initial_info, roam_initial_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_btm_response_info, roam_btm_response_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_msg_info, roam_msg_info, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_btm_request_candidate_info, roam_btm_request_candidate_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_btm_request_candidate_info, roam_btm_request_candidate_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_reason_cmm, roam_trigger_reason_cmm, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_rssi, roam_trigger_rssi, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_bss_load, roam_trigger_bss_load, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_deauth, roam_trigger_deauth, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_btm, roam_trigger_btm, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_bmiss, roam_trigger_bmiss, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_dense, roam_trigger_dense, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_force, roam_trigger_force, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_kickout, roam_trigger_kickout, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_per, roam_trigger_per, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_periodic, roam_trigger_periodic, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_hi_rssi, roam_trigger_hi_rssi, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_STATS_EVENTID); /* Motion detection cmd */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8ffda8fd864a..6cbacb475ee9 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -35646,6 +35646,143 @@ typedef struct { A_UINT32 roam_scan_trigger_count; /* Number of roam scans triggered */ } wmi_roam_stats_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_reason_cmm_tlv_param */ + /* + * timestamp is the absolute time w.r.t host timer which is synchronized + * between the host and target. + * This timestamp indicates the time when roam trigger happened. + */ + A_UINT32 timestamp; /* Timestamp in milli seconds */ + /* trigger_reason: + * Roam trigger reason from WMI_ROAM_TRIGGER_REASON_ID + */ + A_UINT32 trigger_reason; + /* trigger_sub_reason: + * Reason for each roam scan from WMI_ROAM_TRIGGER_SUB_REASON_ID, + * if multiple scans are triggered for a single roam trigger. + */ + A_UINT32 trigger_sub_reason; + A_UINT32 current_rssi; /* Connected AP RSSI in dBm */ +} wmi_roam_trigger_reason_cmm; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_rssi_tlv_param */ + /* roam_rssi_threshold: + * RSSI threshold value in dBm for low RSSI roam trigger. + */ + A_UINT32 roam_rssi_threshold; + /* data RSSI in dBm */ + A_UINT32 data_rssi; + /* data RSSI threshold in dBm */ + A_UINT32 data_rssi_threshold; + /* rx linkspeed status, 0:good linkspeed, 1:bad */ + A_UINT32 rx_linkspeed_status; +} wmi_roam_trigger_rssi; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_bss_load_tlv_param */ + A_UINT32 cu_load; /* Connected AP CU load percentage (0-100) */ +} wmi_roam_trigger_bss_load; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_deauth_tlv_param */ + /* deauth_type: + * 1 -> De-authentication + * 2 -> Disassociation + */ + A_UINT32 deauth_type; + /* deauth_reason: + * De-authentication or disassociation reason. + * De-authentication / disassociation Values are enumerated in the + * 802.11 spec. + */ + A_UINT32 deauth_reason; +} wmi_roam_trigger_deauth; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_btm_tlv_param */ + /* btm_request_mode: + * Mode Values are enumerated in the 802.11 spec. + */ + A_UINT32 btm_request_mode; + A_UINT32 disassoc_imminent_timer; /* in Milli seconds */ + /* validity_internal: + * Preferred candidate list validity interval in Milli seconds. + */ + A_UINT32 validity_internal; + /* candidate_list_count: + * Number of preferred candidates from BTM request. + */ + A_UINT32 candidate_list_count; + /* btm_response_status_code: + * Response status Values are enumerated in the 802.11 spec. + */ + A_UINT32 btm_response_status_code; + + /* BTM BSS termination timeout value in milli seconds */ + A_UINT32 btm_bss_termination_timeout; + /* BTM MBO assoc retry timeout value in milli seconds */ + A_UINT32 btm_mbo_assoc_retry_timeout; + + /* btm_req_dialog_token: dialog token number in BTM request frame */ + A_UINT32 btm_req_dialog_token; +} wmi_roam_trigger_btm; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_bmiss_tlv_param */ + /* B[0-6]: final bmiss cnt. + * B[7-23]: consecutive bmiss cnt + * B[24]: isQosNullSuccess: 0: success, 1:fail + */ + A_UINT32 bmiss_status; +} wmi_roam_trigger_bmiss; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_dense_tlv_param */ + /* RX Throughput in bytes per second in dense env */ + A_UINT32 rx_tput; + /* TX Throughput in bytes per second in dense env */ + A_UINT32 tx_tput; + /* dense_status: b[0-7]: roamable AP count info in dense env */ + A_UINT32 dense_status; +} wmi_roam_trigger_dense; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_force_tlv_param */ + A_UINT32 invoke_reason; /* from wlan_roam_invoke_reason */ +} wmi_roam_trigger_force; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_kickout_tlv_param */ + /* consecutive tx failure threshold */ + A_UINT32 kickout_th; + A_UINT32 kickout_reason; /* from PEER_KICKOUT_REASON */ +} wmi_roam_trigger_kickout; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_per_tlv_param */ + /* For PER roam, + * If the number of PPDUs with PHY rate < low_rate_thresh exceeds + * N * tx/rx_rate_thresh_percnt / 100, roaming will be triggered. + * b[0-7]: tx_rate_thresh_percnt + * b[16-23]:rx_rate_thresh_percnt + */ + A_UINT32 rate_thresh_percnt; +} wmi_roam_trigger_per; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_periodic_tlv_param */ + /* roam scan periodic : units = milliseconds*/ + A_UINT32 periodic_timer_ms; +} wmi_roam_trigger_periodic; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_hi_rssi_tlv_param */ + /* roam High RSSI threshold */ + A_UINT32 hi_rssi_threshold; +} wmi_roam_trigger_hi_rssi; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param */ A_UINT32 vdev_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a4938b42ec9b..0a6cb0590d0c 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1230 +#define __WMI_REVISION_ 1231 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d198772828436b995bc126dcb32ac759702d21bf Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Nov 2022 06:01:43 -0800 Subject: [PATCH 15/59] fw-api: CL 20378090 - update fw common interface files Add WLAN_MODULE_BAR def Change-Id: Iab3758f2285953dcc1b1030e430b3734e20d368e CRs-Fixed: 2262693 --- fw/wlan_module_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 54ae443abeaf..2760bbefb06a 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -149,6 +149,7 @@ typedef enum { WLAN_MODULE_SCHED_ALGO_SU, /* 0x6d */ WLAN_MODULE_SCHED_ALGO_MLO, /* 0x6e */ WLAN_MODULE_SCHED_ALGO_SAWF, /* 0x6f */ + WLAN_MODULE_BAR, /* 0x70 */ WLAN_MODULE_ID_MAX, From e746385d152d7bc06b4a35fcc5964ecdcb8a587b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Nov 2022 18:00:52 -0800 Subject: [PATCH 16/59] fw-api: CL 20391903 - update fw common interface files add WMI_ROAM_PARAM_ROAM_MCC_DISALLOW def Change-Id: Ic23d1ae3084cd56f19a0ab62cd6d20f6658ec654 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 +++++++ fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6cbacb475ee9..171b994291d6 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -36006,6 +36006,13 @@ typedef enum { */ WMI_ROAM_PARAM_ROAM_CONTROL_FULL_SCAN_6GHZ_PSC_ONLY_WITH_RNR = 6, + /* + * Flag to tell whether MCC is disallowed or not in sta + sta currrent case. + * If flag is unset, then no limitation for channels which sta can roam to. + * If flag is set, then the channels which one of STA roam to cause MCC with other STA, it will be disallowed. + */ + WMI_ROAM_PARAM_ROAM_MCC_DISALLOW = 7, + /*=== END ROAM_PARAM_PROTOTYPE SECTION ===*/ } WMI_ROAM_PARAM; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 0a6cb0590d0c..7e72366be50d 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1231 +#define __WMI_REVISION_ 1232 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e53f9be3d090a21a292ad0c54f463c3181fa8d55 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Nov 2022 18:01:39 -0800 Subject: [PATCH 17/59] fw-api: CL 20391906 - update fw common interface files add WLAN_MODULE_SMART_TX def Change-Id: Ic99ac29e9836a2be89f787783fac261689513949 CRs-Fixed: 2262693 --- fw/wlan_module_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 2760bbefb06a..188b0b0bb6b5 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -150,6 +150,7 @@ typedef enum { WLAN_MODULE_SCHED_ALGO_MLO, /* 0x6e */ WLAN_MODULE_SCHED_ALGO_SAWF, /* 0x6f */ WLAN_MODULE_BAR, /* 0x70 */ + WLAN_MODULE_SMART_TX, /* 0x71 */ WLAN_MODULE_ID_MAX, From e25af2625da57e7fe4dff624e6186f3a137cd9d5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 21 Nov 2022 06:01:07 -0800 Subject: [PATCH 18/59] fw-api: CL 20406907 - update fw common interface files Change-Id: I143b780da943e4fcad6b5f208dbf71d16ea4d5c2 WMI: add MLO_VDEV_TID_TO_LINK_MAP CMD,EVENT msg defs CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 19 ++- fw/wmi_unified.h | 371 ++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 390 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 62fbafe3ddaa..a929d6391c06 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1319,6 +1319,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_trigger_per_tlv_param, WMITLV_TAG_STRUC_wmi_roam_trigger_periodic_tlv_param, WMITLV_TAG_STRUC_wmi_roam_trigger_hi_rssi_tlv_param, + WMITLV_TAG_STRUC_wmi_mlo_bcast_t2lm_info, + WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_ie_info, } WMITLV_TAG_ID; /* @@ -1830,6 +1834,7 @@ typedef enum { OP(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID) \ OP(WMI_ODD_LIVEDUMP_REQUEST_CMDID) \ OP(WMI_MLO_LINK_REMOVAL_CMDID) \ + OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2126,6 +2131,7 @@ typedef enum { OP(WMI_XGAP_ENABLE_COMPLETE_EVENTID) \ OP(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID) \ OP(WMI_MLO_LINK_REMOVAL_EVENTID) \ + OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5029,6 +5035,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tid_to_link_map, tid_to_link_map, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID); +/** WMI cmd used to setup Tid to Link Mapping for a vdev */ +#define WMITLV_TABLE_WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param, wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_ap_vdev_tid_to_link_map_ie_info, mlo_vdev_tid_to_link_map_ie_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); + /* Mcast ipv4 address filter list cmd */ #define WMITLV_TABLE_WMI_VDEV_IGMP_OFFLOAD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_igmp_offload_fixed_param, wmi_igmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -5473,7 +5485,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_ml_info, ml_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bpcc_bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_is_my_mgmt_frame, my_frame, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_removal_tbtt_count, link_removal_tbtt_count, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_removal_tbtt_count, link_removal_tbtt_count, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_bcast_t2lm_info, mlo_bcast_t2lm_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* Management Rx FW Consumed Event */ @@ -7063,6 +7076,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update, wmi_mlo_link_removal_tbtt_update, tbtt_update, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_EVENTID); +/* WMI MLO T2LM Vdev event */ +#define WMITLV_TABLE_WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 171b994291d6..48280a972551 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1533,6 +1533,8 @@ typedef enum { WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID, /** WMI cmd for dynamically deleting a link from a MLD VAP */ WMI_MLO_LINK_REMOVAL_CMDID, + /** WMI cmd used to setup Tid to Link Mapping for a MLO VAP */ + WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ @@ -2335,6 +2337,8 @@ typedef enum { WMI_MLO_TEARDOWN_COMPLETE_EVENTID, /* Response event for Link Removal Cmd */ WMI_MLO_LINK_REMOVAL_EVENTID, + /* Response event for WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID */ + WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -6360,6 +6364,28 @@ typedef struct { */ } wmi_mgmt_ml_info; +#define WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_GET(_var) WMI_GET_BITS(_var, 0, 8) +#define WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_SET(_var, _val) WMI_SET_BITS(_var, 0, 8, _val) + +#define WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_EXP_DUR_GET(_var) WMI_GET_BITS(_var, 8, 24) +#define WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_EXP_DUR_SET(_var, _val) WMI_SET_BITS(_var, 8, 24, _val) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_bcast_t2lm_info */ + /* + * Vdev_id for MLO vap + * WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_GET / + * WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_SET + * vdev_id :8 + * + * Duration time for MLO Vap + * WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_GET / + * WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_SET + * expected_duration :24 + */ + A_UINT32 vdev_id_expec_dur; +} wmi_mlo_bcast_t2lm_info; + typedef enum { PKT_CAPTURE_MODE_DISABLE = 0, PKT_CAPTURE_MODE_MGMT_ONLY, @@ -32743,6 +32769,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_XGAP_ENABLE_CMDID); WMI_RETURN_STRING(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_REMOVAL_CMDID); + WMI_RETURN_STRING(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -39917,6 +39944,350 @@ typedef struct { */ } wmi_peer_tid_to_link_map_fixed_param; +typedef struct{ + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param */ + A_UINT32 tlv_header; + /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /** vdev_id for identifying the MLO Vap */ + A_UINT32 vdev_id; + /** disabled link bits */ + A_UINT32 disabled_link_bitmap; + /** + * Following this structure is the TLV: + * struct wmi_mlo_ap_vdev_tid_to_link_map_ie_info[]; + */ +} wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param; + +typedef enum { + /* Mapping Switch TSF */ + WMI_MAP_SWITCH_TIMER_TSF, + /* Mapping Switch Timer Expired */ + WMI_MAP_SWITCH_TIMER_EXPIRED, + /* Expected Duration Expired */ + WMI_EXPECTED_DUR_EXPIRED, +} WMI_MLO_TID_TO_LINK_MAP_STATUS; + +typedef struct{ + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param */ + A_UINT32 tlv_header; + /* vdev_id of AP MLO vap */ + A_UINT32 vdev_id; + /* containts mapping status of WMI_MLO_TID_TO_LINK_MAP_STATUS */ + A_UINT32 status_type; + /* Mapping switch time of current TSF value */ + A_UINT32 mapping_switch_tsf; +} wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param; + +/* CTRL Field bit-5-7 reserved */ +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DIR_GET(_var) WMI_GET_BITS(_var, 0, 2) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DIR_SET(_var, _val) WMI_SET_BITS(_var, 0, 2, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DEF_LINK_GET(_var) WMI_GET_BITS(_var, 2, 1) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DEF_LINK_SET(_var, _val) WMI_SET_BITS(_var, 2, 1, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_SWT_TIME_GET(_var) WMI_GET_BITS(_var, 3, 1) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_SWT_TIME_SET(_var, _val) WMI_SET_BITS(_var, 3, 1, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DUR_TIME_GET(_var) WMI_GET_BITS(_var, 4, 1) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DUR_TIME_SET(_var, _val) WMI_SET_BITS(_var, 4, 1, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_LINK_MAP_PRE_GET(_var) WMI_GET_BITS(_var, 8, 8) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_LINK_MAP_PRE_SET(_var, _val) WMI_SET_BITS(_var, 8, 8, _val) + +/* IEEE Link ID 15 bits on each link id 1 bit is reserved */ +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_0_GET(_var) WMI_GET_BITS(_var, 0, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_0_SET(_var, _val) WMI_SET_BITS(_var, 0, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_1_GET(_var) WMI_GET_BITS(_var, 16, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_1_SET(_var, _val) WMI_SET_BITS(_var, 16, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_2_GET(_var) WMI_GET_BITS(_var, 0, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_2_SET(_var, _val) WMI_SET_BITS(_var, 0, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_3_GET(_var) WMI_GET_BITS(_var, 16, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_3_SET(_var, _val) WMI_SET_BITS(_var, 16, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_4_GET(_var) WMI_GET_BITS(_var, 0, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_4_SET(_var, _val) WMI_SET_BITS(_var, 0, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_5_GET(_var) WMI_GET_BITS(_var, 16, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_5_SET(_var, _val) WMI_SET_BITS(_var, 16, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_6_GET(_var) WMI_GET_BITS(_var, 0, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_6_SET(_var, _val) WMI_SET_BITS(_var, 0, 15, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_7_GET(_var) WMI_GET_BITS(_var, 16, 15) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_7_SET(_var, _val) WMI_SET_BITS(_var, 16, 15, _val) + +/* HW Link ID each hw link with 16-bit */ +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_0_GET(_var) WMI_GET_BITS(_var, 0, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_0_SET(_var, _val) WMI_SET_BITS(_var, 0, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_1_GET(_var) WMI_GET_BITS(_var, 16, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_1_SET(_var, _val) WMI_SET_BITS(_var, 16, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_2_GET(_var) WMI_GET_BITS(_var, 0, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_2_SET(_var, _val) WMI_SET_BITS(_var, 0, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_3_GET(_var) WMI_GET_BITS(_var, 16, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_3_SET(_var, _val) WMI_SET_BITS(_var, 16, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_4_GET(_var) WMI_GET_BITS(_var, 0, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_4_SET(_var, _val) WMI_SET_BITS(_var, 0, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_5_GET(_var) WMI_GET_BITS(_var, 16, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_5_SET(_var, _val) WMI_SET_BITS(_var, 16, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_6_GET(_var) WMI_GET_BITS(_var, 0, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_6_SET(_var, _val) WMI_SET_BITS(_var, 0, 16, _val) + +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_7_GET(_var) WMI_GET_BITS(_var, 16, 16) +#define WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_7_SET(_var, _val) WMI_SET_BITS(_var, 16, 16, _val) + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tid_to_link_map */ + A_UINT32 tlv_header; + /* + * A_UINT32 + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DIR_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DIR_SET + * direction: 2 // 0 - DL, 1 - UL, 2 - BiDi + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DEF_LINK_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DEF_LINK_SET + * default_link_mapping:1 // 1 - Default Link Mapping Present + * // 0 - Default Link Mapping not present + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_SWT_TIME_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_SWT_TIME_SET + * mapping_switch_time_present:1 // 1 - Mapping Switch Time + * // Field Present + * // 0 - Mapping Switch Time + * // Field not Present + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DUR_TIME_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_DUR_TIME_SET + * expected_duration_present:1 // 1 - Expected Duration Field Present + * // 0 - Expected Duration Field + * // not Present + * + * reserved:3 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_LINK_MAP_PRE_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_CTRL_LINK_MAP_PRE_SET + * link_mapping_presence_indicator:8 // Link mapping presence indicator + * + * reserved2:16 // upper 16 bits are unused + */ + A_UINT32 tid_to_link_map_ctrl; + + /* + * Mapping Switch time represents TSF time for the New TID_TO_LINK Mapping + * will be established + * 16 bit of TSF time ( from bits 10 to 25) + * + * Default to Non-Default: One TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Mapping switch time present for New Non-Default Mapping + * + * Non-Default to Non-Default: Two TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Mapping switch time not present for 1st TID_TO_LINK Mapping + * (Current Non-Default Mapping) value would be zero + * Mapping switch time present for 2nd TID_TO_LINK Mapping + * (New Non-Default Mapping) + * + * Non_Default to Default: One TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Mapping switch time not present value would be zero + */ + A_UINT32 map_switch_time; + /* + * Expected duration would be either duration/remaining duration of Mapping + * + * Default to Non-Default: One TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Expected duration represents duration of New Non-Default Mapping + * will be effective + * + * Non-Default to Non-Default: Two TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Expected duration represents remaing duration of 1st TID_TO_LINK + * Mapping (Current Non-Default Mapping) + * Expected duration represents duration of the 2nd TID_TO_LINK + * Mapping (New Non-Default Mapping ) will be effective + * + * Non_Default to Default: One TID_TO_LINK Mapping IE + * (wmi_mlo_ap_vdev_tid_to_link_map_ie_info) + * Expected duration represents remaing duration of Current Non-Default + * Mapping + */ + A_UINT32 expected_duration; + + /* + * for default_link_mapping ieee_tid_0_1_link_map value would be zero + * which means IE should not include this param + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_0_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_0_SET + * tid_0_link_id:15 // TID_0 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_1_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_1_SET + * tid_1_link_id:15 // TID_1 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + */ + A_UINT32 ieee_tid_0_1_link_map; + /* + * for default_link_mapping ieee_tid_2_3_link_map value would be zero + * which means IE should not include this param + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_2_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_2_SET + * tid_2_link_id:15 // TID_2 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_3_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_3_SET + * tid_3_link_id:15 // TID_3 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + */ + A_UINT32 ieee_tid_2_3_link_map; + /* + * for default_link_mapping ieee_tid_4_5_link_map value would be zero + * which means IE should not include this param + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_4_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_4_SET + * tid_4_link_id:15 // TID_4 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_5_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_5_SET + * tid_5_link_id:15 // TID_5 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + */ + A_UINT32 ieee_tid_4_5_link_map; + /* + * for default_link_mapping ieee_tid_6_7_link_map value would be zero + * which means IE should not include this param + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_6_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_6_SET + * tid_6_link_id:15 // TID_6 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_7_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_IEEE_LINK_ID_7_SET + * tid_7_link_id:15 // TID_7 Link IDs (0 to 14) + * // Non-Zero value represents links mapped + * // to this TID. + * // Zero value represents links are not mapped + * // to this TID. + * + * reserved:1 + */ + A_UINT32 ieee_tid_6_7_link_map; + + /* + * hw_link_map will be used by the FW to pause or unpause the TIDs + * in all the associated MLD STAs in the corresponsing MLD VAP + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_0_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_0_SET + * hw_tid_0_link_map:16 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_1_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_1_SET + * hw_tid_1_link_map:16 + */ + A_UINT32 hw_tid_0_1_link_map; + /* + * hw_link_map will be used by the FW to pause or unpause the TIDs + * in all the associated MLD STAs in the corresponsing MLD VAP + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_2_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_2_SET + * hw_tid_2_link_map:16 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_3_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_3_SET + * hw_tid_3_link_map:16 + */ + A_UINT32 hw_tid_2_3_link_map; + /* + * hw_link_map will be used by the FW to pause or unpause the TIDs + * in all the associated MLD STAs in the corresponsing MLD VAP + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_4_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_4_SET + * hw_tid_4_link_map:16 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_5_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_5_SET + * hw_tid_5_link_map:16 + */ + A_UINT32 hw_tid_4_5_link_map; + /* + * hw_link_map will be used by the FW to pause or unpause the TIDs + * in all the associated MLD STAs in the corresponsing MLD VAP + * A_UINT32 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_6_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_6_SET + * hw_tid_6_link_map:16 + * + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_7_GET / + * WMI_MLO_VDEV_TID_TO_LINK_MAP_HW_LINK_ID_7_SET + * hw_tid_7_link_map:16 + */ + A_UINT32 hw_tid_6_7_link_map; +} wmi_mlo_ap_vdev_tid_to_link_map_ie_info; + #define WMI_IGMP_OFFLOAD_SUPPORT_DISABLE_BITMASK 0x0 #define WMI_IGMP_V1_OFFLOAD_SUPPORT_BITMASK 0x1 #define WMI_IGMP_V2_OFFLOAD_SUPPORT_BITMASK 0x2 diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7e72366be50d..c3383907ee7a 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1232 +#define __WMI_REVISION_ 1233 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 748f5eb1a1f5e3c3f69e4c358529f198488166c9 Mon Sep 17 00:00:00 2001 From: nobelj Date: Fri, 2 Sep 2022 01:18:30 -0700 Subject: [PATCH 19/59] fw-api: Add fw generated tlv for tx monitor Add firmware generated tlv used for tx monitor. Change-Id: I835f6e7ad8d62bce106a47ee162e06672701b119 CRs-Fixed: 3282325 --- fw/txmon_tlvs.h | 141 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 fw/txmon_tlvs.h diff --git a/fw/txmon_tlvs.h b/fw/txmon_tlvs.h new file mode 100644 index 000000000000..4ba80bad661f --- /dev/null +++ b/fw/txmon_tlvs.h @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _TXMON_TLVS_H_ +#define _TXMON_TLVS_H_ + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M 0x0000ffff +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S 0 + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M 0xffff0000 +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S 16 + +#define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M 0x000000ff +#define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S 0 + +#define TXMON_FW2SW_MON_FES_SETUP_MHZ_M 0x00ffff00 +#define TXMON_FW2SW_MON_FES_SETUP_MHZ_S 8 + +#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M 0xffffffff +#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S 0 + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S) + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S)); \ + } while (0) + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S) + +#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S)); \ + } while (0) + +#define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S) + +#define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_PHY_MODE, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S)); \ + } while (0) + +#define TXMON_FW2SW_MON_FES_SETUP_MHZ_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_MHZ_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_MHZ_S) + +#define TXMON_FW2SW_MON_FES_SETUP_MHZ_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_MHZ, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_MHZ_S)); \ + } while (0) + +#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S) + +#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S)); \ + } while (0) + +enum txmon_fw2sw_user_id { + TXMON_FW2SW_TYPE_FES_SETUP = 0, /* Placed after FES_SETUP */ + TXMON_FW2SW_TYPE_FES_SETUP_USER = 1, /* Placed before FES_SETUP_COMPLETE */ + TXMON_FW2SW_TYPE_FES_SETUP_EXT = 2, /* Placed after FES_SETUP_COMPLETE */ + TXMON_FW2SW_TYPE_MAX = 4 +}; + +typedef struct txmon_fw2sw_fes_setup { + A_UINT32 band_center_freq1 : 16, + band_center_freq2 : 16; + A_UINT32 phy_mode : 8, /* this field is filled with WLAN_PHY_MODE enum value */ + mhz : 16, + reserved : 8; + A_UINT32 schedule_id; +} txmon_fw2sw_fes_setup_t; + +typedef struct txmon_fw2sw_fes_setup_ext { + A_UINT32 reserved; +} txmon_fw2sw_fes_setup_ext_t; + +#define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M 0x0000003f +#define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S 0 + +#define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_GET(_var) \ + (((_var) & TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M) >> \ + TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S) + +#define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID, _val); \ + ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S)); \ + } while (0) + + +typedef struct txmon_fw2sw_fes_setup_user { + A_UINT32 user_id : 6, + reserved : 24; +} txmon_fw2sw_fes_setup_user_t; + +struct txmon_fw2sw_mon_fes_setup_tlv { + struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP */ + struct txmon_fw2sw_fes_setup setup; +}; + +struct txmon_fw2sw_mon_fes_setup_ext_tlv { + struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_EXT*/ + struct txmon_fw2sw_fes_setup_ext setup_ext; +}; + +struct txmon_fw2sw_mon_fes_setup_user_tlv { + struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_USER */ + struct txmon_fw2sw_fes_setup_user user_setup; +}; + +#endif /* _TXMON_TLVS_H_ */ From 76afab3fd96e129406911f9e9640bc89aba73fde Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 22 Nov 2022 06:01:05 -0800 Subject: [PATCH 20/59] fw-api: CL 20427704 - update fw common interface files Change-Id: If29a4431a9f388c43ffaf5db6cda01af3e21b1c1 WMI: add MLO_LINK FORCE_ACTIVE_INACTIVE, FORCE_REASON_LINK_REMOVAL defs CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 3 ++- fw/wmi_unified.h | 8 ++++++++ fw/wmi_version.h | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index a929d6391c06..751cfd677969 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -4995,7 +4995,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID #define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, wmi_mlo_link_set_active_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_set_active_link_number_param, link_number_param, 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_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap2, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID); /* Request DPD Status */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 48280a972551..2bc709df1389 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -39773,11 +39773,13 @@ typedef enum { WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM = 3, /* Force active a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM = 4, /* Force inactive a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_NO_FORCE = 5, /* Cancel the force operation of specific links, allow firmware to decide */ + WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE = 6, /* combination of force specific links active & force specific links inactive */ } WMI_MLO_LINK_FORCE_MODE; typedef enum { WMI_MLO_LINK_FORCE_REASON_NEW_CONNECT = 1, /* Set force specific links because of new connection */ WMI_MLO_LINK_FORCE_REASON_NEW_DISCONNECT = 2, /* Set force specific links because of new dis-connection */ + WMI_MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3, /* Set force specific links because of AP-side link removal */ } WMI_MLO_LINK_FORCE_REASON; typedef struct wmi_mlo_link_set_active_cmd @@ -39798,6 +39800,12 @@ typedef struct wmi_mlo_link_set_active_cmd * Optional TLV, present when force type is WMI_MLO_LINK_FORCE_ACTIVE * or WMI_MLO_LINK_FORCE_INACTIVE or WMI_MLO_LINK_NO_FORCE, * to specific the vdevs to configure. + * For force mode WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE vdev_id_bitmap[] + * carry the active vdev bitmap. + * In other cases the length of the array should be 0. + * A_UINT32 vdev_id_bitmap2[]; + * For force mode WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE vdev_id_bitmap2[] + * carry the inactive vdev bitmap. * In other cases the length of the array should be 0. */ } wmi_mlo_link_set_active_cmd_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c3383907ee7a..1ce1a49b5b1d 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1233 +#define __WMI_REVISION_ 1234 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d7f26d0eba1c1f87408be981556763a123953ca4 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 22 Nov 2022 18:00:52 -0800 Subject: [PATCH 21/59] fw-api: CL 20442805 - update fw common interface files HTT stats: AX and BE versions of BSR trigger stats Change-Id: Ie4a3ec06469bbd5c89592c8e95fd2377f373f1c2 CRs-Fixed: 2262693 --- fw/htt_stats.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index eaa0d801a698..fb8340c7c013 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -2373,6 +2373,7 @@ typedef struct { A_UINT32 su_sw_rts_flushed; /** CTS (RTS response) received in different BW */ A_UINT32 su_sw_rts_rcvd_cts_diff_bw; +/* START DEPRECATED FIELDS */ /** 11AX HE MU Combined Freq. BSRP Trigger frame sent over the air */ A_UINT32 combined_ax_bsr_trigger_tried[HTT_NUM_AC_WMM]; /** 11AX HE MU Combined Freq. BSRP Trigger completed with error(s) */ @@ -2381,6 +2382,7 @@ typedef struct { A_UINT32 standalone_ax_bsr_trigger_tried[HTT_NUM_AC_WMM]; /** 11AX HE MU Standalone Freq. BSRP Trigger completed with error(s) */ A_UINT32 standalone_ax_bsr_trigger_err[HTT_NUM_AC_WMM]; +/* END DEPRECATED FIELDS */ } htt_tx_selfgen_cmn_stats_tlv; typedef struct { @@ -2464,6 +2466,14 @@ typedef struct { * successfully sent over the air */ A_UINT32 ax_ul_mumimo_trigger[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; + /** 11AX HE MU Combined Freq. BSRP Trigger frame sent over the air */ + A_UINT32 combined_ax_bsr_trigger_tried[HTT_NUM_AC_WMM]; + /** 11AX HE MU Combined Freq. BSRP Trigger completed with error(s) */ + A_UINT32 combined_ax_bsr_trigger_err[HTT_NUM_AC_WMM]; + /** 11AX HE MU Standalone Freq. BSRP Trigger frame sent over the air */ + A_UINT32 standalone_ax_bsr_trigger_tried[HTT_NUM_AC_WMM]; + /** 11AX HE MU Standalone Freq. BSRP Trigger completed with error(s) */ + A_UINT32 standalone_ax_bsr_trigger_err[HTT_NUM_AC_WMM]; } htt_tx_selfgen_ax_stats_tlv; typedef struct { @@ -2503,6 +2513,14 @@ typedef struct { * successfully sent over the air */ A_UINT32 be_ul_mumimo_trigger[HTT_TX_PDEV_STATS_NUM_BE_MUMIMO_USER_STATS]; + /** 11BE EHT MU Combined Freq. BSRP Trigger frame sent over the air */ + A_UINT32 combined_be_bsr_trigger_tried[HTT_NUM_AC_WMM]; + /** 11BE EHT MU Combined Freq. BSRP Trigger completed with error(s) */ + A_UINT32 combined_be_bsr_trigger_err[HTT_NUM_AC_WMM]; + /** 11BE EHT MU Standalone Freq. BSRP Trigger frame sent over the air */ + A_UINT32 standalone_be_bsr_trigger_tried[HTT_NUM_AC_WMM]; + /** 11BE EHT MU Standalone Freq. BSRP Trigger completed with error(s) */ + A_UINT32 standalone_be_bsr_trigger_err[HTT_NUM_AC_WMM]; } htt_tx_selfgen_be_stats_tlv; typedef struct { /* DEPRECATED */ From b12f5ca8c01a7c38972bd63a123ffd79cbfb58fc Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 22 Nov 2022 18:01:30 -0800 Subject: [PATCH 22/59] fw-api: CL 20444597 - update fw common interface files Change-Id: I998d94079a93e8b5eb32b43ed16738d5910501e0 WMI: add missing CMDIDs to wmi_id_to_name CRs-Fixed: 2262693 --- fw/wmi_unified.h | 30 ++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 2bc709df1389..26da2055126a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -32770,6 +32770,36 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_REMOVAL_CMDID); WMI_RETURN_STRING(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_DIV_GET_RSSI_ANTID_CMDID); + WMI_RETURN_STRING(WMI_PDEV_UPDATE_PMK_CACHE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_SRG_BSS_COLOR_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_SRG_PARTIAL_BSSID_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_VDEV_SET_PCL_CMDID); + WMI_RETURN_STRING(WMI_PEER_RESERVED0_CMDID); + WMI_RETURN_STRING(WMI_PEER_CFR_CAPTURE_CMDID); + WMI_RETURN_STRING(WMI_PEER_CONFIG_VLAN_CMDID); + WMI_RETURN_STRING(WMI_PEER_TX_FILTER_CMDID); + WMI_RETURN_STRING(WMI_BCN_OFFLOAD_CTRL_CMDID); + WMI_RETURN_STRING(WMI_PDEV_DFS_PHYERR_OFFLOAD_ENABLE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_DFS_PHYERR_OFFLOAD_DISABLE_CMDID); + WMI_RETURN_STRING(WMI_VDEV_ADFS_CH_CFG_CMDID); + WMI_RETURN_STRING(WMI_VDEV_ADFS_OCAC_ABORT_CMDID); + WMI_RETURN_STRING(WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID); + WMI_RETURN_STRING(WMI_REQUEST_RCPI_CMDID); + WMI_RETURN_STRING(WMI_WFA_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_HB_OIC_PING_OFFLOAD_PARAM_CMDID); + WMI_RETURN_STRING(WMI_HB_OIC_PING_OFFLOAD_SET_ENABLE_CMDID); + WMI_RETURN_STRING(WMI_HB_DHCP_LEASE_RENEW_OFFLOAD_CMDID); + WMI_RETURN_STRING(WMI_RMC_SET_MANUAL_LEADER_CMDID); + WMI_RETURN_STRING(WMI_11D_SCAN_START_CMDID); + WMI_RETURN_STRING(WMI_11D_SCAN_STOP_CMDID); + WMI_RETURN_STRING(WMI_VENDOR_VDEV_CMDID); + WMI_RETURN_STRING(WMI_VENDOR_PEER_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 1ce1a49b5b1d..a1d6c5639050 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1234 +#define __WMI_REVISION_ 1235 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 92f33536f856a06a1ad5602d161b467ac6abe753 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 23 Nov 2022 12:00:54 -0800 Subject: [PATCH 23/59] fw-api: CL 20458896 - update fw common interface files Change-Id: Ied5402f1f787f7e4aaf3065a5c0c9b5043960dfb WMI: add MAX_ML_BSS_NUM bitfield in target capability spec CRs-Fixed: 2262693 --- fw/wmi_unified.h | 8 +++++++- fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 26da2055126a..38119d88daba 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3259,6 +3259,11 @@ typedef struct { #define WMI_TARGET_CAP_UL_MU_MIMO_TX_SUPPORT_6GHZ_SET(target_cap_flags, value) \ WMI_SET_BITS(target_cap_flags, 7, 1, value) +#define WMI_TARGET_CAP_MAX_ML_BSS_NUM_GET(target_cap_flags) \ + WMI_GET_BITS(target_cap_flags, 8, 3) +#define WMI_TARGET_CAP_MAX_ML_BSS_NUM_SET(target_cap_flags, value) \ + WMI_SET_BITS(target_cap_flags, 8, 3, value) + /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs */ @@ -3397,7 +3402,8 @@ typedef struct { * Bit 5 - UL MUMIMO Tx support on 5 GHz (STA Mode) * Bit 6 - UL MUMIMO Rx support on 6 GHz (AP Mode) * Bit 7 - UL MUMIMO Tx support on 6 GHz (STA Mode) - * Bits 31:8 - Reserved + * Bits 10:8 - max ML BSS number supported, range [0-7] + * Bits 31:11 - Reserved */ A_UINT32 target_cap_flags; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a1d6c5639050..6dea7342cd83 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1235 +#define __WMI_REVISION_ 1236 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 9be8e588bc9d81afb2f5e76018e87cf29371bc65 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 24 Nov 2022 06:00:49 -0800 Subject: [PATCH 24/59] fw-api: CL 20467959 - update fw common interface files Change-Id: Ibdb3e7fa61be6fe5331bc8e24918c6910515989c WMI: add Restricted-TWT fields CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 9 +++++++++ fw/wmi_version.h | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index f7fd2a8705e7..ab05341d4b6c 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -604,6 +604,7 @@ typedef enum { WMI_SERVICE_ODD_LIVEDUMP_SUPPORT = 351, /* Support for ODD Livedump from the FW */ WMI_SERVICE_EIRP_PREFERRED_SUPPORT = 352, /* Support for OOBE feature where only EIRP powers will be sent in 6 GHz TPC WMI */ WMI_SERVICE_RTT_TX_RX_CHAIN_IDX_SUPPORT = 353, /* FW Supports configuring Tx and Rx Chainmask in intiator and Responder */ + WMI_SERVICE_RESTRICTED_TWT = 354, /* Support for R-TWT feature */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 38119d88daba..fd034625a4ce 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34138,6 +34138,9 @@ typedef struct { #define TWT_EN_DIS_FLAGS_GET_I_B_TWT(flag) WMI_GET_BITS(flag, 5, 1) #define TWT_EN_DIS_FLAGS_SET_I_B_TWT(flag, val) WMI_SET_BITS(flag, 5, 1, val) +#define TWT_EN_DIS_FLAGS_GET_B_R_TWT(flag) WMI_GET_BITS(flag, 6, 1) +#define TWT_EN_DIS_FLAGS_SET_B_R_TWT(flag, val) WMI_SET_BITS(flag, 6, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_enable_cmd_fixed_param */ /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 @@ -34368,6 +34371,12 @@ typedef struct { * If set to 0, FW will send QoS NULL immediately. */ A_UINT32 announce_timeout_us; + + A_UINT32 link_id_bitmap; + + /* parameters required for R-TWT feature */ + A_UINT32 r_twt_dl_tid_bitmap; + A_UINT32 r_twt_ul_tid_bitmap; } wmi_twt_add_dialog_cmd_fixed_param; /* status code of adding TWT dialog */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 6dea7342cd83..c1dad7062b4d 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1236 +#define __WMI_REVISION_ 1237 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5002efff100a0928240196303859fe0492ea34b8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Nov 2022 06:00:56 -0800 Subject: [PATCH 25/59] fw-api: CL 20486184 - update fw common interface files Change-Id: Ia4d9c5979130b796fdfd6b0528303f28d7067a54 WMI: add VDEV_SET_TWT_EDCA_PARAMS CMD msg def CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 10 ++++++++++ fw/wmi_unified.h | 29 +++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 751cfd677969..2f6a8f4c87cb 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1323,6 +1323,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_ie_info, + WMITLV_TAG_STRUC_wmi_vdev_set_twt_edca_params_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pifs_params, } WMITLV_TAG_ID; /* @@ -1835,6 +1837,7 @@ typedef enum { OP(WMI_ODD_LIVEDUMP_REQUEST_CMDID) \ OP(WMI_MLO_LINK_REMOVAL_CMDID) \ OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID) \ + OP(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -3458,6 +3461,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_WMM_DELTS_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_WMM_PARAMS_CMDID); +#define WMITLV_TABLE_WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_set_twt_edca_params_cmd_fixed_param, wmi_vdev_set_twt_edca_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wmm_params, wmi_wmm_params, wmm_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pifs_params, wmi_pifs_params, pifs_params, WMITLV_SIZE_VAR) + +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); + #define WMITLV_TABLE_WMI_VDEV_SET_GTX_PARAMS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_set_gtx_params_cmd_fixed_param, wmi_vdev_set_gtx_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index fd034625a4ce..9ed21995dec2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1468,6 +1468,7 @@ typedef enum { WMI_TWT_BTWT_INVITE_STA_CMDID, WMI_TWT_BTWT_REMOVE_STA_CMDID, WMI_TWT_NUDGE_DIALOG_CMDID, + WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID, /* XPAN TWT */ /** WMI commands related to motion detection **/ WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET), @@ -9936,6 +9937,33 @@ typedef struct { */ } wmi_pdev_set_wmm_params_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pifs_params */ + /* The unit of this offset is PIFS slot time */ + A_UINT32 sap_pifs_offset; + A_UINT32 leb_pifs_offset; + A_UINT32 reb_pifs_offset; +} wmi_pifs_params; + +typedef enum { + WMI_EDCA_PARAM_TYPE_AGGRESSIVE = 0, + WMI_EDCA_PARAM_TYPE_PIFS = 1, +} WMI_EDCA_PARAM_TYPE; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_twt_edca_params_cmd_fixed_param */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 type; /* contains a WMI_EDCA_PARAM_TYPE value */ + /* + * This TLV is (optionally) followed by other TLVs as below: + * wmi_wmm_params wmm_params[0/1]; + * present if type is WMI_EDCA_PARAM_TYPE_AGGRESSIVE + * wmi_pifs_params pifs_params[0/1]; + * present if type is WMI_EDCA_PARAM_TYPE_PIFS + */ +} wmi_vdev_set_twt_edca_params_cmd_fixed_param; + typedef enum { WMI_REQUEST_PEER_STAT = 0x00001, WMI_REQUEST_AP_STAT = 0x00002, @@ -32806,6 +32834,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_11D_SCAN_STOP_CMDID); WMI_RETURN_STRING(WMI_VENDOR_VDEV_CMDID); WMI_RETURN_STRING(WMI_VENDOR_PEER_CMDID); + WMI_RETURN_STRING(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); /* XPAN TWT */ } return (A_UINT8 *) "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c1dad7062b4d..205a21d30c87 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1237 +#define __WMI_REVISION_ 1238 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From ce1f93ac5e10c150d37a1a42d4e6c4eb012c3a26 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 29 Nov 2022 06:00:58 -0800 Subject: [PATCH 26/59] fw-api: CL 20522535 - update fw common interface files add WMI_ROAM_PARAM_ROAM_RSSI_BOOST_FOR_6GHZ_CAND_AP def Change-Id: I22207169d3bb976028bad75d8c03b46048cf8027 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 11 +++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 9ed21995dec2..74e6743554db 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -36114,6 +36114,17 @@ typedef enum { */ WMI_ROAM_PARAM_ROAM_MCC_DISALLOW = 7, + /* + * Roam param to provide additional RSSI Boost for 6 GHz Candidate AP + * during Roam Scan in case any 6 GHz candidate has better Roam score + * but fails RSSI Delta Check. + * This configurable RSSI Boost value for 6GHz Candidate AP will be + * configured via ini RoamRssiDiff6GHz + * This configured RSSI boost value will only be applicable for 6GHz + * Candidate AP when the STA is connected to 2.4/5 GHz Band AP and will + * not impact if STA is connected to 6GHz Band AP + */ + WMI_ROAM_PARAM_ROAM_RSSI_BOOST_FOR_6GHZ_CAND_AP = 8, /*=== END ROAM_PARAM_PROTOTYPE SECTION ===*/ } WMI_ROAM_PARAM; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 205a21d30c87..985e8cafe593 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1238 +#define __WMI_REVISION_ 1239 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 2305c1b2c1bc8955bfaa5ba23fd85c9e4a9d18ad Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 30 Nov 2022 06:00:57 -0800 Subject: [PATCH 27/59] fw-api: CL 20540830 - update fw common interface files Change-Id: I0a90abf9aea5d00cdaa83ec968b0399f00bd8a55 WMI: add TAS_POWER_HISTORY_CMD,EVENT msg defs CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 14 ++++++++++++++ fw/wmi_unified.h | 27 +++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2f6a8f4c87cb..05cf168c9b9b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1325,6 +1325,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_ie_info, WMITLV_TAG_STRUC_wmi_vdev_set_twt_edca_params_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pifs_params, + WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1838,6 +1840,7 @@ typedef enum { OP(WMI_MLO_LINK_REMOVAL_CMDID) \ OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID) \ OP(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) \ + OP(WMI_TAS_POWER_HISTORY_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2135,6 +2138,7 @@ typedef enum { OP(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID) \ OP(WMI_MLO_LINK_REMOVAL_EVENTID) \ OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID) \ + OP(WMI_TAS_POWER_HISTORY_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5213,6 +5217,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WOW_COAP_GET_BUF_INFO_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_coex_dbam_cmd_fixed_param, wmi_coex_dbam_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_COEX_DBAM_CMDID); +/* coex TAS power history cmd */ +#define WMITLV_TABLE_WMI_TAS_POWER_HISTORY_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param, wmi_tas_power_history_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_TAS_POWER_HISTORY_CMDID); + /* VDEV SR prohibit cmd */ #define WMITLV_TABLE_WMI_VDEV_PARAM_ENABLE_SR_PROHIBIT_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_param_enable_sr_prohibit_fixed_param, wmi_vdev_param_enable_sr_prohibit_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -7063,6 +7072,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WOW_COAP_BUF_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_coex_dbam_complete_event_fixed_param, wmi_coex_dbam_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_COEX_DBAM_COMPLETE_EVENTID); +/* coex TAS power history cmd complete event */ +#define WMITLV_TABLE_WMI_TAS_POWER_HISTORY_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, wmi_tas_power_history_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_TAS_POWER_HISTORY_EVENTID); + #define WMITLV_TABLE_WMI_HEALTH_MON_INIT_DONE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_health_mon_init_done_fixed_param, wmi_health_mon_init_done_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_HEALTH_MON_INIT_DONE_EVENTID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 74e6743554db..7d51219adbd2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1340,6 +1340,7 @@ typedef enum { WMI_SAR_GET_LIMITS_CMDID, /** Dedicated BT Antenna Mode (DBAM) command */ WMI_COEX_DBAM_CMDID, + WMI_TAS_POWER_HISTORY_CMDID, /** * OBSS scan offload enable/disable commands @@ -2229,6 +2230,7 @@ typedef enum { WMI_SAR_GET_LIMITS_EVENTID, /** Dedicated BT Antenna Mode (DBAM) complete event */ WMI_COEX_DBAM_COMPLETE_EVENTID, + WMI_TAS_POWER_HISTORY_EVENTID, /* LPI Event */ WMI_LPI_RESULT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_LPI), @@ -30627,6 +30629,20 @@ typedef struct { A_UINT32 dbam_mode; /* wmi_coex_dbam_mode_type enum */ } wmi_coex_dbam_cmd_fixed_param; +/** + * Host get current TAS buffer from FW or set last TAS buffer to FW + */ +typedef enum wmi_tas_power_history_cmd_type { + WMI_TAS_POWER_HISTORY_CMD_GET = 0, /* before WLAN off, host trigger this cmd to get power history */ + WMI_TAS_POWER_HISTORY_CMD_SET = 1, /* after WLAN reboot, host trigger this cmd to set power history of last life cycle */ +} WMI_TAS_POWER_HISTORY_CMD_TYPE; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param */ + A_UINT32 sub_type; /* refer to WMI_TAS_POWER_HISTORY_TYPE */ + A_UINT32 time_diff; /* time of wlan on - time of wlan off after wlan reboot. unit: millisecond*/ +} wmi_tas_power_history_cmd_fixed_param; + /** * This command is sent from WLAN host driver to firmware to * request firmware to enable/disable channel avoidance report @@ -33529,6 +33545,17 @@ typedef struct { A_UINT32 comp_status; /* wmi_coex_dbam_comp_status */ } wmi_coex_dbam_complete_event_fixed_param; +typedef enum wmi_tas_power_history_event_type { + WMI_TAS_POWER_HISTORY_EVENT_SAVE_FAILURE = 0, /* Power history save fail, it will caused by: TAS Feature Not enable or get remote address fail */ + WMI_TAS_POWER_HISTORY_EVENT_SAVE_COMPLETE = 1, /* Power history save complete */ +} WMI_TAS_POWER_HISTORY_EVENT_TYPE; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param */ + A_UINT32 tlv_header; + A_UINT32 sub_type; /* refer to WMI_TAS_POWER_HISTORY_EVENT_TYPE */ +} wmi_tas_power_history_event_fixed_param; + typedef enum { WMI_RCPI_MEASUREMENT_TYPE_AVG_MGMT = 1, WMI_RCPI_MEASUREMENT_TYPE_AVG_DATA = 2, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 985e8cafe593..f9001e5775c7 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1239 +#define __WMI_REVISION_ 1240 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 4d3b38625adf6394195c5b4de10ce48194948e8e Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 1 Dec 2022 06:00:59 -0800 Subject: [PATCH 28/59] fw-api: CL 20556455 - update fw common interface files Change-Id: Ie310555ee3107e6a74dc52b759076e050bab8a9c HTT: add rx msdu,mpdu,ppdu pkt type enable fields in rx_ring_selection_cfg_t CRs-Fixed: 2262693 --- fw/htt.h | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 157 insertions(+), 1 deletion(-) diff --git a/fw/htt.h b/fw/htt.h index cf6d3f580808..5b44360bc677 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -237,9 +237,10 @@ * 3.110 Add more word_mask fields in htt_tx_monitor_cfg_t. * 3.111 Add RXPCU filter enable flag in RX_RING_SELECTION_CFG msg. * 3.112 Add logical_link_id field in rx_peer_metadata_v1. + * 3.113 Add add rx msdu,mpdu,ppdu fields in rx_ring_selection_cfg_t */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 112 +#define HTT_CURRENT_VERSION_MINOR 113 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -5815,6 +5816,15 @@ PREPACK struct htt_rx_ring_selection_cfg_t { A_UINT32 en_rx_tlv_pkt_offset: 1, rx_pkt_tlv_offset: 15, rsvd6: 16; + A_UINT32 rx_mpdu_start_word_mask_v2: 20, + rx_mpdu_end_word_mask_v2: 8, + rsvd8: 4; + A_UINT32 rx_msdu_end_word_mask_v2: 20, + rsvd9: 12; + A_UINT32 rx_ppdu_end_usr_stats_word_mask_v2: 20, + rsvd10: 12; + A_UINT32 packet_type_enable_fpmo_flags0; + A_UINT32 packet_type_enable_fpmo_flags1; } POSTPACK; #define HTT_RX_RING_SELECTION_CFG_SZ (sizeof(struct htt_rx_ring_selection_cfg_t)) @@ -6318,6 +6328,71 @@ PREPACK struct htt_rx_ring_selection_cfg_t { ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_PKT_TLV_OFFSET_S)); \ } while (0) +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_M 0x000FFFFF +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_S 0 +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_M)>> \ + HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_S) +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2, _val);\ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_WORD_MASK_V2_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_M 0x0FF00000 +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_S 20 +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_M)>> \ + HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_S) +#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2, _val);\ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_WORD_MASK_V2_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_M 0x000FFFFF +#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_S 0 +#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_M)>> \ + HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_S) +#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2, _val);\ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_WORD_MASK_V2_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_M 0x000FFFFF +#define HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_S 0 +#define HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_M)>> \ + HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_S) +#define HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2, _val);\ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_PPDU_END_USR_STATS_WORD_MASK_V2_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_M 0xFFFFFFFF +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_S 0 +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_M)>> \ + HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_S) +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS0_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_M 0xFFFFFFFF +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_S 0 +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_M)>> \ + HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_S) +#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_S)); \ + } while (0) /* * Subtype based MGMT frames enable bits. @@ -6677,6 +6752,87 @@ PREPACK struct htt_rx_ring_selection_cfg_t { #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG3_MO_DATA_NULL_M 0x04000000 #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG3_MO_DATA_NULL_S 26 +/* FPMO mode flags */ +/* MGMT */ +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0000_M 0x00000001 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0000_S 0 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0001_M 0x00000002 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0001_S 1 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0010_M 0x00000004 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0010_S 2 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0011_M 0x00000008 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0011_S 3 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0100_M 0x00000010 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0100_S 4 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0101_M 0x00000020 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0101_S 5 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0110_M 0x00000040 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0110_S 6 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0111_M 0x00000080 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_0111_S 7 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1000_M 0x00000100 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1000_S 8 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1001_M 0x00000200 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1001_S 9 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1010_M 0x00000400 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1010_S 10 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1011_M 0x00000800 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1011_S 11 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1100_M 0x00001000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1100_S 12 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1101_M 0x00002000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1101_S 13 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1110_M 0x00004000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1110_S 14 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1111_M 0x00008000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_MGMT_1111_S 15 + +/* CTRL */ +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0000_M 0x00010000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0000_S 16 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0001_M 0x00020000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0001_S 17 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0010_M 0x00040000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0010_S 18 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0011_M 0x00080000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0011_S 19 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0100_M 0x00100000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0100_S 20 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0101_M 0x00200000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0101_S 21 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0110_M 0x00400000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0110_S 22 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0111_M 0x00800000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_0111_S 23 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1000_M 0x01000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1000_S 24 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1001_M 0x02000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1001_S 25 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1010_M 0x04000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1010_S 26 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1011_M 0x08000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1011_S 27 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1100_M 0x10000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1100_S 28 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1101_M 0x20000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1101_S 29 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1110_M 0x40000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1110_S 30 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1111_M 0x80000000 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG0_FPMO_CTRL_1111_S 31 + +/* DATA */ +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_MCAST_M 0x00000001 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_MCAST_S 0 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_UCAST_M 0x00000002 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_UCAST_S 1 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_NULL_M 0x00000004 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_NULL_S 2 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_QOS_NULL_DATA_M 0x00000008 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_QOS_NULL_DATA_S 3 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_QOS_NULL_TB_M 0x00000010 +#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG1_FPMO_DATA_QOS_NULL_TB_S 4 + #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_SET(word, httsym, value) \ do { \ HTT_CHECK_SET_VAL(httsym, value); \ From 46734f8db7e3b4e8ddecec0045999cf174a2d5e8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 4 Dec 2022 06:01:01 -0800 Subject: [PATCH 29/59] fw-api: CL 20595785 - update fw common interface files HTT stats: add per-AC last_updated_dl,ul_qdepth to peer_ax_ofdma TLV Change-Id: I71056b6dfba3cc4d437f2bcd1d637b3167531cd2 CRs-Fixed: 2262693 --- fw/htt_stats.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index fb8340c7c013..de45fe5ecabe 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -1865,6 +1865,9 @@ typedef struct { */ A_UINT32 is_airtime_large_for_dl_ofdma[2]; A_UINT32 is_airtime_large_for_ul_ofdma[2]; + /* Last updated value of DL and UL queue depths for each peer per AC */ + A_UINT32 last_updated_dl_qdepth[HTT_NUM_AC_WMM]; + A_UINT32 last_updated_ul_qdepth[HTT_NUM_AC_WMM]; } htt_peer_ax_ofdma_stats_tlv; /* config_param0 */ From ff230196badd1510359342b27b09afae6516be02 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 4 Dec 2022 12:00:56 -0800 Subject: [PATCH 30/59] fw-api: CL 20599887 - update fw common interface files Change-Id: I0c48624fea92ed8874f5da49f0a230fd19ca5cb6 WMI: add per-AC + OBSS airtime use pct stats to pdev_telemetry_stats CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +- fw/wmi_unified.h | 154 ++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 153 insertions(+), 7 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 05cf168c9b9b..c986bc69b82f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1327,6 +1327,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pifs_params, WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, } WMITLV_TAG_ID; /* @@ -6668,7 +6669,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_btcoex_stats_struct, ctrl_path_btcoex_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_bmiss_stats_struct, ctrl_path_bmiss_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_odd_addr_read_struct, ctrl_path_odd_addr_read, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_afc_stats_struct, ctrl_path_afc_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_afc_stats_struct, ctrl_path_afc_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pmlo_stats_struct, ctrl_path_pmlo_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7d51219adbd2..202d690a7817 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -12227,6 +12227,135 @@ typedef struct { A_UINT32 payload_clear_count; } wmi_ctrl_path_afc_stats_struct; +/* AT - Airtime */ +/* AA - Available Airtime */ +#define WMI_PMLO_UL_DL_INBSS_AT_GET_BE(airtime) WMI_GET_BITS(airtime, 0, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_BE(airtime, value) WMI_SET_BITS(airtime, 0, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_BK(airtime) WMI_GET_BITS(airtime, 8, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_BK(airtime, value) WMI_SET_BITS(airtime, 8, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_VI(airtime) WMI_GET_BITS(airtime, 16, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_VI(airtime, value) WMI_SET_BITS(airtime, 16, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_VO(airtime) WMI_GET_BITS(airtime, 24, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_VO(airtime, value) WMI_SET_BITS(airtime, 24, 8, value) + +#define WMI_PMLO_LINK_OBSS_AT_GET(airtime) WMI_GET_BITS(airtime, 0, 8) +#define WMI_PMLO_LINK_OBSS_AT_SET(airtime, value) WMI_SET_BITS(airtime, 0, 8, value) + +#define WMI_PMLO_LINK_AA_GET(airtime) WMI_GET_BITS(airtime, 8, 8) +#define WMI_PMLO_LINK_AA_SET(airtime, value) WMI_SET_BITS(airtime, 8, 8, value) + +#define WMI_PMLO_UL_AIRTIME_NON_AC_GET(airtime) WMI_GET_BITS(airtime, 16, 8) +#define WMI_PMLO_UL_AIRTIME_NON_AC_SET(airtime, value) WMI_SET_BITS(airtime, 16, 8, value) + +#define WMI_PMLO_DL_AIRTIME_NON_AC_GET(airtime) WMI_GET_BITS(airtime, 24, 8) +#define WMI_PMLO_DL_AIRTIME_NON_AC_SET(airtime, value) WMI_SET_BITS(airtime, 24, 8, value) + +/* + * The wmi_ctrl_path_pmlo_stats_struct is used to send Provisional MLO stats + * the WMI_CTRL_PATH_STATS_EVENT message, in response to a + * WMI_REQUEST_CTRL_PATH_STATS_CMD message for the stat type + * WMI_REQUEST_CTRL_PATH_PMLO_STAT. + */ +typedef struct { + /* TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct */ + A_UINT32 tlv_header; + /** pdev_id for identifying the PHY */ + A_UINT32 pdev_id; + /* + * Percentage of downlink air time used in each access category + * calculated InBSS, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_PMLO_UL_DL_INBSS_AT_* macros + * to retrieve values for each access category in dl_inbss_airtime_per_ac. + */ + union { + struct { + A_UINT32 + dl_inbss_airtime_ac_be: 8, + dl_inbss_airtime_ac_bk: 8, + dl_inbss_airtime_ac_vi: 8, + dl_inbss_airtime_ac_vo: 8; + }; + A_UINT32 dl_inbss_airtime_per_ac; + }; + /* + * Percentage of uplink air time used in each access category + * calculated InBSS, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_PMLO_UL_DL_INBSS_AT_* macros + * to set/get values for each access category in ul_inbss_airtime_per_ac. + */ + union { + struct { + A_UINT32 + ul_inbss_airtime_ac_be: 8, + ul_inbss_airtime_ac_bk: 8, + ul_inbss_airtime_ac_vi: 8, + ul_inbss_airtime_ac_vo: 8; + }; + A_UINT32 ul_inbss_airtime_per_ac; + }; + /* + * Percentage of air time available for each AC, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros + * to retrieve values for each access category in estimated_air_time_per_ac. + */ + union { + struct { + A_UINT32 + estimated_air_time_ac_be: 8, + estimated_air_time_ac_bk: 8, + estimated_air_time_ac_vi: 8, + estimated_air_time_ac_vo: 8; + }; + A_UINT32 estimated_air_time_per_ac; + }; + /* + * Average channel latency per AC, units in micro seconds. + * avg_chan_lat_per_ac[0] : AC_VO + * avg_chan_lat_per_ac[1] : AC_VI + * avg_chan_lat_per_ac[2] : AC_BE + * avg_chan_lat_per_ac[3] : AC_BK + */ + A_UINT32 avg_chan_lat_per_ac[WMI_AC_MAX]; + /* + * link_obss_airtime: Percentage of OBSS used air time per link, + * units in percentage. + * Refer to WMI_PMLO_LINK_OBSS_AT_* Macro to set/get values. + * link_idle_airtime: Idle/free airtime per link, units in percentage. + * Refer to WMI_PMLO_LINK_AA_* macro to set/get values. + * ul_inbss_airtime_non_ac: ul inBSS airtime occupied by non-AC traffic, + * units in percentage. + * Refer to WMI_PMLO_UL_AIRTIME_NON_AC_* macro to set/get values. + * dl_inbss_airtime_non_ac: dl inBSS airtime occupied by non-AC traffic, + * units in percentage. + * Refer to WMI_PMLO_DL_AIRTIME_NON_AC_* macro to set/get values. + */ + union { + struct { + A_UINT32 link_obss_airtime: 8, + link_idle_airtime: 8, + ul_inbss_airtime_non_ac: 8, + dl_inbss_airtime_non_ac: 8; + }; + A_UINT32 ul_dl_obss_free_aa_word32; + }; +} wmi_ctrl_path_pmlo_stats_struct; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param */ @@ -12426,7 +12555,7 @@ typedef struct{ * BIT[8-15] : AC_BK * BIT[16-23] : AC_VI * BIT[24-31] : AC_VO - * Please refer WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros + * Please refer to WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros * to retrieve values for each access category in estimated_air_time_per_ac. */ A_UINT32 estimated_air_time_per_ac; @@ -30812,6 +30941,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_BMISS_STAT = 9, WMI_REQUEST_CTRL_PATH_ODD_ADDR_READ = 10, WMI_REQUEST_CTRL_PATH_AFC_STAT = 11, + WMI_REQUEST_CTRL_PATH_PMLO_STAT = 12, } wmi_ctrl_path_stats_id; typedef enum { @@ -30824,10 +30954,11 @@ typedef enum { * The following stats actions are mutually exclusive. * A single stats request message can only specify one action. */ - WMI_REQUEST_CTRL_PATH_STAT_GET = 1, - WMI_REQUEST_CTRL_PATH_STAT_RESET = 2, - WMI_REQUEST_CTRL_PATH_STAT_START = 3, - WMI_REQUEST_CTRL_PATH_STAT_STOP = 4, + WMI_REQUEST_CTRL_PATH_STAT_GET = 1, + WMI_REQUEST_CTRL_PATH_STAT_RESET = 2, + WMI_REQUEST_CTRL_PATH_STAT_START = 3, + WMI_REQUEST_CTRL_PATH_STAT_STOP = 4, + WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH = 5, } wmi_ctrl_path_stats_action; typedef enum { @@ -30853,6 +30984,19 @@ typedef struct { **/ A_UINT32 action; /* refer to wmi_ctrl_path_stats_action */ + /** + * The stat_periodicity field is relevant only when action is set to + * WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH. + * The units of this periodicity are milliseconds. + * Periodically send WMI ctrl-path stats event with the specified stats + * periodicity for the stats whose IDs are set in stats_id_mask. + * Periodic WMI ctrl-path stats events are enabled by setting value > 0, + * Previously onngoing periodic WMI ctrl-path stats events become + * disabled when action is WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH + * and stat_periodicity = 0. + */ + A_UINT32 stat_periodicity; + /** The below TLV arrays optionally follow this fixed_param TLV structure: * 1. A_UINT32 pdev_ids[]; * If this array is present and non-zero length, stats should only diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f9001e5775c7..746d94bbec93 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1240 +#define __WMI_REVISION_ 1241 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From db0a98e39489fe1c33ed1ba0b6fa30ad2d44a047 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 6 Dec 2022 06:01:01 -0800 Subject: [PATCH 31/59] fw-api: CL 20621183 - update fw common interface files Change-Id: I73cec29ca9f8b6f587e3673062aa45e1e69474b1 WMI: add NF cal value in iface_link_stats CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 ++++++- fw/wmi_version.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 202d690a7817..e8e48f970896 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -10623,8 +10623,13 @@ typedef struct { A_UINT32 num_probes_tx; /** Number of Beacon misses on this interface (accruing over time) */ A_UINT32 num_beacon_miss; - /** time slice duty cycle percentage of this interface*/ + /** time slice duty cycle percentage of this interface */ A_UINT32 time_slice_duty_cycle; + /** + * noise floor value report to host + * Units are dBm, values 0x0000ffff and 0x0 are invalid. + */ + A_INT32 nf_cal_val_per_freq; } wmi_iface_link_stats; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 746d94bbec93..266dd12a13d8 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1241 +#define __WMI_REVISION_ 1242 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 28db2ec33131311852faa4709d3407cfcef59783 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 7 Dec 2022 06:00:59 -0800 Subject: [PATCH 32/59] fw-api: CL 20640871 - update fw common interface files Change-Id: I7a97473ab1e23b1b496c5e7ae6b9d1fecff81035 WMI: add akm_suite_type field in roam_preauth_status msg CRs-Fixed: 2262693 --- fw/wmi_unified.h | 8 +++++--- fw/wmi_version.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e8e48f970896..d2e86e2c25b6 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -35368,6 +35368,8 @@ typedef struct { A_UINT32 preauth_status; /* AP BSSID for which pre-authentication is completed */ wmi_mac_addr candidate_ap_bssid; + /* AKM suite type (as defined in the IEEE 802.11 spec) */ + A_UINT32 akm_suite_type; /** * This fixed_param TLV is followed by the below TLVs: * @@ -40817,10 +40819,10 @@ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_multiple_peer_group_cmd_fixed_param */ A_UINT32 vdev_id; A_UINT32 pdev_id; - /** Sub command id - Currently supported command ids are - * WMI_PEER_REMOVE_WDS_ENTRY_CMDID + /** Sub command id - populated with a WMI_CMD_ID value. + * Currently supported command ids are WMI_PEER_REMOVE_WDS_ENTRY_CMDID. */ - WMI_CMD_ID sub_cmd_id; + A_UINT32 sub_cmd_id; /* The TLVs follows this structure: * wmi_mac_addr wds_macaddr[]; <--- Array of wds mac addresses. */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 266dd12a13d8..8d2320988372 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1242 +#define __WMI_REVISION_ 1243 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 1fba67c13132b990041a478bee4a3b8c48922b7c Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 7 Dec 2022 12:01:08 -0800 Subject: [PATCH 33/59] fw-api: CL 20649274 - update fw common interface files Change-Id: I5f98f5b897acc6340248520fd67faddde7900b81 WMI: fix variable-length TLV array defs in VDEV_SET_TWT_EDCA_PARAMS_CMD CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 ++-- fw/wmi_version.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index c986bc69b82f..08b548d823f7 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -3468,8 +3468,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_WMM_PARAMS_CMDID); #define WMITLV_TABLE_WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_set_twt_edca_params_cmd_fixed_param, wmi_vdev_set_twt_edca_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wmm_params, wmi_wmm_params, wmm_params, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pifs_params, wmi_pifs_params, pifs_params, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wmm_params, wmm_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pifs_params, pifs_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8d2320988372..eca1fb414bdb 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1243 +#define __WMI_REVISION_ 1244 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 333b40eb7ff4d90848e67fa37fc563e539dfc161 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 8 Dec 2022 06:01:08 -0800 Subject: [PATCH 34/59] fw-api: CL 20661618 - update fw common interface files Change-Id: I2ceaf762166f0a7a33c5b258f83531e5733c44d6 HTT: add UMAC_HANG_RECOVERY_SOC_START_PRE_RESET, add shmem flags CRs-Fixed: 2262693 --- fw/htt.h | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 8 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 5b44360bc677..7e414e840a36 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -238,9 +238,10 @@ * 3.111 Add RXPCU filter enable flag in RX_RING_SELECTION_CFG msg. * 3.112 Add logical_link_id field in rx_peer_metadata_v1. * 3.113 Add add rx msdu,mpdu,ppdu fields in rx_ring_selection_cfg_t + * 3.114 Add HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET def. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 113 +#define HTT_CURRENT_VERSION_MINOR 114 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -838,6 +839,7 @@ enum htt_h2t_msg_type { HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f, HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20, HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP = 0x21, + HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET = 0x22, /* keep this last */ HTT_H2T_NUM_MSGS @@ -9883,6 +9885,9 @@ PREPACK struct htt_h2t_sawf_def_queues_map_report_req { * @details * This is shared memory between Host and Target allocated * and used in chips where UMAC hang recovery feature is supported. + * This shared memory is allocated per SOC level by Host since each + * SOC's target Q6FW needs to communicate independently to the Host + * through its own shared memory. * If target sets a bit in t2h_msg (provided it's valid bit offset) * then host interprets it as a new message from target. * Host clears that particular read bit in t2h_msg after each read @@ -9896,11 +9901,13 @@ PREPACK struct htt_h2t_sawf_def_queues_map_report_req { * dword1 - b'0 - do_pre_reset * b'1 - do_post_reset_start * b'2 - do_post_reset_complete - * b'3:31 - rsvd_t2h + * b'3 - initiate_umac_recovery + * b'4:31 - rsvd_t2h * dword2 - b'0 - pre_reset_done * b'1 - post_reset_start_done * b'2 - post_reset_complete_done - * b'3:31 - rsvd_h2t + * b'3 - start_pre_reset + * b'4:31 - rsvd_h2t */ PREPACK typedef struct { /** Magic number added for debuggability. */ @@ -9910,14 +9917,18 @@ PREPACK typedef struct { * BIT [0] :- T2H msg to do pre-reset * BIT [1] :- T2H msg to do post-reset start * BIT [2] :- T2H msg to do post-reset complete - * BIT [31 : 3] :- reserved + * BIT [3] :- T2H msg to initiate UMAC recovery sequence. + * This is needed to synchronize UMAC recovery + * across all SOCs. + * BIT [31 : 4] :- reserved */ A_UINT32 t2h_msg; struct { A_UINT32 do_pre_reset : 1, /* BIT [0] */ do_post_reset_start : 1, /* BIT [1] */ do_post_reset_complete : 1, /* BIT [2] */ - rsvd_t2h : 29; /* BIT [31 : 3] */ + initiate_umac_recovery : 1, /* BIT [3] */ + rsvd_t2h : 28; /* BIT [31 : 4] */ }; }; @@ -9926,14 +9937,19 @@ PREPACK typedef struct { * BIT [0] :- H2T msg to send pre-reset done * BIT [1] :- H2T msg to send post-reset start done * BIT [2] :- H2T msg to send post-reset complete done - * BIT [31 : 3] :- reserved + * BIT [3] :- H2T msg to start pre-reset. + * This is expected only after T2H + * initiate_umac_recovery was received by Host + * from one of the SOCs. + * BIT [31 : 4] :- reserved */ A_UINT32 h2t_msg; struct { A_UINT32 pre_reset_done : 1, /* BIT [0] */ post_reset_start_done : 1, /* BIT [1] */ post_reset_complete_done : 1, /* BIT [2] */ - rsvd_h2t : 29; /* BIT [31 : 3] */ + start_pre_reset : 1, /* BIT [3] */ + rsvd_h2t : 28; /* BIT [31 : 4] */ }; }; } POSTPACK htt_umac_hang_recovery_msg_shmem_t; @@ -9979,6 +9995,18 @@ PREPACK typedef struct { ((word1) |= ((_val) << HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_DO_POST_RESET_COMPLETE_S));\ } while (0) +/* dword1 - b'3 - initiate_umac_recovery */ +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_M 0x00000008 +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_S 3 +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_GET(word1) \ + (((word1) & HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_M) >> \ + HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_S) +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_SET(word1, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY, _val); \ + ((word1) |= ((_val) << HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_INITIATE_UMAC_RECOVERY_S));\ + } while (0) + /* dword2 - b'0 - pre_reset_done */ #define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_PRE_RESET_DONE_M 0x00000001 #define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_PRE_RESET_DONE_S 0 @@ -10015,6 +10043,18 @@ PREPACK typedef struct { ((word2) |= ((_val) << HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_POST_RESET_COMPLETE_DONE_S));\ } while (0) +/* dword2 - b'3 - start_pre_reset */ +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_M 0x00000008 +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_S 3 +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_GET(word2) \ + (((word2) & HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_M) >> \ + HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_S) +#define HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_SET(word2, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET, _val); \ + ((word2) |= ((_val) << HTT_UMAC_HANG_RECOVERY_MSG_SHMEM_START_PRE_RESET_S));\ + } while (0) + /** * @brief HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP message * @@ -10043,7 +10083,8 @@ PREPACK typedef struct { * |--------------------------------------------------------------------------| * * The message is interpreted as follows: - * dword0 - b'0:7 - msg_type (= HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SETUP) + * dword0 - b'0:7 - msg_type + * (HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP) * b'8:11 - t2h_msg_method: indicates method to be used for * T2H communication in UMAC hang recovery mode. * Value zero indicates MSI interrupt (default method). @@ -10109,6 +10150,65 @@ PREPACK typedef struct { ((word0) |= ((_val) << HTT_H2T_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP_H2T_MSG_METHOD_S));\ } while (0) +/** + * @brief HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET message + * + * @details + * The HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET is a SOC level + * HTT message sent by the host to indicate that the target needs to start the + * UMAC hang recovery feature from the point of pre-reset routine. + * The purpose of this H2T message is to have host synchronize and trigger + * UMAC recovery across all targets. + * The info sent in this H2T message is the flag to indicate whether the + * target needs to execute UMAC-recovery in context of the Initiator or + * Non-Initiator. + * This H2T message is expected to be sent as response to the + * initiate_umac_recovery indication from the Initiator target attached to + * this same host. + * This H2T message is expected to be only sent if the WMI service bit + * WMI_SERVICE_UMAC_HANG_RECOVERY_SUPPORT was firstly indicated by the target + * and HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP was sent + * beforehand. + * + * |31 9|8|7 0| + * |-----------------------------------------------------------| + * | reserved |I| msg_type | + * |-----------------------------------------------------------| + * Where: + * I = is_initiator + * + * The message is interpreted as follows: + * dword0 - b'0:7 - msg_type + * (HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET) + * b'8 - is_initiator: indicates whether the target needs to + * execute the UMAC-recovery in context of the Initiator or + * Non-Initiator. + * The value zero indicates this target is Non-Initiator. + * b'9:31 - reserved. + */ + +PREPACK typedef struct { + A_UINT32 msg_type : 8, + is_initiator : 1, + reserved : 23; +} POSTPACK htt_h2t_umac_hang_recovery_start_pre_reset_t; + +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_BYTES \ + (sizeof(htt_h2t_umac_hang_recovery_start_pre_reset_t)) +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_DWORDS \ + (HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_BYTES >> 2) + +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_M 0x00000100 +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_S 8 +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_GET(word0) \ + (((word0) & HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_M) >> \ + HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_S) +#define HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_SET(word0, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR, _val); \ + ((word0) |= ((_val) << HTT_H2T_UMAC_HANG_RECOVERY_START_PRE_RESET_IS_INITIATOR_S));\ + } while (0) + /*=== target -> host messages ===============================================*/ From f1879fdbfcfabd76c7674171d01a03dd09e96e62 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 8 Dec 2022 06:01:52 -0800 Subject: [PATCH 35/59] fw-api: CL 20665555 - update fw common interface files Change-Id: I4d1a6b9f5600efb12cbd26e24553cc1cb527c2fd WMI: add optional ctrl_path_cfr_stats in CTRL_PATH_STATS_EVENT msg CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 22 ++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 08b548d823f7..15d51bb00ceb 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1328,6 +1328,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, + WMITLV_TAG_STRUC_wmi_ctrl_path_cfr_stats_struct, } WMITLV_TAG_ID; /* @@ -6670,7 +6671,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_bmiss_stats_struct, ctrl_path_bmiss_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_odd_addr_read_struct, ctrl_path_odd_addr_read, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_afc_stats_struct, ctrl_path_afc_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pmlo_stats_struct, ctrl_path_pmlo_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pmlo_stats_struct, ctrl_path_pmlo_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_cfr_stats_struct, ctrl_path_cfr_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d2e86e2c25b6..ced5ecf1f40b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -12361,6 +12361,27 @@ typedef struct { }; } wmi_ctrl_path_pmlo_stats_struct; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ctrl_path_cfr_stats_struct */ + A_UINT32 tlv_header; + /* + * This index is used for formatting the printout of this stats TLV. + * A stats header is added when the index=0. + */ + A_UINT32 index; + wmi_mac_addr cfr_peer_mac_addr; + A_UINT32 peer_in_use; + A_UINT32 capture_in_progress; + /* capture_method: 0 means oneshot request, otherwise periodic request */ + A_UINT32 capture_method; + A_UINT32 periodicity; /* Time in ms */ + A_UINT32 latest_req_timestamp; /* Time in ms */ + A_UINT32 latest_resp_timestamp; /* Time in ms */ + A_UINT32 cfr_req_count; + A_UINT32 cfr_resp_success_count; + A_UINT32 cfr_resp_failure_count; +} wmi_ctrl_path_cfr_stats_struct; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param */ @@ -30947,6 +30968,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_ODD_ADDR_READ = 10, WMI_REQUEST_CTRL_PATH_AFC_STAT = 11, WMI_REQUEST_CTRL_PATH_PMLO_STAT = 12, + WMI_REQUEST_CTRL_PATH_CFR_STAT = 13, } wmi_ctrl_path_stats_id; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index eca1fb414bdb..f9bb25ee6aeb 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1244 +#define __WMI_REVISION_ 1245 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From dca47091693a887d4ae111e5a5631403477d3043 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 9 Dec 2022 06:01:01 -0800 Subject: [PATCH 36/59] fw-api: CL 20679446 - update fw common interface files HTT stats: add mbssid_ctrl_frame_stats TLV Change-Id: I5c07d2b8401fda39212d9e9ff71a9f5e181ad4b1 CRs-Fixed: 2262693 --- fw/htt.h | 1 + fw/htt_stats.h | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index 7e414e840a36..3c36a13fb893 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -770,6 +770,7 @@ typedef enum { HTT_STATS_TXBF_OFDMA_BE_STEER_MPDU_STATS_TAG = 173, /* htt_txbf_ofdma_be_steer_mpdu_stats_tlv */ HTT_STATS_PEER_AX_OFDMA_STATS_TAG = 174, /* htt_peer_ax_ofdma_stats_tlv */ HTT_STATS_TX_PDEV_MU_EDCA_PARAMS_STATS_TAG = 175, /* htt_tx_pdev_mu_edca_params_stats_tlv_v */ + HTT_STATS_PDEV_MBSSID_CTRL_FRAME_STATS_TAG = 176, /* htt_pdev_mbssid_ctrl_frame_stats_tlv */ HTT_STATS_MAX_TAG, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index de45fe5ecabe..df473924a647 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -511,6 +511,14 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_BW_MGR = 53, + /** HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS + * PARAMS: + * - No Params + * RESP MSG: + * - htt_pdev_mbssid_ctrl_frame_stats + */ + HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = 54, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -8594,6 +8602,20 @@ typedef struct { A_UINT32 dlofdma_disabled_consec_no_mpdus_success[HTT_NUM_AC_WMM]; } htt_pdev_sched_algo_ofdma_stats_tlv; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 pdev_id; + A_UINT32 tx_vap_id; + A_UINT32 basic_trigger_across_bss; + A_UINT32 basic_trigger_within_bss; + A_UINT32 bsr_trigger_across_bss; + A_UINT32 bsr_trigger_within_bss; + A_UINT32 mu_rts_across_bss; + A_UINT32 mu_rts_within_bss; + A_UINT32 ul_mumimo_trigger_across_bss; + A_UINT32 ul_mumimo_trigger_within_bss; +} htt_pdev_mbssid_ctrl_frame_stats_tlv; + /*======= Bandwidth Manager stats ====================*/ #define HTT_BW_MGR_STATS_MAC_ID_M 0x000000ff From 5d7ec697b5b5762ff3a6e7982f3220d5de64dc5e Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 9 Dec 2022 06:01:45 -0800 Subject: [PATCH 37/59] fw-api: CL 20679902 - update fw common interface files add WMI_SERVICE_SLO_SUPPORTED def Change-Id: If00f097a00348eebc736a259536b82d226214fe6 CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index ab05341d4b6c..6ac33db027aa 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -605,6 +605,7 @@ typedef enum { WMI_SERVICE_EIRP_PREFERRED_SUPPORT = 352, /* Support for OOBE feature where only EIRP powers will be sent in 6 GHz TPC WMI */ WMI_SERVICE_RTT_TX_RX_CHAIN_IDX_SUPPORT = 353, /* FW Supports configuring Tx and Rx Chainmask in intiator and Responder */ WMI_SERVICE_RESTRICTED_TWT = 354, /* Support for R-TWT feature */ + WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ WMI_MAX_EXT2_SERVICE From 161852441a1cd5a172d09a031d29062f7adc3403 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 10 Dec 2022 06:01:04 -0800 Subject: [PATCH 38/59] fw-api: CL 20689038 - update fw common interface files Change-Id: Ie9b5caee470ec75535342db38fcc66123237fa55 WMI: add TARGET_CAP_CONCURRENCE_SUPPORT flags CRs-Fixed: 2262693 --- fw/wmi_unified.h | 10 +++++++++- fw/wmi_version.h | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ced5ecf1f40b..ca8ea5da374d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3267,6 +3267,11 @@ typedef struct { #define WMI_TARGET_CAP_MAX_ML_BSS_NUM_SET(target_cap_flags, value) \ WMI_SET_BITS(target_cap_flags, 8, 3, value) +#define WMI_TARGET_CAP_CONCURRENCE_SUPPORT_GET(target_cap_flags) \ + WMI_GET_BITS(target_cap_flags, 11, 2) +#define WMI_TARGET_CAP_CONCURRENCE_SUPPORT_SET(target_cap_flags, value) \ + WMI_SET_BITS(target_cap_flags, 11, 2, value) + /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs */ @@ -3406,7 +3411,10 @@ typedef struct { * Bit 6 - UL MUMIMO Rx support on 6 GHz (AP Mode) * Bit 7 - UL MUMIMO Tx support on 6 GHz (STA Mode) * Bits 10:8 - max ML BSS number supported, range [0-7] - * Bits 31:11 - Reserved + * Bits 12:11 concurrence support capability + * Bit11 - [ML-STA + SL-STA] 0: not supported; 1:supported + * Bit12 - [ML-STA + SL-SAP] 0: not supported; 1:supported + * Bits 31:13 - Reserved */ A_UINT32 target_cap_flags; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f9bb25ee6aeb..31992c8cecd3 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1245 +#define __WMI_REVISION_ 1246 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 24c76a8672dad990fc343867c51be95e724fc76a Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 11 Dec 2022 12:01:07 -0800 Subject: [PATCH 39/59] fw-api: CL 20694406 - update fw common interface files WMI,RTT: add RTT SET_CONFIG_PARAMS_REQ msg def Change-Id: Iaf510284b223003695c6567638eb7938a008daa9 CRs-Fixed: 2262693 --- fw/wmi_services.h | 3 ++- fw/wmi_unified.h | 8 ++++++++ fw/wmi_version.h | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 6ac33db027aa..3f9897ab60b4 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -563,7 +563,7 @@ typedef enum { WMI_SERVICE_DYNAMIC_VDEV_MAC_ADDR_UPDATE_SUPPORT = 310, /* FW supports dynamic vdev mac address updating */ WMI_SERVICE_SAWF_LEVEL0 = 311, /* FW supports WMI_SAWF_SVC_CLASS CFG_CMD + DISABLE_CMD msgs */ WMI_SERVICE_RTT_11AZ_NTB_SUPPORT = 312, /* FW support for 11AZ non trigger based ranging */ - WMI_SERVICE_RTT_11AZ_TB_SUPPORT = 313, /* FW support for 11AZ trigger based ranging */ + WMI_SERVICE_RTT_11AZ_TB_SUPPORT = 313, /* FW support for 11AZ trigger based ranging ISTA role */ WMI_SERVICE_RTT_11AZ_MAC_SEC_SUPPORT = 314, /* FW support for 11AZ secure FTM */ WMI_SERVICE_RTT_11AZ_MAC_PHY_SEC_SUPPORT = 315, /* FW support for 11AZ secure LTF + FTM */ WMI_SERVICE_SPECTRAL_SESSION_INFO_SUPPORT = 316, /* Information corresponding to each Spectral scan session will be sent by the FW before the reports corresponding to that session are sent */ @@ -606,6 +606,7 @@ typedef enum { WMI_SERVICE_RTT_TX_RX_CHAIN_IDX_SUPPORT = 353, /* FW Supports configuring Tx and Rx Chainmask in intiator and Responder */ WMI_SERVICE_RESTRICTED_TWT = 354, /* Support for R-TWT feature */ WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ + WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ca8ea5da374d..a9393116070b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -8923,6 +8923,14 @@ typedef enum { * optimizations. */ WMI_PDEV_PARAM_DISABLE_LPI_ANT_OPTIMIZATION, + + /* + * Param to configure exclusive RSID range for 11az TB ranging. + * RSID's are subset of total AID space and must not be used + * for any other purpose by Host. FW uses these IDs for trigger + * based ranging. + */ + WMI_PDEV_PARAM_RTT_11AZ_RSID_RANGE, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 31992c8cecd3..76294c6ca424 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1246 +#define __WMI_REVISION_ 1247 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 161aa5d3dfce38136f4c59764f1bf96ea637052c Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 14 Dec 2022 06:00:59 -0800 Subject: [PATCH 40/59] fw-api: CL 20735560 - update fw common interface files Change-Id: I0426c76bb786b32345eb72048f4a4c2bbcbf8aa8 WMI: add delayed_pkt_count field in WOW_EVENT_INFO_fixed_param CRs-Fixed: 2262693 --- fw/wmi_unified.h | 5 +++-- fw/wmi_version.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a9393116070b..afb621301d35 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -20431,6 +20431,7 @@ typedef struct wow_event_info_s { A_UINT32 flag; /*This is current reserved.*/ A_INT32 wake_reason; A_UINT32 data_len; + A_UINT32 delayed_pkt_count; } WOW_EVENT_INFO_fixed_param; typedef struct wow_initial_wakeup_event_s { @@ -35406,8 +35407,6 @@ typedef struct { A_UINT32 preauth_status; /* AP BSSID for which pre-authentication is completed */ wmi_mac_addr candidate_ap_bssid; - /* AKM suite type (as defined in the IEEE 802.11 spec) */ - A_UINT32 akm_suite_type; /** * This fixed_param TLV is followed by the below TLVs: * @@ -35430,6 +35429,8 @@ typedef struct { * in MLO case. In non MLO cases, transmit_addr will be filled with 0x0. */ wmi_mac_addr transmit_addr; + /* AKM suite type (as defined in the IEEE 802.11 spec) */ + A_UINT32 akm_suite_type; } wmi_roam_preauth_start_event_fixed_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 76294c6ca424..c71b5d67c970 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1247 +#define __WMI_REVISION_ 1248 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 66c50cbaf2198e4e8166fa404560f8cd1f009549 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 15 Dec 2022 06:01:00 -0800 Subject: [PATCH 41/59] fw-api: CL 20755332 - update fw common interface files add WMI_VENDOR1_REQ2_VERSION_3_40 def Change-Id: Ifff85a1cfb77bfc6d2fadf5f461660211316af96 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index afb621301d35..2bb54e93a603 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4953,6 +4953,7 @@ typedef enum { WMI_VENDOR1_REQ1_VERSION_3_01 = 1, WMI_VENDOR1_REQ1_VERSION_3_20 = 2, WMI_VENDOR1_REQ1_VERSION_3_30 = 3, + WMI_VENDOR1_REQ1_VERSION_3_40 = 4, } WMI_VENDOR1_REQ1_VERSION; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c71b5d67c970..957d87c12317 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1248 +#define __WMI_REVISION_ 1249 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 9d4107b5073196729f8330bec60e3c8075a5db69 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 15 Dec 2022 18:01:03 -0800 Subject: [PATCH 42/59] fw-api: CL 20771706 - update fw common interface files Change-Id: I40beff16a980c4003bb3aa204bf8d6b29fb533a6 WMI: add neighbor_report_detail bitfields in roam_neighbor_report_info TLV CRs-Fixed: 2262693 --- fw/wmi_unified.h | 16 ++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 2bb54e93a603..b4856654e920 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -35774,6 +35774,13 @@ typedef struct { A_UINT32 roam_abort_reason; /* Detail reason for roam scan not start, from WMI_ROAM_FAIL_SUB_REASON_ID */ } wmi_roam_result; +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_REQUEST_TOKEN_GET(detail) WMI_GET_BITS(detail, 0, 8) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_REQUEST_TOKEN_SET(detail,val) WMI_SET_BITS(detail, 0, 8, val) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_RESPONSE_TOKEN_GET(detail) WMI_GET_BITS(detail, 8, 8) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_RESPONSE_TOKEN_SET(detail,val) WMI_SET_BITS(detail, 8, 8, val) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_NUM_OF_NRIE_GET(detail) WMI_GET_BITS(detail, 16, 8) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_NUM_OF_NRIE_SET(detail,val) WMI_SET_BITS(detail, 16, 8, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param */ /* request_type: @@ -35799,6 +35806,15 @@ typedef struct { * of the 802.11v spec. */ A_UINT32 btm_query_reason_code; + /* neighbor_report_detail: + * [7:0] : neighbor report request token + * [15:8] : neighbor report response token + * [23:16] : the number of neighbor report elements in response frame + * [31:24] : reserved + * Refer to the above WMI_ROAM_NEIGHBOR_REPORT_INFO_*_GET,_SET macros for + * reading and writing these bitfields. + */ + A_UINT32 neighbor_report_detail; } wmi_roam_neighbor_report_info; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 957d87c12317..51b3828fe720 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1249 +#define __WMI_REVISION_ 1250 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 3aaf48571e3f5b970e7122e10bea97e269e0d919 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 17 Dec 2022 18:01:08 -0800 Subject: [PATCH 43/59] fw-api: CL 20790715 - update fw common interface files HTT stats: change pdev + tx vap IDs to MAC ID in pdev_mbssid_ctrl_frame_stats Change-Id: If9cc16a1d7e6a4f57cfd20e70dc6136d2f0c5c69 CRs-Fixed: 2262693 --- fw/htt_stats.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index df473924a647..67dd30f9a5f4 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -8604,8 +8604,13 @@ typedef struct { typedef struct { htt_tlv_hdr_t tlv_hdr; - A_UINT32 pdev_id; - A_UINT32 tx_vap_id; + /** mac_id__word: + * BIT [ 7 : 0] :- mac_id + * Use the HTT_STATS_CMN_MAC_ID_GET,_SET macros to + * read/write this bitfield. + * BIT [31 : 8] :- reserved + */ + A_UINT32 mac_id__word; A_UINT32 basic_trigger_across_bss; A_UINT32 basic_trigger_within_bss; A_UINT32 bsr_trigger_across_bss; From 38b35b3d79feb069133fa9629c718b50d6c632b8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 18 Dec 2022 06:01:07 -0800 Subject: [PATCH 44/59] fw-api: CL 20790906 - update fw common interface files Change-Id: Ic46cd47c560529436f26661ef047dacf185cff7b WMI: add coex channel_caps TLV to READY_EXT2 EVENT msg CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 9 +++++++++ fw/wmi_version.h | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 15d51bb00ceb..ef475482e80b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1329,6 +1329,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, WMITLV_TAG_STRUC_wmi_ctrl_path_cfr_stats_struct, + WMITLV_TAG_STRUC_WMI_COEX_FIX_CHANNEL_CAPABILITIES, } WMITLV_TAG_ID; /* @@ -5293,7 +5294,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dbs_or_sbs_cap_ext, dbs_or_sbs_cap_ext, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_cust_bdf_version_capabilities, cust_bdf_version_capabilities, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sw_cal_ver_cap, sw_cal_ver_cap, WMITLV_SIZE_VAR) \ - WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_INT32, A_INT32, hw_tx_power_signed, WMITLV_SIZE_FIX, WMI_HW_TX_POWER_CAPS_MAX) + WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_INT32, A_INT32, hw_tx_power_signed, WMITLV_SIZE_FIX, WMI_HW_TX_POWER_CAPS_MAX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_COEX_FIX_CHANNEL_CAPABILITIES, coex_fix_channel_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b4856654e920..f731907fc483 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34928,6 +34928,15 @@ typedef struct { #define WMI_CHAN_RF_CHARACTERIZATION_FREQ_GET(dword) \ WMI_F_MS((dword)->freq_info,WMI_CHAN_RF_CHARACTERIZATION_FREQ_INFO_FREQ) +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_COEX_FIX_CHANNEL_CAPABILITIES */ + /************************************************************************** + * 1: SAP fix channel has higher priority than ACS + * 0: SAP fix channel has lower priority than ACS + **************************************************************************/ + A_UINT32 fix_channel_priority; +} WMI_COEX_FIX_CHANNEL_CAPABILITIES; + #define WMI_DMA_RING_PADDR_LO_S 0 diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 51b3828fe720..5e555b00c1a4 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1250 +#define __WMI_REVISION_ 1251 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e895247d46fc9baf7af39e86a15e82788f2980a3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 19 Dec 2022 06:01:00 -0800 Subject: [PATCH 45/59] fw-api: CL 20794001 - update fw common interface files add WMI_VENDOR_OUI_ACTION_DISABLE_DYNAMIC_QOS_NULL_TX_RATE def Change-Id: I0e04daaa49b0ad22aec02152c99cd97cd87ffa7e CRs-Fixed: 2262693 --- fw/wmi_unified.h | 6 ++++++ fw/wmi_version.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f731907fc483..f03822efa4e7 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -21572,6 +21572,12 @@ typedef enum */ WMI_VENDOR_OUI_ACTION_ALLOW_11BE = 9, + /* + * Turn off FW's dynamic qos null tx rate if specific vendor OUI + * received in beacon. + */ + WMI_VENDOR_OUI_ACTION_DISABLE_DYNAMIC_QOS_NULL_TX_RATE = 10, + /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID } wmi_vendor_oui_action_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5e555b00c1a4..c71c4da1483b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1251 +#define __WMI_REVISION_ 1252 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From bd72d312d25d69b94a53f3d70a87a4c7d7c8a6fe Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 20 Dec 2022 18:00:57 -0800 Subject: [PATCH 46/59] fw-api: CL 20824419 - update fw common interface files HTT PPDU stats: add backoff_ac,num_ul_user_responses, user msduq_bitmap fields Change-Id: I0692d66d755e767bcb330e47f124bbd0b48199dd CRs-Fixed: 2262693 --- fw/htt_ppdu_stats.h | 118 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 101 insertions(+), 17 deletions(-) diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index d5555a12955d..64a6cd9f3f08 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -612,6 +612,58 @@ typedef enum HTT_PPDU_STATS_SPATIAL_REUSE HTT_PPDU_STATS_SPATIAL_REUSE; ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BSS_COLOR_ID_S)); \ } while (0) +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_M 0x00020000 +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_S 17 + +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_S) + +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_VALID_S)); \ + } while (0) + +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_M 0x000c0000 +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_S 18 + +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_S) + +#define HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_AC_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BACKOFF_AC_S)); \ + } while (0) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_M 0x00100000 +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_S 20 + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_S) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID_S)); \ + } while (0) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_M 0x1fe00000 +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_S 21 + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_GET(_var) \ + (((_var) & HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_M) >> \ + HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_S) + +#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_NUM_UL_USER_RESPONSES_S)); \ + } while (0) + #define HTT_PPDU_STATS_COMMON_TRIG_COOKIE_M 0x0000ffff #define HTT_PPDU_STATS_COMMON_TRIG_COOKIE_S 0 @@ -760,19 +812,36 @@ typedef struct { * by which SRG/Non-SRG based spatial reuse opportunity * was created. * BIT [16:16] - PPDU transmitted using PSR opportunity - * BIT [31:17] - reserved + * BIT [17:17] - backoff_ac_valid + * BIT [19:18] - backoff_ac: WMM ACI Value of the backoff engine used for + * this transmission. Only valid if backoff_ac_valid is set + * to 1. Typically this would match the default tid + * number -> AC mapping. For frames in the middle of a SIFS + * burst, the backoff_ac_valid will be 0. + * BIT [20:20] - num_ul_user_responses_valid + * BIT [21:28] - num_ul_user_responses: The number of user responses + * detected by the MAC layer. This value can be compared with + * the "num_ul_expected_users" field to see whether this frame + * had a complete or partial response failure. Only valid if + * num_ul_user_responses_valid is set to 1. + * BIT [31:29] - reserved */ union { + A_UINT32 reserved__num_ul_user_responses__num_ul_user_responses_valid__backoff_ac__backoff_ac_valid__psr_tx__aborted_obss_rssi__srg_tx__non_srg_tx__bss_color_id; A_UINT32 reserved__psr_tx__aborted_obss_rssi__srg_tx__non_srg_tx___bss_color_id; A_UINT32 reserved__aborted_obss_rssi__srg_tx__non_srg_tx___bss_color_id; A_UINT32 reserved__bss_color_id; struct { - A_UINT32 bss_color_id: 6, - non_srg_tx: 1, - srg_tx: 1, - aborted_obss_rssi: 8, - psr_tx: 1, - reserved2: 15; + A_UINT32 bss_color_id: 6, + non_srg_tx: 1, + srg_tx: 1, + aborted_obss_rssi: 8, + psr_tx: 1, + backoff_ac_valid: 1, + backoff_ac: 2, + num_ul_user_responses_valid: 1, + num_ul_user_responses: 8, + reserved2: 3; }; }; @@ -787,16 +856,18 @@ typedef struct { }; /* - * htt_seq_type field is added for backward compatibility with - * pktlog decoder, host driver or any third party tool interpreting - * ppdu sequence type. If field 'htt_seq_type'is not present or is - * present but set to WAL_PPDU_SEQ_TYPE, decoder should interpret - * the seq type as WAL_TXSEND_PPDU_SEQUENCE. - * If the new field htt_seq_type is present and is set to - * HTT_PPDU_SEQ_TYPE then decoder should interpret the seq type as - * HTT_PPDU_STATS_SEQ_TYPE. htt_seq_type field will be set to - * HTT_PPDU_SEQ_TYPE in firmware versions where this field is - * defined. + * BIT [0 : 0] - htt_seq_type field is added for backward compatibility + * with pktlog decoder, host driver or any third party tool + * interpreting ppdu sequence type. If field 'htt_seq_type' + * is not present or is present but set to WAL_PPDU_SEQ_TYPE, + * decoder should interpret the seq type as + * WAL_TXSEND_PPDU_SEQUENCE. + * If the new field htt_seq_type is present and is set to + * HTT_PPDU_SEQ_TYPE then decoder should interpret the + * seq type as HTT_PPDU_STATS_SEQ_TYPE. + * htt_seq_type field will be set to HTT_PPDU_SEQ_TYPE in + * firmware versions where this field is defined. + * BIT [31: 1] - reserved */ union { A_UINT32 reserved__htt_seq_type; @@ -1169,6 +1240,19 @@ typedef struct { * value is larger than A_INT8. */ A_UINT32 alt_tx_pwr[HTT_STATS_MAX_CHAINS / HTT_PPDU_STATS_USER_COMMON_TLV_TX_PWR_CHAINS_PER_U32]; + + /* + * A bitmap indicating the MSDUQs that the scheduler is attempting to + * transmit in this PPDU. Note that in some cases, the scheduler's notion + * of what MSDUQs are being transmitted from may not be fully accurate, + * such as when MPDUs are retried, or when some previously generated MPDUs + * that were not attempted OTA yet are tried. + * + * The valid bit indices for this bitmap are defined by the HTT_MSDUQ_INDEX + * enum (in htt.h). For example, (1 << HTT_MSDUQ_INDEX_UDP) would + * correspond to the default UDP msduq. + */ + A_UINT32 msduq_bitmap; } htt_ppdu_stats_user_common_tlv; #define HTT_PPDU_STATS_USER_RATE_TLV_TID_NUM_M 0x000000ff From f719cadafe5e68732d7efde5677a9873c4f9842d Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 21 Dec 2022 12:01:13 -0800 Subject: [PATCH 47/59] fw-api: CL 20835037 - update fw common interface files Change-Id: I0b40a0beee5e458ca65bd9af5e0298a6ea27fdd3 WMI: change nf_cal_val_per_freq to nf_cal_val in iface_link_stats CRs-Fixed: 2262693 --- fw/wmi_unified.h | 4 ++-- fw/wmi_version.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f03822efa4e7..ae8e2575fb6d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -10643,10 +10643,10 @@ typedef struct { /** time slice duty cycle percentage of this interface */ A_UINT32 time_slice_duty_cycle; /** - * noise floor value report to host + * Current home channel noise floor value report to host * Units are dBm, values 0x0000ffff and 0x0 are invalid. */ - A_INT32 nf_cal_val_per_freq; + A_INT32 nf_cal_val; } wmi_iface_link_stats; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c71c4da1483b..e13522574783 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1252 +#define __WMI_REVISION_ 1253 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From ec38a67be59c8d6d246056cdaa354b965fbb1b0b Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 22 Dec 2022 06:01:10 -0800 Subject: [PATCH 48/59] fw-api: CL 20843979 - update fw common interface files add WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN def Change-Id: I5f415ff3f522603a9dbe0bf6b1ecd692e5fa308a CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 3f9897ab60b4..39f9763b3e65 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -607,6 +607,7 @@ typedef enum { WMI_SERVICE_RESTRICTED_TWT = 354, /* Support for R-TWT feature */ WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ + WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, WMI_MAX_EXT2_SERVICE From 9481e99ca98ff64856a21fcb087de3c744742c59 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 24 Dec 2022 18:00:54 -0800 Subject: [PATCH 49/59] fw-api: CL 20873434 - update fw common interface files Change-Id: Ie5d216c76b6399483af9cfa206ceab92447a21b5 WMI: allow sched modes to be disabled per pdev, vdev, peer, or svc class CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 8 +++ fw/wmi_unified.h | 124 +++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 4 files changed, 133 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 39f9763b3e65..0e74b74444bc 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -608,6 +608,7 @@ typedef enum { WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, + WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index ef475482e80b..4a9ce0fc29b7 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1330,6 +1330,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, WMITLV_TAG_STRUC_wmi_ctrl_path_cfr_stats_struct, WMITLV_TAG_STRUC_WMI_COEX_FIX_CHANNEL_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, + WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, } WMITLV_TAG_ID; /* @@ -1844,6 +1846,7 @@ typedef enum { OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID) \ OP(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) \ OP(WMI_TAS_POWER_HISTORY_CMDID) \ + OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5240,6 +5243,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_XGAP_ENABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, odd_livedump_id_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_REQUEST_CMDID); +#define WMITLV_TABLE_WMI_PEER_SCHED_MODE_DISABLE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, wmi_peer_sched_mode_disable_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_per_peer_sched_mode_disable, peer_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SCHED_MODE_DISABLE_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ae8e2575fb6d..10b722c933c4 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -736,9 +736,12 @@ typedef enum { /* Mac addr based filtering*/ WMI_PEER_TX_FILTER_CMDID, - /** flush specific tid queues of a peer */ + /** flush specific tid queues of a peer */ WMI_PEER_FLUSH_POLICY_CMDID, + /* Set disabled scheduler modes for one or more peers */ + WMI_PEER_SCHED_MODE_DISABLE_CMDID, + /* beacon/management specific commands */ @@ -7927,6 +7930,21 @@ typedef enum { #define WMI_PDEV_PARAM_IS_HIGHER_MCS_XRETRY_RESTRICTION_SET(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_HIGHER_MCS_XRETRY_RESTRICTION) #define WMI_PDEV_PARAM_GET_XRETRY_THRESHOLD(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_XRETRY_THRESHOLD) +/* + * The WMI_SCHED_MODE_FLAGS enum is used by the following WMI commands: + * + * WMI_VDEV_PARAM_SET_DISABLED_SCHED_MODES + * WMI_PDEV_PARAM_SET_DISABLED_SCHED_MODES + * WMI_PEER_SCHED_MODE_DISABLE_CMDID + * WMI_SAWF_SVC_CLASS_CFG_CMDID + */ +typedef enum { + WMI_SCHED_MODE_DL_MU_MIMO = 0x00000001, + WMI_SCHED_MODE_UL_MU_MIMO = 0x00000002, + WMI_SCHED_MODE_DL_OFDMA = 0x00000004, + WMI_SCHED_MODE_UL_OFDMA = 0x00000008, +} WMI_SCHED_MODE_FLAGS; + typedef enum { /** TX chain mask */ WMI_PDEV_PARAM_TX_CHAIN_MASK = 0x1, @@ -8932,6 +8950,34 @@ typedef enum { * based ranging. */ WMI_PDEV_PARAM_RTT_11AZ_RSID_RANGE, + + /* + * Disable the indicated DL and UL scheduler for the PDEV. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding mode, + * and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS enum defines + * the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * This command differs from WMI_VDEV_PARAM_SET_HEMU_MODE and + * WMI_VDEV_PARAM_SET_EHT_MU_MODE in that it is intended for use during + * normal AP operation, and will never cause a VAP restart or other + * capability bit modification. It simply controls the scheduler + * behavior. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + WMI_PDEV_PARAM_SET_DISABLED_SCHED_MODES, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) @@ -15137,6 +15183,34 @@ typedef enum { */ WMI_VDEV_PARAM_EXTRA_EHT_LTF, /* 0x8011 */ + /* + * Disable the indicated DL and UL scheduler for the VDEV. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding + * mode, and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS + * enum defines the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * This command differs from WMI_VDEV_PARAM_SET_HEMU_MODE and + * WMI_VDEV_PARAM_SET_EHT_MU_MODE in that it is intended for use during + * normal AP operation, and will never cause a VAP restart or other + * capability bit modification. It simply controls the scheduler + * behavior. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + WMI_VDEV_PARAM_SET_DISABLED_SCHED_MODES, /* 0x8012 */ + /*=== END VDEV_PARAM_PROTOTYPE SECTION ===*/ } WMI_VDEV_PARAM; @@ -40782,6 +40856,7 @@ typedef enum { WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_PRIORITY = 0, WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_TID = 0xffffffff, WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_MSDU_LOSS_RATE = 0, + WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_DISABLED_SCHED_MODE = 0, } WMI_SAWF_SVC_CLASS_PARAM_DEFAULTS; typedef struct { @@ -40863,6 +40938,17 @@ typedef struct { * since 100 / 1000000 = 1 / 10000. */ A_UINT32 msdu_loss_rate_ppm; + /* + * The disabled DL and UL scheduler modes bitmap. + * + * Each bit in the "disabled_sched_modes" bitmap indicates whether a + * specific scheduler mode may be selected by the fast loop scheduler. A + * "1" bit indicates that mode is disabled, and a "0" bit indicates the + * mode is enabled. + * + * The WMI_SCHED_MODE_FLAGS enum defines the bit positions for each mode. + */ + A_UINT32 disabled_sched_modes; } wmi_sawf_svc_class_cfg_cmd_fixed_param; typedef struct { @@ -41167,6 +41253,42 @@ typedef struct { */ } wmi_mlo_link_removal_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable */ + + /* Peer MAC Address */ + wmi_mac_addr peer_macaddr; + + /* + * The disabled DL and UL scheduler modes bitmap. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding mode, + * and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS enum defines + * the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + A_UINT32 disabled_sched_modes; +} wmi_per_peer_sched_mode_disable; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param */ + A_UINT32 pdev_id; + /* The TLVs for each peer follows: + * wmi_per_peer_sched_mode_disable per_peer_sched_mode_disable[]; + */ +} wmi_peer_sched_mode_disable_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e13522574783..535020e4092b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1253 +#define __WMI_REVISION_ 1254 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d7cadcf13d7d0001ca8c69b72a75466487b2be25 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 29 Dec 2022 06:01:04 -0800 Subject: [PATCH 50/59] fw-api: CL 20914692 - update fw common interface files HTT stats: add high_prio_q_not_empty in tx_tqm_cmn_stats TLV Change-Id: I0a39f790100d8f313730411f9de0c8618e2b7952 CRs-Fixed: 2262693 --- fw/htt_stats.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 67dd30f9a5f4..749c65341175 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -3885,6 +3885,7 @@ typedef struct { A_UINT32 total_get_mpdu_head_info_cmds_by_sched_algo_la_query; A_UINT32 total_get_mpdu_head_info_cmds_by_tac; A_UINT32 total_gen_mpdu_cmds_by_sched_algo_la_query; + A_UINT32 high_prio_q_not_empty; } htt_tx_tqm_cmn_stats_tlv; typedef struct { From df59004436d554af6e0d14c0d48159cd0bae7ecc Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 29 Dec 2022 06:01:47 -0800 Subject: [PATCH 51/59] fw-api: CL 20915612 - update fw common interface files add WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG def Change-Id: I0074d4a503584fe8f20097219da2db79a3979ee7 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 10b722c933c4..af1fc4cc016e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -15568,6 +15568,7 @@ typedef struct { #define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ #define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ #define WMI_VDEV_START_RESPONSE_INVALID_PREFERRED_TX_RX_STREAMS 0x6 /** Invalid preferred tx/rx streams */ +#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ /** Beacon processing related command and event structures */ typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 535020e4092b..5a02c1306c08 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1254 +#define __WMI_REVISION_ 1255 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 529d8a4f38e6b1d185a79c9fe54ed0310395c044 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 29 Dec 2022 18:01:00 -0800 Subject: [PATCH 52/59] fw-api: CL 20924965 - update fw common interface files HTT stats: add rx_pkt_mu,tx_pkt,phy_tx_abort cnt fields in htt_phy_counters TLV Change-Id: I047de928cb6309d643164c2ae6fb7061b5cf3b64 CRs-Fixed: 2262693 --- fw/htt_stats.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 749c65341175..05dbfa19a07f 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -7361,6 +7361,11 @@ typedef struct { #define HTT_MAX_RX_PKT_CRC_PASS_CNT 8 #define HTT_MAX_PER_BLK_ERR_CNT 20 #define HTT_MAX_RX_OTA_ERR_CNT 14 +#define HTT_MAX_RX_PKT_CNT_EXT 4 +#define HTT_MAX_RX_PKT_CRC_PASS_CNT_EXT 4 +#define HTT_MAX_RX_PKT_MU_CNT 14 +#define HTT_MAX_TX_PKT_CNT 10 +#define HTT_MAX_PHY_TX_ABORT_CNT 10 typedef enum { HTT_STATS_CHANNEL_HALF_RATE = 0x0001, /* Half rate */ @@ -7501,6 +7506,38 @@ typedef struct { * [9-13]=RSVD */ A_UINT32 rx_ota_err_cnt[HTT_MAX_RX_OTA_ERR_CNT]; + /** rx_pkt_cnt_ext - + * Received EOP (end-of-packet) count per packet type for BE; + * [0] = EHT; [1] = WUR; [2] = AZ; [3]=RVSD + */ + A_UINT32 rx_pkt_cnt_ext[HTT_MAX_RX_PKT_CNT_EXT]; + /** rx_pkt_crc_pass_cnt_ext - + * Received EOP (end-of-packet) count per packet type for BE; + * [0] = EHT; [1] = WUR; [2] = AZ; [3]=RVSD + */ + A_UINT32 rx_pkt_crc_pass_cnt_ext[HTT_MAX_RX_PKT_CRC_PASS_CNT_EXT]; + /** rx_pkt_mu_cnt - + * RX MU MIMO+OFDMA packet count per packet type for BE; + * [0] = 11ax OFDMA; [1] = 11ax OFDMA+MUMIMO; [2] = 11be OFDMA; + * [3] = 11be OFDMA+MUMIMO; [4] = 11ax MIMO; [5] = 11be MIMO; + * [6] = 11ax OFDMA; [7] = 11ax OFDMA+MUMIMO; [8] = 11be OFDMA; + * [9] = 11be OFDMA+MUMIMO; [10] = 11ax MIMO; [11] = 11be MIMO; + * [12-13]=RSVD + */ + A_UINT32 rx_pkt_mu_cnt[HTT_MAX_RX_PKT_MU_CNT]; + /** tx_pkt_cnt - + * num of transfered packet count per packet type; + * [0] = 11a; [1] = 11b; [2] = 11n; [3] = 11ac; [4] = 11ax; [5] = GF; + * [6]= EHT; [7] = WUR; [8] = AZ; [9]=RSVD; [6-8] = Applicable only for BE + */ + A_UINT32 tx_pkt_cnt[HTT_MAX_TX_PKT_CNT]; + /** phy_tx_abort_cnt - + * phy tx abort after each tlv; + * [0] = PRE-PHY desc tlv; [1] = PHY desc tlv; [2] = LSIGA tlv; + * [3] = LSIGB tlv; [4] = Per User tlv; [5] = HESIGB tlv; + * [6] = Service tlv; [7] = Tx Packet End tlv; [8-9]=RSVD; + */ + A_UINT32 phy_tx_abort_cnt[HTT_MAX_PHY_TX_ABORT_CNT]; } htt_phy_counters_tlv; typedef struct { From 178f53bd61c546bdec3535f5e5c77e089d342505 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 6 Jan 2023 06:01:00 -0800 Subject: [PATCH 53/59] fw-api: CL 21013894 - update fw common interface files Change-Id: I3de61c7d4c47b0cf97431badb39f598d299fe18a WMI: add [tx,rx] max BA win size fields into SERVICE_READY_EXT2_EVENT msg CRs-Fixed: 2262693 --- fw/wmi_unified.h | 10 ++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index af1fc4cc016e..511748063d6c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3463,6 +3463,16 @@ typedef struct { */ A_UINT32 hw_bd_status; + /* + * max block ack window size FW supports for tx. + */ + A_UINT32 tx_aggr_ba_win_size_max; + + /* + * max block ack window size FW supports for rx. + */ + A_UINT32 rx_aggr_ba_win_size_max; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5a02c1306c08..e58dda174c84 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1255 +#define __WMI_REVISION_ 1256 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d6e7bf3f32aa0a1c7584b787855cc7cc5ab0cc9a Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 8 Jan 2023 18:01:13 -0800 Subject: [PATCH 54/59] fw-api: CL 21038289 - update fw common interface files Change-Id: I3e9ef9e0f671ccd27315eb411af49dd1b7121b6d WMI: add ESL_EGID_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 6 ++++++ fw/wmi_unified.h | 44 ++++++++++++++++++++++++++++++++++++++++---- fw/wmi_version.h | 2 +- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 4a9ce0fc29b7..da134bb29665 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1332,6 +1332,7 @@ typedef enum { WMITLV_TAG_STRUC_WMI_COEX_FIX_CHANNEL_CAPABILITIES, WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, + WMITLV_TAG_STRUC_wmi_esl_egid_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1847,6 +1848,7 @@ typedef enum { OP(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) \ OP(WMI_TAS_POWER_HISTORY_CMDID) \ OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ + OP(WMI_ESL_EGID_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -4350,6 +4352,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TX_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param, wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_PN_MGMT_RX_FILTER_CMDID); +#define WMITLV_TABLE_WMI_ESL_EGID_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_esl_egid_cmd_fixed_param, wmi_esl_egid_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ESL_EGID_CMDID); + /* update a wds (4 address) entry */ #define WMITLV_TABLE_WMI_PEER_UPDATE_WDS_ENTRY_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_update_wds_entry_cmd_fixed_param, wmi_peer_update_wds_entry_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 511748063d6c..a6f8ba776364 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1344,6 +1344,7 @@ typedef enum { /** Dedicated BT Antenna Mode (DBAM) command */ WMI_COEX_DBAM_CMDID, WMI_TAS_POWER_HISTORY_CMDID, + WMI_ESL_EGID_CMDID, /** * OBSS scan offload enable/disable commands @@ -1358,12 +1359,12 @@ typedef enum { WMI_OBSS_SCAN_DISABLE_CMDID, WMI_OBSS_COLOR_COLLISION_DET_CONFIG_CMDID, - /**LPI commands*/ - /**LPI mgmt snooping config command*/ + /** LPI commands */ + /** LPI mgmt snooping config command */ WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LPI), - /**LPI scan start command*/ + /** LPI scan start command */ WMI_LPI_START_SCAN_CMDID, - /**LPI scan stop command*/ + /** LPI scan stop command */ WMI_LPI_STOP_SCAN_CMDID, /** ExtScan commands */ @@ -33131,6 +33132,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VENDOR_VDEV_CMDID); WMI_RETURN_STRING(WMI_VENDOR_PEER_CMDID); WMI_RETURN_STRING(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); /* XPAN TWT */ + WMI_RETURN_STRING(WMI_ESL_EGID_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -41007,6 +41009,40 @@ typedef struct { A_UINT32 pn_rx_filter; } wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param; /* Filter for Neighbor Rx Packets */ +typedef struct { + A_UINT32 tlv_header; + /* egid_info: + * Identify which ESL group is active and the duty cycle configured + * for each group. + * This is a 128-bit bitmap to represent 16 ESL sets, with each set + * having 8 members. + * For a given set, the 1-values within the 8-bit bitmap identify + * which groups are active. The number of active groups within each + * set of 8 indirectly determines the WLAN/BT duty cycle: + * number of 1-bits | + * within 8-bit bitmap | WLAN / BT duty cycle + * --------------------+---------------- + * 0 | 100 ms WLAN + * 1 | 87.5 ms WLAN, 12.5 ms BT + * 2 | 75 ms WLAN, 25 ms BT + * 3 | 62.5 ms WLAN, 37.5 ms BT + * 4 | 50 ms WLAN, 50 ms BT + * 5 | 37.5 ms WLAN, 62.5 ms BT + * 6 | 25 ms WLAN, 75 ms BT + * 7 | 12.5 ms WLAN, 87.5 ms BT + * 8 | 100 ms BT + * The lowest bits in the bitmap represent the highest ESL groups, + * E.g. bitmap bit 0 corresponds to ESL group 127, bit 1 corresponds + * to ESL group 126, bit 7 corresponds to ESL group 120, bit 8 + * corresponds to ESL group 119, etc. + * + * So for example, if the lowest 8 bits of egid_info are 0x07, this + * indicates that groups 125-127 are active and 120-124 are inactive, + * and that the duty cycle is 62.5 ms WLAN + 37.5 ms BT. + */ + A_UINT32 egid_info[4]; +} wmi_esl_egid_cmd_fixed_param; + #define WMI_RTT_PASN_PEER_CREATE_SECURITY_MODE_GET(flag) WMI_GET_BITS(flag, 0, 2) #define WMI_RTT_PASN_PEER_CREATE_SECURITY_MODE_SET(flag,val) WMI_SET_BITS(flag, 0, 2, val) #define WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_GET(flag) WMI_GET_BITS(flag, 2, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e58dda174c84..bea9885ee07a 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1256 +#define __WMI_REVISION_ 1257 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e4eb087da56ca27744f1ca6823f1c5fbb9a5777e Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 12 Jan 2023 12:01:05 -0800 Subject: [PATCH 55/59] fw-api: CL 21107002 - update fw common interface files Change-Id: If69d1f831dbdcf754bb398637aa615a193e605f8 WMI: add TDMA_SCHEDULE_REQUEST_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 6 ++++ fw/wmi_unified.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 87 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 0e74b74444bc..603d8dfe614f 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -609,6 +609,7 @@ typedef enum { WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ + WMI_SERVICE_COORDINATED_AP_TDMA = 359, /* Support for Coordinated-AP TDMA feature */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index da134bb29665..1337b4fd6b77 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1333,6 +1333,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, WMITLV_TAG_STRUC_wmi_esl_egid_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1849,6 +1850,7 @@ typedef enum { OP(WMI_TAS_POWER_HISTORY_CMDID) \ OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ OP(WMI_ESL_EGID_CMDID) \ + OP(WMI_TDMA_SCHEDULE_REQUEST_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5254,6 +5256,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_REQUEST_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_per_peer_sched_mode_disable, peer_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SCHED_MODE_DISABLE_CMDID); +#define WMITLV_TABLE_WMI_TDMA_SCHEDULE_REQUEST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, wmi_tdma_schedule_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_TDMA_SCHEDULE_REQUEST_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a6f8ba776364..d8f0eedda868 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -315,6 +315,7 @@ typedef enum { WMI_GRP_SAWF, /* 0x49 SAWF (Service Aware WiFi) */ WMI_GRP_QUIET_OFL, /* 0x4a Quiet offloads */ WMI_GRP_ODD, /* 0x4b ODD */ + WMI_GRP_TDMA, /* 0x4c TDMA */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -1551,6 +1552,8 @@ typedef enum { /* WMI commands specific to ODD */ WMI_ODD_LIVEDUMP_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), + /* WMI commands specific to TDMA */ + WMI_TDMA_SCHEDULE_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_TDMA), } WMI_CMD_ID; typedef enum { @@ -33133,6 +33136,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VENDOR_PEER_CMDID); WMI_RETURN_STRING(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); /* XPAN TWT */ WMI_RETURN_STRING(WMI_ESL_EGID_CMDID); + WMI_RETURN_STRING(WMI_TDMA_SCHEDULE_REQUEST_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -41337,6 +41341,81 @@ typedef struct { */ } wmi_peer_sched_mode_disable_fixed_param; +/** Coordinated-AP TDMA **/ + +#define WMI_TDMA_MAX_ACTIVE_SCHEDULES 10 + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param **/ + /** pdev_id + * PDEV ID for identifying the MAC for which this schedule + * is being requested. + */ + A_UINT32 pdev_id; + /** schedule_type + * 0 = Reserved + * 1 = Restricted + * UINT32_MAX = Cancel all TDMA schedules and ignore other parameters below. + */ + A_UINT32 schedule_type; + /** schedule_handle_id + * Unique ID to identify this TDMA schedule + */ + A_UINT32 schedule_handle_id; + /** owner_bssid + * The BSSID this TDMA schedule is reserved for + */ + wmi_mac_addr owner_bssid; + /** start_time_tsf_low + * Lower 32-bits of Synchronized Start time for the first busy slot + * in this TDMA schedule. + * It should be a PMM global FW TSF reference + */ + A_UINT32 start_time_tsf_low; + /** start_time_tsf_high + * Higher 32-bits of Synchronized Start time for the first busy slot + * in this TDMA schedule. + * It should be a PMM global FW TSF reference + */ + A_UINT32 start_time_tsf_high; + /** num_busy_slots + * Number of busy periods in this schedule + */ + A_UINT32 num_busy_slots; + /** busy_slot_dur_ms + * The fixed duration of each busy slot in milliseconds + */ + A_UINT32 busy_slot_dur_ms; + /** busy_slot_intvl_ms + * The fixed interval between the start of two consecutive busy slots + * in milliseconds. + */ + A_UINT32 busy_slot_intvl_ms; + /** edca_params_valid + * Indicates whether the following EDCA fields aifsn, ecwmin, ecwmax + * are valid or not + * 1 = Valid. 0 = Not Valid. + */ + A_UINT32 edca_params_valid; + /** aifsn + * Arbitration inter frame spacing number for this schedule type. + * Range: 2-15. + * For voice, video, best-effort, background ACs + */ + A_UINT32 aifsn[WMI_AC_MAX]; + /** ecwmin + * Exponent form of Contention Window minimum value for this schedule type. + * Range: 2 - 1024. + * For voice, video, best-effort, background ACs + */ + A_UINT32 ecwmin[WMI_AC_MAX]; + /** ecwmax + * Exponent form of Contention Window maximum value for this schedule type. + * Range: 2 - 1024. + * For voice, video, best-effort, background ACs + */ + A_UINT32 ecwmax[WMI_AC_MAX]; +} wmi_tdma_schedule_request_cmd_fixed_param; /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index bea9885ee07a..2fb397b96185 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1257 +#define __WMI_REVISION_ 1258 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 39c68924442903d26bc93f36a5f4449be1531729 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 14 Jan 2023 12:01:11 -0800 Subject: [PATCH 56/59] fw-api: CL 21136812 - update fw common interface files HTT stats: add MLO abort and MLO tx op abort stats counters Change-Id: I01dd4a21602fdb80dd6b87bcbfb8d22c7df21257 CRs-Fixed: 2262693 --- fw/htt.h | 2 ++ fw/htt_stats.h | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index 3c36a13fb893..d2c9062f54a4 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -771,6 +771,8 @@ typedef enum { HTT_STATS_PEER_AX_OFDMA_STATS_TAG = 174, /* htt_peer_ax_ofdma_stats_tlv */ HTT_STATS_TX_PDEV_MU_EDCA_PARAMS_STATS_TAG = 175, /* htt_tx_pdev_mu_edca_params_stats_tlv_v */ HTT_STATS_PDEV_MBSSID_CTRL_FRAME_STATS_TAG = 176, /* htt_pdev_mbssid_ctrl_frame_stats_tlv */ + HTT_STATS_TX_PDEV_MLO_ABORT_TAG = 177, /* htt_tx_pdev_stats_mlo_abort_tlv_v */ + HTT_STATS_TX_PDEV_MLO_TXOP_ABORT_TAG = 178, /* htt_tx_pdev_stats_mlo_txop_abort_tlv_v */ HTT_STATS_MAX_TAG, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 05dbfa19a07f..8435f8bd94b7 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -928,6 +928,20 @@ typedef struct { A_UINT32 flush_errs[1]; /* HTT_TX_PDEV_MAX_FLUSH_REASON_STATS */ } htt_tx_pdev_stats_flush_tlv_v; +#define HTT_TX_PDEV_STATS_MLO_ABORT_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) +/* NOTE: Variable length TLV, use length spec to infer array size */ +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 mlo_abort_cnt[]; /* HTT_TX_PDEV_MAX_MLO_ABORT_REASON_STATS */ +} htt_tx_pdev_stats_mlo_abort_tlv_v; + +#define HTT_TX_PDEV_STATS_MLO_TXOP_ABORT_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) +/* NOTE: Variable length TLV, use length spec to infer array size */ +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 mlo_txop_abort_cnt[]; /* HTT_TX_PDEV_MAX_MLO_ABORT_REASON_STATS */ +} htt_tx_pdev_stats_mlo_txop_abort_tlv_v; + #define HTT_TX_PDEV_STATS_SIFS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) /* NOTE: Variable length TLV, use length spec to infer array size */ typedef struct { From b7df16e3d97b04a4a25577f3f97129a628ecd3d8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 14 Jan 2023 12:02:01 -0800 Subject: [PATCH 57/59] fw-api: CL 21137859 - update fw common interface files Change-Id: If107dd629b06f440d6f71c94d4e735d84c834f8f WMI: add 2 EHT capabilities bitfields CRs-Fixed: 2262693 --- fw/wmi_unified.h | 12 ++++++++++-- fw/wmi_version.h | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d8f0eedda868..f61cf6a0ad9a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -38355,7 +38355,15 @@ typedef struct { #define WMI_EHTCAP_MAC_TXOP_RETURN_SUPP_IN_SHARINGMODE2_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 10, 1) #define WMI_EHTCAP_MAC_TXOP_RETURN_SUPP_IN_SHARINGMODE2_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 10, 1, value) -/* Bit 11-15: reserved */ +/* Bit 11: two BQRs support */ +#define WMI_EHTCAP_MAC_TWO_BQRS_SUPP_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 11, 1) +#define WMI_EHTCAP_MAC_TWO_BQRS_SUPP_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 11, 1, value) + +/* Bit 12-13: EHT link adaptation support */ +#define WMI_EHTCAP_MAC_EHT_LINK_ADAPTATION_SUPP_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 12, 2) +#define WMI_EHTCAP_MAC_EHT_LINK_ADAPTATION_SUPP_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 12, 2, value) + +/* Bit 14-15: reserved */ /****** End of 11BE EHT MAC Capabilities Information field ******/ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2fb397b96185..143224d4c613 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -37,7 +37,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_ 1258 +#define __WMI_REVISION_ 1259 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 6ff9cf34a0bd751b6396b23eb1645c88581323f1 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 15 Jan 2023 12:01:01 -0800 Subject: [PATCH 58/59] fw-api: CL 21143159 - update fw common interface files Change-Id: Id13dc537e8d912abd975c97dd17d0de8fd24798f WMI: add HPA_CMD,EVT msg defs CRs-Fixed: 2262693 --- fw/wmi_services.h | 4 ++-- fw/wmi_tlv_defs.h | 17 ++++++++++++++++- fw/wmi_unified.h | 39 +++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 58 insertions(+), 4 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 603d8dfe614f..64e88aab7a7b 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -610,7 +610,7 @@ typedef enum { WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ WMI_SERVICE_COORDINATED_AP_TDMA = 359, /* Support for Coordinated-AP TDMA feature */ - + WMI_SERVICE_HPA_SUPPORT = 360, /* Support for Host Platform Authentication */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 1337b4fd6b77..e580a96ad2c6 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1334,6 +1334,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, WMITLV_TAG_STRUC_wmi_esl_egid_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param, } WMITLV_TAG_ID; /* @@ -1851,6 +1853,7 @@ typedef enum { OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ OP(WMI_ESL_EGID_CMDID) \ OP(WMI_TDMA_SCHEDULE_REQUEST_CMDID) \ + OP(WMI_HPA_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2149,6 +2152,7 @@ typedef enum { OP(WMI_MLO_LINK_REMOVAL_EVENTID) \ OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_TAS_POWER_HISTORY_EVENTID) \ + OP(WMI_HPA_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5260,6 +5264,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SCHED_MODE_DISABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdma_schedule_request_cmd_fixed_param, wmi_tdma_schedule_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_TDMA_SCHEDULE_REQUEST_CMDID); +/* HPA cmd */ +#define WMITLV_TABLE_WMI_HPA_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param, wmi_hpa_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_HPA_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -7132,6 +7142,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID); +/* HPA Event */ +#define WMITLV_TABLE_WMI_HPA_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param, wmi_hpa_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_HPA_EVENTID); + #ifdef __cplusplus diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f61cf6a0ad9a..f4c3a70e34f4 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1222,6 +1222,9 @@ typedef enum { /* WMI cmd used to start/stop XGAP (XPAN Green AP) */ WMI_XGAP_ENABLE_CMDID, + /* H2T HPA message */ + WMI_HPA_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), /* invoke neighbor report from FW */ @@ -2181,6 +2184,9 @@ typedef enum { /* WMI XGAP enable command response event ID */ WMI_XGAP_ENABLE_COMPLETE_EVENTID, + /* T2H HPA message */ + WMI_HPA_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -33137,6 +33143,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); /* XPAN TWT */ WMI_RETURN_STRING(WMI_ESL_EGID_CMDID); WMI_RETURN_STRING(WMI_TDMA_SCHEDULE_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_HPA_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -39015,6 +39022,38 @@ typedef struct { A_UINT32 en_dis_chain; } wmi_set_ocl_cmd_fixed_param; +typedef enum { + /* HPA Handshake Stages */ + WMI_HPA_SMCK_REQUEST = 0, + WMI_HPA_SMCK_RESPONSE = 1, + WMI_HPA_SIGN_REQUEST = 2, + WMI_HPA_SIGN_RESPONSE = 3, + WMI_HPA_HANDSHAKE_STAGE_MAX, +} WMI_HPA_STAGE_TYPE; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_hpa_cmd_fixed_param */ + /* stage: + * HPA Handshake Stage, filled with a WMI_HPA_STAGE_TYPE enum value + */ + A_UINT32 stage; + + /* the base address and length of data on host memory */ + A_UINT32 base_paddr_low; /* bits 31:0 */ + A_UINT32 base_paddr_high; /* bits 63:32 */ + A_UINT32 len; /* units = bytes */ +} wmi_hpa_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_hpa_evt_fixed_param */ + /* stage: + * HPA Handshake Stage, filled with a WMI_HPA_STAGE_TYPE enum value + */ + A_UINT32 stage; + + A_UINT32 nonce; +} wmi_hpa_evt_fixed_param; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_sync_qtimer */ A_UINT32 vdev_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 143224d4c613..23c847aab56f 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1259 +#define __WMI_REVISION_ 1260 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 543dc579716193c43890f6c4490016742e3148ad Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 16 Jan 2023 06:01:09 -0800 Subject: [PATCH 59/59] fw-api: CL 21148594 - update fw common interface files Change-Id: Ide852165e6c025572926292812dea29e204ab1ab HTT: add H2T RX_CCE_SUPER_RULE_SETUP + T2H SETUP_DONE msg def CRs-Fixed: 2262693 --- fw/htt.h | 439 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 437 insertions(+), 2 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index d2c9062f54a4..cddf564ee9d8 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -239,9 +239,11 @@ * 3.112 Add logical_link_id field in rx_peer_metadata_v1. * 3.113 Add add rx msdu,mpdu,ppdu fields in rx_ring_selection_cfg_t * 3.114 Add HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET def. + * 3.115 Add HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP and + * HTT_T2H_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP_DONE msg defs. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 114 +#define HTT_CURRENT_VERSION_MINOR 115 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -843,6 +845,7 @@ enum htt_h2t_msg_type { HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20, HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP = 0x21, HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET = 0x22, + HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP = 0x23, /* keep this last */ HTT_H2T_NUM_MSGS @@ -10213,6 +10216,265 @@ PREPACK typedef struct { } while (0) +/* + * @brief host -> target HTT RX_CCE_SUPER_RULE_SETUP message + * + * MSG_TYPE => HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP + * + * @details + * Host sends RX_CCE_SUPER_RULE setup message to target, in order to request, + * install or uninstall rx cce super rules to match certain kind of packets + * with specific parameters. Target sets up HW registers based on setup message + * and always confirms back to Host. + * + * The message would appear as follows: + * |31 24|23 16|15 8|7 0| + * |-----------------+-----------------+-----------------+-----------------| + * | reserved | operation | vdev_id | msg_type | + * |-----------------------------------------------------------------------| + * | cce_super_rule_param[0] | + * |-----------------------------------------------------------------------| + * | cce_super_rule_param[1] | + * |-----------------------------------------------------------------------| + * + * The message is interpreted as follows: + * dword0 - b'0:7 - msg_type: This will be set to + * 0x23 (HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP) + * b'8:15 - vdev_id: Identify which vdev RX_CCE_SUPER_RULE is for + * b'16:23 - operation: Identify operation to be taken, + * 0: HTT_RX_CCE_SUPER_RULE_SETUP_REQUEST + * 1: HTT_RX_CCE_SUPER_RULE_INSTALL + * 2: HTT_RX_CCE_SUPER_RULE_RELEASE + * b'24:31 - reserved + * dword1~10 - cce_super_rule_param[0]: + * contains parameters used to setup RX_CCE_SUPER_RULE_0 + * dword11~20 - cce_super_rule_param[1]: + * contains parameters used to setup RX_CCE_SUPER_RULE_1 + * + * Each cce_super_rule_param structure would appear as follows: + * |31 24|23 16|15 8|7 0| + * |-----------------+-----------------+-----------------+-----------------| + * |src_ipv6_addr[3] |src_ipv6_addr[2] |src_ipv6_addr[1] |src_ipv6_addr[0] | + * |/src_ipv4_addr[3]|/src_ipv4_addr[2]|/src_ipv4_addr[1]|/src_ipv4_addr[0]| + * |-----------------------------------------------------------------------| + * |src_ipv6_addr[7] |src_ipv6_addr[6] |src_ipv6_addr[5] |src_ipv6_addr[4] | + * |-----------------------------------------------------------------------| + * |src_ipv6_addr[11]|src_ipv6_addr[10]|src_ipv6_addr[9] |src_ipv6_addr[8] | + * |-----------------------------------------------------------------------| + * |src_ipv6_addr[15]|src_ipv6_addr[14]|src_ipv6_addr[13]|src_ipv6_addr[12]| + * |-----------------------------------------------------------------------| + * |dst_ipv6_addr[3] |dst_ipv6_addr[2] |dst_ipv6_addr[1] |dst_ipv6_addr[0] | + * |/dst_ipv4_addr[3]|/dst_ipv4_addr[2]|/dst_ipv4_addr[1]|/dst_ipv4_addr[0]| + * |-----------------------------------------------------------------------| + * |dst_ipv6_addr[7] |dst_ipv6_addr[6] |dst_ipv6_addr[5] |dst_ipv6_addr[4] | + * |-----------------------------------------------------------------------| + * |dst_ipv6_addr[11]|dst_ipv6_addr[10]|dst_ipv6_addr[9] |dst_ipv6_addr[8] | + * |-----------------------------------------------------------------------| + * |dst_ipv6_addr[15]|dst_ipv6_addr[14]|dst_ipv6_addr[13]|dst_ipv6_addr[12]| + * |-----------------------------------------------------------------------| + * | is_valid | l4_type | l3_type | + * |-----------------------------------------------------------------------| + * | l4_dst_port | l4_src_port | + * |-----------------------------------------------------------------------| + * + * The cce_super_rule_param[0] structure is interpreted as follows: + * dword1 - b'0:7 - src_ipv6_addr[0]: b'120:127 of source ipv6 address + * (or src_ipv4_addr[0]: b'24:31 of source ipv4 address, + * in case of ipv4) + * b'8:15 - src_ipv6_addr[1]: b'112:119 of source ipv6 address + * (or src_ipv4_addr[1]: b'16:23 of source ipv4 address, + * in case of ipv4) + * b'16:23 - src_ipv6_addr[2]: b'104:111 of source ipv6 address + * (or src_ipv4_addr[2]: b'8:15 of source ipv4 address, + * in case of ipv4) + * b'24:31 - src_ipv6_addr[3]: b'96:103 of source ipv6 address + * (or src_ipv4_addr[3]: b'0:7 of source ipv4 address, + * in case of ipv4) + * dword2 - b'0:7 - src_ipv6_addr[4]: b'88:95 of source ipv6 address + * b'8:15 - src_ipv6_addr[5]: b'80:87 of source ipv6 address + * b'16:23 - src_ipv6_addr[6]: b'72:79 of source ipv6 address + * b'24:31 - src_ipv6_addr[7]: b'64:71 of source ipv6 address + * dword3 - b'0:7 - src_ipv6_addr[8]: b'56:63 of source ipv6 address + * b'8:15 - src_ipv6_addr[9]: b'48:55 of source ipv6 address + * b'16:23 - src_ipv6_addr[10]: b'40:47 of source ipv6 address + * b'24:31 - src_ipv6_addr[11]: b'32:39 of source ipv6 address + * dword4 - b'0:7 - src_ipv6_addr[12]: b'24:31 of source ipv6 address + * b'8:15 - src_ipv6_addr[13]: b'16:23 of source ipv6 address + * b'16:23 - src_ipv6_addr[14]: b'8:15 of source ipv6 address + * b'24:31 - src_ipv6_addr[15]: b'0:7 of source ipv6 address + * dword5 - b'0:7 - dst_ipv6_addr[0]: b'120:127 of destination ipv6 address + * (or dst_ipv4_addr[0]: b'24:31 of destination + * ipv4 address, in case of ipv4) + * b'8:15 - dst_ipv6_addr[1]: b'112:119 of destination ipv6 address + * (or dst_ipv4_addr[1]: b'16:23 of destination + * ipv4 address, in case of ipv4) + * b'16:23 - dst_ipv6_addr[2]: b'104:111 of destination ipv6 address + * (or dst_ipv4_addr[2]: b'8:15 of destination + * ipv4 address, in case of ipv4) + * b'24:31 - dst_ipv6_addr[3]: b'96:103 of destination ipv6 address + * (or dst_ipv4_addr[3]: b'0:7 of destination + * ipv4 address, in case of ipv4) + * dword6 - b'0:7 - dst_ipv6_addr[4]: b'88:95 of destination ipv6 address + * b'8:15 - dst_ipv6_addr[5]: b'80:87 of destination ipv6 address + * b'16:23 - dst_ipv6_addr[6]: b'72:79 of destination ipv6 address + * b'24:31 - dst_ipv6_addr[7]: b'64:71 of destination ipv6 address + * dword7 - b'0:7 - dst_ipv6_addr[8]: b'56:63 of destination ipv6 address + * b'8:15 - dst_ipv6_addr[9]: b'48:55 of destination ipv6 address + * b'16:23 - dst_ipv6_addr[10]: b'40:47 of destination ipv6 address + * b'24:31 - dst_ipv6_addr[11]: b'32:39 of destination ipv6 address + * dword8 - b'0:7 - dst_ipv6_addr[12]: b'24:31 of destination ipv6 address + * b'8:15 - dst_ipv6_addr[13]: b'16:23 of destination ipv6 address + * b'16:23 - dst_ipv6_addr[14]: b'8:15 of destination ipv6 address + * b'24:31 - dst_ipv6_addr[15]: b'0:7 of destination ipv6 address + * dword9 - b'0:15 - l3_type: type of L3 protocol, indicating L3 protocol used + * 0x0008: ipv4 + * 0xdd86: ipv6 + * b'16:23 - l4_type: type of L4 protocol, indicating L4 protocol used + * 6: TCP + * 17: UDP + * b'24:31 - is_valid: indicate whether this parameter is valid + * 0: invalid + * 1: valid + * dword10 - b'0:15 - l4_src_port: TCP/UDP source port field + * b'16:31 - l4_dst_port: TCP/UDP destination port field + * + * The cce_super_rule_param[1] structure is similar. + */ +#define HTT_RX_CCE_SUPER_RULE_SETUP_NUM 2 + +enum htt_rx_cce_super_rule_setup_operation { + HTT_RX_CCE_SUPER_RULE_SETUP_REQUEST = 0, + HTT_RX_CCE_SUPER_RULE_INSTALL, + HTT_RX_CCE_SUPER_RULE_RELEASE, + + /* All operation should be before this */ + HTT_RX_CCE_SUPER_RULE_SETUP_INVALID_OPERATION, +}; + +typedef struct { + union { + A_UINT8 src_ipv4_addr[4]; + A_UINT8 src_ipv6_addr[16]; + }; + union { + A_UINT8 dst_ipv4_addr[4]; + A_UINT8 dst_ipv6_addr[16]; + }; + A_UINT32 l3_type: 16, + l4_type: 8, + is_valid: 8; + A_UINT32 l4_src_port: 16, + l4_dst_port: 16; +} htt_rx_cce_super_rule_param_t; + +PREPACK struct htt_rx_cce_super_rule_setup_t { + A_UINT32 msg_type: 8, + vdev_id: 8, + operation: 8, + reserved: 8; + htt_rx_cce_super_rule_param_t + cce_super_rule_param[HTT_RX_CCE_SUPER_RULE_SETUP_NUM]; +} POSTPACK; + +#define HTT_RX_CCE_SUPER_RULE_SETUP_SZ \ + (sizeof(struct htt_rx_cce_super_rule_setup_t)) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_M 0x0000ff00 +#define HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_S 8 +#define HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_VDEV_ID_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_M 0x00ff0000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_S 16 +#define HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_OPERATION_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_M 0x0000ffff +#define HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_S 0 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_L3_TYPE_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_M 0x00ff0000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_S 16 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_L4_TYPE_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_M 0xff000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_S 24 +#define HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_IS_VALID_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_M 0x0000ffff +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_S 0 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_L4_SRC_PORT_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_M 0xffff0000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_S 16 +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_L4_DST_PORT_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_IPV4_ADDR_ARRAY_GET(_ptr, _array) \ + do { \ + A_MEMCPY(_array, _ptr, 4); \ + } while (0) +#define HTT_RX_CCE_SUPER_RULE_SETUP_IPV4_ADDR_ARRAY_SET(_ptr, _array) \ + do { \ + A_MEMCPY(_ptr, _array, 4); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_IPV6_ADDR_ARRAY_GET(_ptr, _array) \ + do { \ + A_MEMCPY(_array, _ptr, 16); \ + } while (0) +#define HTT_RX_CCE_SUPER_RULE_SETUP_IPV6_ADDR_ARRAY_SET(_ptr, _array) \ + do { \ + A_MEMCPY(_ptr, _array, 16); \ + } while (0) + + /*=== target -> host messages ===============================================*/ @@ -10275,6 +10537,7 @@ enum htt_t2h_msg_type { HTT_T2H_PPDU_ID_FMT_IND = 0x30, HTT_T2H_MSG_TYPE_RX_ADDBA_EXTN = 0x31, HTT_T2H_MSG_TYPE_RX_DELBA_EXTN = 0x32, + HTT_T2H_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP_DONE = 0x33, HTT_T2H_MSG_TYPE_TEST, @@ -19466,4 +19729,176 @@ typedef struct { } htt_t2h_ppdu_id_fmt_ind_t; +/** + * @brief target -> host RX_CCE_SUPER_RULE setup done message + * + * MSG_TYPE => HTT_T2H_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP_DONE + * + * @details + * HTT_T2H_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP_DONE message is sent by the target + * when RX_CCE_SUPER_RULE setup is done + * + * This message shows the configuration results after the setup operation. + * It will always be sent to host. + * The message would appear as follows: + * + * |31 24|23 16|15 8|7 0| + * |-----------------+-----------------+----------------+----------------| + * | result | response_type | vdev_id | msg_type | + * |---------------------------------------------------------------------| + * + * The message is interpreted as follows: + * dword0 - b'0:7 - msg_type: This will be set to 0x33 + * (HTT_T2H_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP_DONE) + * b'8:15 - vdev_id: Identify which vdev RX_CCE_SUPER_RULE is setup on + * b'16:23 - response_type: Indicate the response type of this setup + * done msg + * 0: HTT_RX_CCE_SUPER_RULE_SETUP_REQ_RESPONSE, + * response to HTT_RX_CCE_SUPER_RULE_SETUP_REQUEST + * 1: HTT_RX_CCE_SUPER_RULE_INSTALL_RESPONSE, + * response to HTT_RX_CCE_SUPER_RULE_INSTALL + * 2: HTT_RX_CCE_SUPER_RULE_RELEASE_RESPONSE, + * response to HTT_RX_CCE_SUPER_RULE_RELEASE + * b'24:31 - result: Indicate result of setup operation + * For HTT_RX_CCE_SUPER_RULE_SETUP_REQ_RESPONSE: + * b'24 - is_rule_enough: indicate if there are + * enough free cce rule slots + * 0: not enough + * 1: enough + * b'25:31 - avail_rule_num: indicate the number of + * remaining free cce rule slots, only makes sense + * when is_rule_enough = 0 + * For HTT_RX_CCE_SUPER_RULE_INSTALL_RESPONSE: + * b'24 - cfg_result_0: indicate the config result + * of RX_CCE_SUPER_RULE_0 + * 0: Install/Uninstall fails + * 1: Install/Uninstall succeeds + * b'25 - cfg_result_1: indicate the config result + * of RX_CCE_SUPER_RULE_1 + * 0: Install/Uninstall fails + * 1: Install/Uninstall succeeds + * b'26:31 - reserved + * For HTT_RX_CCE_SUPER_RULE_RELEASE_RESPONSE: + * b'24 - cfg_result_0: indicate the config result + * of RX_CCE_SUPER_RULE_0 + * 0: Release fails + * 1: Release succeeds + * b'25 - cfg_result_1: indicate the config result + * of RX_CCE_SUPER_RULE_1 + * 0: Release fails + * 1: Release succeeds + * b'26:31 - reserved + */ + +enum htt_rx_cce_super_rule_setup_done_response_type { + HTT_RX_CCE_SUPER_RULE_SETUP_REQ_RESPONSE = 0, + HTT_RX_CCE_SUPER_RULE_INSTALL_RESPONSE, + HTT_RX_CCE_SUPER_RULE_RELEASE_RESPONSE, + + /*All reply type should be before this*/ + HTT_RX_CCE_SUPER_RULE_SETUP_INVALID_RESPONSE, +}; + +PREPACK struct htt_rx_cce_super_rule_setup_done_t { + A_UINT8 msg_type; + A_UINT8 vdev_id; + A_UINT8 response_type; + union { + struct { + /* For HTT_RX_CCE_SUPER_RULE_SETUP_REQ_RESPONSE */ + A_UINT8 is_rule_enough: 1, + avail_rule_num: 7; + }; + struct { + /* + * For HTT_RX_CCE_SUPER_RULE_INSTALL_RESPONSE and + * HTT_RX_CCE_SUPER_RULE_RELEASE_RESPONSE + */ + A_UINT8 cfg_result_0: 1, + cfg_result_1: 1, + rsvd: 6; + }; + } result; +} POSTPACK; + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_SZ (sizeof(struct htt_rx_cce_super_rule_setup_done_t)) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_M 0x0000ff00 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_S 8 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_VDEV_ID_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_M 0x00ff0000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_S 16 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESPONSE_TYPE_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_M 0xff000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_S 24 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_RESULT_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_M 0x01000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_S 24 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_IS_RULE_ENOUGH_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_M 0xFE000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_S 25 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_AVAIL_RULE_NUM_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_M 0x01000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_S 24 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_0_S)); \ + } while (0) + +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_M 0x02000000 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_S 25 +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_GET(_var) \ + (((_var) & HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_M) >> \ + HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_S) +#define HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1, _val); \ + ((_var) |= ((_val) << HTT_RX_CCE_SUPER_RULE_SETUP_DONE_CFG_RESULT_1_S)); \ + } while (0) + + #endif