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; From patchwork Wed Jun 26 12:07:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasanthakumar Thiagarajan X-Patchwork-Id: 11017541 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 9EA8D6C5 for ; Wed, 26 Jun 2019 12:08:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8AD1128722 for ; Wed, 26 Jun 2019 12:08:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7F76028779; Wed, 26 Jun 2019 12:08:22 +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 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 65B0B28722 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:References:In-Reply-To: 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: List-Owner; bh=1GHBwXkeimFV2dpeRFZ3j+dISbI4Wq7pcvcSZvf/1WI=; b=EwbvP5/3NTTR4t dSlS153BVzRnPz3yOhq56B5n/IDS7x6LgCOJ9S4gp/ARlNBldEhCQdQySb4Xk8g3rAglYomqqPGtd lJaQ8jJrLmUZV1tMLcXy6p8LyPb5fF7xxm3YXphm1A0sTSHNSG9yeQN7DFxOM265TNmG9fhk0Gypm lt0RU0IYVemTJHwpGwvCBdS8zel0/sF6K7OLNRBxT+Zv43AIXQfTFQs2EGtfL6Qf+ngN/TjZwDobq ExU3z2M+13QSC/D8td3Vj6++yf6fmZB+wx6DB3oJDRQU3L1VJ/mq/NtGzop6m4j6u7oWqeuWUa1Eb ypmaQIOoDDNdc9dbhKng==; 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-0001dZ-Em; 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-0001ar-Rj for ath11k@lists.infradead.org; Wed, 26 Jun 2019 12:08:16 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id ACB4F60A97; Wed, 26 Jun 2019 12:08:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550891; bh=NCQCI2DNF6AHmPhLDcU/KMmgeyFMIc9vhEYDiJ9Crr0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PgHDTZX361Vf1eyHq2xleeqvLTQJoJBMzzJFUpifNbwjM+sBE0XQRSttNlsrwVzdU r+LB2WTQOj+73q+f5UQ82Oa5hmj38tkziWnCFfEpSPREig+ryPT482N+7KG1afpJ51 AJe/ca4tA8wS9y0A5F4KeLO1GtVJGeBCLkjOrhNo= 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 4F46860A05 for ; 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=1561550890; bh=NCQCI2DNF6AHmPhLDcU/KMmgeyFMIc9vhEYDiJ9Crr0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=jC3g9/SwZ9hXjRLu2Z2CxQbrunYDoo2fF4HR7HHlZ6ppD4ROYsdO7LicOWQpq+Td9 dWEWX8ZMFzEuaZ5sJUzMgF9QXQKnXTpq7kNbYoiQzkdWo1cRKZRWeuQ7ieva82OM9k I99zWJZGOTyRp1WZcKTW7SpG1aqXVV5BXYE8KxwU= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 4F46860A05 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 2/4] ath11k/wmi: Clean up few indentations in wmi Date: Wed, 26 Jun 2019 17:37:38 +0530 Message-Id: <1561550860-2928-2-git-send-email-vthiagar@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> References: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190626_050812_929161_0D80D5D9 X-CRM114-Status: GOOD ( 13.76 ) 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 Also make ath11k_hw_mode_pri_map[] static const. Signed-off-by: Vasanthakumar Thiagarajan --- drivers/net/wireless/ath/ath11k/wmi.c | 187 +++++++++++++++------------------- 1 file changed, 80 insertions(+), 107 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 9b0c7d4..6807ee5 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -102,7 +102,7 @@ struct wmi_tlv_rdy_parse { #define PRIMAP(_hw_mode_) \ [_hw_mode_] = _hw_mode_##_PRI -static int ath11k_hw_mode_pri_map[] = { +static const int ath11k_hw_mode_pri_map[] = { PRIMAP(WMI_HOST_HW_MODE_SINGLE), PRIMAP(WMI_HOST_HW_MODE_DBS), PRIMAP(WMI_HOST_HW_MODE_SBS_PASSIVE), @@ -254,17 +254,18 @@ int ath11k_wmi_cmd_send(struct ath11k_pdev_wmi *wmi, struct sk_buff *skb, return ret; } -static int ath11k_pull_service_ready_ext( - struct ath11k_pdev_wmi *wmi_handle, - struct wmi_service_ready_ext_event *ev, - struct ath11k_service_ext_param *param) +static int ath11k_pull_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle, + const void *ptr, + struct ath11k_service_ext_param *param) { + struct wmi_service_ready_ext_event *ev; + + ev = (struct wmi_service_ready_ext_event *)ptr; if (!ev) return -EINVAL; /* Move this to host based bitmap */ - param->default_conc_scan_config_bits = - ev->default_conc_scan_config_bits; + param->default_conc_scan_config_bits = ev->default_conc_scan_config_bits; param->default_fw_config_bits = ev->default_fw_config_bits; param->he_cap_info = ev->he_cap_info; param->mpdu_density = ev->mpdu_density; @@ -274,14 +275,14 @@ static int ath11k_pull_service_ready_ext( return 0; } -static int ath11k_pull_mac_phy_cap_service_ready_ext( - struct ath11k_pdev_wmi *wmi_handle, - struct wmi_soc_mac_phy_hw_mode_caps *hw_caps, - struct wmi_hw_mode_capabilities *wmi_hw_mode_caps, - struct wmi_soc_hal_reg_capabilities *soc_hal_reg_caps, - struct wmi_mac_phy_capabilities *wmi_mac_phy_caps, - u8 hw_mode_id, u8 phy_id, - struct ath11k_pdev *pdev) +static int +ath11k_pull_mac_phy_cap_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle, + struct wmi_soc_mac_phy_hw_mode_caps *hw_caps, + struct wmi_hw_mode_capabilities *wmi_hw_mode_caps, + struct wmi_soc_hal_reg_capabilities *hal_reg_caps, + struct wmi_mac_phy_capabilities *wmi_mac_phy_caps, + u8 hw_mode_id, u8 phy_id, + struct ath11k_pdev *pdev) { struct wmi_mac_phy_capabilities *mac_phy_caps; struct ath11k_band_cap *cap_band; @@ -289,7 +290,7 @@ static int ath11k_pull_mac_phy_cap_service_ready_ext( u32 phy_map; u32 hw_idx, phy_idx = 0; - if (!hw_caps || !wmi_hw_mode_caps || !soc_hal_reg_caps) + if (!hw_caps || !wmi_hw_mode_caps || !hal_reg_caps) return -EINVAL; for (hw_idx = 0; hw_idx < hw_caps->num_hw_modes; hw_idx++) { @@ -307,7 +308,7 @@ static int ath11k_pull_mac_phy_cap_service_ready_ext( return -EINVAL; phy_idx += phy_id; - if (phy_id >= soc_hal_reg_caps->num_phy) + if (phy_id >= hal_reg_caps->num_phy) return -EINVAL; mac_phy_caps = &wmi_mac_phy_caps[phy_idx]; @@ -371,12 +372,12 @@ static int ath11k_pull_mac_phy_cap_service_ready_ext( return 0; } -static int ath11k_pull_reg_cap_svc_rdy_ext( - struct ath11k_pdev_wmi *wmi_handle, - struct wmi_soc_hal_reg_capabilities *reg_caps, - struct wmi_hal_reg_capabilities_ext *wmi_ext_reg_cap, - u8 phy_idx, - struct ath11k_hal_reg_capabilities_ext *param) +static int +ath11k_pull_reg_cap_svc_rdy_ext(struct ath11k_pdev_wmi *wmi_handle, + struct wmi_soc_hal_reg_capabilities *reg_caps, + struct wmi_hal_reg_capabilities_ext *wmi_ext_reg_cap, + u8 phy_idx, + struct ath11k_hal_reg_capabilities_ext *param) { struct wmi_hal_reg_capabilities_ext *ext_reg_cap; @@ -407,11 +408,10 @@ static int ath11k_pull_service_ready_tlv(struct ath11k_base *ab, const void *evt_buf, struct ath11k_targ_cap *cap) { - struct wmi_service_ready_event *ev; + struct wmi_service_ready_event *ev = (struct wmi_service_ready_event *)evt_buf; - ev = (struct wmi_service_ready_event *)evt_buf; if (!ev) { - ath11k_err(ab, "%s: failed by Null Param\n", + ath11k_err(ab, "%s: failed by NULL param\n", __func__); return -EINVAL; } @@ -2460,7 +2460,7 @@ int ath11k_wmi_pdev_pktlog_disable(struct ath11k *ar) return ret; } -static inline void +static void ath11k_fill_band_to_mac_param(struct ath11k_base *soc, struct wmi_host_pdev_band_to_mac *band_to_mac) { @@ -2574,7 +2574,7 @@ static int ath11k_init_cmd_send(struct ath11k_pdev_wmi *wmi, (param->num_band_to_mac * sizeof(*band_to_mac)); len = sizeof(*cmd) + TLV_HDR_SIZE + sizeof(*cfg) + hw_mode_len + - (sizeof(*host_mem_chunks) * WMI_MAX_MEM_REQS); + (sizeof(*host_mem_chunks) * WMI_MAX_MEM_REQS); skb = ath11k_wmi_alloc_skb(wmi->wmi_sc, len); if (!skb) @@ -2878,11 +2878,10 @@ static int ath11k_wmi_tlv_ext_hal_reg_caps(struct ath11k_base *soc, } for (i = 0; i < svc_rdy_ext->param.num_phy; i++) { - ret = ath11k_pull_reg_cap_svc_rdy_ext - (wmi_handle, - svc_rdy_ext->soc_hal_reg_caps, - svc_rdy_ext->ext_hal_reg_caps, i, - ®_cap); + ret = ath11k_pull_reg_cap_svc_rdy_ext(wmi_handle, + svc_rdy_ext->soc_hal_reg_caps, + svc_rdy_ext->ext_hal_reg_caps, i, + ®_cap); if (ret) { ath11k_warn(soc, "failed to extract reg cap %d\n", i); return ret; @@ -2900,6 +2899,7 @@ static int ath11k_wmi_tlv_ext_soc_hal_reg_caps_parse(struct ath11k_base *soc, { struct ath11k_pdev_wmi *wmi_handle = &soc->wmi_sc.wmi[0]; struct wmi_tlv_svc_rdy_ext_parse *svc_rdy_ext = data; + u8 hw_mode_id = svc_rdy_ext->pref_hw_mode_caps.hw_mode_id; u32 phy_id_map; int ret; @@ -2910,15 +2910,13 @@ static int ath11k_wmi_tlv_ext_soc_hal_reg_caps_parse(struct ath11k_base *soc, phy_id_map = svc_rdy_ext->pref_hw_mode_caps.phy_id_map; while (phy_id_map && soc->num_radios < MAX_RADIOS) { - ret = ath11k_pull_mac_phy_cap_service_ready_ext - (wmi_handle, - svc_rdy_ext->hw_caps, - svc_rdy_ext->hw_mode_caps, - svc_rdy_ext->soc_hal_reg_caps, - svc_rdy_ext->mac_phy_caps, - svc_rdy_ext->pref_hw_mode_caps.hw_mode_id, - soc->num_radios, - &soc->pdevs[soc->num_radios]); + ret = ath11k_pull_mac_phy_cap_svc_ready_ext(wmi_handle, + svc_rdy_ext->hw_caps, + svc_rdy_ext->hw_mode_caps, + svc_rdy_ext->soc_hal_reg_caps, + svc_rdy_ext->mac_phy_caps, + hw_mode_id, soc->num_radios, + &soc->pdevs[soc->num_radios]); if (ret) { ath11k_warn(soc, "failed to extract mac caps, idx :%d\n", soc->num_radios); @@ -2943,10 +2941,8 @@ static int ath11k_wmi_tlv_svc_rdy_ext_parse(struct ath11k_base *ab, switch (tag) { case WMI_TAG_SERVICE_READY_EXT_EVENT: - ret = - ath11k_pull_service_ready_ext(wmi_handle, - (struct wmi_service_ready_ext_event *)ptr, - &svc_rdy_ext->param); + ret = ath11k_pull_svc_ready_ext(wmi_handle, ptr, + &svc_rdy_ext->param); if (ret) { ath11k_warn(ab, "unable to extract ext params\n"); return ret; @@ -3140,20 +3136,15 @@ static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, reg_info->reg_dmn_pair = chan_list_event_hdr->domain_code; if (chan_list_event_hdr->status_code == WMI_REG_SET_CC_STATUS_PASS) reg_info->status_code = REG_SET_CC_STATUS_PASS; - else if (chan_list_event_hdr->status_code == - WMI_REG_CURRENT_ALPHA2_NOT_FOUND) + else if (chan_list_event_hdr->status_code == WMI_REG_CURRENT_ALPHA2_NOT_FOUND) reg_info->status_code = REG_CURRENT_ALPHA2_NOT_FOUND; - else if (chan_list_event_hdr->status_code == - WMI_REG_INIT_ALPHA2_NOT_FOUND) + else if (chan_list_event_hdr->status_code == WMI_REG_INIT_ALPHA2_NOT_FOUND) reg_info->status_code = REG_INIT_ALPHA2_NOT_FOUND; - else if (chan_list_event_hdr->status_code == - WMI_REG_SET_CC_CHANGE_NOT_ALLOWED) + else if (chan_list_event_hdr->status_code == WMI_REG_SET_CC_CHANGE_NOT_ALLOWED) reg_info->status_code = REG_SET_CC_CHANGE_NOT_ALLOWED; - else if (chan_list_event_hdr->status_code == - WMI_REG_SET_CC_STATUS_NO_MEMORY) + else if (chan_list_event_hdr->status_code == WMI_REG_SET_CC_STATUS_NO_MEMORY) reg_info->status_code = REG_SET_CC_STATUS_NO_MEMORY; - else if (chan_list_event_hdr->status_code == - WMI_REG_SET_CC_STATUS_FAIL) + else if (chan_list_event_hdr->status_code == WMI_REG_SET_CC_STATUS_FAIL) reg_info->status_code = REG_SET_CC_STATUS_FAIL; reg_info->min_bw_2g = chan_list_event_hdr->min_bw_2g; @@ -3180,9 +3171,8 @@ static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, + sizeof(struct wmi_tlv)); if (num_2g_reg_rules) { - reg_info->reg_rules_2g_ptr = - create_reg_rules_from_wmi(num_2g_reg_rules, - wmi_reg_rule); + reg_info->reg_rules_2g_ptr = create_reg_rules_from_wmi(num_2g_reg_rules, + wmi_reg_rule); if (!reg_info->reg_rules_2g_ptr) { kfree(tb); ath11k_warn(ab, "Unable to Allocate memory for 2g rules\n"); @@ -3192,9 +3182,8 @@ static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, if (num_5g_reg_rules) { wmi_reg_rule += num_2g_reg_rules; - reg_info->reg_rules_5g_ptr = - create_reg_rules_from_wmi(num_5g_reg_rules, - wmi_reg_rule); + reg_info->reg_rules_5g_ptr = create_reg_rules_from_wmi(num_5g_reg_rules, + wmi_reg_rule); if (!reg_info->reg_rules_5g_ptr) { kfree(tb); ath11k_warn(ab, "Unable to Allocate memory for 5g rules\n"); @@ -3702,7 +3691,6 @@ static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, static int ath11k_pull_pdev_bss_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, struct wmi_pdev_bss_chan_info_event *bss_ch_info_ev) { const void **tb; @@ -3741,9 +3729,9 @@ static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, return 0; } -static int ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, - struct wmi_vdev_install_key_complete_arg *install_key_compl) +static int +ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, u8 *evt_buf, u32 len, + struct wmi_vdev_install_key_complete_arg *arg) { const void **tb; const struct wmi_vdev_install_key_compl_event *ev; @@ -3763,11 +3751,11 @@ static int ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, u8 *evt return -EPROTO; } - install_key_compl->vdev_id = ev->vdev_id; - install_key_compl->macaddr = ev->peer_macaddr.addr; - install_key_compl->key_idx = ev->key_idx; - install_key_compl->key_flags = ev->key_flags; - install_key_compl->status = ev->status; + arg->vdev_id = ev->vdev_id; + arg->macaddr = ev->peer_macaddr.addr; + arg->key_idx = ev->key_idx; + arg->key_flags = ev->key_flags; + arg->status = ev->status; kfree(tb); return 0; @@ -3879,24 +3867,19 @@ static void ath11k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src, dst->num_tx_not_acked = src->num_tx_not_acked; for (i = 0; i < ARRAY_SIZE(src->num_tx_frames); i++) - dst->num_tx_frames[i] = - src->num_tx_frames[i]; + dst->num_tx_frames[i] = src->num_tx_frames[i]; for (i = 0; i < ARRAY_SIZE(src->num_tx_frames_retries); i++) - dst->num_tx_frames_retries[i] = - src->num_tx_frames_retries[i]; + dst->num_tx_frames_retries[i] = src->num_tx_frames_retries[i]; for (i = 0; i < ARRAY_SIZE(src->num_tx_frames_failures); i++) - dst->num_tx_frames_failures[i] = - src->num_tx_frames_failures[i]; + dst->num_tx_frames_failures[i] = src->num_tx_frames_failures[i]; for (i = 0; i < ARRAY_SIZE(src->tx_rate_history); i++) - dst->tx_rate_history[i] = - src->tx_rate_history[i]; + dst->tx_rate_history[i] = src->tx_rate_history[i]; for (i = 0; i < ARRAY_SIZE(src->beacon_rssi_history); i++) - dst->beacon_rssi_history[i] = - src->beacon_rssi_history[i]; + dst->beacon_rssi_history[i] = src->beacon_rssi_history[i]; } static void @@ -4399,14 +4382,14 @@ static size_t ath11k_wmi_fw_stats_num_bcn(struct list_head *head) struct ath11k_vif *arvif = ath11k_mac_get_arvif(ar, bcn->vdev_id); u8 *vdev_macaddr; - if (arvif) { - vdev_macaddr = arvif->vif->addr; - } else { + if (!arvif) { ath11k_warn(ar->ab, "invalid vdev id %d in bcn stats", bcn->vdev_id); return; } + vdev_macaddr = arvif->vif->addr; + len += scnprintf(buf + len, buf_len - len, "%30s %u\n", "VDEV ID", bcn->vdev_id); len += scnprintf(buf + len, buf_len - len, "%30s %pM\n", @@ -4459,9 +4442,8 @@ void ath11k_wmi_fw_stats_fill(struct ath11k *ar, len += scnprintf(buf + len, buf_len - len, "%30s\n\n", "================="); - list_for_each_entry(vdev, &fw_stats->vdevs, list) { + list_for_each_entry(vdev, &fw_stats->vdevs, list) ath11k_wmi_fw_vdev_stats_fill(ar, vdev, buf, &len); - } } if (stats_id == WMI_REQUEST_BCN_STAT) { @@ -4473,9 +4455,8 @@ void ath11k_wmi_fw_stats_fill(struct ath11k *ar, len += scnprintf(buf + len, buf_len - len, "%30s\n\n", "==================="); - list_for_each_entry(bcn, &fw_stats->bcn, list) { + list_for_each_entry(bcn, &fw_stats->bcn, list) ath11k_wmi_fw_bcn_stats_fill(ar, bcn, buf, &len); - } } if (stats_id & WMI_REQUEST_PEER_STAT) { @@ -4486,9 +4467,8 @@ void ath11k_wmi_fw_stats_fill(struct ath11k *ar, len += scnprintf(buf + len, buf_len - len, "%30s\n\n", "================="); - list_for_each_entry(peer, &fw_stats->peers, list) { + list_for_each_entry(peer, &fw_stats->peers, list) ath11k_wmi_fw_peer_stats_fill(peer, buf, &len); - } } if (stats_id & WMI_REQUEST_PEER_EXTD_STAT) { @@ -4500,9 +4480,8 @@ void ath11k_wmi_fw_stats_fill(struct ath11k *ar, len += scnprintf(buf + len, buf_len - len, "%30s\n\n", "======================"); - list_for_each_entry(peer_extd, &fw_stats->peers_extd, list) { + list_for_each_entry(peer_extd, &fw_stats->peers_extd, list) ath11k_wmi_fw_peer_extd_stats_fill(peer_extd, buf, &len); - } } unlock: @@ -4970,8 +4949,7 @@ static void ath11k_scan_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) struct ath11k *ar; struct wmi_scan_event scan_ev = {0}; - if (ath11k_pull_scan_ev(ab, evt_buf, len, - &scan_ev) != 0) { + if (ath11k_pull_scan_ev(ab, evt_buf, len, &scan_ev) != 0) { ath11k_warn(ab, "failed to extract scan event"); return; } @@ -5000,8 +4978,7 @@ static void ath11k_scan_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) ath11k_dbg(ab, ATH11K_DBG_WMI, "scan event %s type %d reason %d freq %d req_id %d scan_id %d vdev_id %d state %s (%d)\n", - ath11k_wmi_event_scan_type_str(scan_ev.event_type, - scan_ev.reason), + ath11k_wmi_event_scan_type_str(scan_ev.event_type, scan_ev.reason), scan_ev.event_type, scan_ev.reason, scan_ev.channel_freq, scan_ev.scan_req_id, scan_ev.scan_id, scan_ev.vdev_id, ath11k_scan_state_str(ar->scan.state), ar->scan.state); @@ -5306,8 +5283,7 @@ static void ath11k_vdev_install_key_compl_event(struct ath11k_base *ab, u8 *evt_ ar->install_key_status = 0; - if (install_key_compl.status != - WMI_VDEV_INSTALL_KEY_COMPL_STATUS_SUCCESS) { + if (install_key_compl.status != WMI_VDEV_INSTALL_KEY_COMPL_STATUS_SUCCESS) { ath11k_warn(ab, "install key failed for %pM status %d\n", install_key_compl.macaddr, install_key_compl.status); ar->install_key_status = install_key_compl.status; @@ -5697,7 +5673,7 @@ static int ath11k_connect_pdev_htc_service(struct ath11k_base *sc, int ret; int i; - arg_len = (sizeof(u32) * ut_cmd.num_args); + arg_len = sizeof(u32) * ut_cmd.num_args; buf_len = sizeof(ut_cmd) + arg_len + TLV_HDR_SIZE; skb = ath11k_wmi_alloc_skb(wmi->wmi_sc, buf_len); @@ -5705,10 +5681,8 @@ static int ath11k_connect_pdev_htc_service(struct ath11k_base *sc, return -ENOMEM; cmd = (struct wmi_unit_test_cmd *)skb->data; - cmd->tlv_header = - FIELD_PREP(WMI_TLV_TAG, - WMI_TAG_UNIT_TEST_CMD) | - FIELD_PREP(WMI_TLV_LEN, sizeof(ut_cmd) - TLV_HDR_SIZE); + cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_UNIT_TEST_CMD) | + FIELD_PREP(WMI_TLV_LEN, sizeof(ut_cmd) - TLV_HDR_SIZE); cmd->vdev_id = ut_cmd.vdev_id; cmd->module_id = ut_cmd.module_id; @@ -5727,15 +5701,14 @@ static int ath11k_connect_pdev_htc_service(struct ath11k_base *sc, for (i = 0; i < ut_cmd.num_args; i++) ut_cmd_args[i] = test_args[i]; - ret = ath11k_wmi_cmd_send(wmi, skb, - WMI_UNIT_TEST_CMDID); + ret = ath11k_wmi_cmd_send(wmi, skb, WMI_UNIT_TEST_CMDID); if (ret) { - ath11k_warn(ar->ab, - "failed to send WMI_UNIT_TEST CMD :%d\n", + ath11k_warn(ar->ab, "failed to send WMI_UNIT_TEST CMD :%d\n", ret); dev_kfree_skb(skb); } + ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "WMI unit test : module %d vdev %d n_args %d token %d\n", cmd->module_id, cmd->vdev_id, cmd->num_args, From patchwork Wed Jun 26 12:07:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasanthakumar Thiagarajan X-Patchwork-Id: 11017537 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 C87886C5 for ; Wed, 26 Jun 2019 12:08:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B43572838F for ; Wed, 26 Jun 2019 12:08:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A8AA128774; Wed, 26 Jun 2019 12:08:19 +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 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 9725A2838F for ; Wed, 26 Jun 2019 12:08:18 +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:References:In-Reply-To: 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: List-Owner; bh=OwzUer3KyhSeYzzVb2ZL8qJ33aczVdfD7CK3R3NY7BI=; b=Wc84/KE76BR7fu IVeyDlf7oDlvSYqMvOcZ0/ihCKN0PafMuhi8Toyj3GdDbUFtsXZvm6PmvXqqlsqAEHPKCSWIs3Upq rXIjUwUIcx1UDXyfUugWIVPINk8Pu/kLpr9N6yHhZO11wrbrueTW0hEAmiqnkEJ0nnDIEBDj7rlSH 2WOy3kl+GiQyQ+HCS29342At21QspjJ5oLFjwtKf8FtTlTSokuzq7NA51iqUaSUxxE+a2OFWN81IV qXho2b6ZM/E6IIG4CSwh6fcm+atWXCd1YjE4QUZy2jlHgSIRET4jPbp8pWD8CTFGOYvpuqcmuGy8X Tc9EI7BPLG0E3scYz5SA==; 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 1hg6im-0001c8-8H; Wed, 26 Jun 2019 12:08:16 +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-0001b2-PH for ath11k@lists.infradead.org; Wed, 26 Jun 2019 12:08:14 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 729E160AA8; Wed, 26 Jun 2019 12:08:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550892; bh=PmnZr59uyUtheyR5ilWe3IOQ591+H6oythZWvIv5yzs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Dz4NC+Pj3v8adxCA7zS+6iRI38JNMtV2W2GZEtG0d9khh9uhX4lPjYlXrAko89fP0 yNOR3Ikl1BBD2FofTCFSO1RtdIlxwYlhRc89BjjBj6oCW2ud0rrhgZdjK+lmFWpHGG +idGT9ADFDlw6cfdjxjGkvYNZhVGG9CSrf+DqY2A= 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 55468609F3 for ; Wed, 26 Jun 2019 12:08:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550891; bh=PmnZr59uyUtheyR5ilWe3IOQ591+H6oythZWvIv5yzs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=F8UXH6wuAyRkyVZuXBrHh6/W8mVCORkOdLhbAR43eQFNXwHlFrIX8mFMhDt6LVXmD LqGLoiHiwr/MYUbvwJK83Zu4spQCoH+gQo0Rlb09xFkXBvGuj54yUNhUtmG/XYbqw2 G1Rxy7xgagYY5BlfqGEH8TbvPax/1Ezqvwhu/zjY= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 55468609F3 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 3/4] ath11k/wmi: Remove unnecessary type casting Date: Wed, 26 Jun 2019 17:37:39 +0530 Message-Id: <1561550860-2928-3-git-send-email-vthiagar@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> References: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190626_050812_864429_6F0A7DF5 X-CRM114-Status: GOOD ( 10.87 ) 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 - Remove unnecessary type cast of void * - Remove type casting in ether_addr_copy() and use u8 *mac_addr.addri directly. - Remove the type cast in ath11k_wmi_vdev_install_key() with memcpy(). Signed-off-by: Vasanthakumar Thiagarajan --- drivers/net/wireless/ath/ath11k/wmi.c | 58 +++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 6807ee5..713f8b3 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -604,7 +604,7 @@ int ath11k_wmi_vdev_create(struct ath11k *ar, u8 *macaddr, cmd->vdev_subtype = param->subtype; cmd->num_cfg_txrx_streams = WMI_NUM_SUPPORTED_BAND_MAX; cmd->pdev_id = param->pdev_id; - ether_addr_copy((u8 *)&cmd->vdev_macaddr, macaddr); + ether_addr_copy(cmd->vdev_macaddr.addr, macaddr); ptr = skb->data + sizeof(*cmd); len = WMI_NUM_SUPPORTED_BAND_MAX * sizeof(*txrx_streams); @@ -614,7 +614,7 @@ int ath11k_wmi_vdev_create(struct ath11k *ar, u8 *macaddr, FIELD_PREP(WMI_TLV_LEN, len); ptr += TLV_HDR_SIZE; - txrx_streams = (void *)ptr; + txrx_streams = ptr; len = sizeof(*txrx_streams); txrx_streams->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_VDEV_TXRX_STREAMS) | @@ -822,8 +822,8 @@ int ath11k_wmi_vdev_start(struct ath11k *ar, struct wmi_vdev_start_req_arg *arg, cmd->flags |= WMI_VDEV_START_LDPC_RX_ENABLED; - ptr = (void *)skb->data + sizeof(*cmd); - chan = (struct wmi_channel *)ptr; + ptr = skb->data + sizeof(*cmd); + chan = ptr; ath11k_wmi_put_wmi_channel(chan, arg); @@ -910,7 +910,7 @@ int ath11k_wmi_send_peer_create_cmd(struct ath11k *ar, cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PEER_CREATE_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); - ether_addr_copy((u8 *)&cmd->peer_macaddr, param->peer_addr); + ether_addr_copy(cmd->peer_macaddr.addr, param->peer_addr); cmd->peer_type = param->peer_type; cmd->vdev_id = param->vdev_id; @@ -943,7 +943,7 @@ int ath11k_wmi_send_peer_delete_cmd(struct ath11k *ar, cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PEER_DELETE_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); - ether_addr_copy((u8 *)&cmd->peer_macaddr, peer_addr); + ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); cmd->vdev_id = vdev_id; ath11k_dbg(ar->ab, ATH11K_DBG_WMI, @@ -1049,7 +1049,7 @@ int ath11k_wmi_send_peer_flush_tids_cmd(struct ath11k *ar, cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PEER_FLUSH_TIDS_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); - ether_addr_copy((u8 *)&cmd->peer_macaddr, peer_addr); + ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); cmd->peer_tid_bitmap = param->peer_tid_bitmap; cmd->vdev_id = param->vdev_id; @@ -1086,7 +1086,7 @@ int ath11k_wmi_peer_rx_reorder_queue_setup(struct ath11k *ar, WMI_TAG_REORDER_QUEUE_SETUP_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); - ether_addr_copy((u8 *)&cmd->peer_macaddr, (u8 *)addr); + ether_addr_copy(cmd->peer_macaddr.addr, addr); cmd->vdev_id = vdev_id; cmd->tid = tid; cmd->queue_ptr_lo = lower_32_bits(paddr); @@ -1128,7 +1128,7 @@ int ath11k_wmi_peer_rx_reorder_queue_setup(struct ath11k *ar, WMI_TAG_REORDER_QUEUE_REMOVE_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); - ether_addr_copy((u8 *)&cmd->peer_macaddr, param->peer_macaddr); + ether_addr_copy(cmd->peer_macaddr.addr, param->peer_macaddr); cmd->vdev_id = param->vdev_id; cmd->tid_mask = param->peer_tid_bitmap; @@ -1294,7 +1294,7 @@ int ath11k_wmi_send_set_ap_ps_param_cmd(struct ath11k *ar, u8 *peer_addr, FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); cmd->vdev_id = param->vdev_id; - ether_addr_copy((u8 *)&cmd->peer_macaddr, peer_addr); + ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); cmd->param = param->param; cmd->value = param->value; @@ -1552,7 +1552,7 @@ int ath11k_wmi_vdev_install_key(struct ath11k *ar, cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_VDEV_INSTALL_KEY_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); cmd->vdev_id = arg->vdev_id; - ether_addr_copy((u8 *)&cmd->peer_macaddr, arg->macaddr); + ether_addr_copy(cmd->peer_macaddr.addr, arg->macaddr); cmd->key_idx = arg->key_idx; cmd->key_flags = arg->key_flags; cmd->key_cipher = arg->key_cipher; @@ -1561,7 +1561,7 @@ int ath11k_wmi_vdev_install_key(struct ath11k *ar, cmd->key_rxmic_len = arg->key_rxmic_len; if (arg->key_rsc_counter) - memcpy((u8 *)&cmd->key_rsc_counter, (u8 *)&arg->key_rsc_counter, + memcpy(&cmd->key_rsc_counter, &arg->key_rsc_counter, sizeof(struct wmi_key_seq_counter)); tlv = (struct wmi_tlv *)(skb->data + sizeof(*cmd)); @@ -1692,7 +1692,7 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, ptr = skb->data; - cmd = (struct wmi_peer_assoc_complete_cmd *)ptr; + cmd = ptr; cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PEER_ASSOC_COMPLETE_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); @@ -1704,7 +1704,7 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, ath11k_wmi_copy_peer_flags(cmd, param); - ether_addr_copy((u8 *)&cmd->peer_macaddr, param->peer_mac); + ether_addr_copy(cmd->peer_macaddr.addr, param->peer_mac); cmd->peer_rate_caps = param->peer_rate_caps; cmd->peer_caps = param->peer_caps; @@ -1752,7 +1752,7 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, /* VHT Rates */ ptr += peer_ht_rates_align; - mcs = (struct wmi_vht_rate_set *)ptr; + mcs = ptr; mcs->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_VHT_RATE_SET) | FIELD_PREP(WMI_TLV_LEN, sizeof(*mcs) - TLV_HDR_SIZE); @@ -1784,7 +1784,7 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, /* Loop through the HE rate set */ for (i = 0; i < param->peer_he_mcs_count; i++) { - he_mcs = (struct wmi_he_rate_set *)ptr; + he_mcs = ptr; he_mcs->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_HE_RATE_SET) | FIELD_PREP(WMI_TLV_LEN, @@ -1949,7 +1949,7 @@ int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar, ptr = skb->data; - cmd = (struct wmi_start_scan_cmd *)ptr; + cmd = ptr; cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_START_SCAN_CMD) | FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); @@ -2001,7 +2001,7 @@ int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar, ptr += TLV_HDR_SIZE; if (params->num_ssids) { - ssid = (struct wmi_ssid *)ptr; + ssid = ptr; for (i = 0; i < params->num_ssids; ++i) { ssid->ssid_len = params->ssid[i].length; memcpy(ssid->ssid, params->ssid[i].ssid, @@ -2017,12 +2017,12 @@ int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar, FIELD_PREP(WMI_TLV_LEN, len); ptr += TLV_HDR_SIZE; - bssid = (struct wmi_mac_addr *)ptr; + bssid = ptr; if (params->num_bssid) { for (i = 0; i < params->num_bssid; ++i) { - ether_addr_copy((u8 *)bssid, - (u8 *)¶ms->bssid_list[i]); + ether_addr_copy(bssid->addr, + params->bssid_list[i].addr); bssid++; } } @@ -2139,7 +2139,7 @@ int ath11k_wmi_send_scan_chan_list_cmd(struct ath11k *ar, tchan_info = &chan_list->ch_param[0]; for (i = 0; i < chan_list->nallchans; ++i) { - chan_info = (struct wmi_channel *)ptr; + chan_info = ptr; memset(chan_info, 0, sizeof(*chan_info)); len = sizeof(*chan_info); chan_info->tlv_header = FIELD_PREP(WMI_TLV_TAG, @@ -2331,7 +2331,7 @@ int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable) FIELD_PREP(WMI_TLV_LEN, 0); ptr += TLV_HDR_SIZE; - info = (struct wmi_pdev_pktlog_filter_info *)ptr; + info = ptr; ether_addr_copy(info->peer_macaddr.addr, addr); info->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PDEV_PEER_PKTLOG_FILTER_INFO) | @@ -2586,7 +2586,7 @@ static int ath11k_init_cmd_send(struct ath11k_pdev_wmi *wmi, FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE); ptr = skb->data + sizeof(*cmd); - cfg = (struct wmi_resource_config *)ptr; + cfg = ptr; ath11k_wmi_copy_resource_config(cfg, param->res_cfg); @@ -2594,7 +2594,7 @@ static int ath11k_init_cmd_send(struct ath11k_pdev_wmi *wmi, FIELD_PREP(WMI_TLV_LEN, sizeof(*cfg) - TLV_HDR_SIZE); ptr += sizeof(*cfg); - host_mem_chunks = (struct wlan_host_mem_chunk *)(ptr + TLV_HDR_SIZE); + host_mem_chunks = ptr + TLV_HDR_SIZE; len = sizeof(struct wlan_host_mem_chunk); for (idx = 0; idx < param->num_mem_chunks; ++idx) { @@ -3221,8 +3221,8 @@ static int ath11k_pull_peer_del_resp_ev(struct ath11k_base *ab, u8 *evt_buf, u32 memset(peer_del_resp, 0, sizeof(*peer_del_resp)); peer_del_resp->vdev_id = ev->vdev_id; - ether_addr_copy((u8 *)&peer_del_resp->peer_macaddr, - (u8 *)&ev->peer_macaddr); + ether_addr_copy(peer_del_resp->peer_macaddr.addr, + ev->peer_macaddr.addr); kfree(tb); return 0; @@ -4631,7 +4631,7 @@ static int ath11k_wmi_tlv_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len, ab->wlan_init_status = fixed_param->status; rdy_parse->num_extra_mac_addr = fixed_param->num_extra_mac_addr; - ether_addr_copy(ab->mac_addr, (u8 *)&fixed_param->mac_addr); + ether_addr_copy(ab->mac_addr, fixed_param->mac_addr.addr); ab->wmi_ready = true; break; case WMI_TAG_ARRAY_FIXED_STRUCT: @@ -4643,7 +4643,7 @@ static int ath11k_wmi_tlv_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len, for (i = 0; i < ab->num_radios; i++) { pdev = &ab->pdevs[i]; - ether_addr_copy(pdev->mac_addr, (u8 *)&addr_list[i]); + ether_addr_copy(pdev->mac_addr, addr_list[i].addr); } ab->pdevs_macaddr_valid = true; break; From patchwork Wed Jun 26 12:07:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasanthakumar Thiagarajan X-Patchwork-Id: 11017543 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 4DC851575 for ; Wed, 26 Jun 2019 12:08:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 363AE2838F for ; Wed, 26 Jun 2019 12:08:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2A7AD28774; Wed, 26 Jun 2019 12:08:23 +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 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 A2DC32838F for ; Wed, 26 Jun 2019 12:08:21 +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:References:In-Reply-To: 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: List-Owner; bh=HTHTQpnCLNBtEe9ZHeXnFLxOK11fkQizHLrK7RtKtSc=; b=mpdR0rCXssFfR+ D9nC0BVSFzAfVg9Hk8KfDvRiYUtF0WPqrcabADb2IqVR36RVdv4rLnJ482EEQDmY4uXHH8/fQM3XF bMjud78SYDhdHBZT+9xl13NA5PipuXZ4GdagdEa7UoS2PLaRLjmPxGGgRjU7NGr1MDd+2dCk9ruWX 0gN4Jt7Aw/sUlRBAWrAitzauGvyDzRSL4m5ByE+MJL02dO45OgnAzuwWIi+CMxIcgCoJfqU/hN7u7 XroEIr00tbwzUxfzWCLE8+UbkSloTE9717gPQf8MKCOZYDmP6qjgMAI6PjVJ9K28wxGimEAqJuRjE kybwtnYem+CYI0MbmCdA==; 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 1hg6iq-0001eA-1G; Wed, 26 Jun 2019 12:08:20 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hg6ik-0001bp-UM for ath11k@lists.infradead.org; Wed, 26 Jun 2019 12:08:17 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id B1EB260A33; Wed, 26 Jun 2019 12:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550894; bh=GoSI7miM+gtH/qixkpwv8WELqKFHleiOUbTxahy7Y+A=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PdruTaILcb/OcnsmQMRccPAoBI9vu17wM1z4gTWrJ8wvhY11ouF6MCX8J/Hp774u/ az7ALlUiudY42jPlMrhe+3XyduulqVhihidIbVe//7gR/Ufo50OsEi9cIsBRUSglil +bZ5XnBa1pIV606Y0eGT1M7wg4q3YlZcn4VPzoJI= 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 5BBD660A05 for ; Wed, 26 Jun 2019 12:08:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1561550893; bh=GoSI7miM+gtH/qixkpwv8WELqKFHleiOUbTxahy7Y+A=; h=From:To:Subject:Date:In-Reply-To:References:From; b=eo0mZ1ssNwGNJXvezX4J+reSrtXxwXC0pXzR07N0Qs84lQCWRpA7Pkc57YhJNgdex 6sfU7JJ/AOU/K+QvzvazFowIK4uI/hKLfZUUEwevgjIwvgorbT4aJX5Gzwv0YZTcjW ykgTLjns7lQDEW1mYE38t8RZGVkXWMOufFYsQXj0= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 5BBD660A05 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 4/4] ath11k/wmi: Clean up function parameter list in wmi event handlers Date: Wed, 26 Jun 2019 17:37:40 +0530 Message-Id: <1561550860-2928-4-git-send-email-vthiagar@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> References: <1561550860-2928-1-git-send-email-vthiagar@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190626_050815_011491_54C2EA8D X-CRM114-Status: GOOD ( 12.24 ) 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 Instead of passing skb->data and skb->len to the wmi event handlers pass skb itself and retrieve data and len from inside the handlers from skb. Signed-off-by: Vasanthakumar Thiagarajan --- drivers/net/wireless/ath/ath11k/debug.c | 4 +- drivers/net/wireless/ath/ath11k/debug.h | 7 +- drivers/net/wireless/ath/ath11k/wmi.c | 212 +++++++++++++++----------------- drivers/net/wireless/ath/ath11k/wmi.h | 2 +- 4 files changed, 103 insertions(+), 122 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/debug.c b/drivers/net/wireless/ath/ath11k/debug.c index 6aa260c..76cbd22 100644 --- a/drivers/net/wireless/ath/ath11k/debug.c +++ b/drivers/net/wireless/ath/ath11k/debug.c @@ -166,7 +166,7 @@ static void ath11k_debug_fw_stats_reset(struct ath11k *ar) spin_unlock_bh(&ar->data_lock); } -void ath11k_debug_fw_stats_process(struct ath11k_base *ab, u8 *evt_buf, u32 len) +void ath11k_debug_fw_stats_process(struct ath11k_base *ab, struct sk_buff *skb) { struct ath11k_fw_stats stats = {}; struct ath11k *ar; @@ -184,7 +184,7 @@ void ath11k_debug_fw_stats_process(struct ath11k_base *ab, u8 *evt_buf, u32 len) INIT_LIST_HEAD(&stats.bcn); INIT_LIST_HEAD(&stats.peers_extd); - ret = ath11k_wmi_pull_fw_stats(ab, evt_buf, len, &stats); + ret = ath11k_wmi_pull_fw_stats(ab, skb, &stats); if (ret) { ath11k_warn(ab, "failed to pull fw stats: %d\n", ret); goto free; diff --git a/drivers/net/wireless/ath/ath11k/debug.h b/drivers/net/wireless/ath/ath11k/debug.h index d0c69c4..e73a4f7 100644 --- a/drivers/net/wireless/ath/ath11k/debug.h +++ b/drivers/net/wireless/ath/ath11k/debug.h @@ -136,8 +136,7 @@ static inline void ath11k_dbg_dump(struct ath11k_base *ab, void ath11k_debug_unregister(struct ath11k *ar); void ath11k_dbg_htt_ext_stats_handler(struct ath11k_base *ab, struct sk_buff *skb); -void ath11k_debug_fw_stats_process(struct ath11k_base *ab, u8 *evt_buf, - u32 len); +void ath11k_debug_fw_stats_process(struct ath11k_base *ab, struct sk_buff *skb); void ath11k_debug_fw_stats_init(struct ath11k *ar); int ath11k_dbg_htt_stats_req(struct ath11k *ar); @@ -191,8 +190,8 @@ static inline void ath11k_dbg_htt_ext_stats_handler(struct ath11k_base *ab, { } -static inline void ath11k_debug_fw_stats_process(struct ath11k_base *ab, u8 *evt_buf, - u32 len) +static inline void ath11k_debug_fw_stats_process(struct ath11k_base *ab, + struct sk_buff *skb) { } diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 713f8b3..1de2299 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -258,9 +258,8 @@ static int ath11k_pull_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle, const void *ptr, struct ath11k_service_ext_param *param) { - struct wmi_service_ready_ext_event *ev; + const struct wmi_service_ready_ext_event *ev = ptr; - ev = (struct wmi_service_ready_ext_event *)ptr; if (!ev) return -EINVAL; @@ -408,7 +407,7 @@ static int ath11k_pull_service_ready_tlv(struct ath11k_base *ab, const void *evt_buf, struct ath11k_targ_cap *cap) { - struct wmi_service_ready_event *ev = (struct wmi_service_ready_event *)evt_buf; + const struct wmi_service_ready_event *ev = evt_buf; if (!ev) { ath11k_err(ab, "%s: failed by NULL param\n", @@ -488,12 +487,12 @@ static int ath11k_wmi_tlv_svc_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len return 0; } -static int ath11k_service_ready_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static int ath11k_service_ready_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_tlv_svc_ready_parse svc_ready = { }; int ret; - ret = ath11k_wmi_tlv_iter(ab, evt_buf, len, + ret = ath11k_wmi_tlv_iter(ab, skb->data, skb->len, ath11k_wmi_tlv_svc_rdy_parse, &svc_ready); if (ret) { @@ -1360,7 +1359,7 @@ int ath11k_send_crash_inject_cmd(struct ath11k_pdev_wmi *wmi_handle, if (!skb) return -ENOMEM; - cmd = (void *)skb->data; + cmd = (struct wmi_force_fw_hang_cmd *)skb->data; cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_FORCE_FW_HANG_CMD) | FIELD_PREP(WMI_TLV_LEN, len - TLV_HDR_SIZE); @@ -2324,7 +2323,7 @@ int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable) cmd->num_mac = 1; cmd->enable = enable; - ptr = (void *)skb->data + sizeof(*cmd); + ptr = skb->data + sizeof(*cmd); tlv = ptr; tlv->header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_ARRAY_STRUCT) | @@ -3000,12 +2999,12 @@ static int ath11k_wmi_tlv_svc_rdy_ext_parse(struct ath11k_base *ab, } static int ath11k_service_ready_ext_event(struct ath11k_base *ab, - u8 *evt_buf, u32 len) + struct sk_buff *skb) { struct wmi_tlv_svc_rdy_ext_parse svc_rdy_ext = { }; int ret; - ret = ath11k_wmi_tlv_iter(ab, evt_buf, len, + ret = ath11k_wmi_tlv_iter(ab, skb->data, skb->len, ath11k_wmi_tlv_svc_rdy_ext_parse, &svc_rdy_ext); if (ret) { @@ -3016,14 +3015,14 @@ static int ath11k_service_ready_ext_event(struct ath11k_base *ab, return 0; } -static int ath11k_pull_vdev_start_resp_tlv(struct ath11k_base *ab, u8 *evt_buf, u32 len, +static int ath11k_pull_vdev_start_resp_tlv(struct ath11k_base *ab, struct sk_buff *skb, struct wmi_vdev_start_resp_event *vdev_rsp) { const void **tb; const struct wmi_vdev_start_resp_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3091,9 +3090,8 @@ static int ath11k_pull_vdev_start_resp_tlv(struct ath11k_base *ab, u8 *evt_buf, } static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, - u8 *evt_buf, - struct cur_regulatory_info *reg_info, - u32 len) + struct sk_buff *skb, + struct cur_regulatory_info *reg_info) { const void **tb; const struct wmi_reg_chan_list_cc_event *chan_list_event_hdr; @@ -3103,7 +3101,7 @@ static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, ath11k_dbg(ab, ATH11K_DBG_WMI, "processing regulatory channel list\n"); - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3197,14 +3195,14 @@ static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab, return 0; } -static int ath11k_pull_peer_del_resp_ev(struct ath11k_base *ab, u8 *evt_buf, u32 len, +static int ath11k_pull_peer_del_resp_ev(struct ath11k_base *ab, struct sk_buff *skb, struct wmi_peer_delete_resp_event *peer_del_resp) { const void **tb; const struct wmi_peer_delete_resp_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3257,14 +3255,14 @@ static int ath11k_pull_bcn_tx_status_ev(struct ath11k_base *ab, void *evt_buf, return 0; } -static int ath11k_pull_vdev_stopped_param_tlv(struct ath11k_base *ab, u8 *evt_buf, - u32 len, u32 *vdev_id) +static int ath11k_pull_vdev_stopped_param_tlv(struct ath11k_base *ab, struct sk_buff *skb, + u32 *vdev_id) { const void **tb; const struct wmi_vdev_stopped_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3372,14 +3370,14 @@ static int wmi_process_mgmt_tx_comp(struct ath11k *ar, u32 desc_id, } static int ath11k_pull_mgmt_tx_compl_param_tlv(struct ath11k_base *ab, - u8 *evt_buf, u32 len, + struct sk_buff *skb, struct wmi_mgmt_tx_compl_event *param) { const void **tb; const struct wmi_mgmt_tx_compl_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3543,14 +3541,14 @@ static void ath11k_wmi_event_scan_foreign_chan(struct ath11k *ar, u32 freq) } } -static int ath11k_pull_scan_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, struct wmi_scan_event *scan_evt_param) +static int ath11k_pull_scan_ev(struct ath11k_base *ab, struct sk_buff *skb, + struct wmi_scan_event *scan_evt_param) { const void **tb; const struct wmi_scan_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3576,14 +3574,14 @@ static int ath11k_pull_scan_ev(struct ath11k_base *ab, u8 *evt_buf, return 0; } -static int ath11k_pull_peer_sta_kickout_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, struct wmi_peer_sta_kickout_arg *arg) +static int ath11k_pull_peer_sta_kickout_ev(struct ath11k_base *ab, struct sk_buff *skb, + struct wmi_peer_sta_kickout_arg *arg) { const void **tb; const struct wmi_peer_sta_kickout_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3603,14 +3601,14 @@ static int ath11k_pull_peer_sta_kickout_ev(struct ath11k_base *ab, u8 *evt_buf, return 0; } -static int ath11k_pull_roam_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, struct wmi_roam_event *roam_ev) +static int ath11k_pull_roam_ev(struct ath11k_base *ab, struct sk_buff *skb, + struct wmi_roam_event *roam_ev) { const void **tb; const struct wmi_roam_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3690,14 +3688,14 @@ static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, } static int -ath11k_pull_pdev_bss_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, +ath11k_pull_pdev_bss_chan_info_ev(struct ath11k_base *ab, struct sk_buff *skb, struct wmi_pdev_bss_chan_info_event *bss_ch_info_ev) { const void **tb; const struct wmi_pdev_bss_chan_info_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3730,14 +3728,14 @@ static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, } static int -ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, u8 *evt_buf, u32 len, +ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, struct sk_buff *skb, struct wmi_vdev_install_key_complete_arg *arg) { const void **tb; const struct wmi_vdev_install_key_compl_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3761,15 +3759,14 @@ static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, u8 *evt_buf, return 0; } -static int ath11k_pull_peer_assoc_conf_ev(struct ath11k_base *ab, u8 *evt_buf, - u32 len, +static int ath11k_pull_peer_assoc_conf_ev(struct ath11k_base *ab, struct sk_buff *skb, struct wmi_peer_assoc_conf_arg *peer_assoc_conf) { const void **tb; const struct wmi_peer_assoc_conf_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -3914,15 +3911,16 @@ static void ath11k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src, dst->rx_mc_bc_cnt = src->rx_mc_bc_cnt; } -int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, u8 *evt_buf, u32 len, +int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, struct sk_buff *skb, struct ath11k_fw_stats *stats) { const void **tb; const struct wmi_stats_event *ev; const void *data; int i, ret; + u32 len = skb->len; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -4510,7 +4508,7 @@ static bool ath11k_reg_is_world_alpha(char *alpha) return alpha[0] == '0' && alpha[1] == '0'; } -static int ath11k_reg_chan_list_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static int ath11k_reg_chan_list_event(struct ath11k_base *ab, struct sk_buff *skb) { struct cur_regulatory_info *reg_info = NULL; struct ieee80211_regdomain *regd = NULL; @@ -4524,7 +4522,7 @@ static int ath11k_reg_chan_list_event(struct ath11k_base *ab, u8 *evt_buf, u32 l goto fallback; } - ret = ath11k_pull_reg_chan_list_update_ev(ab, evt_buf, reg_info, len); + ret = ath11k_pull_reg_chan_list_update_ev(ab, skb, reg_info); if (ret) { ath11k_warn(ab, "failed to extract regulatory info from received event\n"); goto fallback; @@ -4654,12 +4652,12 @@ static int ath11k_wmi_tlv_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len, return 0; } -static int ath11k_ready_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static int ath11k_ready_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_tlv_rdy_parse rdy_parse = { }; int ret; - ret = ath11k_wmi_tlv_iter(ab, evt_buf, len, + ret = ath11k_wmi_tlv_iter(ab, skb->data, skb->len, ath11k_wmi_tlv_rdy_parse, &rdy_parse); if (ret) { ath11k_warn(ab, "failed to parse tlv %d\n", ret); @@ -4670,12 +4668,11 @@ static int ath11k_ready_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) return 0; } -static void ath11k_peer_delete_resp_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_peer_delete_resp_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_peer_delete_resp_event peer_del_resp; - if (ath11k_pull_peer_del_resp_ev(ab, evt_buf, len, - &peer_del_resp) != 0) { + if (ath11k_pull_peer_del_resp_ev(ab, skb, &peer_del_resp) != 0) { ath11k_warn(ab, "failed to extract peer delete resp"); return; } @@ -4701,14 +4698,13 @@ static inline const char *ath11k_wmi_vdev_resp_print(u32 vdev_resp_status) } } -static void ath11k_vdev_start_resp_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_vdev_start_resp_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_vdev_start_resp_event vdev_start_resp; struct ath11k *ar; u32 status; - if (ath11k_pull_vdev_start_resp_tlv(ab, evt_buf, len, - &vdev_start_resp) != 0) { + if (ath11k_pull_vdev_start_resp_tlv(ab, skb, &vdev_start_resp) != 0) { ath11k_warn(ab, "failed to extract vdev start resp"); return; } @@ -4740,24 +4736,23 @@ static void ath11k_vdev_start_resp_event(struct ath11k_base *ab, u8 *evt_buf, u3 vdev_start_resp.vdev_id); } -static void ath11k_bcn_tx_status_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_bcn_tx_status_event(struct ath11k_base *ab, struct sk_buff *skb) { u32 vdev_id, tx_status; - if (ath11k_pull_bcn_tx_status_ev(ab, evt_buf, len, + if (ath11k_pull_bcn_tx_status_ev(ab, skb->data, skb->len, &vdev_id, &tx_status) != 0) { ath11k_warn(ab, "failed to extract bcn tx status"); return; } } -static void ath11k_vdev_stopped_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_vdev_stopped_event(struct ath11k_base *ab, struct sk_buff *skb) { struct ath11k *ar; u32 vdev_id = 0; - if (ath11k_pull_vdev_stopped_param_tlv(ab, evt_buf, len, - &vdev_id) != 0) { + if (ath11k_pull_vdev_stopped_param_tlv(ab, skb, &vdev_id) != 0) { ath11k_warn(ab, "failed to extract vdev stopped event"); return; } @@ -4894,8 +4889,7 @@ static void ath11k_mgmt_tx_compl_event(struct ath11k_base *ab, struct sk_buff *s struct wmi_mgmt_tx_compl_event tx_compl_param = {0}; struct ath11k *ar; - if (ath11k_pull_mgmt_tx_compl_param_tlv(ab, skb->data, skb->len, - &tx_compl_param) != 0) { + if (ath11k_pull_mgmt_tx_compl_param_tlv(ab, skb, &tx_compl_param) != 0) { ath11k_warn(ab, "failed to extract mgmt tx compl event"); return; } @@ -4944,12 +4938,12 @@ static struct ath11k *ath11k_get_ar_on_scan_abort(struct ath11k_base *ab, return NULL; } -static void ath11k_scan_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_scan_event(struct ath11k_base *ab, struct sk_buff *skb) { struct ath11k *ar; struct wmi_scan_event scan_ev = {0}; - if (ath11k_pull_scan_ev(ab, evt_buf, len, &scan_ev) != 0) { + if (ath11k_pull_scan_ev(ab, skb, &scan_ev) != 0) { ath11k_warn(ab, "failed to extract scan event"); return; } @@ -5013,14 +5007,14 @@ static void ath11k_scan_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) rcu_read_unlock(); } -static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_peer_sta_kickout_arg arg = {}; struct ieee80211_sta *sta; struct ath11k_peer *peer; struct ath11k *ar; - if (ath11k_pull_peer_sta_kickout_ev(ab, evt_buf, len, &arg) != 0) { + if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) { ath11k_warn(ab, "failed to extract peer sta kickout event"); return; } @@ -5062,12 +5056,12 @@ static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, u8 *evt_buf, u rcu_read_unlock(); } -static void ath11k_roam_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_roam_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_roam_event roam_ev = {}; struct ath11k *ar; - if (ath11k_pull_roam_ev(ab, evt_buf, len, &roam_ev) != 0) { + if (ath11k_pull_roam_ev(ab, skb, &roam_ev) != 0) { ath11k_warn(ab, "failed to extract roam event"); return; } @@ -5108,7 +5102,7 @@ static void ath11k_roam_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) rcu_read_unlock(); } -static void ath11k_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_chan_info_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_chan_info_event ch_info_ev = {0}; struct ath11k *ar; @@ -5117,7 +5111,7 @@ static void ath11k_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) /* HW channel counters frequency value in hertz */ u32 cc_freq_hz = ab->cc_freq_hz; - if (ath11k_pull_chan_info_ev(ab, evt_buf, len, &ch_info_ev) != 0) { + if (ath11k_pull_chan_info_ev(ab, skb->data, skb->len, &ch_info_ev) != 0) { ath11k_warn(ab, "failed to extract chan info event"); return; } @@ -5182,7 +5176,7 @@ static void ath11k_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) } static void -ath11k_pdev_bss_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +ath11k_pdev_bss_chan_info_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_pdev_bss_chan_info_event bss_ch_info_ev = {}; struct survey_info *survey; @@ -5191,8 +5185,7 @@ static void ath11k_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) u64 busy, total, tx, rx, rx_bss; int idx; - if (ath11k_pull_pdev_bss_chan_info_ev(ab, evt_buf, len, - &bss_ch_info_ev) != 0) { + if (ath11k_pull_pdev_bss_chan_info_ev(ab, skb, &bss_ch_info_ev) != 0) { ath11k_warn(ab, "failed to extract pdev bss chan info event"); return; } @@ -5255,14 +5248,13 @@ static void ath11k_chan_info_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) rcu_read_unlock(); } -static void ath11k_vdev_install_key_compl_event(struct ath11k_base *ab, u8 *evt_buf, - u32 len) +static void ath11k_vdev_install_key_compl_event(struct ath11k_base *ab, + struct sk_buff *skb) { struct wmi_vdev_install_key_complete_arg install_key_compl = {0}; struct ath11k *ar; - if (ath11k_pull_vdev_install_key_compl_ev(ab, evt_buf, len, - &install_key_compl) != 0) { + if (ath11k_pull_vdev_install_key_compl_ev(ab, skb, &install_key_compl) != 0) { ath11k_warn(ab, "failed to extract install key compl event"); return; } @@ -5293,15 +5285,14 @@ static void ath11k_vdev_install_key_compl_event(struct ath11k_base *ab, u8 *evt_ rcu_read_unlock(); } -static void ath11k_service_available_event(struct ath11k_base *ab, u8 *evt_buf, - u32 len) +static void ath11k_service_available_event(struct ath11k_base *ab, struct sk_buff *skb) { 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); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -5337,13 +5328,12 @@ static void ath11k_service_available_event(struct ath11k_base *ab, u8 *evt_buf, kfree(tb); } -static void ath11k_peer_assoc_conf_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_peer_assoc_conf_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_peer_assoc_conf_arg peer_assoc_conf = {0}; struct ath11k *ar; - if (ath11k_pull_peer_assoc_conf_ev(ab, evt_buf, len, - &peer_assoc_conf) != 0) { + if (ath11k_pull_peer_assoc_conf_ev(ab, skb, &peer_assoc_conf) != 0) { ath11k_warn(ab, "failed to extract peer assoc conf event"); return; } @@ -5363,22 +5353,22 @@ static void ath11k_peer_assoc_conf_event(struct ath11k_base *ab, u8 *evt_buf, u3 complete(&ar->peer_assoc_done); } -static void ath11k_update_stats_event(struct ath11k_base *ab, u8 *evt_buf, u32 len) +static void ath11k_update_stats_event(struct ath11k_base *ab, struct sk_buff *skb) { - ath11k_debug_fw_stats_process(ab, evt_buf, len); + ath11k_debug_fw_stats_process(ab, skb); } /* PDEV_CTL_FAILSAFE_CHECK_EVENT is received from FW when the frequency scanned * is not part of BDF CTL(Conformance test limits) table entries. */ -static void ath11k_pdev_ctl_failsafe_check_event(struct ath11k_base *ab, u8 *evt_buf, - u32 len) +static void ath11k_pdev_ctl_failsafe_check_event(struct ath11k_base *ab, + struct sk_buff *skb) { const void **tb; const struct wmi_pdev_ctl_failsafe_chk_event *ev; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -5436,15 +5426,14 @@ static void ath11k_pdev_ctl_failsafe_check_event(struct ath11k_base *ab, u8 *evt static void ath11k_wmi_pdev_csa_switch_count_status_event(struct ath11k_base *ab, - u8 *evt_buf, - u32 len) + struct sk_buff *skb) { const void **tb; const struct wmi_pdev_csa_switch_ev *ev; const u32 *vdev_ids; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -5471,16 +5460,14 @@ static void ath11k_pdev_ctl_failsafe_check_event(struct ath11k_base *ab, u8 *evt } static void -ath11k_wmi_pdev_dfs_radar_detected_event(struct ath11k_base *ab, - u8 *evt_buf, - u32 len) +ath11k_wmi_pdev_dfs_radar_detected_event(struct ath11k_base *ab, struct sk_buff *skb) { const void **tb; const struct wmi_pdev_radar_ev *ev; struct ath11k *ar; int ret; - tb = ath11k_wmi_tlv_parse_alloc(ab, evt_buf, len, GFP_ATOMIC); + tb = ath11k_wmi_tlv_parse_alloc(ab, skb->data, skb->len, GFP_ATOMIC); if (IS_ERR(tb)) { ret = PTR_ERR(tb); ath11k_warn(ab, "failed to parse tlv: %d\n", ret); @@ -5525,8 +5512,6 @@ static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_cmd_hdr *cmd_hdr; enum wmi_tlv_event_id id; - u8 *data; - u32 len; cmd_hdr = (struct wmi_cmd_hdr *)skb->data; id = FIELD_GET(WMI_CMD_HDR_CMD_ID, (cmd_hdr->cmd_id)); @@ -5534,34 +5519,31 @@ static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb) if (skb_pull(skb, sizeof(struct wmi_cmd_hdr)) == NULL) goto out; - data = (u8 *)skb->data; - len = skb->len; - switch (id) { /* Process all the WMI events here */ case WMI_SERVICE_READY_EVENTID: - ath11k_service_ready_event(ab, data, len); + ath11k_service_ready_event(ab, skb); break; case WMI_SERVICE_READY_EXT_EVENTID: - ath11k_service_ready_ext_event(ab, data, len); + ath11k_service_ready_ext_event(ab, skb); break; case WMI_REG_CHAN_LIST_CC_EVENTID: - ath11k_reg_chan_list_event(ab, data, len); + ath11k_reg_chan_list_event(ab, skb); break; case WMI_READY_EVENTID: - ath11k_ready_event(ab, data, len); + ath11k_ready_event(ab, skb); break; case WMI_PEER_DELETE_RESP_EVENTID: - ath11k_peer_delete_resp_event(ab, data, len); + ath11k_peer_delete_resp_event(ab, skb); break; case WMI_VDEV_START_RESP_EVENTID: - ath11k_vdev_start_resp_event(ab, data, len); + ath11k_vdev_start_resp_event(ab, skb); break; case WMI_OFFLOAD_BCN_TX_STATUS_EVENTID: - ath11k_bcn_tx_status_event(ab, data, len); + ath11k_bcn_tx_status_event(ab, skb); break; case WMI_VDEV_STOPPED_EVENTID: - ath11k_vdev_stopped_event(ab, data, len); + ath11k_vdev_stopped_event(ab, skb); break; case WMI_MGMT_RX_EVENTID: ath11k_mgmt_rx_event(ab, skb); @@ -5571,37 +5553,37 @@ static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb) ath11k_mgmt_tx_compl_event(ab, skb); break; case WMI_SCAN_EVENTID: - ath11k_scan_event(ab, data, len); + ath11k_scan_event(ab, skb); break; case WMI_PEER_STA_KICKOUT_EVENTID: - ath11k_peer_sta_kickout_event(ab, data, len); + ath11k_peer_sta_kickout_event(ab, skb); break; case WMI_ROAM_EVENTID: - ath11k_roam_event(ab, data, len); + ath11k_roam_event(ab, skb); break; case WMI_CHAN_INFO_EVENTID: - ath11k_chan_info_event(ab, data, len); + ath11k_chan_info_event(ab, skb); break; case WMI_PDEV_BSS_CHAN_INFO_EVENTID: - ath11k_pdev_bss_chan_info_event(ab, data, len); + ath11k_pdev_bss_chan_info_event(ab, skb); break; case WMI_VDEV_INSTALL_KEY_COMPLETE_EVENTID: - ath11k_vdev_install_key_compl_event(ab, data, len); + ath11k_vdev_install_key_compl_event(ab, skb); break; case WMI_SERVICE_AVAILABLE_EVENTID: - ath11k_service_available_event(ab, data, len); + ath11k_service_available_event(ab, skb); break; case WMI_PEER_ASSOC_CONF_EVENTID: - ath11k_peer_assoc_conf_event(ab, data, len); + ath11k_peer_assoc_conf_event(ab, skb); break; case WMI_UPDATE_STATS_EVENTID: - ath11k_update_stats_event(ab, data, len); + ath11k_update_stats_event(ab, skb); break; case WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID: - ath11k_pdev_ctl_failsafe_check_event(ab, data, len); + ath11k_pdev_ctl_failsafe_check_event(ab, skb); break; case WMI_PDEV_CSA_SWITCH_COUNT_STATUS_EVENTID: - ath11k_wmi_pdev_csa_switch_count_status_event(ab, data, len); + ath11k_wmi_pdev_csa_switch_count_status_event(ab, skb); break; /* add Unsupported events here */ case WMI_TBTTOFFSET_EXT_UPDATE_EVENTID: @@ -5610,7 +5592,7 @@ static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb) "ignoring unsupported event 0x%x\n", id); break; case WMI_PDEV_DFS_RADAR_DETECTION_EVENTID: - ath11k_wmi_pdev_dfs_radar_detected_event(ab, data, len); + ath11k_wmi_pdev_dfs_radar_detected_event(ab, skb); break; /* TODO: Add remaining events */ default: diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h index 248326e..e6566f7 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.h +++ b/drivers/net/wireless/ath/ath11k/wmi.h @@ -4703,7 +4703,7 @@ int ath11k_wmi_send_bcn_offload_control_cmd(struct ath11k *ar, struct rx_reorder_queue_remove_params *param); int ath11k_wmi_send_pdev_set_regdomain(struct ath11k *ar, struct pdev_set_regdomain_params *param); -int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, u8 *evt_buf, u32 len, +int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, struct sk_buff *skb, struct ath11k_fw_stats *stats); size_t ath11k_wmi_fw_stats_num_peers(struct list_head *head); size_t ath11k_wmi_fw_stats_num_peers_extd(struct list_head *head);