From patchwork Wed Jun 26 12:07:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasanthakumar Thiagarajan X-Patchwork-Id: 11017539 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7D7D86C5 for ; Wed, 26 Jun 2019 12:08:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 66E0F2838F for ; Wed, 26 Jun 2019 12:08:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 58AB92877B; Wed, 26 Jun 2019 12:08:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UPPERCASE_75_100 autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 11AE92838F for ; Wed, 26 Jun 2019 12:08:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:To: From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=pYvuwMOD4r3HRYCYAHmrVX6j1wWGK8XBGiOUdJRhyIA=; b=Jcgr0/v2cPiBti eTs/FzyuTfY4iZ7kH9qmy976WI3YYtW5BPYwekQnn+CRf58uGSkLlGKsZnBkg1L5C75EmXdV/tDts cOH8eUQgdhFt7UFBGcrJNYSSiyGKc2sKyqtjD7gIzAHl1yUgNZImuW/+bUzr0F/RWKwizRAxoRzxw T5380TA/4hqFh+TU5k8DAC4FSkoEKzvin+qYqXlcEZEQxV756hDqvdBOBV7cveP8TRC8HGjYZ6Qp6 hzngH+491OMsqTtGb8TGaQUEc1y/SmV76VVKhVCkK0n2Ni7Ko3aOEarbRYzwatGFYG9CKEPlYNIgf 9NE5V5QNzJn+9hFHLRaQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hg6ip-0001dC-2Z; Wed, 26 Jun 2019 12:08:19 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hg6ii-0001aq-PG for ath11k@lists.infradead.org; Wed, 26 Jun 2019 12:08:15 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id F39FA60A50; Wed, 26 Jun 2019 12:08:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550891; bh=GovqFM/5msUVc1SIIFMYW9yirvpOMtFPuaXXCUtgS6M=; h=From:To:Subject:Date:From; b=baiXkEBVLRP+yPdIDAp2ZXG12q/joyiVuMIHkJy1gxje7KVCYzljjMnwgl4XZsSkG OkOrGstyc999MFhfX/F4H4jkCED4tRb0O08MJig6bvgTn/dE7UL9+jL1LxHEbynrhX AIx0SXoYLjmy6RZ6fNTiPJR8tuzI9Xb4dupu3S1o= Received: from vasanth-lnx.qca.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: vthiagar@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 12D6D607DE for ; Wed, 26 Jun 2019 12:08:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550889; bh=GovqFM/5msUVc1SIIFMYW9yirvpOMtFPuaXXCUtgS6M=; h=From:To:Subject:Date:From; b=XNSNPF17B3FfYRSdmo6Qxy1PaRRolnLahKApOHN7CijinYkyc8jbembHHG0G/dKXS Y+KN3WVvrVvTAYmwGos5ogQBLAtdv7Kv37Mjhv7DVBdUhvtvXYDXw/pCLiH57An1ct lAovA73tIj6HFHI0HaaLN+hNrUWKleLAzsKHS1HA= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 12D6D607DE Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=vthiagar@codeaurora.org From: Vasanthakumar Thiagarajan To: ath11k@lists.infradead.org Subject: [PATCH 1/4] ath11k/wmi: Remove wmi service abstraction Date: Wed, 26 Jun 2019 17:37:37 +0530 Message-Id: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> X-Mailer: git-send-email 1.9.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190626_050812_884449_3610935C X-CRM114-Status: GOOD ( 14.14 ) X-BeenThere: ath11k@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "ath11k" Errors-To: ath11k-bounces+patchwork-ath11k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP There is going to be only one version of WMI TLV. Signed-off-by: Vasanthakumar Thiagarajan --- drivers/net/wireless/ath/ath11k/core.h | 1 - drivers/net/wireless/ath/ath11k/mac.c | 5 +- drivers/net/wireless/ath/ath11k/wmi.c | 47 ++- drivers/net/wireless/ath/ath11k/wmi.h | 568 +-------------------------------- 4 files changed, 39 insertions(+), 582 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h index af5c66f..d4b44f8 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -609,7 +609,6 @@ struct ath11k_base { struct ath11k_ext_irq_grp ext_irq_grp[ATH11K_EXT_IRQ_GRP_NUM_MAX]; struct napi_struct *napi; struct ath11k_targ_cap target_caps; - u32 service_bitmap[WMI_SERVICE_BM_SIZE]; u32 ext_service_bitmap[WMI_SERVICE_EXT_BM_SIZE]; bool pdevs_macaddr_valid; int bd_api; diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 1a4a333..0787d0d 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -4996,9 +4996,8 @@ static void ath11k_mac_disable_peer_fixed_rate(void *data, lockdep_assert_held(&ar->conf_mutex); - if (!test_bit(WMI_SERVICE_BSS_CHANNEL_INFO_64, - ar->ab->wmi_sc.svc_map) || - (ar->rx_channel != channel)) + if (!test_bit(WMI_TLV_SERVICE_BSS_CHANNEL_INFO_64, ar->ab->wmi_sc.svc_map) || + ar->rx_channel != channel) return; if (ar->scan.state != ATH11K_SCAN_IDLE) { diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 46a3e0f..9b0c7d4 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -437,6 +437,23 @@ static int ath11k_pull_service_ready_tlv(struct ath11k_base *ab, return 0; } +/* Save the wmi_service_bitmap into a linear bitmap. The wmi_services in + * wmi_service ready event are advertised in b0-b3 (LSB 4-bits) of each + * 4-byte word. + */ +static void ath11k_wmi_service_bitmap_copy(struct ath11k_pdev_wmi *wmi, + const u32 *wmi_svc_bm) +{ + int i, j; + + for (i = 0, j = 0; i < WMI_SERVICE_BM_SIZE && j < WMI_MAX_SERVICE; i++) { + do { + if (wmi_svc_bm[i] & BIT(j % WMI_SERVICE_BITS_IN_SIZE32)) + set_bit(j, wmi->wmi_sc->svc_map); + } while (++j % WMI_SERVICE_BITS_IN_SIZE32); + } +} + static int ath11k_wmi_tlv_svc_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len, const void *ptr, void *data) { @@ -459,11 +476,7 @@ static int ath11k_wmi_tlv_svc_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len return -EINVAL; } - wmi_svc_map(ptr, wmi_handle->wmi_sc->svc_map, - WMI_MAX_SERVICE); - - memcpy(ab->service_bitmap, ptr, - expect_len); + ath11k_wmi_service_bitmap_copy(wmi_handle, ptr); svc_ready->wmi_svc_bitmap_done = true; } @@ -5310,6 +5323,7 @@ static void ath11k_service_available_event(struct ath11k_base *ab, u8 *evt_buf, const void **tb; const struct wmi_service_available_event *ev; int ret; + int i, j; tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); if (IS_ERR(tb)) { @@ -5325,17 +5339,24 @@ static void ath11k_service_available_event(struct ath11k_base *ab, u8 *evt_buf, return; } - memcpy(ab->ext_service_bitmap, ev->wmi_service_segment_bitmap, - (WMI_SERVICE_SEGMENT_BM_SIZE32 * sizeof(u32))); - - wmi_svc_map_ext(ev->wmi_service_segment_bitmap, - ab->wmi_sc.svc_map, - WMI_MAX_SERVICE); + /* TODO: Use wmi_service_segment_offset information to get the service + * especially when more services are advertised in multiple sevice + * available events. + */ + for (i = 0, j = WMI_MAX_SERVICE; + i < WMI_SERVICE_SEGMENT_BM_SIZE32 && j < WMI_MAX_EXT_SERVICE; + i++) { + do { + if (ev->wmi_service_segment_bitmap[i] & + BIT(j % WMI_AVAIL_SERVICE_BITS_IN_SIZE32)) + set_bit(j, ab->wmi_sc.svc_map); + } while (++j % WMI_AVAIL_SERVICE_BITS_IN_SIZE32); + } ath11k_dbg(ab, ATH11K_DBG_WMI, "wmi_ext_service_bitmap 0:0x%x, 1:0x%x, 2:0x%x, 3:0x%x", - ab->ext_service_bitmap[0], ab->ext_service_bitmap[1], - ab->ext_service_bitmap[2], ab->ext_service_bitmap[3]); + ev->wmi_service_segment_bitmap[0], ev->wmi_service_segment_bitmap[1], + ev->wmi_service_segment_bitmap[2], ev->wmi_service_segment_bitmap[3]); kfree(tb); } diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h index 779209a..248326e 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.h +++ b/drivers/net/wireless/ath/ath11k/wmi.h @@ -1943,570 +1943,6 @@ enum wmi_tlv_service { }; -enum wmi_service { - WMI_SERVICE_BEACON_OFFLOAD = 0, - WMI_SERVICE_SCAN_OFFLOAD, - WMI_SERVICE_ROAM_SCAN_OFFLOAD, - WMI_SERVICE_BCN_MISS_OFFLOAD, - WMI_SERVICE_STA_PWRSAVE, - WMI_SERVICE_STA_ADVANCED_PWRSAVE, - WMI_SERVICE_AP_UAPSD, - WMI_SERVICE_AP_DFS, - WMI_SERVICE_11AC, - WMI_SERVICE_BLOCKACK, - WMI_SERVICE_PHYERR, - WMI_SERVICE_BCN_FILTER, - WMI_SERVICE_RTT, - WMI_SERVICE_WOW, - WMI_SERVICE_RATECTRL_CACHE, - WMI_SERVICE_IRAM_TIDS, - WMI_SERVICE_ARPNS_OFFLOAD, - WMI_SERVICE_NLO, - WMI_SERVICE_GTK_OFFLOAD, - WMI_SERVICE_SCAN_SCH, - WMI_SERVICE_CSA_OFFLOAD, - WMI_SERVICE_CHATTER, - WMI_SERVICE_COEX_FREQAVOID, - WMI_SERVICE_PACKET_POWER_SAVE, - WMI_SERVICE_FORCE_FW_HANG, - WMI_SERVICE_GPIO, - WMI_SERVICE_STA_DTIM_PS_MODULATED_DTIM, - WMI_SERVICE_STA_UAPSD_BASIC_AUTO_TRIG, - WMI_SERVICE_STA_UAPSD_VAR_AUTO_TRIG, - WMI_SERVICE_STA_KEEP_ALIVE, - WMI_SERVICE_TX_ENCAP, - WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC, - WMI_SERVICE_EARLY_RX, - WMI_SERVICE_STA_SMPS, - WMI_SERVICE_FWTEST, - WMI_SERVICE_STA_WMMAC, - WMI_SERVICE_TDLS, - WMI_SERVICE_BURST, - WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE, - WMI_SERVICE_ADAPTIVE_OCS, - WMI_SERVICE_BA_SSN_SUPPORT, - WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE, - WMI_SERVICE_WLAN_HB, - WMI_SERVICE_LTE_ANT_SHARE_SUPPORT, - WMI_SERVICE_BATCH_SCAN, - WMI_SERVICE_QPOWER, - WMI_SERVICE_PLMREQ, - WMI_SERVICE_THERMAL_MGMT, - WMI_SERVICE_RMC, - WMI_SERVICE_MHF_OFFLOAD, - WMI_SERVICE_COEX_SAR, - WMI_SERVICE_BCN_TXRATE_OVERRIDE, - WMI_SERVICE_NAN, - WMI_SERVICE_L1SS_STAT, - WMI_SERVICE_ESTIMATE_LINKSPEED, - WMI_SERVICE_OBSS_SCAN, - WMI_SERVICE_TDLS_OFFCHAN, - WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, - WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, - WMI_SERVICE_IBSS_PWRSAVE, - WMI_SERVICE_LPASS, - WMI_SERVICE_EXTSCAN, - WMI_SERVICE_D0WOW, - WMI_SERVICE_HSOFFLOAD, - WMI_SERVICE_ROAM_HO_OFFLOAD, - WMI_SERVICE_RX_FULL_REORDER, - WMI_SERVICE_DHCP_OFFLOAD, - WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT, - WMI_SERVICE_MDNS_OFFLOAD, - WMI_SERVICE_SAP_AUTH_OFFLOAD, - WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT, - WMI_SERVICE_OCB, - WMI_SERVICE_AP_ARPNS_OFFLOAD, - WMI_SERVICE_PER_BAND_CHAINMASK_SUPPORT, - WMI_SERVICE_PACKET_FILTER_OFFLOAD, - WMI_SERVICE_MGMT_TX_HTT, - WMI_SERVICE_MGMT_TX_WMI, - WMI_SERVICE_EXT_MSG, - WMI_SERVICE_MAWC, - WMI_SERVICE_PEER_ASSOC_CONF, - WMI_SERVICE_EGAP, - WMI_SERVICE_STA_PMF_OFFLOAD, - WMI_SERVICE_UNIFIED_WOW_CAPABILITY, - WMI_SERVICE_ENHANCED_PROXY_STA, - WMI_SERVICE_ATF, - WMI_SERVICE_COEX_GPIO, - WMI_SERVICE_AUX_SPECTRAL_INTF, - WMI_SERVICE_AUX_CHAN_LOAD_INTF, - WMI_SERVICE_BSS_CHANNEL_INFO_64, - WMI_SERVICE_ENTERPRISE_MESH, - WMI_SERVICE_RESTRT_CHNL_SUPPORT, - WMI_SERVICE_BPF_OFFLOAD, - WMI_SERVICE_SYNC_DELETE_CMDS, - WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT, - WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT, - WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES, - WMI_SERVICE_NAN_DATA, - WMI_SERVICE_NAN_RTT, - WMI_SERVICE_11AX, - WMI_SERVICE_DEPRECATED_REPLACE, - WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE, - WMI_SERVICE_ENHANCED_MCAST_FILTER, - WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT, - WMI_SERVICE_MESH_11S, - WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT, - WMI_SERVICE_VDEV_RX_FILTER, - WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT, - WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET, - WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET, - WMI_SERVICE_HOST_MANAGED_RX_REORDER, - WMI_SERVICE_FLASH_RDWR_SUPPORT, - WMI_SERVICE_WLAN_STATS_REPORT, - WMI_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT, - WMI_SERVICE_DFS_PHYERR_OFFLOAD, - WMI_SERVICE_RCPI_SUPPORT, - WMI_SERVICE_FW_MEM_DUMP_SUPPORT, - WMI_SERVICE_PEER_STATS_INFO, - WMI_SERVICE_REGULATORY_DB, - WMI_SERVICE_11D_OFFLOAD, - WMI_SERVICE_HW_DATA_FILTERING, - WMI_SERVICE_MULTIPLE_VDEV_RESTART, - WMI_SERVICE_PKT_ROUTING, - WMI_SERVICE_CHECK_CAL_VERSION, - WMI_SERVICE_OFFCHAN_TX_WMI, - WMI_SERVICE_8SS_TX_BFEE, - WMI_SERVICE_EXTENDED_NSS_SUPPORT, - WMI_SERVICE_ACK_TIMEOUT, - WMI_SERVICE_PDEV_BSS_CHANNEL_INFO_64, - WMI_SERVICE_CHAN_LOAD_INFO, - WMI_SERVICE_TX_PPDU_INFO_STATS_SUPPORT, - WMI_SERVICE_VDEV_LIMIT_OFFCHAN_SUPPORT, - WMI_SERVICE_FILS_SUPPORT, - WMI_SERVICE_WLAN_OIC_PING_OFFLOAD, - WMI_SERVICE_WLAN_DHCP_RENEW, - WMI_SERVICE_MAWC_SUPPORT, - WMI_SERVICE_VDEV_LATENCY_CONFIG, - WMI_SERVICE_PDEV_UPDATE_CTLTABLE_SUPPORT, - WMI_SERVICE_PKTLOG_SUPPORT_OVER_HTT, - WMI_SERVICE_VDEV_MULTI_GROUP_KEY_SUPPORT, - WMI_SERVICE_SCAN_PHYMODE_SUPPORT, - WMI_SERVICE_THERM_THROT, - WMI_SERVICE_BCN_OFFLOAD_START_STOP_SUPPORT, - WMI_SERVICE_WOW_WAKEUP_BY_TIMER_PATTERN, - WMI_SERVICE_PEER_MAP_UNMAP_V2_SUPPORT, - WMI_SERVICE_OFFCHAN_DATA_TID_SUPPORT, - WMI_SERVICE_RX_PROMISC_ENABLE_SUPPORT, - WMI_SERVICE_SUPPORT_DIRECT_DMA, - WMI_SERVICE_AP_OBSS_DETECTION_OFFLOAD, - WMI_SERVICE_11K_NEIGHBOUR_REPORT_SUPPORT, - WMI_SERVICE_LISTEN_INTERVAL_OFFLOAD_SUPPORT, - WMI_SERVICE_BSS_COLOR_OFFLOAD, - WMI_SERVICE_RUNTIME_DPD_RECAL, - WMI_SERVICE_STA_TWT, - WMI_SERVICE_AP_TWT, - WMI_SERVICE_GMAC_OFFLOAD_SUPPORT, - WMI_SERVICE_SPOOF_MAC_SUPPORT, - WMI_SERVICE_PEER_TID_CONFIGS_SUPPORT, - WMI_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT, - WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT, - WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT, - WMI_SERVICE_MOTION_DET, - WMI_SERVICE_INFRA_MBSSID, - WMI_SERVICE_OBSS_SPATIAL_REUSE, - WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT, - WMI_SERVICE_NAN_DBS_SUPPORT, - WMI_SERVICE_NDI_DBS_SUPPORT, - WMI_SERVICE_NAN_SAP_SUPPORT, - WMI_SERVICE_NDI_SAP_SUPPORT, - WMI_SERVICE_CFR_CAPTURE_SUPPORT, - WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1, - WMI_SERVICE_ESP_SUPPORT, - WMI_SERVICE_PEER_CHWIDTH_CHANGE, - WMI_SERVICE_WLAN_HPCS_PULSE, - WMI_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT, - WMI_SERVICE_TX_DATA_MGMT_ACK_RSSI, - WMI_SERVICE_NAN_DISABLE_SUPPORT, - WMI_SERVICE_NAN_DISABLE_SUPPORT__prototype = WMI_SERVICE_NAN_DISABLE_SUPPORT, - WMI_SERVICE_HTT_H2T_NO_HTC_HDR_LEN_IN_MSG_LEN, - - /* keep it last */ - WMI_SERVICE_MAX -}; - -#define WMI_SERVICE_IS_ENABLED(wmi_svc_bmap, svc_id, len) \ - ((svc_id) < (len) && \ - ((wmi_svc_bmap)[(svc_id) / (sizeof(u32))]) & \ - BIT((svc_id) % (sizeof(u32)))) - -#define WMI_EXT_SERVICE_IS_ENABLED(wmi_svc_bmap, svc_id, len) \ - ((svc_id) < (WMI_MAX_EXT_SERVICE) && \ - (svc_id) >= (len) && \ - ((wmi_svc_bmap)[((svc_id) - (len)) / 32]) & \ - BIT(((((svc_id) - (len)) % 32) & 0x1f))) - -#define SVCMAP(x, y, len) \ - do { \ - if ((WMI_SERVICE_IS_ENABLED((in), (x), (len))) || \ - (WMI_EXT_SERVICE_IS_ENABLED((in), (x), (len)))) \ - __set_bit(y, out); \ - } while (0) - -static inline void -wmi_svc_map_ext(const u32 *in, unsigned long *out, size_t len) -{ - SVCMAP(WMI_TLV_SERVICE_TX_PPDU_INFO_STATS_SUPPORT, - WMI_SERVICE_TX_PPDU_INFO_STATS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_LIMIT_OFFCHAN_SUPPORT, - WMI_SERVICE_VDEV_LIMIT_OFFCHAN_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_FILS_SUPPORT, - WMI_SERVICE_FILS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_WLAN_OIC_PING_OFFLOAD, - WMI_SERVICE_WLAN_OIC_PING_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_WLAN_DHCP_RENEW, - WMI_SERVICE_WLAN_DHCP_RENEW, len); - SVCMAP(WMI_TLV_SERVICE_MAWC_SUPPORT, - WMI_SERVICE_MAWC_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_LATENCY_CONFIG, - WMI_SERVICE_VDEV_LATENCY_CONFIG, len); - SVCMAP(WMI_TLV_SERVICE_PDEV_UPDATE_CTLTABLE_SUPPORT, - WMI_SERVICE_PDEV_UPDATE_CTLTABLE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_PKTLOG_SUPPORT_OVER_HTT, - WMI_SERVICE_PKTLOG_SUPPORT_OVER_HTT, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_MULTI_GROUP_KEY_SUPPORT, - WMI_SERVICE_VDEV_MULTI_GROUP_KEY_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_SCAN_PHYMODE_SUPPORT, - WMI_SERVICE_SCAN_PHYMODE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_THERM_THROT, - WMI_SERVICE_THERM_THROT, len); - SVCMAP(WMI_TLV_SERVICE_BCN_OFFLOAD_START_STOP_SUPPORT, - WMI_SERVICE_BCN_OFFLOAD_START_STOP_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_WOW_WAKEUP_BY_TIMER_PATTERN, - WMI_SERVICE_WOW_WAKEUP_BY_TIMER_PATTERN, len); - SVCMAP(WMI_TLV_SERVICE_PEER_MAP_UNMAP_V2_SUPPORT, - WMI_SERVICE_PEER_MAP_UNMAP_V2_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_OFFCHAN_DATA_TID_SUPPORT, - WMI_SERVICE_OFFCHAN_DATA_TID_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_RX_PROMISC_ENABLE_SUPPORT, - WMI_SERVICE_RX_PROMISC_ENABLE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_SUPPORT_DIRECT_DMA, - WMI_SERVICE_SUPPORT_DIRECT_DMA, len); - SVCMAP(WMI_TLV_SERVICE_AP_OBSS_DETECTION_OFFLOAD, - WMI_SERVICE_AP_OBSS_DETECTION_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_11K_NEIGHBOUR_REPORT_SUPPORT, - WMI_SERVICE_11K_NEIGHBOUR_REPORT_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_LISTEN_INTERVAL_OFFLOAD_SUPPORT, - WMI_SERVICE_LISTEN_INTERVAL_OFFLOAD_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_BSS_COLOR_OFFLOAD, - WMI_SERVICE_BSS_COLOR_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_RUNTIME_DPD_RECAL, - WMI_SERVICE_RUNTIME_DPD_RECAL, len); - SVCMAP(WMI_TLV_SERVICE_STA_TWT, - WMI_SERVICE_STA_TWT, len); - SVCMAP(WMI_TLV_SERVICE_AP_TWT, - WMI_SERVICE_AP_TWT, len); - SVCMAP(WMI_TLV_SERVICE_GMAC_OFFLOAD_SUPPORT, - WMI_SERVICE_GMAC_OFFLOAD_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_SPOOF_MAC_SUPPORT, - WMI_SERVICE_SPOOF_MAC_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_PEER_TID_CONFIGS_SUPPORT, - WMI_SERVICE_PEER_TID_CONFIGS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT, - WMI_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT, - WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_MOTION_DET, - WMI_SERVICE_MOTION_DET, len); - SVCMAP(WMI_TLV_SERVICE_INFRA_MBSSID, - WMI_SERVICE_INFRA_MBSSID, len); - SVCMAP(WMI_TLV_SERVICE_OBSS_SPATIAL_REUSE, - WMI_SERVICE_OBSS_SPATIAL_REUSE, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT, - WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_NAN_DBS_SUPPORT, - WMI_SERVICE_NAN_DBS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_NDI_DBS_SUPPORT, - WMI_SERVICE_NDI_DBS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_NAN_SAP_SUPPORT, - WMI_SERVICE_NAN_SAP_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_NDI_SAP_SUPPORT, - WMI_SERVICE_NDI_SAP_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_CFR_CAPTURE_SUPPORT, - WMI_SERVICE_CFR_CAPTURE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1, - WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1, len); - SVCMAP(WMI_TLV_SERVICE_ESP_SUPPORT, - WMI_SERVICE_ESP_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_PEER_CHWIDTH_CHANGE, - WMI_SERVICE_PEER_CHWIDTH_CHANGE, len); - SVCMAP(WMI_TLV_SERVICE_WLAN_HPCS_PULSE, - WMI_SERVICE_WLAN_HPCS_PULSE, len); - SVCMAP(WMI_TLV_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT, - WMI_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_TX_DATA_MGMT_ACK_RSSI, - WMI_SERVICE_TX_DATA_MGMT_ACK_RSSI, len); - SVCMAP(WMI_TLV_SERVICE_NAN_DISABLE_SUPPORT, - WMI_SERVICE_NAN_DISABLE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_NAN_DISABLE_SUPPORT__prototype, - WMI_SERVICE_NAN_DISABLE_SUPPORT__prototype, len); - SVCMAP(WMI_TLV_SERVICE_HTT_H2T_NO_HTC_HDR_LEN_IN_MSG_LEN, - WMI_SERVICE_HTT_H2T_NO_HTC_HDR_LEN_IN_MSG_LEN, len); -} - -static inline void -wmi_svc_map(const u32 *in, unsigned long *out, size_t len) -{ - SVCMAP(WMI_TLV_SERVICE_BEACON_OFFLOAD, - WMI_SERVICE_BEACON_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_SCAN_OFFLOAD, - WMI_SERVICE_SCAN_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_ROAM_SCAN_OFFLOAD, - WMI_SERVICE_ROAM_SCAN_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_BCN_MISS_OFFLOAD, - WMI_SERVICE_BCN_MISS_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_STA_PWRSAVE, - WMI_SERVICE_STA_PWRSAVE, len); - SVCMAP(WMI_TLV_SERVICE_STA_ADVANCED_PWRSAVE, - WMI_SERVICE_STA_ADVANCED_PWRSAVE, len); - SVCMAP(WMI_TLV_SERVICE_AP_UAPSD, - WMI_SERVICE_AP_UAPSD, len); - SVCMAP(WMI_TLV_SERVICE_AP_DFS, - WMI_SERVICE_AP_DFS, len); - SVCMAP(WMI_TLV_SERVICE_11AC, - WMI_SERVICE_11AC, len); - SVCMAP(WMI_TLV_SERVICE_BLOCKACK, - WMI_SERVICE_BLOCKACK, len); - SVCMAP(WMI_TLV_SERVICE_PHYERR, - WMI_SERVICE_PHYERR, len); - SVCMAP(WMI_TLV_SERVICE_BCN_FILTER, - WMI_SERVICE_BCN_FILTER, len); - SVCMAP(WMI_TLV_SERVICE_RTT, - WMI_SERVICE_RTT, len); - SVCMAP(WMI_TLV_SERVICE_WOW, - WMI_SERVICE_WOW, len); - SVCMAP(WMI_TLV_SERVICE_RATECTRL_CACHE, - WMI_SERVICE_RATECTRL_CACHE, len); - SVCMAP(WMI_TLV_SERVICE_IRAM_TIDS, - WMI_SERVICE_IRAM_TIDS, len); - SVCMAP(WMI_TLV_SERVICE_ARPNS_OFFLOAD, - WMI_SERVICE_ARPNS_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_NLO, - WMI_SERVICE_NLO, len); - SVCMAP(WMI_TLV_SERVICE_GTK_OFFLOAD, - WMI_SERVICE_GTK_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_SCAN_SCH, - WMI_SERVICE_SCAN_SCH, len); - SVCMAP(WMI_TLV_SERVICE_CSA_OFFLOAD, - WMI_SERVICE_CSA_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_CHATTER, - WMI_SERVICE_CHATTER, len); - SVCMAP(WMI_TLV_SERVICE_COEX_FREQAVOID, - WMI_SERVICE_COEX_FREQAVOID, len); - SVCMAP(WMI_TLV_SERVICE_PACKET_POWER_SAVE, - WMI_SERVICE_PACKET_POWER_SAVE, len); - SVCMAP(WMI_TLV_SERVICE_FORCE_FW_HANG, - WMI_SERVICE_FORCE_FW_HANG, len); - SVCMAP(WMI_TLV_SERVICE_GPIO, - WMI_SERVICE_GPIO, len); - SVCMAP(WMI_TLV_SERVICE_STA_DTIM_PS_MODULATED_DTIM, - WMI_SERVICE_STA_DTIM_PS_MODULATED_DTIM, len); - SVCMAP(WMI_STA_UAPSD_BASIC_AUTO_TRIG, - WMI_SERVICE_STA_UAPSD_BASIC_AUTO_TRIG, len); - SVCMAP(WMI_STA_UAPSD_VAR_AUTO_TRIG, - WMI_SERVICE_STA_UAPSD_VAR_AUTO_TRIG, len); - SVCMAP(WMI_TLV_SERVICE_STA_KEEP_ALIVE, - WMI_SERVICE_STA_KEEP_ALIVE, len); - SVCMAP(WMI_TLV_SERVICE_TX_ENCAP, - WMI_SERVICE_TX_ENCAP, len); - SVCMAP(WMI_TLV_SERVICE_AP_PS_DETECT_OUT_OF_SYNC, - WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC, len); - SVCMAP(WMI_TLV_SERVICE_EARLY_RX, - WMI_SERVICE_EARLY_RX, len); - SVCMAP(WMI_TLV_SERVICE_STA_SMPS, - WMI_SERVICE_STA_SMPS, len); - SVCMAP(WMI_TLV_SERVICE_FWTEST, - WMI_SERVICE_FWTEST, len); - SVCMAP(WMI_TLV_SERVICE_STA_WMMAC, - WMI_SERVICE_STA_WMMAC, len); - SVCMAP(WMI_TLV_SERVICE_TDLS, - WMI_SERVICE_TDLS, len); - SVCMAP(WMI_TLV_SERVICE_BURST, - WMI_SERVICE_BURST, len); - SVCMAP(WMI_TLV_SERVICE_MCC_BCN_INTERVAL_CHANGE, - WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE, len); - SVCMAP(WMI_TLV_SERVICE_ADAPTIVE_OCS, - WMI_SERVICE_ADAPTIVE_OCS, len); - SVCMAP(WMI_TLV_SERVICE_BA_SSN_SUPPORT, - WMI_SERVICE_BA_SSN_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_FILTER_IPSEC_NATKEEPALIVE, - WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE, len); - SVCMAP(WMI_TLV_SERVICE_WLAN_HB, - WMI_SERVICE_WLAN_HB, len); - SVCMAP(WMI_TLV_SERVICE_LTE_ANT_SHARE_SUPPORT, - WMI_SERVICE_LTE_ANT_SHARE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_BATCH_SCAN, - WMI_SERVICE_BATCH_SCAN, len); - SVCMAP(WMI_TLV_SERVICE_QPOWER, - WMI_SERVICE_QPOWER, len); - SVCMAP(WMI_TLV_SERVICE_PLMREQ, - WMI_SERVICE_PLMREQ, len); - SVCMAP(WMI_TLV_SERVICE_THERMAL_MGMT, - WMI_SERVICE_THERMAL_MGMT, len); - SVCMAP(WMI_TLV_SERVICE_RMC, - WMI_SERVICE_RMC, len); - SVCMAP(WMI_TLV_SERVICE_MHF_OFFLOAD, - WMI_SERVICE_MHF_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_COEX_SAR, - WMI_SERVICE_COEX_SAR, len); - SVCMAP(WMI_TLV_SERVICE_BCN_TXRATE_OVERRIDE, - WMI_SERVICE_BCN_TXRATE_OVERRIDE, len); - SVCMAP(WMI_TLV_SERVICE_NAN, - WMI_SERVICE_NAN, len); - SVCMAP(WMI_TLV_SERVICE_L1SS_STAT, - WMI_SERVICE_L1SS_STAT, len); - SVCMAP(WMI_TLV_SERVICE_ESTIMATE_LINKSPEED, - WMI_SERVICE_ESTIMATE_LINKSPEED, len); - SVCMAP(WMI_TLV_SERVICE_OBSS_SCAN, - WMI_SERVICE_OBSS_SCAN, len); - SVCMAP(WMI_TLV_SERVICE_TDLS_OFFCHAN, - WMI_SERVICE_TDLS_OFFCHAN, len); - SVCMAP(WMI_TLV_SERVICE_TDLS_UAPSD_BUFFER_STA, - WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, len); - SVCMAP(WMI_TLV_SERVICE_TDLS_UAPSD_SLEEP_STA, - WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, len); - SVCMAP(WMI_TLV_SERVICE_IBSS_PWRSAVE, - WMI_SERVICE_IBSS_PWRSAVE, len); - SVCMAP(WMI_TLV_SERVICE_LPASS, - WMI_SERVICE_LPASS, len); - SVCMAP(WMI_TLV_SERVICE_EXTSCAN, - WMI_SERVICE_EXTSCAN, len); - SVCMAP(WMI_TLV_SERVICE_D0WOW, - WMI_SERVICE_D0WOW, len); - SVCMAP(WMI_TLV_SERVICE_HSOFFLOAD, - WMI_SERVICE_HSOFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_ROAM_HO_OFFLOAD, - WMI_SERVICE_ROAM_HO_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_RX_FULL_REORDER, - WMI_SERVICE_RX_FULL_REORDER, len); - SVCMAP(WMI_TLV_SERVICE_DHCP_OFFLOAD, - WMI_SERVICE_DHCP_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT, - WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_MDNS_OFFLOAD, - WMI_SERVICE_MDNS_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_SAP_AUTH_OFFLOAD, - WMI_SERVICE_SAP_AUTH_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT, - WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_OCB, - WMI_SERVICE_OCB, len); - SVCMAP(WMI_TLV_SERVICE_AP_ARPNS_OFFLOAD, - WMI_SERVICE_AP_ARPNS_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_PER_BAND_CHAINMASK_SUPPORT, - WMI_SERVICE_PER_BAND_CHAINMASK_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_PACKET_FILTER_OFFLOAD, - WMI_SERVICE_PACKET_FILTER_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_MGMT_TX_HTT, - WMI_SERVICE_MGMT_TX_HTT, len); - SVCMAP(WMI_TLV_SERVICE_MGMT_TX_WMI, - WMI_SERVICE_MGMT_TX_WMI, len); - SVCMAP(WMI_TLV_SERVICE_EXT_MSG, - WMI_SERVICE_EXT_MSG, len); - SVCMAP(WMI_TLV_SERVICE_MAWC, - WMI_SERVICE_MAWC, len); - SVCMAP(WMI_TLV_SERVICE_PEER_ASSOC_CONF, - WMI_SERVICE_PEER_ASSOC_CONF, len); - SVCMAP(WMI_TLV_SERVICE_EGAP, - WMI_SERVICE_EGAP, len); - SVCMAP(WMI_TLV_SERVICE_STA_PMF_OFFLOAD, - WMI_SERVICE_STA_PMF_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_UNIFIED_WOW_CAPABILITY, - WMI_SERVICE_UNIFIED_WOW_CAPABILITY, len); - SVCMAP(WMI_TLV_SERVICE_ENHANCED_PROXY_STA, - WMI_SERVICE_ENHANCED_PROXY_STA, len); - SVCMAP(WMI_TLV_SERVICE_ATF, - WMI_SERVICE_ATF, len); - SVCMAP(WMI_TLV_SERVICE_COEX_GPIO, - WMI_SERVICE_COEX_GPIO, len); - SVCMAP(WMI_TLV_SERVICE_AUX_SPECTRAL_INTF, - WMI_SERVICE_AUX_SPECTRAL_INTF, len); - SVCMAP(WMI_TLV_SERVICE_AUX_CHAN_LOAD_INTF, - WMI_SERVICE_AUX_CHAN_LOAD_INTF, len); - SVCMAP(WMI_TLV_SERVICE_BSS_CHANNEL_INFO_64, - WMI_SERVICE_BSS_CHANNEL_INFO_64, len); - SVCMAP(WMI_TLV_SERVICE_ENTERPRISE_MESH, - WMI_SERVICE_ENTERPRISE_MESH, len); - SVCMAP(WMI_TLV_SERVICE_RESTRT_CHNL_SUPPORT, - WMI_SERVICE_RESTRT_CHNL_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_BPF_OFFLOAD, - WMI_SERVICE_BPF_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_SYNC_DELETE_CMDS, - WMI_SERVICE_SYNC_DELETE_CMDS, len); - SVCMAP(WMI_TLV_SERVICE_SMART_ANTENNA_SW_SUPPORT, - WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_SMART_ANTENNA_HW_SUPPORT, - WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES, - WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES, len); - SVCMAP(WMI_TLV_SERVICE_NAN_DATA, - WMI_SERVICE_NAN_DATA, len); - SVCMAP(WMI_TLV_SERVICE_NAN_RTT, - WMI_SERVICE_NAN_RTT, len); - SVCMAP(WMI_TLV_SERVICE_11AX, - WMI_SERVICE_11AX, len); - SVCMAP(WMI_TLV_SERVICE_DEPRECATED_REPLACE, - WMI_SERVICE_DEPRECATED_REPLACE, len); - SVCMAP(WMI_TLV_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE, - WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE, len); - SVCMAP(WMI_TLV_SERVICE_ENHANCED_MCAST_FILTER, - WMI_SERVICE_ENHANCED_MCAST_FILTER, len); - SVCMAP(WMI_TLV_SERVICE_PERIODIC_CHAN_STAT_SUPPORT, - WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_MESH_11S, - WMI_SERVICE_MESH_11S, len); - SVCMAP(WMI_TLV_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT, - WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_VDEV_RX_FILTER, - WMI_SERVICE_VDEV_RX_FILTER, len); - SVCMAP(WMI_TLV_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT, - WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_MARK_FIRST_WAKEUP_PACKET, - WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET, len); - SVCMAP(WMI_TLV_SERVICE_MULTIPLE_MCAST_FILTER_SET, - WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET, len); - SVCMAP(WMI_TLV_SERVICE_HOST_MANAGED_RX_REORDER, - WMI_SERVICE_HOST_MANAGED_RX_REORDER, len); - SVCMAP(WMI_TLV_SERVICE_FLASH_RDWR_SUPPORT, - WMI_SERVICE_FLASH_RDWR_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_WLAN_STATS_REPORT, - WMI_SERVICE_WLAN_STATS_REPORT, len); - SVCMAP(WMI_TLV_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT, - WMI_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_DFS_PHYERR_OFFLOAD, - WMI_SERVICE_DFS_PHYERR_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_RCPI_SUPPORT, - WMI_SERVICE_RCPI_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_FW_MEM_DUMP_SUPPORT, - WMI_SERVICE_FW_MEM_DUMP_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_PEER_STATS_INFO, - WMI_SERVICE_PEER_STATS_INFO, len); - SVCMAP(WMI_TLV_SERVICE_REGULATORY_DB, - WMI_SERVICE_REGULATORY_DB, len); - SVCMAP(WMI_TLV_SERVICE_11D_OFFLOAD, - WMI_SERVICE_11D_OFFLOAD, len); - SVCMAP(WMI_TLV_SERVICE_HW_DATA_FILTERING, - WMI_SERVICE_HW_DATA_FILTERING, len); - SVCMAP(WMI_TLV_SERVICE_MULTIPLE_VDEV_RESTART, - WMI_SERVICE_MULTIPLE_VDEV_RESTART, len); - SVCMAP(WMI_TLV_SERVICE_PKT_ROUTING, - WMI_SERVICE_PKT_ROUTING, len); - SVCMAP(WMI_TLV_SERVICE_CHECK_CAL_VERSION, - WMI_SERVICE_CHECK_CAL_VERSION, len); - SVCMAP(WMI_TLV_SERVICE_OFFCHAN_TX_WMI, - WMI_SERVICE_OFFCHAN_TX_WMI, len); - SVCMAP(WMI_TLV_SERVICE_8SS_TX_BFEE, - WMI_SERVICE_8SS_TX_BFEE, len); - SVCMAP(WMI_TLV_SERVICE_EXTENDED_NSS_SUPPORT, - WMI_SERVICE_EXTENDED_NSS_SUPPORT, len); - SVCMAP(WMI_TLV_SERVICE_ACK_TIMEOUT, - WMI_SERVICE_ACK_TIMEOUT, len); - SVCMAP(WMI_TLV_SERVICE_PDEV_BSS_CHANNEL_INFO_64, - WMI_SERVICE_PDEV_BSS_CHANNEL_INFO_64, len); -}; - enum { WMI_SMPS_FORCED_MODE_NONE = 0, WMI_SMPS_FORCED_MODE_DISABLED, @@ -2775,6 +2211,8 @@ struct wmi_service_ready_event { #define WMI_SERVICE_SEGMENT_BM_SIZE32 4 /* 4x u32 = 128 bits */ #define WMI_SERVICE_EXT_BM_SIZE (WMI_SERVICE_SEGMENT_BM_SIZE32 * sizeof(u32)) +#define WMI_AVAIL_SERVICE_BITS_IN_SIZE32 32 +#define WMI_SERVICE_BITS_IN_SIZE32 4 struct wmi_service_ready_ext_event { u32 default_conc_scan_config_bits; @@ -5167,7 +4605,7 @@ struct ath11k_wmi_base { struct completion service_ready; struct completion unified_ready; - DECLARE_BITMAP(svc_map, WMI_SERVICE_MAX); + DECLARE_BITMAP(svc_map, WMI_MAX_EXT_SERVICE); wait_queue_head_t tx_credits_wq; const struct wmi_peer_flags_map *peer_flags; u32 num_mem_chunks;