1 /* 2 * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Previously licensed under the ISC license by Qualcomm Atheros, Inc. 6 * 7 * 8 * Permission to use, copy, modify, and/or distribute this software for 9 * any purpose with or without fee is hereby granted, provided that the 10 * above copyright notice and this permission notice appear in all 11 * copies. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 14 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 16 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 17 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 18 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 */ 22 23 /* 24 * This file was originally distributed by Qualcomm Atheros, Inc. 25 * under proprietary terms before Copyright ownership was assigned 26 * to the Linux Foundation. 27 */ 28 29 #ifndef _WMI_SERVICES_H_ 30 #define _WMI_SERVICES_H_ 31 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 38 39 typedef enum { 40 WMI_SERVICE_BEACON_OFFLOAD=0, /* beacon offload */ 41 WMI_SERVICE_SCAN_OFFLOAD=1, /* scan offload */ 42 WMI_SERVICE_ROAM_SCAN_OFFLOAD=2, /* roam scan offload */ 43 WMI_SERVICE_BCN_MISS_OFFLOAD=3, /* beacon miss offload */ 44 WMI_SERVICE_STA_PWRSAVE=4, /* fake sleep + basic power save */ 45 WMI_SERVICE_STA_ADVANCED_PWRSAVE=5, /* uapsd, pspoll, force sleep */ 46 WMI_SERVICE_AP_UAPSD=6, /* uapsd on AP */ 47 WMI_SERVICE_AP_DFS=7, /* DFS on AP */ 48 WMI_SERVICE_11AC=8, /* supports 11ac */ 49 WMI_SERVICE_BLOCKACK=9, /* Supports triggering ADDBA/DELBA from host*/ 50 WMI_SERVICE_PHYERR=10, /* PHY error */ 51 WMI_SERVICE_BCN_FILTER=11, /* Beacon filter support */ 52 WMI_SERVICE_RTT=12, /* RTT (round trip time) support */ 53 WMI_SERVICE_WOW=13, /* WOW Support */ 54 WMI_SERVICE_RATECTRL_CACHE=14, /* Rate-control caching */ 55 WMI_SERVICE_IRAM_TIDS=15, /* TIDs in IRAM */ 56 WMI_SERVICE_ARPNS_OFFLOAD=16, /* ARP NS Offload support for STA vdev */ 57 WMI_SERVICE_NLO=17, /* Network list offload service */ 58 WMI_SERVICE_GTK_OFFLOAD=18, /* GTK offload */ 59 WMI_SERVICE_SCAN_SCH=19, /* Scan Scheduler Service */ 60 WMI_SERVICE_CSA_OFFLOAD=20, /* CSA offload service */ 61 WMI_SERVICE_CHATTER=21, /* Chatter service */ 62 WMI_SERVICE_COEX_FREQAVOID=22, /* FW report freq range to avoid */ 63 WMI_SERVICE_PACKET_POWER_SAVE=23, /* packet power save service */ 64 WMI_SERVICE_FORCE_FW_HANG=24, /* Service to test the firmware recovery mechanism */ 65 WMI_SERVICE_GPIO=25, /* GPIO service */ 66 WMI_SERVICE_STA_DTIM_PS_MODULATED_DTIM=26, /* Modulated DTIM support */ 67 WMI_STA_UAPSD_BASIC_AUTO_TRIG=27, /* Basic version of station UAPSD AC Trigger Generation Method with 68 * variable trigger periods (service, delay, and suspend intervals) */ 69 WMI_STA_UAPSD_VAR_AUTO_TRIG=28, /* Station UAPSD AC Trigger Generation Method with variable 70 * trigger periods (service, delay, and suspend intervals) */ 71 WMI_SERVICE_STA_KEEP_ALIVE=29, /* Service to support the STA KEEP ALIVE mechanism */ 72 WMI_SERVICE_TX_ENCAP=30, /* Packet type for TX encapsulation */ 73 WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC=31, /* detect out-of-sync sleeping stations */ 74 WMI_SERVICE_EARLY_RX=32, /* adaptive early-rx feature */ 75 WMI_SERVICE_STA_SMPS=33, /* STA MIMO-PS */ 76 WMI_SERVICE_FWTEST=34, /* Firmware test service */ 77 WMI_SERVICE_STA_WMMAC=35, /* STA WMMAC */ 78 WMI_SERVICE_TDLS=36, /* TDLS support */ 79 WMI_SERVICE_BURST=37, /* SIFS spaced burst support */ 80 WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE=38, /* Dynamic beaocn interval change for SAP/P2p GO in MCC scenario */ 81 WMI_SERVICE_ADAPTIVE_OCS=39, /* Service to support adaptive off-channel scheduler */ 82 WMI_SERVICE_BA_SSN_SUPPORT=40, /* target will provide Sequence number for the peer/tid combo */ 83 WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE=41, 84 WMI_SERVICE_WLAN_HB=42, /* wlan HB service */ 85 WMI_SERVICE_LTE_ANT_SHARE_SUPPORT=43, /* support LTE/WLAN antenna sharing */ 86 WMI_SERVICE_BATCH_SCAN=44, /* Service to support batch scan */ 87 WMI_SERVICE_QPOWER=45, /* QPower service */ 88 WMI_SERVICE_PLMREQ=46, 89 WMI_SERVICE_THERMAL_MGMT=47, /* thermal throttling support, 90 * compared with 91 * WMI_SERVICE_THERM_THROT, 92 * this service only reports 93 * current temperature to host, 94 * and host will do the thermal 95 * throttling. */ 96 WMI_SERVICE_RMC=48, /* RMC support */ 97 WMI_SERVICE_MHF_OFFLOAD=49, /* multi-hop forwarding offload */ 98 WMI_SERVICE_COEX_SAR=50, /* target support SAR tx limit from WMI_PDEV_PARAM_TXPOWER_LIMITxG */ 99 WMI_SERVICE_BCN_TXRATE_OVERRIDE=51, /* Will support the bcn/prb rsp rate override */ 100 WMI_SERVICE_NAN=52, /* Neighbor Awareness Network */ 101 WMI_SERVICE_L1SS_STAT=53, /* L1SS statistics counter report */ 102 WMI_SERVICE_ESTIMATE_LINKSPEED=54, /* Linkspeed Estimation per peer */ 103 WMI_SERVICE_OBSS_SCAN=55, /* Service to support OBSS scan */ 104 WMI_SERVICE_TDLS_OFFCHAN=56, /* TDLS off channel support */ 105 WMI_SERVICE_TDLS_UAPSD_BUFFER_STA=57, /* TDLS UAPSD Buffer STA support */ 106 WMI_SERVICE_TDLS_UAPSD_SLEEP_STA=58, /* TDLS UAPSD Sleep STA support */ 107 WMI_SERVICE_IBSS_PWRSAVE=59, /* IBSS power save support */ 108 WMI_SERVICE_LPASS=60, /* Service to support LPASS */ 109 WMI_SERVICE_EXTSCAN=61, /* Extended Scans */ 110 WMI_SERVICE_D0WOW=62, /* D0-WOW Support */ 111 WMI_SERVICE_HSOFFLOAD=63, /* Hotspot offload feature Support */ 112 WMI_SERVICE_ROAM_HO_OFFLOAD=64, /* roam handover offload */ 113 WMI_SERVICE_RX_FULL_REORDER=65, /* target-based Rx full reorder */ 114 WMI_SERVICE_DHCP_OFFLOAD=66, /* DHCP offload support */ 115 WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT=67, /* STA RX DATA offload to IPA support */ 116 WMI_SERVICE_MDNS_OFFLOAD=68, /* mDNS responder offload support */ 117 WMI_SERVICE_SAP_AUTH_OFFLOAD=69, /* softap auth offload */ 118 WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT=70, /* Dual Band Simultaneous support */ 119 WMI_SERVICE_OCB=71, /* OCB mode support */ 120 WMI_SERVICE_AP_ARPNS_OFFLOAD=72, /* arp offload support for ap mode vdev */ 121 WMI_SERVICE_PER_BAND_CHAINMASK_SUPPORT=73, /* Per band chainmask support */ 122 WMI_SERVICE_PACKET_FILTER_OFFLOAD=74, /* Per vdev packet filters */ 123 WMI_SERVICE_MGMT_TX_HTT=75, /* Mgmt Tx via HTT interface */ 124 WMI_SERVICE_MGMT_TX_WMI=76, /* Mgmt Tx via WMI interface */ 125 WMI_SERVICE_EXT_MSG=77, /* WMI_SERVICE_READY_EXT msg follows */ 126 WMI_SERVICE_MAWC=78, /* Motion Aided WiFi Connectivity (MAWC)*/ 127 WMI_SERVICE_PEER_ASSOC_CONF=79, /* target will send ASSOC_CONF after ASSOC_CMD is processed */ 128 WMI_SERVICE_EGAP=80, /* enhanced green ap support */ 129 WMI_SERVICE_STA_PMF_OFFLOAD=81, /* FW supports 11W PMF Offload for STA */ 130 WMI_SERVICE_UNIFIED_WOW_CAPABILITY=82, /* FW supports unified D0 and D3 wow */ 131 WMI_SERVICE_ENHANCED_PROXY_STA=83, /* Enhanced ProxySTA mode support */ 132 WMI_SERVICE_ATF=84, /* Air Time Fairness support */ 133 WMI_SERVICE_COEX_GPIO=85, /* BTCOEX GPIO support */ 134 WMI_SERVICE_AUX_SPECTRAL_INTF=86, /* Aux Radio enhancement support for ignoring spectral scan intf from main radios */ 135 WMI_SERVICE_AUX_CHAN_LOAD_INTF=87, /* Aux Radio enhancement support for ignoring chan load intf from main radios*/ 136 WMI_SERVICE_BSS_CHANNEL_INFO_64=88, /* BSS channel info (freq, noise floor, 64-bit counters) event support */ 137 WMI_SERVICE_ENTERPRISE_MESH=89, /* Enterprise MESH Service Support */ 138 WMI_SERVICE_RESTRT_CHNL_SUPPORT=90, /* Restricted Channel Support */ 139 WMI_SERVICE_BPF_OFFLOAD=91, /* FW supports bpf offload */ 140 WMI_SERVICE_SYNC_DELETE_CMDS=92, /* FW sends response event for Peer, Vdev delete commands */ 141 WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT=93, 142 WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT=94, 143 WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES=95, /* allow per-peer tx MCS min/max limits by host */ 144 WMI_SERVICE_NAN_DATA=96, /* FW supports NAN data */ 145 WMI_SERVICE_NAN_RTT=97, /* FW supports NAN RTT */ 146 WMI_SERVICE_11AX=98, /* FW supports 802.11ax */ 147 /* WMI_SERVICE_DEPRECATED_REPLACE 148 * FW supports these new WMI commands, to be used rather than 149 * deprecated matching commands: 150 * - WMI_PDEV_SET_PCL_CMDID (vs. WMI_SOC_SET_PCL_CMDID) 151 * - WMI_PDEV_SET_HW_MODE_CMDID (vs. WMI_SOC_SET_HW_MODE_CMDID) 152 * - WMI_PDEV_SET_MAC_CONFIG_CMDID (vs. WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID) 153 * - WMI_PDEV_SET_ANTENNA_MODE_CMDID (vs. WMI_SOC_SET_ANTENNA_MODE_CMDID) 154 * - WMI_VDEV_SET_DSCP_TID_MAP_CMDID (vs. WMI_VDEV_SET_WMM_PARAMS_CMDID) 155 */ 156 WMI_SERVICE_DEPRECATED_REPLACE=99, 157 WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE=100, /* FW supports a new mode that allows to run connection tracker in host */ 158 WMI_SERVICE_ENHANCED_MCAST_FILTER=101, /* FW supports enhanced multicast filtering (of mcast IP inside ucast WLAN) */ 159 WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT=102, /* periodic channel stats service */ 160 WMI_SERVICE_MESH_11S=103, /* 11s mesh service support */ 161 WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT=104, /* FW+HW supports 10 MHz (half rate) and 5 MHz (quarter rate) channel bandwidth */ 162 WMI_SERVICE_VDEV_RX_FILTER=105, /* Support per-vdev specs of which rx frames to filter out */ 163 WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT=106, 164 WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET=107, /* FW supports marking the first data packet which wakes the host from suspend */ 165 WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET=108, /* FW supports command that can add/delete multiple mcast filters */ 166 /* WMI_SERVICE_HOST_MANAGED_RX_REORDER - 167 * FW supports host-managed RX reorder. 168 * Host managed RX reorder involves RX BA state machine handling 169 * on peer/TID basis, REO configuration for HW based reordering/PN 170 * check and processing reorder exceptions generated by HW. 171 */ 172 WMI_SERVICE_HOST_MANAGED_RX_REORDER=109, 173 /* Specify whether the target supports the following WMI messages for 174 * reading / writing its flash memory: 175 * WMI_READ_DATA_FROM_FLASH_CMDID, 176 * WMI_READ_DATA_FROM_FLASH_EVENTID, 177 * WMI_TRANSFER_DATA_TO_FLASH_CMDID, 178 * WMI_TRANSFER_DATA_TO_FLASH_COMPLETE_EVENTID, 179 */ 180 WMI_SERVICE_FLASH_RDWR_SUPPORT=110, 181 WMI_SERVICE_WLAN_STATS_REPORT=111, /* support WLAN stats report */ 182 /* WMI_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT - 183 * FW supports bigger MSDU ID partition which is defined as HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN 184 * When both host and FW support new partition, FW uses HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN 185 * If host doesn't support, FW falls back to HTT_TX_IPA_MSDU_ID_SPACE_BEGIN 186 * Handshaking is done through WMI_INIT and WMI service ready 187 */ 188 WMI_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT=112, /* support bigger MSDU ID partition */ 189 WMI_SERVICE_DFS_PHYERR_OFFLOAD=113, 190 WMI_SERVICE_RCPI_SUPPORT=114, 191 WMI_SERVICE_FW_MEM_DUMP_SUPPORT=115, /* Support FW Memory dump */ 192 WMI_SERVICE_PEER_STATS_INFO=116, /* support per peer stats info */ 193 WMI_SERVICE_REGULATORY_DB=117, /* support regulatory database in FW */ 194 WMI_SERVICE_11D_OFFLOAD=118, /* support 11D scan offload in FW */ 195 WMI_SERVICE_HW_DATA_FILTERING=119, 196 WMI_SERVICE_MULTIPLE_VDEV_RESTART=120, /* Support for single command for multiple vdev restart */ 197 WMI_SERVICE_PKT_ROUTING=121, /* Support for routing specific data packets to selected destination rings */ 198 WMI_SERVICE_CHECK_CAL_VERSION=122, /* Support cal version check */ 199 WMI_SERVICE_OFFCHAN_TX_WMI=123, /* Support offchan data/mgmt tx over wmi */ 200 WMI_SERVICE_8SS_TX_BFEE = 124, /* support for 8Ant Bfee */ 201 WMI_SERVICE_EXTENDED_NSS_SUPPORT=125, /* Extend NSS support for 80Mhz and 160Mhz */ 202 WMI_SERVICE_ACK_TIMEOUT=126, /* Support TX ack timeout configurations */ 203 WMI_SERVICE_PDEV_BSS_CHANNEL_INFO_64 = 127, /* BSS channel info (freq, noise floor, rx clear, cycles 64-bit counters) event support */ 204 205 WMI_MAX_SERVICE=128, /* max service */ 206 207 /* NOTE: 208 * The above service flags are delivered in the wmi_service_bitmap field 209 * of the WMI_SERVICE_READY_EVENT message. 210 * The below service flags are not delivered in the 211 * WMI_SERVICE_READY_EVENT message's wmi_service_bitmap field, 212 * but instead are delivered in the 213 * fixed_param.wmi_service_segment_bitmap portion 214 * of the WMI_SERVICE_AVAILABLE_EVENT message, with 215 * fixed_param.wmi_service_segment_offset 216 * set to 128. 217 * The WMI_SERVICE_AVAILABLE_EVENT message immediately precedes the 218 * WMI_SERVICE_READY_EVENT message. 219 */ 220 221 WMI_SERVICE_CHAN_LOAD_INFO=128, /* The values in WMI_CHAN_INFO_EVENTID is the difference in cycle counters */ 222 WMI_SERVICE_TX_PPDU_INFO_STATS_SUPPORT=129, /* support to report tx ppdu info stats via htt events */ 223 WMI_SERVICE_VDEV_LIMIT_OFFCHAN_SUPPORT=130, /* support to report the offchannel duration limiting capability on connected interface */ 224 WMI_SERVICE_FILS_SUPPORT=131, /* support for FILS */ 225 WMI_SERVICE_WLAN_OIC_PING_OFFLOAD=132, /* Support for wlan OIC ping service */ 226 WMI_SERVICE_WLAN_DHCP_RENEW=133, /* Support for wlan DHCP Renew service */ 227 WMI_SERVICE_MAWC_SUPPORT = 134, /* Support for MAWC service */ 228 WMI_SERVICE_VDEV_LATENCY_CONFIG=135, /* support for vdev latency config */ 229 WMI_SERVICE_PDEV_UPDATE_CTLTABLE_SUPPORT=136, /* support for pdev update ctl table */ 230 WMI_SERVICE_PKTLOG_SUPPORT_OVER_HTT=137, /* upload pktlog data over HTT communication channel */ 231 WMI_SERVICE_VDEV_MULTI_GROUP_KEY_SUPPORT=138, /* Support for vdev level multi group key */ 232 WMI_SERVICE_SCAN_PHYMODE_SUPPORT=139, /* Support for phymode also with channel in offchan WMI_START_SCAN_CMDID */ 233 WMI_SERVICE_THERM_THROT = 140, /* Support thermal cfg and indication on AP. 234 * Compared with WMI_SERVICE_THERMAL_MGMT, 235 * this service is to allow thermal tool to 236 * configure thermal throttling threshold 237 * for different levels and pass down duty 238 * cycle value. FW will also report thermal 239 * throttling status to host through this 240 * service. */ 241 WMI_SERVICE_BCN_OFFLOAD_START_STOP_SUPPORT=141, /* support dynamically enabling / disabling beacon tx offload */ 242 WMI_SERVICE_WOW_WAKEUP_BY_TIMER_PATTERN=142, /* fw to support waking up host from wow pattern timer */ 243 WMI_SERVICE_PEER_MAP_UNMAP_V2_SUPPORT=143, /* Support for HTT peer map/unmap V2 */ 244 WMI_SERVICE_OFFCHAN_DATA_TID_SUPPORT=144, /* Support new tid for offchan data/mgmt tx over wmi */ 245 WMI_SERVICE_RX_PROMISC_ENABLE_SUPPORT=145, /* Support enabling/disabling rx promiscuous mode as directed by a WMI message from the host */ 246 WMI_SERVICE_SUPPORT_DIRECT_DMA=146, /* indicates target supports direct DMA, 247 * host will rely on WMI_DMA_RING_CAPABILITIES to get supported modules */ 248 WMI_SERVICE_AP_OBSS_DETECTION_OFFLOAD=147, /* Support SAP mode OBSS detection offload */ 249 WMI_SERVICE_11K_NEIGHBOUR_REPORT_SUPPORT=148, /* Support for 11k neighbor report */ 250 WMI_SERVICE_LISTEN_INTERVAL_OFFLOAD_SUPPORT=149, /* Support listen interval offload */ 251 WMI_SERVICE_BSS_COLOR_OFFLOAD=150, /* Support BSS color change for STA, OBSS color collision detection in FW for AP and STA */ 252 WMI_SERVICE_RUNTIME_DPD_RECAL=151, /* Runtime DPD recalibration support */ 253 WMI_SERVICE_STA_TWT=152, /* support for TWT (Target Wake Time) of STA */ 254 WMI_SERVICE_AP_TWT=153, /* support for TWT (Target Wake Time) on AP */ 255 WMI_SERVICE_GMAC_OFFLOAD_SUPPORT=154, /* Support for GMAC */ 256 WMI_SERVICE_SPOOF_MAC_SUPPORT=155, /* support for SERVICE_SPOOF_MAC */ 257 WMI_SERVICE_PEER_TID_CONFIGS_SUPPORT=156, /* Support TID specific configurations per peer (ack,aggr,retry,rate) */ 258 WMI_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT=157, /* Support vdev software retries configuration per AC (non aggr retry/aggr retry) */ 259 WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT=158, /* Support dual beacon on same channel on single MAC */ 260 WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT=159, /* Support dual beacon on different channel on single MAC */ 261 WMI_SERVICE_MOTION_DET=160, /* support for motion detection config */ 262 WMI_SERVICE_INFRA_MBSSID=161, /* support infra multi-BSSID feature */ 263 WMI_SERVICE_OBSS_SPATIAL_REUSE=162, /* support spatial reuse feature */ 264 WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT=163, /* Support different beacon intervals on different VDEVs */ 265 WMI_SERVICE_NAN_DBS_SUPPORT=164, /* Support DBS for NAN discovery interface */ 266 WMI_SERVICE_NDI_DBS_SUPPORT=165, /* Support DBS for NAN data interface */ 267 WMI_SERVICE_NAN_SAP_SUPPORT=166, /* Support SAP Concurrency for NAN Discovery interface */ 268 WMI_SERVICE_NDI_SAP_SUPPORT=167, /* Support SAP Concurrency for NAN Data interface */ 269 WMI_SERVICE_CFR_CAPTURE_SUPPORT=168, /* Support to capture uncompressed Channel Frequency Response (CFR) */ 270 WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1=169, /* Message type HTT_PEER_CFR_CAPTURE_MSG_TYPE_1 in HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND */ 271 WMI_SERVICE_ESP_SUPPORT=170, /* Support for Estimated Service Params IE */ 272 WMI_SERVICE_PEER_CHWIDTH_CHANGE = 171, /* Support for host to update/re-intersect the node capability */ 273 WMI_SERVICE_WLAN_HPCS_PULSE=172, /* Support for High Precision Clock Synchronization feature */ 274 WMI_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT=173, /* Support for configuring chainmask per VDEV */ 275 WMI_SERVICE_TX_DATA_MGMT_ACK_RSSI=174, /* ACK RSSI indication to host for host TX data and mgmt frame */ 276 WMI_SERVICE_NAN_DISABLE_SUPPORT=175, /* indicates firmware is dependent on host to disable NAN incase of concurrencies */ 277 WMI_SERVICE_NAN_DISABLE_SUPPORT__prototype = WMI_SERVICE_NAN_DISABLE_SUPPORT, /* alias, to clarify that NAN_DISABLE_SUPPORT is for prototype testing purposes */ 278 WMI_SERVICE_HTT_H2T_NO_HTC_HDR_LEN_IN_MSG_LEN=176, /* indicates FW supports uniformly excluding the HTC header length from the HTT H2T message length */ 279 WMI_SERVICE_COEX_SUPPORT_UNEQUAL_ISOLATION=177, /* indicates FW supports FDD coex with unequal isolation between BT and each of the WLAN chains */ 280 281 /* WMI_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT: 282 * Support HW+FW db2dbm conversion for RSSI fields in rx descriptors 283 * and host/target messages. 284 * If enabled, HW and FW will convert SNR to RSSI by adding noise floor 285 * and rssi_offset from BDF to RSSI values that formerly had units of 286 * dB w.r.t. noise floor to convert the units to dBm. 287 * MAC beacon RSSI average register return a signed value for RSSI, 288 * as well as hw descriptors. 289 *------------------------------------------------------------------------- 290 * The RSSI field of below WMI messages will be changed to dBm units: 291 * WMI_MGMT_RX_EVENTID: 292 * wmi_mgmt_rx_hdr.rssi_ctl; 293 * WMI_UPDATE_STATS_EVENTID: 294 * wmi_rssi_stats.rssi_avg_beacon; 295 * wmi_rssi_stats.rssi_avg_data; 296 * wmi_snr_info.bcn_snr; 297 * wmi_snr_info.dat_snr; 298 * wmi_vdev_stats.bcn_rssi_history; (NOT USED IN FW) 299 * wmi_peer_stats.peer_rssi; 300 * WMI_WOW_WAKEUP_HOST_EVENTID: 301 * wmi_rssi_breach_event_fixed_param.rssi; 302 * wmi_roam_event_fixed_param.rssi; 303 * WMI_PEER_STA_KICKOUT_EVENTID: 304 * wmi_peer_sta_kickout_event_fixed_param.rssi; 305 * WMI_PASSPOINT_MATCH_EVENTID: 306 * wmi_passpoint_event_hdr.rssi;(NOT USED IN FW) 307 * WMI_PEER_INFO_EVENTID: 308 * wmi_peer_info.rssi; 309 * WMI_ROAM_SYNCH_EVENTID: 310 * wmi_roam_synch_event_fixed_param.rssi; 311 * WMI_ROAM_SCAN_STATS_EVENTID: 312 * wmi_roam_scan_stats_event_fixed_param.rssi; 313 * wmi_pdev_div_rssi_antid_event_id: 314 * wmi_pdev_div_rssi_antid_event_fixed_param.chain_rssi; 315 * wmi_rssi_breach_event_id 316 * WMI_INST_RSSI_STATS_EVENTID: 317 * wmi_inst_rssi_stats_resp_fixed_param.iRSSI; 318 * RSSI thresholds configured by host 319 * WMI_ROAM_SCAN_RSSI_THRESHOLD 320 * roam_scan_rssi_thresh snr 321 * boost_threshold_5g snr 322 * penalty_threshold_5g snr 323 * good_rssi_threshold snr 324 * roam_bg_scan_bad_rssi_thresh snr 325 * roam_earlystop_thres_min snr 326 * roam_earlystop_thres_max snr 327 * WMI_ROAM_AP_PROFILE 328 * rssi_abs_thresh snr 329 * WMI_ROAM_CONFIGURE_MAWC_CMDID: 330 * best_ap_rssi_threshold Snr 331 * wmi_ap_profile.rssi_abs_thresh; 332 * WMI_ROAM_SCAN_RSSI_THRESHOLD: 333 * wmi_roam_scan_extended_threshold_param.boost_threshold_5g; 334 * wmi_roam_scan_extended_threshold_param.penalty_threshold_5g; 335 * wmi_roam_scan_extended_threshold_param.good_rssi_threshold; 336 * wmi_roam_scan_rssi_threshold_fixed_param.roam_scan_rssi_thresh; 337 * wmi_roam_bg_scan_roaming_param.roam_bg_scan_bad_rssi_thresh; 338 * WMI_VDEV_SPECTRAL_SCAN_CONFIGURE_CMDID: 339 * wmi_vdev_spectral_configure_cmd_fixed_param.spectral_scan_rssi_rpt_mode; 340 * wmi_vdev_spectral_configure_cmd_fixed_param.spectral_scan_rssi_thr; 341 * WMI_RSSI_BREACH_MONITOR_CONFIG_CMDID: 342 * wmi_rssi_breach_monitor_config_fixed_param.low_rssi_breach_threshold; 343 * wmi_rssi_breach_monitor_config_fixed_param.hi_rssi_breach_threshold; 344 * WMI_STA_SMPS_PARAM_CMDID: 345 * wmi_sta_smps_param.value of below cmd IDs: 346 * // RSSI threshold to enter Dynamic SMPS mode from inactive mode 347 * WMI_STA_SMPS_PARAM_UPPER_RSSI_THRESH = 0, 348 * // RSSI threshold to enter Stalled-D-SMPS mode from D-SMPS mode 349 * // or to enter D-SMPS mode from Stalled-D-SMPS mode 350 * WMI_STA_SMPS_PARAM_STALL_RSSI_THRESH = 1, 351 * // RSSI threshold to disable SMPS modes 352 * WMI_STA_SMPS_PARAM_LOWER_RSSI_THRESH = 2, 353 * // Upper threshold for beacon-RSSI. Used to reduce RX chainmask. 354 * WMI_STA_SMPS_PARAM_UPPER_BRSSI_THRESH = 3, 355 * // Lower threshold for beacon-RSSI. Used to increase RX chainmask 356 * WMI_STA_SMPS_PARAM_LOWER_BRSSI_THRESH = 4, 357 * // Enable/Disable DTIM 1chRx feature 358 * WMI_STA_SMPS_PARAM_DTIM_1CHRX_ENABLE = 5 359 * WMI_TDLS_SET_STATE_CMDID: 360 * wmi_tdls_set_state_cmd_fixed_param.rssi_teardown_threshold; 361 * wmi_tdls_set_state_cmd_fixed_param.rssi_delta; 362 *------------------------------------------------------------------------- 363 * The RSSI fields of below HTT data type will change to dBm units: 364 * PREPACK struct htt_tx_wbm_completion.ack_frame_rssi; 365 * PREPACK struct htt_tx_wbm_transmit_status.ack_frame_rssi; 366 * htt_ppdu_stats_user_cmpltn_common_tlv.ack_rssi; 367 */ 368 WMI_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT = 178, 369 WMI_SERVICE_SUPPORT_EXTEND_ADDRESS=179, /* indicates firmware supports host memory addresses larger than 32 bit */ 370 WMI_SERVICE_BEACON_RECEPTION_STATS=180, /* Support per vdev beacon stats info */ 371 WMI_SERVICE_FETCH_TX_PN=181, 372 WMI_SERVICE_PEER_UNMAP_RESPONSE_SUPPORT = 182, /* support peer ids unmap response from host */ 373 WMI_SERVICE_TX_PER_PEER_AMPDU_SIZE = 183, /* indicate FW support per peer TX AMPDU size */ 374 WMI_SERVICE_BSS_COLOR_SWITCH_COUNT = 184, /* Firmware supports bss-color switch count handling */ 375 WMI_SERVICE_HTT_PEER_STATS_SUPPORT = 185, /* Supports the feature where FW sends peer stats autonomously to Host via the HTT_T2H PEER_STATS_IND message */ 376 WMI_SERVICE_UL_RU26_ALLOWED = 186, /* indicates support for RU26 in UL OFDMA */ 377 WMI_SERVICE_GET_MWS_COEX_STATE = 187, /* FW provides MWS Coex info */ 378 WMI_SERVICE_GET_MWS_DPWB_STATE = 188, /* FW provides LTE-Coex Dynamic Power Back-off info */ 379 WMI_SERVICE_GET_MWS_TDM_STATE = 189, /* FW provides LTE-Coex TDM info */ 380 WMI_SERVICE_GET_MWS_IDRX_STATE = 190, /* FW provides LTE-Coex IDRx info */ 381 WMI_SERVICE_GET_MWS_ANTENNA_SHARING_STATE = 191, /* FW provides LTE-Coex Antenna sharing info */ 382 WMI_SERVICE_ENHANCED_TPC_CONFIG_EVENT = 192, /* FW provides enhanced tx power control configuration dump */ 383 WMI_SERVICE_WLM_STATS_REQUEST = 193, /* FW supports WLAN latency manager stats request */ 384 WMI_SERVICE_EXT_PEER_TID_CONFIGS_SUPPORT = 194, /* Extended Peer Tid configuration support for QoS related settings */ 385 WMI_SERVICE_WPA3_FT_SAE_SUPPORT = 195, /* FW roaming support for WPA3_FT_SAE */ 386 WMI_SERVICE_WPA3_FT_SUITE_B_SUPPORT = 196, /* FW roaming support for WPA3_FT_SUITE_B */ 387 WMI_SERVICE_VOW_ENABLE=197, /* FW supports a set of features to optimize VoW performance */ 388 WMI_SERVICE_CFR_CAPTURE_IND_EVT_TYPE_1 = 198, /* support WMI_PEER_CFR_CAPTURE_EVENT msg */ 389 WMI_SERVICE_BROADCAST_TWT = 199, /* support of Broadcast TWT (Target Wake Time) for STA/AP */ 390 WMI_SERVICE_RAP_DETECTION_SUPPORT = 200, /* indicate FW supports rogue AP detection */ 391 WMI_SERVICE_PS_TDCC = 201, /* FW support tx_duty_cycle_control powersave */ 392 WMI_SERVICE_THREE_WAY_COEX_CONFIG_LEGACY = 202, /* BTCOEX Three-way CoEx Config Legacy Feature support */ 393 WMI_SERVICE_THREE_WAY_COEX_CONFIG_OVERRIDE = 203, /* BTCOEX Three-way CoEx Config Override Feature support */ 394 WMI_SERVICE_TX_PWR_PER_PEER = 204, /* target supports per-peer tx pwr spec via WMI_PEER_USE_FIXED_PWR */ 395 WMI_SERVICE_STA_PLUS_STA_SUPPORT = 205, /* indicates target supports STA + STA concurrency */ 396 WMI_SERVICE_WPA3_FT_FILS = 206, 397 WMI_SERVICE_ADAPTIVE_11R_ROAM = 207, /* Indicates FW supports adaptive 11r roaming */ 398 WMI_SERVICE_CHAN_RF_CHARACTERIZATION_INFO = 208, /* FW provides RF scores for chans in the service ready extension msg */ 399 WMI_SERVICE_FW_IFACE_COMBINATION_SUPPORT = 209, /* FW sends WMI_IFACE_COMBINATION_IND_EVENT msg immediately after WMI_SERVICE_READY_EXT_EVENT msg */ 400 WMI_SERVICE_TX_COMPL_TSF64 = 210, /* FW supports 64-bit tx TSF in HTT_T2H TX_COMPL_IND msg */ 401 WMI_SERVICE_DSM_ROAM_FILTER = 211, /* FW supports data stall AP mitigation while roaming */ 402 WMI_SERVICE_PACKET_CAPTURE_SUPPORT = 212, /* target supports packet capture Mode (SMART MU) */ 403 WMI_SERVICE_PER_PEER_HTT_STATS_RESET = 213, /* FW supports HTT per peer stats reset facility */ 404 WMI_SERVICE_DELETE_ALL_PEER_SUPPORT = 214, /* target supports cmd to delete all peers within a vdev */ 405 WMI_SERVICE_DYNAMIC_HW_MODE_SWITCH_SUPPORT = 215, /* target supports Dynamic HW mode switch */ 406 WMI_SERVICE_MSDU_FLOW_OVERRIDE_BY_HOST = 216, /* target supports flow override feature */ 407 WMI_SERVICE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENT= 217, /* target will send WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENT */ 408 WMI_SERVICE_RX_FSE_SUPPORT = 218, /* target supports flow search through RxOLE FSE hw block */ 409 WMI_SERVICE_FREQINFO_IN_METADATA = 219, /* FW provides freq_info during spectral scan */ 410 WMI_SERVICE_EXT2_MSG = 220, /* WMI_SERVICE_READY_EXT2 msg is sent by target */ 411 WMI_SERVICE_WPA3_SAE_ROAM_SUPPORT = 221, /* Indicates FW supports WPA3 SAE roaming */ 412 WMI_SERVICE_WPA3_OWE_ROAM_SUPPORT = 222, /* Indicates FW supports WPA3 OWE roaming */ 413 WMI_SERVICE_AUDIO_AGGR = 223, /* Indicates FW supports audio frame aggregation */ 414 WMI_SERVICE_6GHZ_SUPPORT = 224, /* Indicates FW supports 6GHZ (scan, connection and so on) */ 415 /* WMI_SERVICE_QMI_STATS_SUPPORT 416 * Indicates FW supports stat request command WMI_REQUEST_LINK_STATS_CMDID 417 * and WMI_REQUEST_STATS_CMDID coming from QMI which will be used in 418 * runtime PM suspend. 419 */ 420 WMI_SERVICE_QMI_STATS_SUPPORT = 225, 421 WMI_SERVICE_CFR_CAPTURE_FILTER_SUPPORT = 226, /* Indicate FW Supports Channel Frequency Response (CFR) via WMI_CFR_CAPTURE_FILTER_CMDID */ 422 WMI_SERVICE_STA_BSS_MAX_IDLE_TIME = 227, /* Indicate FW supports BSS Max Idle time feature via WMI_VDEV_BSS_MAX_IDLE_TIME_CMDID */ 423 WMI_SERVICE_BIP_CIPHER_SUPPORT = 228, /* FW supports new BIP_CIPHER suites (WMI_CIPHER_BIP_xxx) */ 424 WMI_SERVICE_BW_165MHZ_SUPPORT = 229, /* Indicate FW supports bandwidth 165MHz (i.e. 6 GHz in addition to 2.4 and 5) */ 425 WMI_SERVICE_BW_RESTRICTED_80P80_SUPPORT = WMI_SERVICE_BW_165MHZ_SUPPORT, 426 WMI_SERVICE_NAN_NDI_SAP_SAP_SCC_SUPPORT = 230, /* Support SAP + SAP + NAN discovery + NDI concurrency in SCC mode */ 427 WMI_SERVICE_NAN_VDEV_SUPPORT = 231, /* indicates firmware is dependent on host to create NAN vdev */ 428 WMI_SERVICE_AUDIO_SYNC_SUPPORT = 232, /* Indicate FW supports Audio sync feature */ 429 WMI_SERVICE_DUAL_STA_ROAM_SUPPORT = 233, /* Indidate FW support dual STA roaming */ 430 WMI_SERVICE_PEER_CREATE_CONF = 234, /* Target will send WMI_PEER_CREATE_CONF_EVENTID after WMI_PEER_CREATE_CMDID is processed */ 431 WMI_SERVICE_MULTIPLE_VDEV_RESTART_RESPONSE_SUPPORT = 235, /* indicates firmware supports Multiple vdev restart response */ 432 WMI_SERVICE_ROAM_SCAN_CHANNEL_LIST_TO_HOST_SUPPORT = 236, /* Indicates firmware supports sending roam scan channel list to host */ 433 WMI_SERVICE_PEER_DELETE_NO_PEER_FLUSH_TIDS_CMD = 237, /* Host should not send WMI_PEER_FLUSH_TIDS_CMD as part of peer delete */ 434 WMI_SERVICE_NSS_RATIO_TO_HOST_SUPPORT = 238, /* Indicates firmware supports sending NSS ratio info to host */ 435 WMI_SERVICE_WPA3_SUITEB_ROAM_SUPPORT = 239, /* Indicates FW supports WPA3 SUITE B roaming */ 436 WMI_SERVICE_PERIODIC_FRAME_INJECT_SUPPORT = 240, /* Indicates FW supports periodic frame injection */ 437 WMI_SERVICE_NDI_NDI_STA_SUPPORT = 241, /* Indicates FW support for STA+NDI+NDI */ 438 WMI_SERVICE_BW_TRUE_160_SUPPORT = 242, /* Indicates FW supports true 160 BW */ 439 WMI_SERVICE_HOST_SCAN_STOP_VDEV_ALL_SUPPORT = 243, /* Indicates FW supports scan stop mode WMI_SCN_STOP_HOST_VAP_ALL */ 440 WMI_SERVICE_BEACON_PROTECTION_SUPPORT = 244, /* Indicates FW supports WPA3 Beacon protection */ 441 WMI_SERVICE_EMA_AP_SUPPORT = 245, /* FW supports EMA AP feature */ 442 WMI_SERVICE_PEER_POWER_SAVE_DURATION_SUPPORT = 246, /* Support for adding Power save duration per client */ 443 WMI_SERVICE_5_DOT_9GHZ_SUPPORT = 247, /* Indicates FW supports new 5.9GHZ (scan, connection and so on) */ 444 WMI_SERVICE_MU_PREAMBLE_PUNCTURE_SUPPORT = 248, /* Indicates FW supports MU preamble puncture */ 445 WMI_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT = 249, /* Support for SRG, SRP based spatial reuse support */ 446 WMI_REQUEST_CTRL_PATH_STATS_REQUEST = 250, /* FW supports control path stats */ 447 WMI_SERVICE_TPC_STATS_EVENT = 251, /* FW support to dump the TPC tables */ 448 WMI_SERVICE_NO_INTERBAND_MCC_SUPPORT = 252, /* Indicates FW doesn't support interband MCC */ 449 WMI_SERVICE_MBSS_PARAM_IN_VDEV_START_SUPPORT = 253, /* FW supports VDEV's MBSS param exchange in VDEV start command */ 450 WMI_SERVICE_CONFIGURE_ROAM_TRIGGER_PARAM_SUPPORT = 254, /* FW supports ROAM trigger configuration param TLV */ 451 WMI_SERVICE_CFR_TA_RA_AS_FP_SUPPORT = 255, /* indicates FW support to program CFR TA/RA filtered packets as Filter pass */ 452 453 454 /******* ADD NEW SERVICES UP TO 256 HERE *******/ 455 456 WMI_MAX_EXT_SERVICE = 256, 457 458 /* NOTE: 459 * The above service flags are delivered in the 460 * fixed_param.wmi_service_segment_bitmap portion 461 * of the WMI_SERVICE_AVAILABLE_EVENT message, with 462 * fixed_param.wmi_service_segment_offset 463 * set to 128. 464 * The below service flags can be delivered in one of two ways: 465 * 1. The target can deliver a 2nd SERVICE_AVAILABLE message, with 466 * fixed_param.wmi_service_segment_offset 467 * set to 256. 468 * (This method is acceptable, but not recommended.) 469 * 2. The target can populate the wmi_service_ext_bitmap[] TLV array 470 * within the WMI_SERVICE_AVAILABLE_EVENT message. 471 * (This method is recommended.) 472 */ 473 474 475 /******* ADD NEW SERVICES 256 AND BEYOND HERE *******/ 476 477 WMI_SERVICE_CFR_CAPTURE_COUNT_SUPPORT = 256, /* indicates FW support to program CFR capture mode and capture count */ 478 WMI_SERVICE_OCV_SUPPORT = 257, /* FW supports OCV (Operating Channel Validation) */ 479 WMI_SERVICE_LL_STATS_PER_CHAN_RX_TX_TIME_SUPPORT = 258, /* Indicates firmware support sending per channel own tx & rx time in radio stats of LL stats. */ 480 WMI_SERVICE_THERMAL_MULTI_CLIENT_SUPPORT = 259, /* Indicates FW Thermal Mgr will support multiple clients for mitigation */ 481 WMI_SERVICE_NAN_SEND_NAN_ENABLE_RESPONSE_TO_HOST = 260, /* Indicates FW will include an additional TLV in nan enable response for Host driver to parse */ 482 WMI_SERVICE_UNIFIED_LL_GET_STA_CMD_SUPPORT = 261, /* Indicates that FW supports handling Link Layer and Get Station stats Commands together (WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID) */ 483 WMI_SERVICE_FSE_CMEM_ALLOC_SUPPORT = 262, /* Indicates that FW supports non-secure CMEM allocation for FSE table */ 484 WMI_SERVICE_PASSIVE_SCAN_START_TIME_ENHANCE = 263, /* Indicates FW support to not skip beacon if passive scan dwell time + channel switch delay is lesser than beacon interval */ 485 WMI_SERVICE_QOS_NULL_FRAME_TX_OVER_WMI = 264, /* Indicates that FW supports tx of QoS null frame downloaded through WMI interface */ 486 WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL = 265, /* Indicates that FW supports per channel configuration support in the scan start command */ 487 WMI_SERVICE_CSA_BEACON_TEMPLATE = 266, /* Indicates that FW supports updating CSA count in beacon template */ 488 WMI_SERVICE_BROADCAST_TWT_REQUESTER = 267, /* Indicates FW supports Broadcast TWT REQUESTER */ 489 WMI_SERVICE_BROADCAST_TWT_RESPONDER = 268, /* Indicates FW supports Broadcast TWT RESPONDER */ 490 WMI_SERVICE_TWT_NUDGE = 269, /* Indicates that FW supports TWT Nudge command and event */ 491 WMI_SERVICE_TWT_STATS = 270, /* Indicates that FW supports TWT Get_stats command and event */ 492 WMI_SERVICE_TWT_ALL_DIALOG_ID = 271, /* Indicates that FW supports TWT ALL dialog ID(255) for all commands and events, except for TWT add dialog and TWT get stats */ 493 WMI_SERVICE_SPLIT_AST_SUPPORT = 272, /* Indicate that FW supports SPLIT AST table */ 494 WMI_SERVICE_SPECTRAL_SCAN_DISABLED = 273, /* Indicates that SKU does not support normal spectral scan capabilities */ 495 /* WMI_SERVICE_UNIFIED_LL_GET_STA_OVER_QMI_SUPPORT: 496 * This service flag indicates that FW can support receiving a 497 * WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID command request from the host 498 * over the QMI communication link. 499 * If the target receives WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID over QMI, 500 * any of the event messages sent in response (WMI_UPDATE_STATS_EVENTID, 501 * WMI_IFACE_LINK_STATS_EVENTID, WMI_PEER_LINK_STATS_EVENTID, 502 * WMI_RADIO_LINK_STATS_EVENTID, WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID) 503 * will be delivered over the QMI communication link. 504 * Any such messages delivered over QMI will use the same message format 505 * as if they had been delivered over the usual WMI communication link. 506 * This service flag indicates QMI is supported for these stats messages 507 * in addition to WMI, not instead of WMI - if the host sends the 508 * WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID over the usual WMI communication 509 * link, the stats event messages sent by the target in response will 510 * be sent on the WMI communication link. 511 */ 512 WMI_SERVICE_UNIFIED_LL_GET_STA_OVER_QMI_SUPPORT = 274, 513 /* 514 * Indicates FW supports EAPOL offload for SAE roaming if PMK of 515 * candidate AP is present in FW. 516 */ 517 WMI_SERVICE_SAE_EAPOL_OFFLOAD_SUPPORT = 275, 518 /* 519 * Indicates FW supports sending events to host during Thermal Throttling 520 * every duty cycle on detecting temperature change when dc_per_event is 0. 521 */ 522 WMI_SERVICE_THERM_THROT_TEMP_CHANGE_DYNAMIC_EVENT_SUPPORT = 276, 523 WMI_SERVICE_WAPI_CONCURRENCY_SUPPORTED = 277, /* Indicates FW support for WAPI concurrency */ 524 WMI_SERVICE_SAP_CONNECTED_D3WOW = 278, /* Indicates FW support for D3WoW for SAP connected case */ 525 WMI_SERVICE_GO_CONNECTED_D3WOW = 279, /* Indicates FW support for D3WoW for P2P GO connected case */ 526 WMI_SERVICE_EXT_TPC_REG_SUPPORT = 280, /* Support for new 6 GHz TPC power limits */ 527 WMI_SERVICE_REG_CC_EXT_EVENT_SUPPORT = 281, /* Support for Extended REG_CC Event with additional params for 6 GHz */ 528 WMI_SERVICE_NDI_TXBF_SUPPORT = 282, /* Indicates FW support for Tx beamforming with NDI VDEV */ 529 WMI_SERVICE_ENABLE_LOWER_6G_EDGE_CH_SUPP = 283, /* Indicates FW support for enabling lower 6 GHz edge channel 5935 */ 530 WMI_SERVICE_DISABLE_UPPER_6G_EDGE_CH_SUPP = 284, /* Indicates FW support for disabling upper 6 GHz edge channel 7115 */ 531 WMI_SERVICE_FORCED_DTIM_SUPP = 285, /* Indicates FW supports forced DTIM configuration */ 532 WMI_SERVICE_DCS_AWGN_INT_SUPPORT = 286, /* Indicates FW supports AWGN Int */ 533 WMI_SERVICE_IGMP_OFFLOAD_SUPPORT = 287, /* FW supports igmp offload during APPS suspend */ 534 WMI_SERVICE_11AX_TDLS_SUPPORT = 288, /* Indicates FW supports 11ax TDLS. Host should enable 11ax on TDLS only when FW indicates the support. */ 535 WMI_SERVICE_11BE = 289, /* Indicates FW supports 11be */ 536 WMI_SERVICE_BIG_DATA_SUPPORT = 290, /* Indicates FW supports Big Data feature */ 537 WMI_SERVICE_EAPOL_OVER_NWIFI = 291, /* Indicates FW supports sending eapol frames in native wifi mode even when the vdev is brought up in raw ethernet mode */ 538 WMI_SERVICE_AMPDU_TX_BUF_SIZE_256_SUPPORT = 292, /* Indicates FW supports MAX 256 MPDUs in A-MPDU instead of 64 */ 539 WMI_SERVICE_HALPHY_CAL_STATUS = 293, /* Indicates FW supports sending online HALPHY Calibration status to host */ 540 WMI_SERVICE_HALPHY_CAL_ENABLE_DISABLE_SUPPORT = 294, /* Indicates Calibraton enable/disable support by FW */ 541 WMI_SERVICE_AFC_SUPPORT = 295, /* Indicates FW supports AFC_CMD,AFC_EVENT */ 542 WMI_SERVICE_RTT_AP_INITIATOR_STAGGERED_MODE_SUPPORTED = 296, /* FW supports RTT in AP Initiator for Staggered beacon mode */ 543 WMI_SERVICE_RTT_AP_INITIATOR_BURSTED_MODE_SUPPORTED = 297, /* FW supports RTT in AP Initiator for BURSTED beacon mode */ 544 WMI_SERVICE_P2P_P2P_CONCURRENCY_SUPPORT = 298, /* Indicates FW supports P2P + P2P conncurency both in SCC, MCC, SBS and DBS */ 545 WMI_SERVICE_MGMT_RX_REO_SUPPORTED = 299, /* Indicates FW supports Management RX Reorder */ 546 WMI_SERVICE_EMA_MULTIPLE_GROUP_SUPPORT = 300, /* FW support for EMA multi group support */ 547 WMI_SERVICE_LARGE_BEACON_SUPPORT = 301, /* FW support for Large beacon support greater then 1.5K */ 548 WMI_SERVICE_AOA_FOR_RCC_SUPPORTED = 302, 549 WMI_SERVICE_DYN_NSS_MASK_SUPPORT = 303, /* Indicates FW support for DYN NSS feature */ 550 WMI_SERVICE_HW_MODE_POLICY_OFFLOAD_SUPPORT = 304, /* FW supports HW mode selection offload */ 551 WMI_SERVICE_THERMAL_THROT_STATS_TEMP_RANGE_SUPPORT = 305, /* FW supports thermal throttling temperature range stats based on wmi_thermal_stats_action */ 552 /* 553 * Indicates FW support for spatial reuse enhancements. 554 * Below commands are added for the enhancements: 555 * WMI_PDEV_PARAM_OBSS_MIN_DURATION_CHECK_FOR_SR, 556 * WMI_PDEV_PARAM_TRUNCATE_SR, 557 * WMI_PDEV_PARAM_CTRL_FRAME_OBSS_PD_THRESHOLD 558 */ 559 WMI_SERVICE_SPATIAL_REUSE_ENHANCEMENT_SUPPORT = 306, 560 WMI_SERVICE_MU_SNIF = 307, /* FW support MU sniffer */ 561 WMI_SERVICE_ICMP_OFFLOAD = 308, /* FW supports ping offload during APPS suspend */ 562 WMI_SERVICE_RTSCTS_FOR_UNICAST_MGMT_SUPPORT = 309, /* Indicates FW support RTSCTS for unicast management */ 563 WMI_SERVICE_DYNAMIC_VDEV_MAC_ADDR_UPDATE_SUPPORT = 310, /* FW supports dynamic vdev mac address updating */ 564 WMI_SERVICE_SAWF_LEVEL0 = 311, /* FW supports WMI_SAWF_SVC_CLASS CFG_CMD + DISABLE_CMD msgs */ 565 WMI_SERVICE_RTT_11AZ_NTB_SUPPORT = 312, /* FW support for 11AZ non trigger based ranging */ 566 WMI_SERVICE_RTT_11AZ_TB_SUPPORT = 313, /* FW support for 11AZ trigger based ranging ISTA role */ 567 WMI_SERVICE_RTT_11AZ_MAC_SEC_SUPPORT = 314, /* FW support for 11AZ secure FTM */ 568 WMI_SERVICE_RTT_11AZ_MAC_PHY_SEC_SUPPORT = 315, /* FW support for 11AZ secure LTF + FTM */ 569 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 */ 570 WMI_SERVICE_PDEV_RATE_CONFIG_SUPPORT = 317, /* Support rate configurations per PDEV */ 571 WMI_SERVICE_MLO_STA_NAN_NDI_SUPPORT = 318, /* FW support for NAN and NDP support with MLO STA */ 572 WMI_SERVICE_PROBE_ALL_BW_SUPPORT = 319, /* FW support to probe on higher BW even if the probe fails on lower BW - IOT issue */ 573 WMI_SERVICE_PKTLOG_DECODE_INFO_SUPPORT = 320, /* FW supports embedding Pktlog decode info in the Pktlog trace file level header */ 574 WMI_SERVICE_PNO_SCAN_CONFIG_PER_CHANNEL = 321, /* Indicates that FW supports per channel configuration support in the PNO scan start command */ 575 WMI_SERVICE_MULTIPLE_PEER_GROUP_CMD_SUPPORT = 322, /* FW support for multiple peer group command */ 576 WMI_SERVICE_AFC_RESET_SUPPORT = 323, /* Indicates FW supports AFC reset */ 577 WMI_SERVICE_FP_PHY_ERR_FILTER_SUPPORT = 324, /* FW supports monitor ring configurations for filtering in PHY error packets */ 578 WMI_IS_RADAR_FOUND_CHAN_FREQ_IS_CENTER_FREQ = 325, /* FW Supporting radar event on the actual center frequency radar was detected */ 579 WMI_SERVICE_BIOS_SAR_SUPPORT = 326, /* FW support for SAR parameter stored in BIOS */ 580 WMI_SERVICE_REO_QREF_SUPPORT = 327, /* FW supports REO QREF */ 581 WMI_SERVICE_DELETE_ALL_PEER_BITMAP_SUPPORT = 328, /* target supports cmd to delete all specific peer type within a vdev */ 582 WMI_SERVICE_PN_REPLAY_CHECK_SUPPORT = 329, /* FW support to check RX mgmt frames has invalid PN in packets */ 583 WMI_SERVICE_COMBINED_SET_PARAM_SUPPORT = 330, /* FW Supporting set param cmd combined for multiple params */ 584 WMI_SERVICE_PDEV_RSSI_DBM_CONV_EVENT_SUPPORT = 331, /* FW supports advertising RSSI dB to dBm conversion params to host via WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID */ 585 WMI_SERVICE_PDEV_TELEMETRY_STATS_SUPPORT = 332, 586 WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT = 333, /* FW supports to send frame info for each candidate in roam stat */ 587 WMI_SERVICE_HW_TX_POWER_CAPS_SIGNED_SUPPORT = 334, /* Indicates FW supports updating of Tx power capabilities as signed value */ 588 WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT = 335, /* FW supports set param cmd combined for multiple params */ 589 WMI_SERVICE_AFC_PAYLOAD_CLEAR_SUPPORT = 336, /* FW supports clearing the AFC response payload in proxy mode */ 590 WMI_SERVICE_FW_INI_PARSE_SUPPORT = 337, /* FW supports parsing ini configuration file */ 591 WMI_SERVICE_TDLS_6GHZ_SUPPORT = 338, /* FW supports 6GHz TDLS both on base channel and offchannel */ 592 WMI_SERVICE_LINKSPEED_ROAM_TRIGGER_SUPPORT = 339, /* FW supports linkspeed trigger roam */ 593 WMI_SERVICE_UMAC_HANG_RECOVERY_SUPPORT = 340, /* FW supports recovering system from UMAC hang condition */ 594 WMI_SERVICE_COAP_OFFLOAD_SUPPORT = 341, /* FW supports CoAP (the Constrained Application Protocol) offload */ 595 WMI_SERVICE_TDLS_WIDEBAND_SUPPORT = 342, /* FW supports Wideband TDLS */ 596 WMI_SERVICE_FEATURE_SET_EVENT_SUPPORT = 343, /* FW supports sending of supported feature set event during init time */ 597 WMI_SERVICE_HALPHY_CTRL_PATH_STATS = 344, /* HALPHY STATS through control path */ 598 WMI_SERVICE_PEER_CHWIDTH_PUNCTURE_BITMAP_SUPPORT = 345, /* FW supports puncture bitmap change with channel width switch */ 599 WMI_SERVICE_BANG_RADAR_320_SUPPORT = 346, /* Host to send frequency offset for bang radar in extended field for 320M support */ 600 WMI_SERVICE_XGAP_SUPPORT = 347, /* FW support for XGAP */ 601 WMI_SERVICE_OBSS_PER_PACKET_SR_SUPPORT = 348, /* Spatial Reuse support for per PPDU setting */ 602 WMI_SERVICE_MULTIPLE_VDEV_RESTART_BITMAP_SUPPORT = 349, /* Extended Multiple VDEV Restart with Bitmap Support */ 603 WMI_SERVICE_WMI_SERVICE_WPA3_SHA384_ROAM_SUPPORT = 350, /* Indicates FW supports WPA3 SHA384 roaming */ 604 WMI_SERVICE_ODD_LIVEDUMP_SUPPORT = 351, /* Support for ODD Livedump from the FW */ 605 WMI_SERVICE_EIRP_PREFERRED_SUPPORT = 352, /* Support for OOBE feature where only EIRP powers will be sent in 6 GHz TPC WMI */ 606 WMI_SERVICE_RTT_TX_RX_CHAIN_IDX_SUPPORT = 353, /* FW Supports configuring Tx and Rx Chainmask in intiator and Responder */ 607 WMI_SERVICE_RESTRICTED_TWT = 354, /* Support for R-TWT feature */ 608 WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ 609 WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ 610 WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, 611 WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ 612 WMI_SERVICE_COORDINATED_AP_TDMA = 359, /* Support for Coordinated-AP TDMA feature */ 613 WMI_SERVICE_HPA_SUPPORT = 360, /* Support for Host Platform Authentication */ 614 WMI_SERVICE_WMSK_COMPACTION_RX_TLVS = 361, /* Support word mask subscription for rx tlv compaction */ 615 WMI_SERVICE_PRE_RX_TO = 362, /* Support for Pre RX timeout */ 616 WMI_SERVICE_TDLS_CONCURRENCY_SUPPORT = 363, /* Support for TDLS concurrency in FW */ 617 WMI_SERVICE_SELF_MLD_ROAM_BETWEEN_DBS_AND_HBS = 364, /* Suppport roam between DBS(2G+5G/6G) to HBS(5G+6G) with self AP MLD. */ 618 WMI_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT = 365, /* Support rx peer meta data v1a and v1b */ 619 WMI_SERVICE_CFR_CAPTURE_PDEV_ID_SOC = 366, /* Host can send PDEV_ID_SOC with CFR capture request and FW can derive pdev_id from TA address */ 620 WMI_SERVICE_11BE_MLO_TDLS_SUPPORT = 367, /* Indicates FW supports 11be MLO TDLS. Host should enable 11be on TDLS only when FW indicates the support. */ 621 WMI_SERVICE_MANUAL_ULOFDMA_TRIGGER_SUPPORT = 368, /* Support for Host triggered Manual UL OFDMA trigger frame feature */ 622 WMI_SERVICE_STANDALONE_SOUND = 369, /* FW supports standalone sounding */ 623 WMI_SERVICE_AFC_RESP_BINARY_FORMAT_SUPPORTED = 370, /* Service bit to indicate the supported AFC payload response format */ 624 WMI_SERVICE_CCA_BUSY_INFO_FOREACH_20MHZ = 371, /* FW supports reporting of CCA busy info for each 20Mhz subband of wideband scan channel */ 625 WMI_SERVICE_MLO_TSF_SYNC = 372, /* FW supports TSF sync across multiple chips */ 626 WMI_SERVICE_RF_PATH_SEL_INIT_SUPPORT = 373, /* FW supports RF Path selection using WMI Init command field */ 627 WMI_SERVICE_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT = 374, /* FW supports VDEV param channel width switch with OMN/OMI notification */ 628 WMI_SERVICE_RESTRICTED_TWT_REQUESTER = 375, /* Indicates FW supports Restricted TWT REQUESTER */ 629 WMI_SERVICE_RESTRICTED_TWT_RESPONDER = 376, /* Indicates FW supports Restricted TWT RESPONDER */ 630 WMI_SERVICE_AUX_MAC_SUPPORT = 377, 631 WMI_SERVICE_NAN_PAIRING_PEER_CREATE_BY_HOST = 378, /* Indicate FW supports creation of PASN Peer by Host for NAN pairing usecase */ 632 WMI_SERVICE_MLO_TID_TO_LINK_MAPPING_SUPPORT = 379, /* Indicates FW supports TID-TO-LINK mapping */ 633 WMI_SERVICE_PER_LINK_STATS_SUPPORT = 380, /* Indicates FW supports per link stats for MLO */ 634 WMI_SERVICE_N_LINK_MLO_SUPPORT = 381, /* Indicate FW supports N MLO link & vdev re-purpose between links */ 635 WMI_SERVICE_ATF_MAX_CLIENT_512_SUPPORT = 382, /* Indicates FW supports maximum of 512 clients when ATF is enabled */ 636 WMI_SERVICE_FISA_DYNAMIC_MSDU_AGGR_SIZE_SUPPORT = 383, /* Indicates FW support for FISA aggregation size up to 64 instead of only 16 */ 637 WMI_SERVICE_BRIDGE_VDEV_SUPPORT = 384, /* Indicated FW supports Bridge VDEV */ 638 WMI_SERVICE_MLO_MODE1_RECOVERY_SUPPORTED = 385, /* Indicate fw support for mlo mode1 recovery */ 639 WMI_SERVICE_TX_PWR_PER_PPDU_STATS_SUPPORT = 386, /* FW support to check tx power stats per PPDU */ 640 WMI_SERVICE_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_SUPPORT = 387, /* Indicate FW support to disable wds peer map/unmap events */ 641 WMI_SERVICE_PDEV_WSI_STATS_INFO_SUPPORT = 388, /* Support for WSI Stats Info. */ 642 WMI_SERVICE_MULTIPLE_RF_PATH_SOC_SUPPORT = 389, /* Indicates FW supports Multiple RF Path on SOC Level */ 643 WMI_SERVICE_RADAR_FLAGS_SUPPORT = 390, /* Indicates FW supports radar flags, such as full bandwidth need put to NOL */ 644 WMI_SERVICE_XPAN_SUPPORT = 391, /* Indicate FW support XPAN configuration */ 645 WMI_SERVICE_5GHZ_HI_RSSI_ROAM_SUPPORT = 392, /* Indicate FW supports High RSSI Roam from 5 GHz Band to 6 GHz Band */ 646 WMI_SERVICE_BOTH_PSD_EIRP_FOR_AP_SP_CLIENT_SP_SUPPORT = 393, /* Support for CTL regeneration where both PSD and EIRP will be sent in 6GHZ SET_TPC WMI for SP and SP_CLIENT power modes */ 647 WMI_SERVICE_PDEV_PARAM_IN_UTF_WMI = 394, /* FW supports receiving and sending pdev_id parameter in WMI_PDEV_UTF_(CMD/EVENT) */ 648 WMI_SERVICE_SW_PROG_DFS_SUPPORT = 395, /* Indicate FW support SW progressive DFS */ 649 WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ 650 WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ 651 WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW supports Data Rate based LED blinking for PCI chips */ 652 WMI_SERVICE_VDEV_DCS_STATS_SUPPORT = 399, /* FW supports VDEV level DCS stats reporting */ 653 WMI_SERVICE_WIFI_RADAR_SUPPORT = 400, /* FW supports wifi radar */ 654 WMI_SERVICE_P2P_DEVICE_UPDATE_MAC_ADDR_SUPPORT = 401, /* indicate FW support dynamic update mac address for P2P device */ 655 WMI_SERVICE_DCS_OBSS_INT_SUPPORT = 402, /* Indicates FW supports OBSS Interference detection */ 656 WMI_SERVICE_DYNAMIC_WSI_REMAP_SUPPORT = 403, /* WSI bypass remap is supported by Firmware */ 657 WMI_SERVICE_QMS_DLKM_SUPPORT = 404, /* DEPRECATED */ 658 WMI_SERVICE_SMEM_MAILBOX_SUPPORT = 404, /* FW code has smem_mailbox support enabled */ 659 WMI_SERVICE_REG_CC_EXT2_EVENT_SUPPORT = 405, /* DEPRECATED */ 660 WMI_SERVICE_MLO_MODE2_RECOVERY_SUPPORTED = 406, /* Indicate FW support for MLO mode2 recovery */ 661 WMI_SERVICE_MSDUQ_RECFG = 407, /* FW support the HTT MSDUQ_RECFG_REQ + MSDUQ_CFG_IND messages */ 662 WMI_SERVICE_TRAFFIC_CONTEXT_SUPPORT = 408, /* FW supports traffic context aware manager */ 663 WMI_SERVICE_STA_SAP_NDP_CONCURRENCY_SUPPORT = 409, /* FW supports STA + SAP + NDP concurrency */ 664 WMI_SERVICE_THERM_THROT_POUT_REDUCTION = 410, /* FW supports thermal throttling Pout reduction */ 665 WMI_SERVICE_E2E_SDWF_SUPPORT = 411, /* FW supports end-to-end SDWF features like SDWF scheduler */ 666 WMI_SERVICE_EPM = 412, /* FW supports enhanced power management */ 667 WMI_SERVICE_CHIPSET_LOGGING_SUPPORT = 413, /* FW supports chipset logging feature */ 668 WMI_SERVICE_SUPPORT_AP_SUSPEND_RESUME = 414, /* FW supports SAP suspend feature */ 669 WMI_SERVICE_STA_P2P_NDP_CONCURRENCY_SUPPORT = 415, /* FW supports STA + P2P + NAN concurrency */ 670 WMI_SERVICE_USE_STA_VDEV_FOR_P2P_DEVICE = 416, /* FW supports use of sta vdev to be repurposed for p2p device */ 671 WMI_SERVICE_AP_ASSISTED_DFS_CHAN_P2P_SESSION = 417, /* FW supports P2P session on DFS chan enabled by DFS master AP */ 672 WMI_SERVICE_MLO_SAP_EMLSR_SUPPORT = 418, /* Indicates FW MLO SAP supports EMLSR Mode */ 673 WMI_SERVICE_PKTLOG_ML_TSTMP_SUPPORT = 419, /* Indicates ML timestamp for pktlog */ 674 WMI_SERVICE_MGMT_SRNG_SUPPORT = 420, /* FW supports MGMT frame forwarding via host provided SRNG instead of WMI */ 675 WMI_SERVICE_WDS_NULL_FRAME_SUPPORT = 421, 676 WMI_SERVICE_MLO_SAP_CONCURRENCY_SUPPORT = 422, /* Indicates FW supports MLO SAP+STA Concurrency */ 677 WMI_SERVICE_MEC_AGING_TIMER_SUPPORT = 423, /* FW supports multicast echo check aging timer */ 678 WMI_SERVICE_MULTI_RSNO_SUPPORT = 424, /* FW supports parsing of multiple RSN override IEs */ 679 /* WMI_SERVICE_IS_TARGET_IPA: 680 * FW indicates to host whether the target is IPA or xFEM. 681 * If this flag is 0, the target is XFEM or unspecified. 682 * If this flag is 1, the target is IPA. 683 */ 684 WMI_SERVICE_IS_TARGET_IPA = 425, 685 WMI_SERVICE_THERM_THROT_TX_CHAIN_MASK = 426, /*FW supports thermal throttling dynamic Tx ChainMask update */ 686 687 688 WMI_MAX_EXT2_SERVICE 689 690 } WMI_SERVICE; 691 692 #define WMI_SERVICE_BM_SIZE ((WMI_MAX_SERVICE + sizeof(A_UINT32)- 1)/sizeof(A_UINT32)) 693 694 #define WMI_NUM_EXT_SERVICES (WMI_MAX_EXT_SERVICE - WMI_MAX_SERVICE) 695 #define WMI_NUM_EXT2_SERVICES (WMI_MAX_EXT2_SERVICE - WMI_MAX_EXT_SERVICE) 696 697 /* 698 * TEMPORARY WORKAROUND 699 * Virtually all branches of the target utilize an incorrect check on 700 * the value of WMI_SERVICE_EXT_BM_SIZE32, checking that 701 * WMI_SERVICE_EXT_BM_SIZE32 < 4, rather than WMI_SERVICE_EXT_BM_SIZE32 <= 4. 702 * Until all target branches are fixed, this check is being disabled 703 * by artificially setting WMI_SERVICE_EXT_BM_SIZE32 to 0, rather than 704 * the number of 4-byte words required for holding the WMI extension 705 * service flags. 706 */ 707 #if 0 708 #define WMI_SERVICE_EXT_BM_SIZE32 ((WMI_NUM_EXT_SERVICES + 31) / 32) 709 #else 710 #define WMI_SERVICE_EXT_BM_SIZE32 0 711 #endif 712 713 #define WMI_SERVICE_ROAM_OFFLOAD WMI_SERVICE_ROAM_SCAN_OFFLOAD /* depreciated the name WMI_SERVICE_ROAM_OFFLOAD, but here to help compiling with old host driver */ 714 715 /* 716 * turn on the WMI service bit corresponding to the WMI service. 717 */ 718 #define WMI_SERVICE_ENABLE(pwmi_svc_bmap,svc_id) \ 719 ( (pwmi_svc_bmap)[(svc_id)/(sizeof(A_UINT32))] |= \ 720 ((A_UINT32) 1 << ((svc_id)%(sizeof(A_UINT32)))) ) 721 722 #define WMI_SERVICE_DISABLE(pwmi_svc_bmap,svc_id) \ 723 ( (pwmi_svc_bmap)[(svc_id)/(sizeof(A_UINT32))] &= \ 724 ( ~((A_UINT32) 1 << ((svc_id)%(sizeof(A_UINT32)))) ) ) 725 726 #define WMI_SERVICE_IS_ENABLED(pwmi_svc_bmap,svc_id) \ 727 ( ((pwmi_svc_bmap)[(svc_id)/(sizeof(A_UINT32))] & \ 728 ((A_UINT32) 1 << ((svc_id)%(sizeof(A_UINT32)))) ) != 0) 729 730 731 #define WMI_SERVICE_EXT_ENABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ 732 do { \ 733 if (svc_id < WMI_MAX_SERVICE) { \ 734 WMI_SERVICE_ENABLE(pwmi_svc_bmap, svc_id); \ 735 } else { \ 736 int word = ((svc_id) - WMI_MAX_SERVICE) / 32; \ 737 int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ 738 (pwmi_svc_ext_bmap)[word] |= ((A_UINT32) 1 << bit); \ 739 } \ 740 } while (0) 741 742 #define WMI_SERVICE_EXT_DISABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ 743 do { \ 744 if (svc_id < WMI_MAX_SERVICE) { \ 745 WMI_SERVICE_DISABLE(pwmi_svc_bmap, svc_id); \ 746 } else { \ 747 int word = ((svc_id) - WMI_MAX_SERVICE) / 32; \ 748 int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ 749 (pwmi_svc_ext_bmap)[word] &= ~((A_UINT32) 1 << bit); \ 750 } \ 751 } while (0) 752 753 #define WMI_SERVICE_EXT_IS_ENABLED(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ 754 /* If the service ID is beyond the known limit, treat it as disabled */ \ 755 ((svc_id) >= WMI_MAX_EXT_SERVICE ? 0 : \ 756 /* If service ID is in the non-extension range, use the old check */ \ 757 (svc_id) < WMI_MAX_SERVICE ? \ 758 WMI_SERVICE_IS_ENABLED(pwmi_svc_bmap, svc_id) : \ 759 /* If service ID is in the extended range, check ext_bmap */ \ 760 (((pwmi_svc_ext_bmap)[((svc_id) - WMI_MAX_SERVICE) / 32] >> \ 761 ((svc_id) & 0x1f)) & 0x1)) 762 763 #define WMI_SERVICE_EXT2_ENABLE( \ 764 pwmi_svc_bmap, pwmi_svc_ext_bmap, pwmi_svc_ext2_bmap, svc_id) \ 765 do { \ 766 if (svc_id < WMI_MAX_SERVICE) { \ 767 WMI_SERVICE_ENABLE(pwmi_svc_bmap, svc_id); \ 768 } else if (svc_id < WMI_MAX_EXT_SERVICE) { \ 769 WMI_SERVICE_EXT_ENABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id); \ 770 } else { \ 771 int word = ((svc_id) - WMI_MAX_EXT_SERVICE) / 32; \ 772 int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ 773 (pwmi_svc_ext2_bmap)[word] |= ((A_UINT32) 1 << bit); \ 774 } \ 775 } while (0) 776 777 #define WMI_SERVICE_EXT2_DISABLE( \ 778 pwmi_svc_bmap, pwmi_svc_ext_bmap, pwmi_svc_ext2_bmap, svc_id) \ 779 do { \ 780 if (svc_id < WMI_MAX_SERVICE) { \ 781 WMI_SERVICE_DISABLE(pwmi_svc_bmap, svc_id); \ 782 } else if (svc_id < WMI_MAX_EXT_SERVICE) { \ 783 WMI_SERVICE_EXT_DISABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id); \ 784 } else { \ 785 int word = ((svc_id) - WMI_MAX_EXT_SERVICE) / 32; \ 786 int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ 787 (pwmi_svc_ext2_bmap)[word] &= ~((A_UINT32) 1 << bit); \ 788 } \ 789 } while (0) 790 791 #define WMI_SERVICE_EXT2_IS_ENABLED( \ 792 pwmi_svc_bmap, pwmi_svc_ext_bmap, pwmi_svc_ext2_bmap, svc_id) \ 793 /* If the service ID is beyond the known limit, treat it as disabled */ \ 794 ((svc_id) >= WMI_MAX_EXT2_SERVICE ? 0 : \ 795 /* If service ID is in the non-extension range, use the old check */ \ 796 (svc_id) < WMI_MAX_SERVICE ? \ 797 WMI_SERVICE_IS_ENABLED(pwmi_svc_bmap, svc_id) : \ 798 /* If service ID is in the 1st extended range, check ext_bmap */ \ 799 (svc_id) < WMI_MAX_EXT_SERVICE ? \ 800 WMI_SERVICE_EXT_IS_ENABLED( \ 801 pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) : \ 802 /* \ 803 * If service ID is in the 2nd extended range, check ext2_bmap \ 804 */ \ 805 (((pwmi_svc_ext2_bmap)[((svc_id) - WMI_MAX_EXT_SERVICE) / 32] >> \ 806 ((svc_id) & 0x1f)) & 0x1)) 807 808 #ifdef __cplusplus 809 } 810 #endif 811 812 #endif /*_WMI_SERVICES_H_*/ 813