Lines Matching +full:ftm +full:- +full:src
1 // SPDX-License-Identifier: ISC
3 * Copyright (c) 2005-2011 Atheros Communications Inc.
4 * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
5 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
19 #include "wmi-tlv.h"
22 #include "wmi-ops.h"
1713 if (arg->passive) in ath10k_wmi_put_wmi_channel()
1715 if (arg->allow_ibss) in ath10k_wmi_put_wmi_channel()
1717 if (arg->allow_ht) in ath10k_wmi_put_wmi_channel()
1719 if (arg->allow_vht) in ath10k_wmi_put_wmi_channel()
1721 if (arg->ht40plus) in ath10k_wmi_put_wmi_channel()
1723 if (arg->chan_radar) in ath10k_wmi_put_wmi_channel()
1726 ch->band_center_freq2 = 0; in ath10k_wmi_put_wmi_channel()
1727 ch->mhz = __cpu_to_le32(arg->freq); in ath10k_wmi_put_wmi_channel()
1728 ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1); in ath10k_wmi_put_wmi_channel()
1729 if (arg->mode == MODE_11AC_VHT80_80) { in ath10k_wmi_put_wmi_channel()
1730 ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq2); in ath10k_wmi_put_wmi_channel()
1731 chan = ieee80211_get_channel(ar->hw->wiphy, in ath10k_wmi_put_wmi_channel()
1732 arg->band_center_freq2 - 10); in ath10k_wmi_put_wmi_channel()
1735 if (arg->mode == MODE_11AC_VHT160) { in ath10k_wmi_put_wmi_channel()
1739 if (arg->freq > arg->band_center_freq1) { in ath10k_wmi_put_wmi_channel()
1740 band_center_freq1 = arg->band_center_freq1 + 40; in ath10k_wmi_put_wmi_channel()
1741 band_center_freq2 = arg->band_center_freq1 - 40; in ath10k_wmi_put_wmi_channel()
1743 band_center_freq1 = arg->band_center_freq1 - 40; in ath10k_wmi_put_wmi_channel()
1744 band_center_freq2 = arg->band_center_freq1 + 40; in ath10k_wmi_put_wmi_channel()
1747 ch->band_center_freq1 = in ath10k_wmi_put_wmi_channel()
1750 chan = ieee80211_get_channel(ar->hw->wiphy, in ath10k_wmi_put_wmi_channel()
1751 band_center_freq2 - 10); in ath10k_wmi_put_wmi_channel()
1753 ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq1); in ath10k_wmi_put_wmi_channel()
1756 if (chan && chan->flags & IEEE80211_CHAN_RADAR) in ath10k_wmi_put_wmi_channel()
1759 ch->min_power = arg->min_power; in ath10k_wmi_put_wmi_channel()
1760 ch->max_power = arg->max_power; in ath10k_wmi_put_wmi_channel()
1761 ch->reg_power = arg->max_reg_power; in ath10k_wmi_put_wmi_channel()
1762 ch->antenna_max = arg->max_antenna_gain; in ath10k_wmi_put_wmi_channel()
1763 ch->max_tx_power = arg->max_power; in ath10k_wmi_put_wmi_channel()
1766 ch->mode = arg->mode; in ath10k_wmi_put_wmi_channel()
1767 ch->flags |= __cpu_to_le32(flags); in ath10k_wmi_put_wmi_channel()
1774 time_left = wait_for_completion_timeout(&ar->wmi.service_ready, in ath10k_wmi_wait_for_service_ready()
1777 return -ETIMEDOUT; in ath10k_wmi_wait_for_service_ready()
1785 time_left = wait_for_completion_timeout(&ar->wmi.unified_ready, in ath10k_wmi_wait_for_unified_ready()
1788 return -ETIMEDOUT; in ath10k_wmi_wait_for_unified_ready()
1802 if (!IS_ALIGNED((unsigned long)skb->data, 4)) in ath10k_wmi_alloc_skb()
1806 memset(skb->data, 0, round_len); in ath10k_wmi_alloc_skb()
1825 return -ENOMEM; in ath10k_wmi_cmd_send_nowait()
1829 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_cmd_send_nowait()
1830 cmd_hdr->cmd_id = __cpu_to_le32(cmd); in ath10k_wmi_cmd_send_nowait()
1833 trace_ath10k_wmi_cmd(ar, cmd_id, skb->data, skb->len); in ath10k_wmi_cmd_send_nowait()
1834 ret = ath10k_htc_send(&ar->htc, ar->wmi.eid, skb); in ath10k_wmi_cmd_send_nowait()
1848 struct ath10k *ar = arvif->ar; in ath10k_wmi_tx_beacon_nowait()
1855 spin_lock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
1857 bcn = arvif->beacon; in ath10k_wmi_tx_beacon_nowait()
1864 switch (arvif->beacon_state) { in ath10k_wmi_tx_beacon_nowait()
1869 arvif->beacon_state = ATH10K_BEACON_SENDING; in ath10k_wmi_tx_beacon_nowait()
1870 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
1872 dtim_zero = !!(cb->flags & ATH10K_SKB_F_DTIM_ZERO); in ath10k_wmi_tx_beacon_nowait()
1873 deliver_cab = !!(cb->flags & ATH10K_SKB_F_DELIVER_CAB); in ath10k_wmi_tx_beacon_nowait()
1874 ret = ath10k_wmi_beacon_send_ref_nowait(arvif->ar, in ath10k_wmi_tx_beacon_nowait()
1875 arvif->vdev_id, in ath10k_wmi_tx_beacon_nowait()
1876 bcn->data, bcn->len, in ath10k_wmi_tx_beacon_nowait()
1877 cb->paddr, in ath10k_wmi_tx_beacon_nowait()
1881 spin_lock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
1884 arvif->beacon_state = ATH10K_BEACON_SENT; in ath10k_wmi_tx_beacon_nowait()
1886 arvif->beacon_state = ATH10K_BEACON_SCHEDULED; in ath10k_wmi_tx_beacon_nowait()
1890 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
1896 struct ath10k_vif *arvif = (void *)vif->drv_priv; in ath10k_wmi_tx_beacons_iter()
1903 ieee80211_iterate_active_interfaces_atomic(ar->hw, in ath10k_wmi_tx_beacons_nowait()
1914 wake_up(&ar->wmi.tx_credits_wq); in ath10k_wmi_op_ep_tx_credits()
1919 int ret = -EOPNOTSUPP; in ath10k_wmi_cmd_send()
1929 wait_event_timeout(ar->wmi.tx_credits_wq, ({ in ath10k_wmi_cmd_send()
1935 if (ret && test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) in ath10k_wmi_cmd_send()
1936 ret = -ESHUTDOWN; in ath10k_wmi_cmd_send()
1938 (ret != -EAGAIN); in ath10k_wmi_cmd_send()
1944 if (ret == -EAGAIN) { in ath10k_wmi_cmd_send()
1963 u32 buf_len = msdu->len; in ath10k_wmi_op_gen_mgmt_tx()
1967 hdr = (struct ieee80211_hdr *)msdu->data; in ath10k_wmi_op_gen_mgmt_tx()
1968 fc = le16_to_cpu(hdr->frame_control); in ath10k_wmi_op_gen_mgmt_tx()
1970 if (cb->vif) { in ath10k_wmi_op_gen_mgmt_tx()
1971 arvif = (void *)cb->vif->drv_priv; in ath10k_wmi_op_gen_mgmt_tx()
1972 vdev_id = arvif->vdev_id; in ath10k_wmi_op_gen_mgmt_tx()
1977 if (WARN_ON_ONCE(!ieee80211_is_mgmt(hdr->frame_control))) in ath10k_wmi_op_gen_mgmt_tx()
1978 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_mgmt_tx()
1980 len = sizeof(cmd->hdr) + msdu->len; in ath10k_wmi_op_gen_mgmt_tx()
1982 if ((ieee80211_is_action(hdr->frame_control) || in ath10k_wmi_op_gen_mgmt_tx()
1983 ieee80211_is_deauth(hdr->frame_control) || in ath10k_wmi_op_gen_mgmt_tx()
1984 ieee80211_is_disassoc(hdr->frame_control)) && in ath10k_wmi_op_gen_mgmt_tx()
1985 ieee80211_has_protected(hdr->frame_control)) { in ath10k_wmi_op_gen_mgmt_tx()
1986 peer_addr = hdr->addr1; in ath10k_wmi_op_gen_mgmt_tx()
1991 if (cb->ucast_cipher == WLAN_CIPHER_SUITE_GCMP || in ath10k_wmi_op_gen_mgmt_tx()
1992 cb->ucast_cipher == WLAN_CIPHER_SUITE_GCMP_256) { in ath10k_wmi_op_gen_mgmt_tx()
2006 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_mgmt_tx()
2008 cmd = (struct wmi_mgmt_tx_cmd *)skb->data; in ath10k_wmi_op_gen_mgmt_tx()
2010 cmd->hdr.vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_mgmt_tx()
2011 cmd->hdr.tx_rate = 0; in ath10k_wmi_op_gen_mgmt_tx()
2012 cmd->hdr.tx_power = 0; in ath10k_wmi_op_gen_mgmt_tx()
2013 cmd->hdr.buf_len = __cpu_to_le32(buf_len); in ath10k_wmi_op_gen_mgmt_tx()
2015 ether_addr_copy(cmd->hdr.peer_macaddr.addr, ieee80211_get_DA(hdr)); in ath10k_wmi_op_gen_mgmt_tx()
2016 memcpy(cmd->buf, msdu->data, msdu->len); in ath10k_wmi_op_gen_mgmt_tx()
2019 msdu, skb->len, fc & IEEE80211_FCTL_FTYPE, in ath10k_wmi_op_gen_mgmt_tx()
2021 trace_ath10k_tx_hdr(ar, skb->data, skb->len); in ath10k_wmi_op_gen_mgmt_tx()
2022 trace_ath10k_tx_payload(ar, skb->data, skb->len); in ath10k_wmi_op_gen_mgmt_tx()
2029 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_started()
2031 switch (ar->scan.state) { in ath10k_wmi_event_scan_started()
2036 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_started()
2037 ar->scan.state); in ath10k_wmi_event_scan_started()
2040 ar->scan.state = ATH10K_SCAN_RUNNING; in ath10k_wmi_event_scan_started()
2042 if (ar->scan.is_roc) in ath10k_wmi_event_scan_started()
2043 ieee80211_ready_on_channel(ar->hw); in ath10k_wmi_event_scan_started()
2045 complete(&ar->scan.started); in ath10k_wmi_event_scan_started()
2052 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_start_failed()
2054 switch (ar->scan.state) { in ath10k_wmi_event_scan_start_failed()
2059 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_start_failed()
2060 ar->scan.state); in ath10k_wmi_event_scan_start_failed()
2063 complete(&ar->scan.started); in ath10k_wmi_event_scan_start_failed()
2071 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_completed()
2073 switch (ar->scan.state) { in ath10k_wmi_event_scan_completed()
2085 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_completed()
2086 ar->scan.state); in ath10k_wmi_event_scan_completed()
2097 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_bss_chan()
2099 switch (ar->scan.state) { in ath10k_wmi_event_scan_bss_chan()
2103 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_bss_chan()
2104 ar->scan.state); in ath10k_wmi_event_scan_bss_chan()
2108 ar->scan_channel = NULL; in ath10k_wmi_event_scan_bss_chan()
2115 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_foreign_chan()
2117 switch (ar->scan.state) { in ath10k_wmi_event_scan_foreign_chan()
2121 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_foreign_chan()
2122 ar->scan.state); in ath10k_wmi_event_scan_foreign_chan()
2126 ar->scan_channel = ieee80211_get_channel(ar->hw->wiphy, freq); in ath10k_wmi_event_scan_foreign_chan()
2128 if (ar->scan.is_roc && ar->scan.roc_freq == freq) in ath10k_wmi_event_scan_foreign_chan()
2129 complete(&ar->scan.on_channel); in ath10k_wmi_event_scan_foreign_chan()
2179 struct wmi_scan_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_scan_ev()
2181 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_scan_ev()
2182 return -EPROTO; in ath10k_wmi_op_pull_scan_ev()
2185 arg->event_type = ev->event_type; in ath10k_wmi_op_pull_scan_ev()
2186 arg->reason = ev->reason; in ath10k_wmi_op_pull_scan_ev()
2187 arg->channel_freq = ev->channel_freq; in ath10k_wmi_op_pull_scan_ev()
2188 arg->scan_req_id = ev->scan_req_id; in ath10k_wmi_op_pull_scan_ev()
2189 arg->scan_id = ev->scan_id; in ath10k_wmi_op_pull_scan_ev()
2190 arg->vdev_id = ev->vdev_id; in ath10k_wmi_op_pull_scan_ev()
2219 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_scan()
2225 ath10k_scan_state_str(ar->scan.state), ar->scan.state); in ath10k_wmi_event_scan()
2252 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_scan()
2263 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ath10k_wmi_handle_wep_reauth()
2268 if (!ieee80211_is_auth(hdr->frame_control) || in ath10k_wmi_handle_wep_reauth()
2269 !ieee80211_has_protected(hdr->frame_control)) in ath10k_wmi_handle_wep_reauth()
2272 hdrlen = ieee80211_hdrlen(hdr->frame_control); in ath10k_wmi_handle_wep_reauth()
2273 if (skb->len < (hdrlen + IEEE80211_WEP_IV_LEN)) in ath10k_wmi_handle_wep_reauth()
2276 keyidx = skb->data[hdrlen + (IEEE80211_WEP_IV_LEN - 1)] >> WEP_KEYID_SHIFT; in ath10k_wmi_handle_wep_reauth()
2279 spin_lock_bh(&ar->data_lock); in ath10k_wmi_handle_wep_reauth()
2281 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_handle_wep_reauth()
2286 status->flag |= RX_FLAG_DECRYPTED; in ath10k_wmi_handle_wep_reauth()
2302 ar->running_fw->fw_file.fw_features)) { in ath10k_wmi_op_pull_mgmt_rx_ev()
2303 ev_v2 = (struct wmi_mgmt_rx_event_v2 *)skb->data; in ath10k_wmi_op_pull_mgmt_rx_ev()
2304 ev_hdr = &ev_v2->hdr.v1; in ath10k_wmi_op_pull_mgmt_rx_ev()
2307 ev_v1 = (struct wmi_mgmt_rx_event_v1 *)skb->data; in ath10k_wmi_op_pull_mgmt_rx_ev()
2308 ev_hdr = &ev_v1->hdr; in ath10k_wmi_op_pull_mgmt_rx_ev()
2312 if (skb->len < pull_len) in ath10k_wmi_op_pull_mgmt_rx_ev()
2313 return -EPROTO; in ath10k_wmi_op_pull_mgmt_rx_ev()
2316 arg->channel = ev_hdr->channel; in ath10k_wmi_op_pull_mgmt_rx_ev()
2317 arg->buf_len = ev_hdr->buf_len; in ath10k_wmi_op_pull_mgmt_rx_ev()
2318 arg->status = ev_hdr->status; in ath10k_wmi_op_pull_mgmt_rx_ev()
2319 arg->snr = ev_hdr->snr; in ath10k_wmi_op_pull_mgmt_rx_ev()
2320 arg->phy_mode = ev_hdr->phy_mode; in ath10k_wmi_op_pull_mgmt_rx_ev()
2321 arg->rate = ev_hdr->rate; in ath10k_wmi_op_pull_mgmt_rx_ev()
2323 msdu_len = __le32_to_cpu(arg->buf_len); in ath10k_wmi_op_pull_mgmt_rx_ev()
2324 if (skb->len < msdu_len) in ath10k_wmi_op_pull_mgmt_rx_ev()
2325 return -EPROTO; in ath10k_wmi_op_pull_mgmt_rx_ev()
2327 if (le32_to_cpu(arg->status) & WMI_RX_STATUS_EXT_INFO) { in ath10k_wmi_op_pull_mgmt_rx_ev()
2328 len = ALIGN(le32_to_cpu(arg->buf_len), 4); in ath10k_wmi_op_pull_mgmt_rx_ev()
2329 ext_info = (struct wmi_mgmt_rx_ext_info *)(skb->data + len); in ath10k_wmi_op_pull_mgmt_rx_ev()
2330 memcpy(&arg->ext_info, ext_info, in ath10k_wmi_op_pull_mgmt_rx_ev()
2352 ev = (struct wmi_10_4_mgmt_rx_event *)skb->data; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2353 ev_hdr = &ev->hdr; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2356 if (skb->len < pull_len) in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2357 return -EPROTO; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2360 arg->channel = ev_hdr->channel; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2361 arg->buf_len = ev_hdr->buf_len; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2362 arg->status = ev_hdr->status; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2363 arg->snr = ev_hdr->snr; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2364 arg->phy_mode = ev_hdr->phy_mode; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2365 arg->rate = ev_hdr->rate; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2367 msdu_len = __le32_to_cpu(arg->buf_len); in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2368 if (skb->len < msdu_len) in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2369 return -EPROTO; in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2371 if (le32_to_cpu(arg->status) & WMI_RX_STATUS_EXT_INFO) { in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2372 len = ALIGN(le32_to_cpu(arg->buf_len), 4); in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2373 ext_info = (struct wmi_mgmt_rx_ext_info *)(skb->data + len); in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2374 memcpy(&arg->ext_info, ext_info, in ath10k_wmi_10_4_op_pull_mgmt_rx_ev()
2387 if (!ieee80211_has_protected(hdr->frame_control)) in ath10k_wmi_rx_is_decrypted()
2394 if (ieee80211_is_auth(hdr->frame_control)) in ath10k_wmi_rx_is_decrypted()
2401 ar->hw_params.sw_decrypt_mcast_mgmt) in ath10k_wmi_rx_is_decrypted()
2411 struct ath10k_wmi *wmi = &ar->wmi; in wmi_process_mgmt_tx_comp()
2416 spin_lock_bh(&ar->data_lock); in wmi_process_mgmt_tx_comp()
2418 pkt_addr = idr_find(&wmi->mgmt_pending_tx, param->desc_id); in wmi_process_mgmt_tx_comp()
2421 param->desc_id); in wmi_process_mgmt_tx_comp()
2422 ret = -ENOENT; in wmi_process_mgmt_tx_comp()
2426 msdu = pkt_addr->vaddr; in wmi_process_mgmt_tx_comp()
2427 dma_unmap_single(ar->dev, pkt_addr->paddr, in wmi_process_mgmt_tx_comp()
2428 msdu->len, DMA_TO_DEVICE); in wmi_process_mgmt_tx_comp()
2431 if (param->status) { in wmi_process_mgmt_tx_comp()
2432 info->flags &= ~IEEE80211_TX_STAT_ACK; in wmi_process_mgmt_tx_comp()
2434 info->flags |= IEEE80211_TX_STAT_ACK; in wmi_process_mgmt_tx_comp()
2435 info->status.ack_signal = ATH10K_DEFAULT_NOISE_FLOOR + in wmi_process_mgmt_tx_comp()
2436 param->ack_rssi; in wmi_process_mgmt_tx_comp()
2437 info->status.flags |= IEEE80211_TX_STATUS_ACK_SIGNAL_VALID; in wmi_process_mgmt_tx_comp()
2440 ieee80211_tx_status_irqsafe(ar->hw, msdu); in wmi_process_mgmt_tx_comp()
2445 idr_remove(&wmi->mgmt_pending_tx, param->desc_id); in wmi_process_mgmt_tx_comp()
2446 spin_unlock_bh(&ar->data_lock); in wmi_process_mgmt_tx_comp()
2466 if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map)) in ath10k_wmi_event_mgmt_tx_compl()
2496 if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map)) in ath10k_wmi_event_mgmt_tx_bundle_compl()
2538 if ((test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags)) || in ath10k_wmi_event_mgmt_rx()
2546 status->flag |= RX_FLAG_MMIC_ERROR; in ath10k_wmi_event_mgmt_rx()
2549 status->mactime = in ath10k_wmi_event_mgmt_rx()
2551 status->flag |= RX_FLAG_MACTIME_END; in ath10k_wmi_event_mgmt_rx()
2558 status->band = NL80211_BAND_2GHZ; in ath10k_wmi_event_mgmt_rx()
2560 status->band = NL80211_BAND_5GHZ; in ath10k_wmi_event_mgmt_rx()
2570 if (phy_mode == MODE_11B && status->band == NL80211_BAND_5GHZ) in ath10k_wmi_event_mgmt_rx()
2573 sband = &ar->mac.sbands[status->band]; in ath10k_wmi_event_mgmt_rx()
2575 status->freq = ieee80211_channel_to_frequency(channel, status->band); in ath10k_wmi_event_mgmt_rx()
2576 status->signal = snr + ATH10K_DEFAULT_NOISE_FLOOR; in ath10k_wmi_event_mgmt_rx()
2578 BUILD_BUG_ON(ARRAY_SIZE(status->chain_signal) != ARRAY_SIZE(arg.rssi)); in ath10k_wmi_event_mgmt_rx()
2580 for (i = 0; i < ARRAY_SIZE(status->chain_signal); i++) { in ath10k_wmi_event_mgmt_rx()
2581 status->chains &= ~BIT(i); in ath10k_wmi_event_mgmt_rx()
2586 status->chain_signal[i] = ATH10K_DEFAULT_NOISE_FLOOR + rssi; in ath10k_wmi_event_mgmt_rx()
2587 status->chains |= BIT(i); in ath10k_wmi_event_mgmt_rx()
2591 status->rate_idx = ath10k_mac_bitrate_to_idx(sband, rate / 100); in ath10k_wmi_event_mgmt_rx()
2593 hdr = (struct ieee80211_hdr *)skb->data; in ath10k_wmi_event_mgmt_rx()
2594 fc = le16_to_cpu(hdr->frame_control); in ath10k_wmi_event_mgmt_rx()
2600 status->flag |= RX_FLAG_SKIP_MONITOR; in ath10k_wmi_event_mgmt_rx()
2605 status->flag |= RX_FLAG_DECRYPTED; in ath10k_wmi_event_mgmt_rx()
2607 if (!ieee80211_is_action(hdr->frame_control) && in ath10k_wmi_event_mgmt_rx()
2608 !ieee80211_is_deauth(hdr->frame_control) && in ath10k_wmi_event_mgmt_rx()
2609 !ieee80211_is_disassoc(hdr->frame_control)) { in ath10k_wmi_event_mgmt_rx()
2610 status->flag |= RX_FLAG_IV_STRIPPED | in ath10k_wmi_event_mgmt_rx()
2612 hdr->frame_control = __cpu_to_le16(fc & in ath10k_wmi_event_mgmt_rx()
2617 if (ieee80211_is_beacon(hdr->frame_control)) in ath10k_wmi_event_mgmt_rx()
2620 if (ieee80211_is_beacon(hdr->frame_control) || in ath10k_wmi_event_mgmt_rx()
2621 ieee80211_is_probe_resp(hdr->frame_control)) in ath10k_wmi_event_mgmt_rx()
2622 status->boottime_ns = ktime_get_boottime_ns(); in ath10k_wmi_event_mgmt_rx()
2626 skb, skb->len, in ath10k_wmi_event_mgmt_rx()
2631 status->freq, status->band, status->signal, in ath10k_wmi_event_mgmt_rx()
2632 status->rate_idx); in ath10k_wmi_event_mgmt_rx()
2634 ieee80211_rx_ni(ar->hw, skb); in ath10k_wmi_event_mgmt_rx()
2645 sband = ar->hw->wiphy->bands[band]; in freq_to_idx()
2649 for (ch = 0; ch < sband->n_channels; ch++, idx++) in freq_to_idx()
2650 if (sband->channels[ch].center_freq == freq) in freq_to_idx()
2661 struct wmi_chan_info_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_ch_info_ev()
2663 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_ch_info_ev()
2664 return -EPROTO; in ath10k_wmi_op_pull_ch_info_ev()
2667 arg->err_code = ev->err_code; in ath10k_wmi_op_pull_ch_info_ev()
2668 arg->freq = ev->freq; in ath10k_wmi_op_pull_ch_info_ev()
2669 arg->cmd_flags = ev->cmd_flags; in ath10k_wmi_op_pull_ch_info_ev()
2670 arg->noise_floor = ev->noise_floor; in ath10k_wmi_op_pull_ch_info_ev()
2671 arg->rx_clear_count = ev->rx_clear_count; in ath10k_wmi_op_pull_ch_info_ev()
2672 arg->cycle_count = ev->cycle_count; in ath10k_wmi_op_pull_ch_info_ev()
2681 struct wmi_10_4_chan_info_event *ev = (void *)skb->data; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2683 if (skb->len < sizeof(*ev)) in ath10k_wmi_10_4_op_pull_ch_info_ev()
2684 return -EPROTO; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2687 arg->err_code = ev->err_code; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2688 arg->freq = ev->freq; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2689 arg->cmd_flags = ev->cmd_flags; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2690 arg->noise_floor = ev->noise_floor; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2691 arg->rx_clear_count = ev->rx_clear_count; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2692 arg->cycle_count = ev->cycle_count; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2693 arg->chan_tx_pwr_range = ev->chan_tx_pwr_range; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2694 arg->chan_tx_pwr_tp = ev->chan_tx_pwr_tp; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2695 arg->rx_frame_count = ev->rx_frame_count; in ath10k_wmi_10_4_op_pull_ch_info_ev()
2710 if (params->cmd_flags & WMI_CHAN_INFO_FLAG_COMPLETE) { in ath10k_wmi_event_chan_info_unpaired()
2715 idx = freq_to_idx(ar, params->freq); in ath10k_wmi_event_chan_info_unpaired()
2716 if (idx >= ARRAY_SIZE(ar->survey)) { in ath10k_wmi_event_chan_info_unpaired()
2718 params->freq, idx); in ath10k_wmi_event_chan_info_unpaired()
2722 survey = &ar->survey[idx]; in ath10k_wmi_event_chan_info_unpaired()
2724 if (!params->mac_clk_mhz) in ath10k_wmi_event_chan_info_unpaired()
2729 survey->noise = params->noise_floor; in ath10k_wmi_event_chan_info_unpaired()
2730 survey->time = (params->cycle_count / params->mac_clk_mhz) / 1000; in ath10k_wmi_event_chan_info_unpaired()
2731 survey->time_busy = (params->rx_clear_count / params->mac_clk_mhz) / 1000; in ath10k_wmi_event_chan_info_unpaired()
2732 survey->filled |= SURVEY_INFO_NOISE_DBM | SURVEY_INFO_TIME | in ath10k_wmi_event_chan_info_unpaired()
2746 idx = freq_to_idx(ar, params->freq); in ath10k_wmi_event_chan_info_paired()
2747 if (idx >= ARRAY_SIZE(ar->survey)) { in ath10k_wmi_event_chan_info_paired()
2749 params->freq, idx); in ath10k_wmi_event_chan_info_paired()
2753 if (params->cmd_flags & WMI_CHAN_INFO_FLAG_COMPLETE) { in ath10k_wmi_event_chan_info_paired()
2754 if (ar->ch_info_can_report_survey) { in ath10k_wmi_event_chan_info_paired()
2755 survey = &ar->survey[idx]; in ath10k_wmi_event_chan_info_paired()
2756 survey->noise = params->noise_floor; in ath10k_wmi_event_chan_info_paired()
2757 survey->filled = SURVEY_INFO_NOISE_DBM; in ath10k_wmi_event_chan_info_paired()
2761 params->cycle_count, in ath10k_wmi_event_chan_info_paired()
2762 params->rx_clear_count, in ath10k_wmi_event_chan_info_paired()
2763 ar->survey_last_cycle_count, in ath10k_wmi_event_chan_info_paired()
2764 ar->survey_last_rx_clear_count); in ath10k_wmi_event_chan_info_paired()
2767 ar->ch_info_can_report_survey = false; in ath10k_wmi_event_chan_info_paired()
2769 ar->ch_info_can_report_survey = true; in ath10k_wmi_event_chan_info_paired()
2772 if (!(params->cmd_flags & WMI_CHAN_INFO_FLAG_PRE_COMPLETE)) { in ath10k_wmi_event_chan_info_paired()
2773 ar->survey_last_rx_clear_count = params->rx_clear_count; in ath10k_wmi_event_chan_info_paired()
2774 ar->survey_last_cycle_count = params->cycle_count; in ath10k_wmi_event_chan_info_paired()
2804 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_chan_info()
2806 switch (ar->scan.state) { in ath10k_wmi_event_chan_info()
2817 ar->running_fw->fw_file.fw_features)) in ath10k_wmi_event_chan_info()
2823 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_chan_info()
2842 complete(&ar->wmi.barrier); in ath10k_wmi_event_echo()
2848 skb->len); in ath10k_wmi_event_debug_mesg()
2850 trace_ath10k_wmi_dbglog(ar, skb->data, skb->len); in ath10k_wmi_event_debug_mesg()
2858 void ath10k_wmi_pull_pdev_stats_base(const struct wmi_pdev_stats_base *src, in ath10k_wmi_pull_pdev_stats_base() argument
2861 dst->ch_noise_floor = __le32_to_cpu(src->chan_nf); in ath10k_wmi_pull_pdev_stats_base()
2862 dst->tx_frame_count = __le32_to_cpu(src->tx_frame_count); in ath10k_wmi_pull_pdev_stats_base()
2863 dst->rx_frame_count = __le32_to_cpu(src->rx_frame_count); in ath10k_wmi_pull_pdev_stats_base()
2864 dst->rx_clear_count = __le32_to_cpu(src->rx_clear_count); in ath10k_wmi_pull_pdev_stats_base()
2865 dst->cycle_count = __le32_to_cpu(src->cycle_count); in ath10k_wmi_pull_pdev_stats_base()
2866 dst->phy_err_count = __le32_to_cpu(src->phy_err_count); in ath10k_wmi_pull_pdev_stats_base()
2867 dst->chan_tx_power = __le32_to_cpu(src->chan_tx_pwr); in ath10k_wmi_pull_pdev_stats_base()
2870 void ath10k_wmi_pull_pdev_stats_tx(const struct wmi_pdev_stats_tx *src, in ath10k_wmi_pull_pdev_stats_tx() argument
2873 dst->comp_queued = __le32_to_cpu(src->comp_queued); in ath10k_wmi_pull_pdev_stats_tx()
2874 dst->comp_delivered = __le32_to_cpu(src->comp_delivered); in ath10k_wmi_pull_pdev_stats_tx()
2875 dst->msdu_enqued = __le32_to_cpu(src->msdu_enqued); in ath10k_wmi_pull_pdev_stats_tx()
2876 dst->mpdu_enqued = __le32_to_cpu(src->mpdu_enqued); in ath10k_wmi_pull_pdev_stats_tx()
2877 dst->wmm_drop = __le32_to_cpu(src->wmm_drop); in ath10k_wmi_pull_pdev_stats_tx()
2878 dst->local_enqued = __le32_to_cpu(src->local_enqued); in ath10k_wmi_pull_pdev_stats_tx()
2879 dst->local_freed = __le32_to_cpu(src->local_freed); in ath10k_wmi_pull_pdev_stats_tx()
2880 dst->hw_queued = __le32_to_cpu(src->hw_queued); in ath10k_wmi_pull_pdev_stats_tx()
2881 dst->hw_reaped = __le32_to_cpu(src->hw_reaped); in ath10k_wmi_pull_pdev_stats_tx()
2882 dst->underrun = __le32_to_cpu(src->underrun); in ath10k_wmi_pull_pdev_stats_tx()
2883 dst->tx_abort = __le32_to_cpu(src->tx_abort); in ath10k_wmi_pull_pdev_stats_tx()
2884 dst->mpdus_requeued = __le32_to_cpu(src->mpdus_requeued); in ath10k_wmi_pull_pdev_stats_tx()
2885 dst->tx_ko = __le32_to_cpu(src->tx_ko); in ath10k_wmi_pull_pdev_stats_tx()
2886 dst->data_rc = __le32_to_cpu(src->data_rc); in ath10k_wmi_pull_pdev_stats_tx()
2887 dst->self_triggers = __le32_to_cpu(src->self_triggers); in ath10k_wmi_pull_pdev_stats_tx()
2888 dst->sw_retry_failure = __le32_to_cpu(src->sw_retry_failure); in ath10k_wmi_pull_pdev_stats_tx()
2889 dst->illgl_rate_phy_err = __le32_to_cpu(src->illgl_rate_phy_err); in ath10k_wmi_pull_pdev_stats_tx()
2890 dst->pdev_cont_xretry = __le32_to_cpu(src->pdev_cont_xretry); in ath10k_wmi_pull_pdev_stats_tx()
2891 dst->pdev_tx_timeout = __le32_to_cpu(src->pdev_tx_timeout); in ath10k_wmi_pull_pdev_stats_tx()
2892 dst->pdev_resets = __le32_to_cpu(src->pdev_resets); in ath10k_wmi_pull_pdev_stats_tx()
2893 dst->phy_underrun = __le32_to_cpu(src->phy_underrun); in ath10k_wmi_pull_pdev_stats_tx()
2894 dst->txop_ovf = __le32_to_cpu(src->txop_ovf); in ath10k_wmi_pull_pdev_stats_tx()
2898 ath10k_wmi_10_4_pull_pdev_stats_tx(const struct wmi_10_4_pdev_stats_tx *src, in ath10k_wmi_10_4_pull_pdev_stats_tx() argument
2901 dst->comp_queued = __le32_to_cpu(src->comp_queued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2902 dst->comp_delivered = __le32_to_cpu(src->comp_delivered); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2903 dst->msdu_enqued = __le32_to_cpu(src->msdu_enqued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2904 dst->mpdu_enqued = __le32_to_cpu(src->mpdu_enqued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2905 dst->wmm_drop = __le32_to_cpu(src->wmm_drop); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2906 dst->local_enqued = __le32_to_cpu(src->local_enqued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2907 dst->local_freed = __le32_to_cpu(src->local_freed); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2908 dst->hw_queued = __le32_to_cpu(src->hw_queued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2909 dst->hw_reaped = __le32_to_cpu(src->hw_reaped); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2910 dst->underrun = __le32_to_cpu(src->underrun); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2911 dst->tx_abort = __le32_to_cpu(src->tx_abort); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2912 dst->mpdus_requeued = __le32_to_cpu(src->mpdus_requeued); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2913 dst->tx_ko = __le32_to_cpu(src->tx_ko); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2914 dst->data_rc = __le32_to_cpu(src->data_rc); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2915 dst->self_triggers = __le32_to_cpu(src->self_triggers); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2916 dst->sw_retry_failure = __le32_to_cpu(src->sw_retry_failure); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2917 dst->illgl_rate_phy_err = __le32_to_cpu(src->illgl_rate_phy_err); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2918 dst->pdev_cont_xretry = __le32_to_cpu(src->pdev_cont_xretry); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2919 dst->pdev_tx_timeout = __le32_to_cpu(src->pdev_tx_timeout); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2920 dst->pdev_resets = __le32_to_cpu(src->pdev_resets); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2921 dst->phy_underrun = __le32_to_cpu(src->phy_underrun); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2922 dst->txop_ovf = __le32_to_cpu(src->txop_ovf); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2923 dst->hw_paused = __le32_to_cpu(src->hw_paused); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2924 dst->seq_posted = __le32_to_cpu(src->seq_posted); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2925 dst->seq_failed_queueing = in ath10k_wmi_10_4_pull_pdev_stats_tx()
2926 __le32_to_cpu(src->seq_failed_queueing); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2927 dst->seq_completed = __le32_to_cpu(src->seq_completed); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2928 dst->seq_restarted = __le32_to_cpu(src->seq_restarted); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2929 dst->mu_seq_posted = __le32_to_cpu(src->mu_seq_posted); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2930 dst->mpdus_sw_flush = __le32_to_cpu(src->mpdus_sw_flush); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2931 dst->mpdus_hw_filter = __le32_to_cpu(src->mpdus_hw_filter); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2932 dst->mpdus_truncated = __le32_to_cpu(src->mpdus_truncated); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2933 dst->mpdus_ack_failed = __le32_to_cpu(src->mpdus_ack_failed); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2934 dst->mpdus_hw_filter = __le32_to_cpu(src->mpdus_hw_filter); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2935 dst->mpdus_expired = __le32_to_cpu(src->mpdus_expired); in ath10k_wmi_10_4_pull_pdev_stats_tx()
2938 void ath10k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src, in ath10k_wmi_pull_pdev_stats_rx() argument
2941 dst->mid_ppdu_route_change = __le32_to_cpu(src->mid_ppdu_route_change); in ath10k_wmi_pull_pdev_stats_rx()
2942 dst->status_rcvd = __le32_to_cpu(src->status_rcvd); in ath10k_wmi_pull_pdev_stats_rx()
2943 dst->r0_frags = __le32_to_cpu(src->r0_frags); in ath10k_wmi_pull_pdev_stats_rx()
2944 dst->r1_frags = __le32_to_cpu(src->r1_frags); in ath10k_wmi_pull_pdev_stats_rx()
2945 dst->r2_frags = __le32_to_cpu(src->r2_frags); in ath10k_wmi_pull_pdev_stats_rx()
2946 dst->r3_frags = __le32_to_cpu(src->r3_frags); in ath10k_wmi_pull_pdev_stats_rx()
2947 dst->htt_msdus = __le32_to_cpu(src->htt_msdus); in ath10k_wmi_pull_pdev_stats_rx()
2948 dst->htt_mpdus = __le32_to_cpu(src->htt_mpdus); in ath10k_wmi_pull_pdev_stats_rx()
2949 dst->loc_msdus = __le32_to_cpu(src->loc_msdus); in ath10k_wmi_pull_pdev_stats_rx()
2950 dst->loc_mpdus = __le32_to_cpu(src->loc_mpdus); in ath10k_wmi_pull_pdev_stats_rx()
2951 dst->oversize_amsdu = __le32_to_cpu(src->oversize_amsdu); in ath10k_wmi_pull_pdev_stats_rx()
2952 dst->phy_errs = __le32_to_cpu(src->phy_errs); in ath10k_wmi_pull_pdev_stats_rx()
2953 dst->phy_err_drop = __le32_to_cpu(src->phy_err_drop); in ath10k_wmi_pull_pdev_stats_rx()
2954 dst->mpdu_errs = __le32_to_cpu(src->mpdu_errs); in ath10k_wmi_pull_pdev_stats_rx()
2957 void ath10k_wmi_pull_pdev_stats_extra(const struct wmi_pdev_stats_extra *src, in ath10k_wmi_pull_pdev_stats_extra() argument
2960 dst->ack_rx_bad = __le32_to_cpu(src->ack_rx_bad); in ath10k_wmi_pull_pdev_stats_extra()
2961 dst->rts_bad = __le32_to_cpu(src->rts_bad); in ath10k_wmi_pull_pdev_stats_extra()
2962 dst->rts_good = __le32_to_cpu(src->rts_good); in ath10k_wmi_pull_pdev_stats_extra()
2963 dst->fcs_bad = __le32_to_cpu(src->fcs_bad); in ath10k_wmi_pull_pdev_stats_extra()
2964 dst->no_beacons = __le32_to_cpu(src->no_beacons); in ath10k_wmi_pull_pdev_stats_extra()
2965 dst->mib_int_count = __le32_to_cpu(src->mib_int_count); in ath10k_wmi_pull_pdev_stats_extra()
2968 void ath10k_wmi_pull_peer_stats(const struct wmi_peer_stats *src, in ath10k_wmi_pull_peer_stats() argument
2971 ether_addr_copy(dst->peer_macaddr, src->peer_macaddr.addr); in ath10k_wmi_pull_peer_stats()
2972 dst->peer_rssi = __le32_to_cpu(src->peer_rssi); in ath10k_wmi_pull_peer_stats()
2973 dst->peer_tx_rate = __le32_to_cpu(src->peer_tx_rate); in ath10k_wmi_pull_peer_stats()
2977 ath10k_wmi_10_4_pull_peer_stats(const struct wmi_10_4_peer_stats *src, in ath10k_wmi_10_4_pull_peer_stats() argument
2980 ether_addr_copy(dst->peer_macaddr, src->peer_macaddr.addr); in ath10k_wmi_10_4_pull_peer_stats()
2981 dst->peer_rssi = __le32_to_cpu(src->peer_rssi); in ath10k_wmi_10_4_pull_peer_stats()
2982 dst->peer_tx_rate = __le32_to_cpu(src->peer_tx_rate); in ath10k_wmi_10_4_pull_peer_stats()
2983 dst->peer_rx_rate = __le32_to_cpu(src->peer_rx_rate); in ath10k_wmi_10_4_pull_peer_stats()
2987 ath10k_wmi_10_4_pull_vdev_stats(const struct wmi_vdev_stats_extd *src, in ath10k_wmi_10_4_pull_vdev_stats() argument
2990 dst->vdev_id = __le32_to_cpu(src->vdev_id); in ath10k_wmi_10_4_pull_vdev_stats()
2991 dst->ppdu_aggr_cnt = __le32_to_cpu(src->ppdu_aggr_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
2992 dst->ppdu_noack = __le32_to_cpu(src->ppdu_noack); in ath10k_wmi_10_4_pull_vdev_stats()
2993 dst->mpdu_queued = __le32_to_cpu(src->mpdu_queued); in ath10k_wmi_10_4_pull_vdev_stats()
2994 dst->ppdu_nonaggr_cnt = __le32_to_cpu(src->ppdu_nonaggr_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
2995 dst->mpdu_sw_requeued = __le32_to_cpu(src->mpdu_sw_requeued); in ath10k_wmi_10_4_pull_vdev_stats()
2996 dst->mpdu_suc_retry = __le32_to_cpu(src->mpdu_suc_retry); in ath10k_wmi_10_4_pull_vdev_stats()
2997 dst->mpdu_suc_multitry = __le32_to_cpu(src->mpdu_suc_multitry); in ath10k_wmi_10_4_pull_vdev_stats()
2998 dst->mpdu_fail_retry = __le32_to_cpu(src->mpdu_fail_retry); in ath10k_wmi_10_4_pull_vdev_stats()
2999 dst->tx_ftm_suc = __le32_to_cpu(src->tx_ftm_suc); in ath10k_wmi_10_4_pull_vdev_stats()
3000 dst->tx_ftm_suc_retry = __le32_to_cpu(src->tx_ftm_suc_retry); in ath10k_wmi_10_4_pull_vdev_stats()
3001 dst->tx_ftm_fail = __le32_to_cpu(src->tx_ftm_fail); in ath10k_wmi_10_4_pull_vdev_stats()
3002 dst->rx_ftmr_cnt = __le32_to_cpu(src->rx_ftmr_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
3003 dst->rx_ftmr_dup_cnt = __le32_to_cpu(src->rx_ftmr_dup_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
3004 dst->rx_iftmr_cnt = __le32_to_cpu(src->rx_iftmr_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
3005 dst->rx_iftmr_dup_cnt = __le32_to_cpu(src->rx_iftmr_dup_cnt); in ath10k_wmi_10_4_pull_vdev_stats()
3012 const struct wmi_stats_event *ev = (void *)skb->data; in ath10k_wmi_main_op_pull_fw_stats()
3017 return -EPROTO; in ath10k_wmi_main_op_pull_fw_stats()
3019 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_main_op_pull_fw_stats()
3020 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_main_op_pull_fw_stats()
3023 const struct wmi_pdev_stats *src; in ath10k_wmi_main_op_pull_fw_stats() local
3026 src = (void *)skb->data; in ath10k_wmi_main_op_pull_fw_stats()
3027 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_main_op_pull_fw_stats()
3028 return -EPROTO; in ath10k_wmi_main_op_pull_fw_stats()
3034 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_main_op_pull_fw_stats()
3035 ath10k_wmi_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_main_op_pull_fw_stats()
3036 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_main_op_pull_fw_stats()
3038 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_main_op_pull_fw_stats()
3044 const struct wmi_peer_stats *src; in ath10k_wmi_main_op_pull_fw_stats() local
3047 src = (void *)skb->data; in ath10k_wmi_main_op_pull_fw_stats()
3048 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_main_op_pull_fw_stats()
3049 return -EPROTO; in ath10k_wmi_main_op_pull_fw_stats()
3055 ath10k_wmi_pull_peer_stats(src, dst); in ath10k_wmi_main_op_pull_fw_stats()
3056 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_main_op_pull_fw_stats()
3066 const struct wmi_stats_event *ev = (void *)skb->data; in ath10k_wmi_10x_op_pull_fw_stats()
3071 return -EPROTO; in ath10k_wmi_10x_op_pull_fw_stats()
3073 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_10x_op_pull_fw_stats()
3074 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_10x_op_pull_fw_stats()
3077 const struct wmi_10x_pdev_stats *src; in ath10k_wmi_10x_op_pull_fw_stats() local
3080 src = (void *)skb->data; in ath10k_wmi_10x_op_pull_fw_stats()
3081 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10x_op_pull_fw_stats()
3082 return -EPROTO; in ath10k_wmi_10x_op_pull_fw_stats()
3088 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_10x_op_pull_fw_stats()
3089 ath10k_wmi_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_10x_op_pull_fw_stats()
3090 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_10x_op_pull_fw_stats()
3091 ath10k_wmi_pull_pdev_stats_extra(&src->extra, dst); in ath10k_wmi_10x_op_pull_fw_stats()
3093 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_10x_op_pull_fw_stats()
3099 const struct wmi_10x_peer_stats *src; in ath10k_wmi_10x_op_pull_fw_stats() local
3102 src = (void *)skb->data; in ath10k_wmi_10x_op_pull_fw_stats()
3103 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10x_op_pull_fw_stats()
3104 return -EPROTO; in ath10k_wmi_10x_op_pull_fw_stats()
3110 ath10k_wmi_pull_peer_stats(&src->old, dst); in ath10k_wmi_10x_op_pull_fw_stats()
3112 dst->peer_rx_rate = __le32_to_cpu(src->peer_rx_rate); in ath10k_wmi_10x_op_pull_fw_stats()
3114 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_10x_op_pull_fw_stats()
3124 const struct wmi_10_2_stats_event *ev = (void *)skb->data; in ath10k_wmi_10_2_op_pull_fw_stats()
3131 return -EPROTO; in ath10k_wmi_10_2_op_pull_fw_stats()
3133 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_10_2_op_pull_fw_stats()
3134 num_pdev_ext_stats = __le32_to_cpu(ev->num_pdev_ext_stats); in ath10k_wmi_10_2_op_pull_fw_stats()
3135 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_10_2_op_pull_fw_stats()
3138 const struct wmi_10_2_pdev_stats *src; in ath10k_wmi_10_2_op_pull_fw_stats() local
3141 src = (void *)skb->data; in ath10k_wmi_10_2_op_pull_fw_stats()
3142 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_2_op_pull_fw_stats()
3143 return -EPROTO; in ath10k_wmi_10_2_op_pull_fw_stats()
3149 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_10_2_op_pull_fw_stats()
3150 ath10k_wmi_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_10_2_op_pull_fw_stats()
3151 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_10_2_op_pull_fw_stats()
3152 ath10k_wmi_pull_pdev_stats_extra(&src->extra, dst); in ath10k_wmi_10_2_op_pull_fw_stats()
3155 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_10_2_op_pull_fw_stats()
3159 const struct wmi_10_2_pdev_ext_stats *src; in ath10k_wmi_10_2_op_pull_fw_stats() local
3161 src = (void *)skb->data; in ath10k_wmi_10_2_op_pull_fw_stats()
3162 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_2_op_pull_fw_stats()
3163 return -EPROTO; in ath10k_wmi_10_2_op_pull_fw_stats()
3168 * required to parse following sub-structures properly. in ath10k_wmi_10_2_op_pull_fw_stats()
3175 const struct wmi_10_2_peer_stats *src; in ath10k_wmi_10_2_op_pull_fw_stats() local
3178 src = (void *)skb->data; in ath10k_wmi_10_2_op_pull_fw_stats()
3179 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_2_op_pull_fw_stats()
3180 return -EPROTO; in ath10k_wmi_10_2_op_pull_fw_stats()
3186 ath10k_wmi_pull_peer_stats(&src->old, dst); in ath10k_wmi_10_2_op_pull_fw_stats()
3188 dst->peer_rx_rate = __le32_to_cpu(src->peer_rx_rate); in ath10k_wmi_10_2_op_pull_fw_stats()
3191 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_10_2_op_pull_fw_stats()
3201 const struct wmi_10_2_stats_event *ev = (void *)skb->data; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3208 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3210 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3211 num_pdev_ext_stats = __le32_to_cpu(ev->num_pdev_ext_stats); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3212 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3215 const struct wmi_10_2_pdev_stats *src; in ath10k_wmi_10_2_4_op_pull_fw_stats() local
3218 src = (void *)skb->data; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3219 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_2_4_op_pull_fw_stats()
3220 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3226 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3227 ath10k_wmi_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3228 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3229 ath10k_wmi_pull_pdev_stats_extra(&src->extra, dst); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3232 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3236 const struct wmi_10_2_pdev_ext_stats *src; in ath10k_wmi_10_2_4_op_pull_fw_stats() local
3238 src = (void *)skb->data; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3239 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_2_4_op_pull_fw_stats()
3240 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3245 * required to parse following sub-structures properly. in ath10k_wmi_10_2_4_op_pull_fw_stats()
3252 const struct wmi_10_2_4_ext_peer_stats *src; in ath10k_wmi_10_2_4_op_pull_fw_stats() local
3256 if (test_bit(WMI_SERVICE_PEER_STATS, ar->wmi.svc_map)) in ath10k_wmi_10_2_4_op_pull_fw_stats()
3261 src = (void *)skb->data; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3263 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_fw_stats()
3269 ath10k_wmi_pull_peer_stats(&src->common.old, dst); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3271 dst->peer_rx_rate = __le32_to_cpu(src->common.peer_rx_rate); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3274 dst->rx_duration = __le32_to_cpu(src->rx_duration); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3277 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_10_2_4_op_pull_fw_stats()
3287 const struct wmi_10_2_stats_event *ev = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3297 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3299 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_10_4_op_pull_fw_stats()
3300 num_pdev_ext_stats = __le32_to_cpu(ev->num_pdev_ext_stats); in ath10k_wmi_10_4_op_pull_fw_stats()
3301 num_vdev_stats = __le32_to_cpu(ev->num_vdev_stats); in ath10k_wmi_10_4_op_pull_fw_stats()
3302 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_10_4_op_pull_fw_stats()
3303 num_bcnflt_stats = __le32_to_cpu(ev->num_bcnflt_stats); in ath10k_wmi_10_4_op_pull_fw_stats()
3304 stats_id = __le32_to_cpu(ev->stats_id); in ath10k_wmi_10_4_op_pull_fw_stats()
3307 const struct wmi_10_4_pdev_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3310 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3311 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3312 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3318 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3319 ath10k_wmi_10_4_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3320 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3321 dst->rx_ovfl_errs = __le32_to_cpu(src->rx_ovfl_errs); in ath10k_wmi_10_4_op_pull_fw_stats()
3322 ath10k_wmi_pull_pdev_stats_extra(&src->extra, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3324 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_10_4_op_pull_fw_stats()
3328 const struct wmi_10_2_pdev_ext_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3330 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3331 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3332 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3337 * required to parse following sub-structures properly. in ath10k_wmi_10_4_op_pull_fw_stats()
3342 const struct wmi_vdev_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3347 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3348 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3349 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3353 const struct wmi_10_4_peer_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3356 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3357 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3358 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3364 ath10k_wmi_10_4_pull_peer_stats(src, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3365 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_10_4_op_pull_fw_stats()
3369 const struct wmi_10_4_bss_bcn_filter_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3371 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3372 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3373 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3378 * required to parse following sub-structures properly. in ath10k_wmi_10_4_op_pull_fw_stats()
3383 stats->extended = true; in ath10k_wmi_10_4_op_pull_fw_stats()
3386 const struct wmi_10_4_peer_extd_stats *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3389 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3390 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3391 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3397 ether_addr_copy(dst->peer_macaddr, in ath10k_wmi_10_4_op_pull_fw_stats()
3398 src->peer_macaddr.addr); in ath10k_wmi_10_4_op_pull_fw_stats()
3399 dst->rx_duration = __le32_to_cpu(src->rx_duration); in ath10k_wmi_10_4_op_pull_fw_stats()
3400 list_add_tail(&dst->list, &stats->peers_extd); in ath10k_wmi_10_4_op_pull_fw_stats()
3406 const struct wmi_vdev_stats_extd *src; in ath10k_wmi_10_4_op_pull_fw_stats() local
3409 src = (void *)skb->data; in ath10k_wmi_10_4_op_pull_fw_stats()
3410 if (!skb_pull(skb, sizeof(*src))) in ath10k_wmi_10_4_op_pull_fw_stats()
3411 return -EPROTO; in ath10k_wmi_10_4_op_pull_fw_stats()
3416 ath10k_wmi_10_4_pull_vdev_stats(src, dst); in ath10k_wmi_10_4_op_pull_fw_stats()
3417 list_add_tail(&dst->list, &stats->vdevs); in ath10k_wmi_10_4_op_pull_fw_stats()
3434 struct wmi_vdev_start_response_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_vdev_start_ev()
3436 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_vdev_start_ev()
3437 return -EPROTO; in ath10k_wmi_op_pull_vdev_start_ev()
3440 arg->vdev_id = ev->vdev_id; in ath10k_wmi_op_pull_vdev_start_ev()
3441 arg->req_id = ev->req_id; in ath10k_wmi_op_pull_vdev_start_ev()
3442 arg->resp_type = ev->resp_type; in ath10k_wmi_op_pull_vdev_start_ev()
3443 arg->status = ev->status; in ath10k_wmi_op_pull_vdev_start_ev()
3456 ar->last_wmi_vdev_start_status = 0; in ath10k_wmi_event_vdev_start_resp()
3461 ar->last_wmi_vdev_start_status = ret; in ath10k_wmi_event_vdev_start_resp()
3467 ath10k_warn(ar, "vdev-start-response reports status error: %d (%s)\n", in ath10k_wmi_event_vdev_start_resp()
3469 "chan-invalid" : "unknown"); in ath10k_wmi_event_vdev_start_resp()
3473 ar->last_wmi_vdev_start_status = -EINVAL; in ath10k_wmi_event_vdev_start_resp()
3477 complete(&ar->vdev_setup_done); in ath10k_wmi_event_vdev_start_resp()
3483 complete(&ar->vdev_setup_done); in ath10k_wmi_event_vdev_stopped()
3490 struct wmi_peer_sta_kickout_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_peer_kick_ev()
3492 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_peer_kick_ev()
3493 return -EPROTO; in ath10k_wmi_op_pull_peer_kick_ev()
3496 arg->mac_addr = ev->peer_macaddr.addr; in ath10k_wmi_op_pull_peer_kick_ev()
3519 sta = ieee80211_find_sta_by_ifaddr(ar->hw, arg.mac_addr, NULL); in ath10k_wmi_event_peer_sta_kickout()
3540 * sleep transition from connected stations - these do not
3561 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)bcn->data; in ath10k_wmi_update_tim()
3571 tim_len = tim_info->tim_len ? __le32_to_cpu(tim_info->tim_len) : 1; in ath10k_wmi_update_tim()
3576 if (__le32_to_cpu(tim_info->tim_changed)) { in ath10k_wmi_update_tim()
3579 if (sizeof(arvif->u.ap.tim_bitmap) < tim_len) { in ath10k_wmi_update_tim()
3581 tim_len, sizeof(arvif->u.ap.tim_bitmap)); in ath10k_wmi_update_tim()
3582 tim_len = sizeof(arvif->u.ap.tim_bitmap); in ath10k_wmi_update_tim()
3586 t = tim_info->tim_bitmap[i / 4]; in ath10k_wmi_update_tim()
3588 arvif->u.ap.tim_bitmap[i] = (v >> ((i % 4) * 8)) & 0xFF; in ath10k_wmi_update_tim()
3594 arvif->u.ap.tim_len = 0; in ath10k_wmi_update_tim()
3596 if (arvif->u.ap.tim_bitmap[i]) in ath10k_wmi_update_tim()
3597 arvif->u.ap.tim_len = i; in ath10k_wmi_update_tim()
3599 arvif->u.ap.tim_len++; in ath10k_wmi_update_tim()
3602 ies = bcn->data; in ath10k_wmi_update_tim()
3603 ies += ieee80211_hdrlen(hdr->frame_control); in ath10k_wmi_update_tim()
3608 (u8 *)skb_tail_pointer(bcn) - ies); in ath10k_wmi_update_tim()
3611 (u8 *)skb_tail_pointer(bcn) - ies)); in ath10k_wmi_update_tim()
3614 if (arvif->vdev_type != WMI_VDEV_TYPE_IBSS) in ath10k_wmi_update_tim()
3625 pvm_len = ie_len - 3; /* exclude dtim count, dtim period, bmap ctl */ in ath10k_wmi_update_tim()
3627 if (pvm_len < arvif->u.ap.tim_len) { in ath10k_wmi_update_tim()
3628 int expand_size = tim_len - pvm_len; in ath10k_wmi_update_tim()
3629 int move_size = skb_tail_pointer(bcn) - (ie + 2 + ie_len); in ath10k_wmi_update_tim()
3640 /* XXX-BZ this seems to modify the skb data. */ in ath10k_wmi_update_tim()
3656 /* XXX-BZ this seems to modify the skb data. */ in ath10k_wmi_update_tim()
3658 tim->bitmap_ctrl = !!__le32_to_cpu(tim_info->tim_mcast); in ath10k_wmi_update_tim()
3659 memcpy(tim->virtual_map, arvif->u.ap.tim_bitmap, pvm_len); in ath10k_wmi_update_tim()
3661 if (tim->dtim_count == 0) { in ath10k_wmi_update_tim()
3662 ATH10K_SKB_CB(bcn)->flags |= ATH10K_SKB_F_DTIM_ZERO; in ath10k_wmi_update_tim()
3664 if (__le32_to_cpu(tim_info->tim_mcast) == 1) in ath10k_wmi_update_tim()
3665 ATH10K_SKB_CB(bcn)->flags |= ATH10K_SKB_F_DELIVER_CAB; in ath10k_wmi_update_tim()
3669 tim->dtim_count, tim->dtim_period, in ath10k_wmi_update_tim()
3670 tim->bitmap_ctrl, pvm_len); in ath10k_wmi_update_tim()
3677 if (!arvif->vif->p2p) in ath10k_wmi_update_noa()
3680 ath10k_dbg(ar, ATH10K_DBG_MGMT, "noa changed: %d\n", noa->changed); in ath10k_wmi_update_noa()
3682 if (noa->changed & WMI_P2P_NOA_CHANGED_BIT) in ath10k_wmi_update_noa()
3685 if (arvif->u.ap.noa_data) in ath10k_wmi_update_noa()
3686 if (!pskb_expand_head(bcn, 0, arvif->u.ap.noa_len, GFP_ATOMIC)) in ath10k_wmi_update_noa()
3687 skb_put_data(bcn, arvif->u.ap.noa_data, in ath10k_wmi_update_noa()
3688 arvif->u.ap.noa_len); in ath10k_wmi_update_noa()
3694 struct wmi_host_swba_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_swba_ev()
3698 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_swba_ev()
3699 return -EPROTO; in ath10k_wmi_op_pull_swba_ev()
3702 arg->vdev_map = ev->vdev_map; in ath10k_wmi_op_pull_swba_ev()
3704 for (i = 0, map = __le32_to_cpu(ev->vdev_map); map; map >>= 1) { in ath10k_wmi_op_pull_swba_ev()
3711 if (WARN_ON_ONCE(i == ARRAY_SIZE(arg->tim_info))) in ath10k_wmi_op_pull_swba_ev()
3714 if (__le32_to_cpu(ev->bcn_info[i].tim_info.tim_len) > in ath10k_wmi_op_pull_swba_ev()
3715 sizeof(ev->bcn_info[i].tim_info.tim_bitmap)) { in ath10k_wmi_op_pull_swba_ev()
3717 return -EPROTO; in ath10k_wmi_op_pull_swba_ev()
3720 arg->tim_info[i].tim_len = ev->bcn_info[i].tim_info.tim_len; in ath10k_wmi_op_pull_swba_ev()
3721 arg->tim_info[i].tim_mcast = ev->bcn_info[i].tim_info.tim_mcast; in ath10k_wmi_op_pull_swba_ev()
3722 arg->tim_info[i].tim_bitmap = in ath10k_wmi_op_pull_swba_ev()
3723 ev->bcn_info[i].tim_info.tim_bitmap; in ath10k_wmi_op_pull_swba_ev()
3724 arg->tim_info[i].tim_changed = in ath10k_wmi_op_pull_swba_ev()
3725 ev->bcn_info[i].tim_info.tim_changed; in ath10k_wmi_op_pull_swba_ev()
3726 arg->tim_info[i].tim_num_ps_pending = in ath10k_wmi_op_pull_swba_ev()
3727 ev->bcn_info[i].tim_info.tim_num_ps_pending; in ath10k_wmi_op_pull_swba_ev()
3729 arg->noa_info[i] = &ev->bcn_info[i].p2p_noa_info; in ath10k_wmi_op_pull_swba_ev()
3740 struct wmi_10_2_4_host_swba_event *ev = (void *)skb->data; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3744 if (skb->len < sizeof(*ev)) in ath10k_wmi_10_2_4_op_pull_swba_ev()
3745 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3748 arg->vdev_map = ev->vdev_map; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3750 for (i = 0, map = __le32_to_cpu(ev->vdev_map); map; map >>= 1) { in ath10k_wmi_10_2_4_op_pull_swba_ev()
3757 if (WARN_ON_ONCE(i == ARRAY_SIZE(arg->tim_info))) in ath10k_wmi_10_2_4_op_pull_swba_ev()
3760 if (__le32_to_cpu(ev->bcn_info[i].tim_info.tim_len) > in ath10k_wmi_10_2_4_op_pull_swba_ev()
3761 sizeof(ev->bcn_info[i].tim_info.tim_bitmap)) { in ath10k_wmi_10_2_4_op_pull_swba_ev()
3763 return -EPROTO; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3766 arg->tim_info[i].tim_len = ev->bcn_info[i].tim_info.tim_len; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3767 arg->tim_info[i].tim_mcast = ev->bcn_info[i].tim_info.tim_mcast; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3768 arg->tim_info[i].tim_bitmap = in ath10k_wmi_10_2_4_op_pull_swba_ev()
3769 ev->bcn_info[i].tim_info.tim_bitmap; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3770 arg->tim_info[i].tim_changed = in ath10k_wmi_10_2_4_op_pull_swba_ev()
3771 ev->bcn_info[i].tim_info.tim_changed; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3772 arg->tim_info[i].tim_num_ps_pending = in ath10k_wmi_10_2_4_op_pull_swba_ev()
3773 ev->bcn_info[i].tim_info.tim_num_ps_pending; in ath10k_wmi_10_2_4_op_pull_swba_ev()
3784 struct wmi_10_4_host_swba_event *ev = (void *)skb->data; in ath10k_wmi_10_4_op_pull_swba_ev()
3788 if (skb->len < sizeof(*ev)) in ath10k_wmi_10_4_op_pull_swba_ev()
3789 return -EPROTO; in ath10k_wmi_10_4_op_pull_swba_ev()
3792 arg->vdev_map = ev->vdev_map; in ath10k_wmi_10_4_op_pull_swba_ev()
3794 for (i = 0, map = __le32_to_cpu(ev->vdev_map); map; map >>= 1) { in ath10k_wmi_10_4_op_pull_swba_ev()
3801 if (WARN_ON_ONCE(i == ARRAY_SIZE(arg->tim_info))) in ath10k_wmi_10_4_op_pull_swba_ev()
3804 if (__le32_to_cpu(ev->bcn_info[i].tim_info.tim_len) > in ath10k_wmi_10_4_op_pull_swba_ev()
3805 sizeof(ev->bcn_info[i].tim_info.tim_bitmap)) { in ath10k_wmi_10_4_op_pull_swba_ev()
3807 return -EPROTO; in ath10k_wmi_10_4_op_pull_swba_ev()
3810 tim_len = __le32_to_cpu(ev->bcn_info[i].tim_info.tim_len); in ath10k_wmi_10_4_op_pull_swba_ev()
3813 tim_len -= 4; in ath10k_wmi_10_4_op_pull_swba_ev()
3814 arg->tim_info[i].tim_len = __cpu_to_le32(tim_len); in ath10k_wmi_10_4_op_pull_swba_ev()
3816 arg->tim_info[i].tim_len = 0; in ath10k_wmi_10_4_op_pull_swba_ev()
3819 arg->tim_info[i].tim_mcast = ev->bcn_info[i].tim_info.tim_mcast; in ath10k_wmi_10_4_op_pull_swba_ev()
3820 arg->tim_info[i].tim_bitmap = in ath10k_wmi_10_4_op_pull_swba_ev()
3821 ev->bcn_info[i].tim_info.tim_bitmap; in ath10k_wmi_10_4_op_pull_swba_ev()
3822 arg->tim_info[i].tim_changed = in ath10k_wmi_10_4_op_pull_swba_ev()
3823 ev->bcn_info[i].tim_info.tim_changed; in ath10k_wmi_10_4_op_pull_swba_ev()
3824 arg->tim_info[i].tim_num_ps_pending = in ath10k_wmi_10_4_op_pull_swba_ev()
3825 ev->bcn_info[i].tim_info.tim_num_ps_pending; in ath10k_wmi_10_4_op_pull_swba_ev()
3846 int i = -1; in ath10k_wmi_event_host_swba()
3882 __le32_to_cpu(tim_info->tim_len), in ath10k_wmi_event_host_swba()
3883 __le32_to_cpu(tim_info->tim_mcast), in ath10k_wmi_event_host_swba()
3884 __le32_to_cpu(tim_info->tim_changed), in ath10k_wmi_event_host_swba()
3885 __le32_to_cpu(tim_info->tim_num_ps_pending), in ath10k_wmi_event_host_swba()
3886 __le32_to_cpu(tim_info->tim_bitmap[3]), in ath10k_wmi_event_host_swba()
3887 __le32_to_cpu(tim_info->tim_bitmap[2]), in ath10k_wmi_event_host_swba()
3888 __le32_to_cpu(tim_info->tim_bitmap[1]), in ath10k_wmi_event_host_swba()
3889 __le32_to_cpu(tim_info->tim_bitmap[0])); in ath10k_wmi_event_host_swba()
3905 if (!arvif->is_up) in ath10k_wmi_event_host_swba()
3914 if (arvif->vif->bss_conf.csa_active && in ath10k_wmi_event_host_swba()
3915 ieee80211_beacon_cntdwn_is_complete(arvif->vif)) { in ath10k_wmi_event_host_swba()
3916 ieee80211_csa_finish(arvif->vif); in ath10k_wmi_event_host_swba()
3920 bcn = ieee80211_beacon_get(ar->hw, arvif->vif, 0); in ath10k_wmi_event_host_swba()
3926 ath10k_tx_h_seq_no(arvif->vif, bcn); in ath10k_wmi_event_host_swba()
3930 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_host_swba()
3932 if (arvif->beacon) { in ath10k_wmi_event_host_swba()
3933 switch (arvif->beacon_state) { in ath10k_wmi_event_host_swba()
3938 arvif->vdev_id); in ath10k_wmi_event_host_swba()
3942 arvif->vdev_id); in ath10k_wmi_event_host_swba()
3950 if (!arvif->beacon_buf) { in ath10k_wmi_event_host_swba()
3951 paddr = dma_map_single(arvif->ar->dev, bcn->data, in ath10k_wmi_event_host_swba()
3952 bcn->len, DMA_TO_DEVICE); in ath10k_wmi_event_host_swba()
3953 ret = dma_mapping_error(arvif->ar->dev, paddr); in ath10k_wmi_event_host_swba()
3961 ATH10K_SKB_CB(bcn)->paddr = paddr; in ath10k_wmi_event_host_swba()
3963 if (bcn->len > IEEE80211_MAX_FRAME_LEN) { in ath10k_wmi_event_host_swba()
3964 ath10k_warn(ar, "trimming beacon %d -> %d bytes!\n", in ath10k_wmi_event_host_swba()
3965 bcn->len, IEEE80211_MAX_FRAME_LEN); in ath10k_wmi_event_host_swba()
3968 memcpy(arvif->beacon_buf, bcn->data, bcn->len); in ath10k_wmi_event_host_swba()
3969 ATH10K_SKB_CB(bcn)->paddr = arvif->beacon_paddr; in ath10k_wmi_event_host_swba()
3972 arvif->beacon = bcn; in ath10k_wmi_event_host_swba()
3973 arvif->beacon_state = ATH10K_BEACON_SCHEDULED; in ath10k_wmi_event_host_swba()
3975 trace_ath10k_tx_hdr(ar, bcn->data, bcn->len); in ath10k_wmi_event_host_swba()
3976 trace_ath10k_tx_payload(ar, bcn->data, bcn->len); in ath10k_wmi_event_host_swba()
3979 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_host_swba()
3998 if (ar->dfs_block_radar_events) in ath10k_radar_detected()
4001 ieee80211_radar_detected(ar->hw); in ath10k_radar_detected()
4011 reinit_completion(&ar->wmi.radar_confirm); in ath10k_radar_confirmation_work()
4013 spin_lock_bh(&ar->data_lock); in ath10k_radar_confirmation_work()
4014 memcpy(&radar_info, &ar->last_radar_info, sizeof(radar_info)); in ath10k_radar_confirmation_work()
4015 spin_unlock_bh(&ar->data_lock); in ath10k_radar_confirmation_work()
4023 time_left = wait_for_completion_timeout(&ar->wmi.radar_confirm, in ath10k_radar_confirmation_work()
4046 spin_lock_bh(&ar->data_lock); in ath10k_radar_confirmation_work()
4047 if (ar->radar_conf_state != ATH10K_RADAR_CONFIRMATION_STOPPED) in ath10k_radar_confirmation_work()
4048 ar->radar_conf_state = ATH10K_RADAR_CONFIRMATION_IDLE; in ath10k_radar_confirmation_work()
4049 spin_unlock_bh(&ar->data_lock); in ath10k_radar_confirmation_work()
4065 reg0 = __le32_to_cpu(rr->reg0); in ath10k_dfs_radar_report()
4066 reg1 = __le32_to_cpu(rr->reg1); in ath10k_dfs_radar_report()
4086 if (!ar->dfs_detector) in ath10k_dfs_radar_report()
4089 spin_lock_bh(&ar->data_lock); in ath10k_dfs_radar_report()
4090 ch = ar->rx_channel; in ath10k_dfs_radar_report()
4094 ch = ar->tgt_oper_chan; in ath10k_dfs_radar_report()
4096 spin_unlock_bh(&ar->data_lock); in ath10k_dfs_radar_report()
4104 tsf32l = phyerr->tsf_timestamp; in ath10k_dfs_radar_report()
4109 rssi = phyerr->rssi_combined; in ath10k_dfs_radar_report()
4118 pe.freq = ch->center_freq; in ath10k_dfs_radar_report()
4133 if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe, &rs)) { in ath10k_dfs_radar_report()
4139 if ((test_bit(WMI_SERVICE_HOST_DFS_CHECK_SUPPORT, ar->wmi.svc_map)) && in ath10k_dfs_radar_report()
4140 ar->dfs_detector->region == NL80211_DFS_FCC) { in ath10k_dfs_radar_report()
4145 spin_lock_bh(&ar->data_lock); in ath10k_dfs_radar_report()
4146 if (ar->radar_conf_state != ATH10K_RADAR_CONFIRMATION_IDLE) { in ath10k_dfs_radar_report()
4147 spin_unlock_bh(&ar->data_lock); in ath10k_dfs_radar_report()
4150 ar->radar_conf_state = ATH10K_RADAR_CONFIRMATION_INPROGRESS; in ath10k_dfs_radar_report()
4151 radar_info = &ar->last_radar_info; in ath10k_dfs_radar_report()
4153 radar_info->pri_min = rs.pri_min; in ath10k_dfs_radar_report()
4154 radar_info->pri_max = rs.pri_max; in ath10k_dfs_radar_report()
4155 radar_info->width_min = rs.width_min; in ath10k_dfs_radar_report()
4156 radar_info->width_max = rs.width_max; in ath10k_dfs_radar_report()
4158 radar_info->sidx_min = MS(reg0, RADAR_REPORT_REG0_PULSE_SIDX); in ath10k_dfs_radar_report()
4159 radar_info->sidx_max = MS(reg0, RADAR_REPORT_REG0_PULSE_SIDX); in ath10k_dfs_radar_report()
4163 radar_info->pri_min, radar_info->pri_max, in ath10k_dfs_radar_report()
4164 radar_info->width_min, radar_info->width_max, in ath10k_dfs_radar_report()
4165 radar_info->sidx_min, radar_info->sidx_max); in ath10k_dfs_radar_report()
4166 ieee80211_queue_work(ar->hw, &ar->radar_confirmation_work); in ath10k_dfs_radar_report()
4167 spin_unlock_bh(&ar->data_lock); in ath10k_dfs_radar_report()
4183 reg0 = __le32_to_cpu(fftr->reg0); in ath10k_dfs_fft_report()
4184 reg1 = __le32_to_cpu(fftr->reg1); in ath10k_dfs_fft_report()
4185 rssi = phyerr->rssi_combined; in ath10k_dfs_fft_report()
4207 return -EINVAL; in ath10k_dfs_fft_report()
4223 buf_len = phyerr->buf_len; in ath10k_wmi_event_dfs()
4227 phyerr->phy_err_code, phyerr->rssi_combined, in ath10k_wmi_event_dfs()
4228 phyerr->tsf_timestamp, tsf, buf_len); in ath10k_wmi_event_dfs()
4231 phyerr->phy_err_code, phyerr->rssi_combined, in ath10k_wmi_event_dfs()
4232 phyerr->tsf_timestamp, (uintmax_t)tsf, buf_len); in ath10k_wmi_event_dfs()
4249 tlv = (struct phyerr_tlv *)&phyerr->buf[i]; in ath10k_wmi_event_dfs()
4251 tlv = (const struct phyerr_tlv *)&phyerr->buf[i]; in ath10k_wmi_event_dfs()
4253 tlv_len = __le16_to_cpu(tlv->len); in ath10k_wmi_event_dfs()
4254 tlv_buf = &phyerr->buf[i + sizeof(*tlv)]; in ath10k_wmi_event_dfs()
4257 tlv_len, tlv->tag, tlv->sig); in ath10k_wmi_event_dfs()
4259 switch (tlv->tag) { in ath10k_wmi_event_dfs()
4310 buf_len = phyerr->buf_len; in ath10k_wmi_event_spectral_scan()
4320 tlv = (struct phyerr_tlv *)&phyerr->buf[i]; in ath10k_wmi_event_spectral_scan()
4322 tlv = (const struct phyerr_tlv *)&phyerr->buf[i]; in ath10k_wmi_event_spectral_scan()
4324 tlv_len = __le16_to_cpu(tlv->len); in ath10k_wmi_event_spectral_scan()
4325 tlv_buf = &phyerr->buf[i + sizeof(*tlv)]; in ath10k_wmi_event_spectral_scan()
4333 switch (tlv->tag) { in ath10k_wmi_event_spectral_scan()
4341 fftr_len = tlv_len - sizeof(*fftr); in ath10k_wmi_event_spectral_scan()
4362 struct wmi_phyerr_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_phyerr_ev_hdr()
4364 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_phyerr_ev_hdr()
4365 return -EPROTO; in ath10k_wmi_op_pull_phyerr_ev_hdr()
4367 arg->num_phyerrs = __le32_to_cpu(ev->num_phyerrs); in ath10k_wmi_op_pull_phyerr_ev_hdr()
4368 arg->tsf_l32 = __le32_to_cpu(ev->tsf_l32); in ath10k_wmi_op_pull_phyerr_ev_hdr()
4369 arg->tsf_u32 = __le32_to_cpu(ev->tsf_u32); in ath10k_wmi_op_pull_phyerr_ev_hdr()
4370 arg->buf_len = skb->len - sizeof(*ev); in ath10k_wmi_op_pull_phyerr_ev_hdr()
4371 arg->phyerrs = ev->phyerrs; in ath10k_wmi_op_pull_phyerr_ev_hdr()
4380 struct wmi_10_4_phyerr_event *ev = (void *)skb->data; in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4382 if (skb->len < sizeof(*ev)) in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4383 return -EPROTO; in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4386 arg->num_phyerrs = 1; in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4388 arg->tsf_l32 = __le32_to_cpu(ev->tsf_l32); in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4389 arg->tsf_u32 = __le32_to_cpu(ev->tsf_u32); in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4390 arg->buf_len = skb->len; in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4391 arg->phyerrs = skb->data; in ath10k_wmi_10_4_op_pull_phyerr_ev_hdr()
4407 return -EINVAL; in ath10k_wmi_op_pull_phyerr_ev()
4410 arg->tsf_timestamp = __le32_to_cpu(phyerr->tsf_timestamp); in ath10k_wmi_op_pull_phyerr_ev()
4411 arg->freq1 = __le16_to_cpu(phyerr->freq1); in ath10k_wmi_op_pull_phyerr_ev()
4412 arg->freq2 = __le16_to_cpu(phyerr->freq2); in ath10k_wmi_op_pull_phyerr_ev()
4413 arg->rssi_combined = phyerr->rssi_combined; in ath10k_wmi_op_pull_phyerr_ev()
4414 arg->chan_width_mhz = phyerr->chan_width_mhz; in ath10k_wmi_op_pull_phyerr_ev()
4415 arg->buf_len = __le32_to_cpu(phyerr->buf_len); in ath10k_wmi_op_pull_phyerr_ev()
4416 arg->buf = phyerr->buf; in ath10k_wmi_op_pull_phyerr_ev()
4417 arg->hdr_len = sizeof(*phyerr); in ath10k_wmi_op_pull_phyerr_ev()
4420 arg->nf_chains[i] = __le16_to_cpu(phyerr->nf_chains[i]); in ath10k_wmi_op_pull_phyerr_ev()
4422 switch (phyerr->phy_err_code) { in ath10k_wmi_op_pull_phyerr_ev()
4424 arg->phy_err_code = PHY_ERROR_SPECTRAL_SCAN; in ath10k_wmi_op_pull_phyerr_ev()
4427 arg->phy_err_code = PHY_ERROR_FALSE_RADAR_EXT; in ath10k_wmi_op_pull_phyerr_ev()
4430 arg->phy_err_code = PHY_ERROR_RADAR; in ath10k_wmi_op_pull_phyerr_ev()
4433 arg->phy_err_code = PHY_ERROR_UNKNOWN; in ath10k_wmi_op_pull_phyerr_ev()
4452 return -EINVAL; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4455 arg->tsf_timestamp = __le32_to_cpu(phyerr->tsf_timestamp); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4456 arg->freq1 = __le16_to_cpu(phyerr->freq1); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4457 arg->freq2 = __le16_to_cpu(phyerr->freq2); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4458 arg->rssi_combined = phyerr->rssi_combined; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4459 arg->chan_width_mhz = phyerr->chan_width_mhz; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4460 arg->buf_len = __le32_to_cpu(phyerr->buf_len); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4461 arg->buf = phyerr->buf; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4462 arg->hdr_len = sizeof(*phyerr); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4465 arg->nf_chains[i] = __le16_to_cpu(phyerr->nf_chains[i]); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4467 phy_err_mask = __le32_to_cpu(phyerr->phy_err_mask[0]); in ath10k_wmi_10_4_op_pull_phyerr_ev()
4470 arg->phy_err_code = PHY_ERROR_SPECTRAL_SCAN; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4472 arg->phy_err_code = PHY_ERROR_RADAR; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4474 arg->phy_err_code = PHY_ERROR_UNKNOWN; in ath10k_wmi_10_4_op_pull_phyerr_ev()
4527 left_len -= phyerr_arg.hdr_len; in ath10k_wmi_event_phyerr()
4536 left_len -= buf_len; in ath10k_wmi_event_phyerr()
4561 struct wmi_dfs_status_ev_arg *ev = (void *)skb->data; in ath10k_wmi_10_4_op_pull_dfs_status_ev()
4563 if (skb->len < sizeof(*ev)) in ath10k_wmi_10_4_op_pull_dfs_status_ev()
4564 return -EPROTO; in ath10k_wmi_10_4_op_pull_dfs_status_ev()
4566 arg->status = ev->status; in ath10k_wmi_10_4_op_pull_dfs_status_ev()
4595 complete(&ar->wmi.radar_confirm); in ath10k_wmi_event_dfs_status_check()
4649 for (i = 0; i < sizeof(buf) - 1; i++) { in ath10k_wmi_event_debug_print()
4650 if (i >= skb->len) in ath10k_wmi_event_debug_print()
4653 c = skb->data[i]; in ath10k_wmi_event_debug_print()
4664 if (i == sizeof(buf) - 1) in ath10k_wmi_event_debug_print()
4665 ath10k_warn(ar, "wmi debug print truncated: %d\n", skb->len); in ath10k_wmi_event_debug_print()
4668 if (skb->data[i - 1] == '\n') in ath10k_wmi_event_debug_print()
4669 i--; in ath10k_wmi_event_debug_print()
4709 complete(&ar->wow.wakeup_completed); in ath10k_wmi_event_wow_wakeup_host()
4735 ch = num_chains - 1; in ath10k_tpc_config_get_rate()
4737 tpc = min_t(u8, ev->rates_array[rate_idx], ev->max_reg_allow_pow[ch]); in ath10k_tpc_config_get_rate()
4739 if (__le32_to_cpu(ev->num_tx_chain) <= 1) in ath10k_tpc_config_get_rate()
4745 stm_idx = num_streams - 1; in ath10k_tpc_config_get_rate()
4752 ev->max_reg_allow_pow_agstbc[ch - 1][stm_idx]); in ath10k_tpc_config_get_rate()
4756 ev->max_reg_allow_pow_agtxbf[ch - 1][stm_idx]); in ath10k_tpc_config_get_rate()
4760 ev->max_reg_allow_pow_agcdd[ch - 1][stm_idx]); in ath10k_tpc_config_get_rate()
4782 flags = __le32_to_cpu(ev->flags); in ath10k_tpc_config_disp_tables()
4788 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_tpc_config_disp_tables()
4795 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_tpc_config_disp_tables()
4802 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_tpc_config_disp_tables()
4813 for (i = 0; i < tpc_stats->rate_max; i++) { in ath10k_tpc_config_disp_tables()
4819 for (j = 0; j < tpc_stats->num_tx_chain; j++) { in ath10k_tpc_config_disp_tables()
4826 tpc_stats->tpc_table[type].pream_idx[i] = pream_idx; in ath10k_tpc_config_disp_tables()
4827 tpc_stats->tpc_table[type].rate_code[i] = rate_code[i]; in ath10k_tpc_config_disp_tables()
4828 memcpy(tpc_stats->tpc_table[type].tpc_value[i], in ath10k_tpc_config_disp_tables()
4938 ev = (struct wmi_pdev_tpc_config_event *)skb->data; in ath10k_wmi_event_pdev_tpc_config()
4940 num_tx_chain = __le32_to_cpu(ev->num_tx_chain); in ath10k_wmi_event_pdev_tpc_config()
4948 rate_max = __le32_to_cpu(ev->rate_max); in ath10k_wmi_event_pdev_tpc_config()
4962 tpc_stats->chan_freq = __le32_to_cpu(ev->chan_freq); in ath10k_wmi_event_pdev_tpc_config()
4963 tpc_stats->phy_mode = __le32_to_cpu(ev->phy_mode); in ath10k_wmi_event_pdev_tpc_config()
4964 tpc_stats->ctl = __le32_to_cpu(ev->ctl); in ath10k_wmi_event_pdev_tpc_config()
4965 tpc_stats->reg_domain = __le32_to_cpu(ev->reg_domain); in ath10k_wmi_event_pdev_tpc_config()
4966 tpc_stats->twice_antenna_gain = a_sle32_to_cpu(ev->twice_antenna_gain); in ath10k_wmi_event_pdev_tpc_config()
4967 tpc_stats->twice_antenna_reduction = in ath10k_wmi_event_pdev_tpc_config()
4968 __le32_to_cpu(ev->twice_antenna_reduction); in ath10k_wmi_event_pdev_tpc_config()
4969 tpc_stats->power_limit = __le32_to_cpu(ev->power_limit); in ath10k_wmi_event_pdev_tpc_config()
4970 tpc_stats->twice_max_rd_power = __le32_to_cpu(ev->twice_max_rd_power); in ath10k_wmi_event_pdev_tpc_config()
4971 tpc_stats->num_tx_chain = num_tx_chain; in ath10k_wmi_event_pdev_tpc_config()
4972 tpc_stats->rate_max = rate_max; in ath10k_wmi_event_pdev_tpc_config()
4988 __le32_to_cpu(ev->chan_freq), in ath10k_wmi_event_pdev_tpc_config()
4989 __le32_to_cpu(ev->phy_mode), in ath10k_wmi_event_pdev_tpc_config()
4990 __le32_to_cpu(ev->ctl), in ath10k_wmi_event_pdev_tpc_config()
4991 __le32_to_cpu(ev->reg_domain), in ath10k_wmi_event_pdev_tpc_config()
4992 a_sle32_to_cpu(ev->twice_antenna_gain), in ath10k_wmi_event_pdev_tpc_config()
4993 __le32_to_cpu(ev->twice_antenna_reduction), in ath10k_wmi_event_pdev_tpc_config()
4994 __le32_to_cpu(ev->power_limit), in ath10k_wmi_event_pdev_tpc_config()
4995 __le32_to_cpu(ev->twice_max_rd_power) / 2, in ath10k_wmi_event_pdev_tpc_config()
4996 __le32_to_cpu(ev->num_tx_chain), in ath10k_wmi_event_pdev_tpc_config()
4997 __le32_to_cpu(ev->rate_max)); in ath10k_wmi_event_pdev_tpc_config()
5012 ch = num_chains - 1; in ath10k_wmi_tpc_final_get_rate()
5013 stm_idx = num_streams - 1; in ath10k_wmi_tpc_final_get_rate()
5014 pream = -1; in ath10k_wmi_tpc_final_get_rate()
5016 if (__le32_to_cpu(ev->chan_freq) <= 2483) { in ath10k_wmi_tpc_final_get_rate()
5036 pream = -1; in ath10k_wmi_tpc_final_get_rate()
5041 if (__le32_to_cpu(ev->chan_freq) >= 5180) { in ath10k_wmi_tpc_final_get_rate()
5061 pream = -1; in ath10k_wmi_tpc_final_get_rate()
5066 if (pream == -1) { in ath10k_wmi_tpc_final_get_rate()
5068 pream_idx, __le32_to_cpu(ev->chan_freq)); in ath10k_wmi_tpc_final_get_rate()
5074 tpc = min_t(u8, ev->rates_array[rate_idx], in ath10k_wmi_tpc_final_get_rate()
5075 ev->max_reg_allow_pow[ch]); in ath10k_wmi_tpc_final_get_rate()
5077 tpc = min_t(u8, min_t(u8, ev->rates_array[rate_idx], in ath10k_wmi_tpc_final_get_rate()
5078 ev->max_reg_allow_pow[ch]), in ath10k_wmi_tpc_final_get_rate()
5079 ev->ctl_power_table[0][pream][stm_idx]); in ath10k_wmi_tpc_final_get_rate()
5081 if (__le32_to_cpu(ev->num_tx_chain) <= 1) in ath10k_wmi_tpc_final_get_rate()
5092 pow_agstbc = ev->max_reg_allow_pow_agstbc[ch - 1][stm_idx]; in ath10k_wmi_tpc_final_get_rate()
5097 ev->ctl_power_table[0][pream][stm_idx]); in ath10k_wmi_tpc_final_get_rate()
5100 pow_agtxbf = ev->max_reg_allow_pow_agtxbf[ch - 1][stm_idx]; in ath10k_wmi_tpc_final_get_rate()
5105 ev->ctl_power_table[1][pream][stm_idx]); in ath10k_wmi_tpc_final_get_rate()
5108 pow_agcdd = ev->max_reg_allow_pow_agcdd[ch - 1][stm_idx]; in ath10k_wmi_tpc_final_get_rate()
5113 ev->ctl_power_table[0][pream][stm_idx]); in ath10k_wmi_tpc_final_get_rate()
5136 flags = __le32_to_cpu(ev->flags); in ath10k_wmi_tpc_stats_final_disp_tables()
5142 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_wmi_tpc_stats_final_disp_tables()
5149 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_wmi_tpc_stats_final_disp_tables()
5156 tpc_stats->flag[type] = ATH10K_TPC_TABLE_TYPE_FLAG; in ath10k_wmi_tpc_stats_final_disp_tables()
5167 for (i = 0; i < tpc_stats->rate_max; i++) { in ath10k_wmi_tpc_stats_final_disp_tables()
5173 for (j = 0; j < tpc_stats->num_tx_chain; j++) { in ath10k_wmi_tpc_stats_final_disp_tables()
5180 tpc_stats->tpc_table_final[type].pream_idx[i] = pream_idx; in ath10k_wmi_tpc_stats_final_disp_tables()
5181 tpc_stats->tpc_table_final[type].rate_code[i] = rate_code[i]; in ath10k_wmi_tpc_stats_final_disp_tables()
5182 memcpy(tpc_stats->tpc_table_final[type].tpc_value[i], in ath10k_wmi_tpc_stats_final_disp_tables()
5195 ev = (struct wmi_pdev_tpc_final_table_event *)skb->data; in ath10k_wmi_event_tpc_final_table()
5197 num_tx_chain = __le32_to_cpu(ev->num_tx_chain); in ath10k_wmi_event_tpc_final_table()
5204 rate_max = __le32_to_cpu(ev->rate_max); in ath10k_wmi_event_tpc_final_table()
5218 tpc_stats->chan_freq = __le32_to_cpu(ev->chan_freq); in ath10k_wmi_event_tpc_final_table()
5219 tpc_stats->phy_mode = __le32_to_cpu(ev->phy_mode); in ath10k_wmi_event_tpc_final_table()
5220 tpc_stats->ctl = __le32_to_cpu(ev->ctl); in ath10k_wmi_event_tpc_final_table()
5221 tpc_stats->reg_domain = __le32_to_cpu(ev->reg_domain); in ath10k_wmi_event_tpc_final_table()
5222 tpc_stats->twice_antenna_gain = a_sle32_to_cpu(ev->twice_antenna_gain); in ath10k_wmi_event_tpc_final_table()
5223 tpc_stats->twice_antenna_reduction = in ath10k_wmi_event_tpc_final_table()
5224 __le32_to_cpu(ev->twice_antenna_reduction); in ath10k_wmi_event_tpc_final_table()
5225 tpc_stats->power_limit = __le32_to_cpu(ev->power_limit); in ath10k_wmi_event_tpc_final_table()
5226 tpc_stats->twice_max_rd_power = __le32_to_cpu(ev->twice_max_rd_power); in ath10k_wmi_event_tpc_final_table()
5227 tpc_stats->num_tx_chain = num_tx_chain; in ath10k_wmi_event_tpc_final_table()
5228 tpc_stats->rate_max = rate_max; in ath10k_wmi_event_tpc_final_table()
5244 __le32_to_cpu(ev->chan_freq), in ath10k_wmi_event_tpc_final_table()
5245 __le32_to_cpu(ev->phy_mode), in ath10k_wmi_event_tpc_final_table()
5246 __le32_to_cpu(ev->ctl), in ath10k_wmi_event_tpc_final_table()
5247 __le32_to_cpu(ev->reg_domain), in ath10k_wmi_event_tpc_final_table()
5248 a_sle32_to_cpu(ev->twice_antenna_gain), in ath10k_wmi_event_tpc_final_table()
5249 __le32_to_cpu(ev->twice_antenna_reduction), in ath10k_wmi_event_tpc_final_table()
5250 __le32_to_cpu(ev->power_limit), in ath10k_wmi_event_tpc_final_table()
5251 __le32_to_cpu(ev->twice_max_rd_power) / 2, in ath10k_wmi_event_tpc_final_table()
5252 __le32_to_cpu(ev->num_tx_chain), in ath10k_wmi_event_tpc_final_table()
5253 __le32_to_cpu(ev->rate_max)); in ath10k_wmi_event_tpc_final_table()
5267 if (skb->len < sizeof(*ev)) { in ath10k_wmi_handle_tdls_peer_event()
5269 skb->len); in ath10k_wmi_handle_tdls_peer_event()
5273 ev = (struct wmi_tdls_peer_event *)skb->data; in ath10k_wmi_handle_tdls_peer_event()
5274 vdev_id = __le32_to_cpu(ev->vdev_id); in ath10k_wmi_handle_tdls_peer_event()
5275 peer_status = __le32_to_cpu(ev->peer_status); in ath10k_wmi_handle_tdls_peer_event()
5276 peer_reason = __le32_to_cpu(ev->peer_reason); in ath10k_wmi_handle_tdls_peer_event()
5278 spin_lock_bh(&ar->data_lock); in ath10k_wmi_handle_tdls_peer_event()
5279 peer = ath10k_peer_find(ar, vdev_id, ev->peer_macaddr.addr); in ath10k_wmi_handle_tdls_peer_event()
5280 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_handle_tdls_peer_event()
5284 ev->peer_macaddr.addr); in ath10k_wmi_handle_tdls_peer_event()
5308 ieee80211_tdls_oper_request(arvif->vif, ev->peer_macaddr.addr, in ath10k_wmi_handle_tdls_peer_event()
5314 ev->peer_macaddr.addr, peer_reason); in ath10k_wmi_handle_tdls_peer_event()
5332 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_peer_sta_ps_state_chg()
5334 ev = (struct wmi_peer_sta_ps_state_chg_event *)skb->data; in ath10k_wmi_event_peer_sta_ps_state_chg()
5335 ether_addr_copy(peer_addr, ev->peer_macaddr.addr); in ath10k_wmi_event_peer_sta_ps_state_chg()
5339 sta = ieee80211_find_sta_by_ifaddr(ar->hw, peer_addr, NULL); in ath10k_wmi_event_peer_sta_ps_state_chg()
5347 arsta = (struct ath10k_sta *)sta->drv_priv; in ath10k_wmi_event_peer_sta_ps_state_chg()
5348 arsta->peer_ps_state = __le32_to_cpu(ev->peer_ps_state); in ath10k_wmi_event_peer_sta_ps_state_chg()
5405 int idx = ar->wmi.num_mem_chunks; in ath10k_wmi_alloc_chunk()
5409 vaddr = dma_alloc_coherent(ar->dev, pool_size, &paddr, GFP_KERNEL); in ath10k_wmi_alloc_chunk()
5412 return -ENOMEM; in ath10k_wmi_alloc_chunk()
5414 ar->wmi.mem_chunks[idx].vaddr = vaddr; in ath10k_wmi_alloc_chunk()
5415 ar->wmi.mem_chunks[idx].paddr = paddr; in ath10k_wmi_alloc_chunk()
5416 ar->wmi.mem_chunks[idx].len = pool_size; in ath10k_wmi_alloc_chunk()
5417 ar->wmi.mem_chunks[idx].req_id = req_id; in ath10k_wmi_alloc_chunk()
5418 ar->wmi.num_mem_chunks++; in ath10k_wmi_alloc_chunk()
5433 num_units -= ret; in ath10k_wmi_alloc_host_mem()
5449 if (ar->wmi.num_mem_chunks != num_mem_reqs) in ath10k_wmi_is_host_mem_allocated()
5453 req_id = __le32_to_cpu(mem_reqs[i]->req_id); in ath10k_wmi_is_host_mem_allocated()
5454 num_units = __le32_to_cpu(mem_reqs[i]->num_units); in ath10k_wmi_is_host_mem_allocated()
5455 unit_size = __le32_to_cpu(mem_reqs[i]->unit_size); in ath10k_wmi_is_host_mem_allocated()
5456 num_unit_info = __le32_to_cpu(mem_reqs[i]->num_unit_info); in ath10k_wmi_is_host_mem_allocated()
5459 if (ar->num_active_peers) in ath10k_wmi_is_host_mem_allocated()
5460 num_units = ar->num_active_peers + 1; in ath10k_wmi_is_host_mem_allocated()
5462 num_units = ar->max_num_peers + 1; in ath10k_wmi_is_host_mem_allocated()
5464 num_units = ar->max_num_peers + 1; in ath10k_wmi_is_host_mem_allocated()
5466 num_units = ar->max_num_vdevs + 1; in ath10k_wmi_is_host_mem_allocated()
5470 for (j = 0; j < ar->wmi.num_mem_chunks; j++) { in ath10k_wmi_is_host_mem_allocated()
5471 if (ar->wmi.mem_chunks[j].req_id == req_id) { in ath10k_wmi_is_host_mem_allocated()
5473 if (ar->wmi.mem_chunks[j].len == pool_size) { in ath10k_wmi_is_host_mem_allocated()
5493 if (skb->len < sizeof(*ev)) in ath10k_wmi_main_op_pull_svc_rdy_ev()
5494 return -EPROTO; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5496 ev = (void *)skb->data; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5498 arg->min_tx_power = ev->hw_min_tx_power; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5499 arg->max_tx_power = ev->hw_max_tx_power; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5500 arg->ht_cap = ev->ht_cap_info; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5501 arg->vht_cap = ev->vht_cap_info; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5502 arg->vht_supp_mcs = ev->vht_supp_mcs; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5503 arg->sw_ver0 = ev->sw_version; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5504 arg->sw_ver1 = ev->sw_version_1; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5505 arg->phy_capab = ev->phy_capability; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5506 arg->num_rf_chains = ev->num_rf_chains; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5507 arg->eeprom_rd = ev->hal_reg_capabilities.eeprom_rd; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5508 arg->low_2ghz_chan = ev->hal_reg_capabilities.low_2ghz_chan; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5509 arg->high_2ghz_chan = ev->hal_reg_capabilities.high_2ghz_chan; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5510 arg->low_5ghz_chan = ev->hal_reg_capabilities.low_5ghz_chan; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5511 arg->high_5ghz_chan = ev->hal_reg_capabilities.high_5ghz_chan; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5512 arg->num_mem_reqs = ev->num_mem_reqs; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5513 arg->service_map = ev->wmi_service_bitmap; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5514 arg->service_map_len = sizeof(ev->wmi_service_bitmap); in ath10k_wmi_main_op_pull_svc_rdy_ev()
5516 n = min_t(size_t, __le32_to_cpu(arg->num_mem_reqs), in ath10k_wmi_main_op_pull_svc_rdy_ev()
5517 ARRAY_SIZE(arg->mem_reqs)); in ath10k_wmi_main_op_pull_svc_rdy_ev()
5519 arg->mem_reqs[i] = &ev->mem_reqs[i]; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5521 if (skb->len < in ath10k_wmi_main_op_pull_svc_rdy_ev()
5522 __le32_to_cpu(arg->num_mem_reqs) * sizeof(arg->mem_reqs[0])) in ath10k_wmi_main_op_pull_svc_rdy_ev()
5523 return -EPROTO; in ath10k_wmi_main_op_pull_svc_rdy_ev()
5535 if (skb->len < sizeof(*ev)) in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5536 return -EPROTO; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5538 ev = (void *)skb->data; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5540 arg->min_tx_power = ev->hw_min_tx_power; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5541 arg->max_tx_power = ev->hw_max_tx_power; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5542 arg->ht_cap = ev->ht_cap_info; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5543 arg->vht_cap = ev->vht_cap_info; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5544 arg->vht_supp_mcs = ev->vht_supp_mcs; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5545 arg->sw_ver0 = ev->sw_version; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5546 arg->phy_capab = ev->phy_capability; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5547 arg->num_rf_chains = ev->num_rf_chains; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5548 arg->eeprom_rd = ev->hal_reg_capabilities.eeprom_rd; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5549 arg->low_2ghz_chan = ev->hal_reg_capabilities.low_2ghz_chan; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5550 arg->high_2ghz_chan = ev->hal_reg_capabilities.high_2ghz_chan; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5551 arg->low_5ghz_chan = ev->hal_reg_capabilities.low_5ghz_chan; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5552 arg->high_5ghz_chan = ev->hal_reg_capabilities.high_5ghz_chan; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5553 arg->num_mem_reqs = ev->num_mem_reqs; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5554 arg->service_map = ev->wmi_service_bitmap; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5555 arg->service_map_len = sizeof(ev->wmi_service_bitmap); in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5557 /* Deliberately skipping ev->sys_cap_info as WMI and WMI-TLV have in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5560 * WMI interface (only from WMI-TLV) safest it to skip it. in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5563 n = min_t(size_t, __le32_to_cpu(arg->num_mem_reqs), in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5564 ARRAY_SIZE(arg->mem_reqs)); in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5566 arg->mem_reqs[i] = &ev->mem_reqs[i]; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5568 if (skb->len < in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5569 __le32_to_cpu(arg->num_mem_reqs) * sizeof(arg->mem_reqs[0])) in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5570 return -EPROTO; in ath10k_wmi_10x_op_pull_svc_rdy_ev()
5578 struct sk_buff *skb = ar->svc_rdy_skb; in ath10k_wmi_event_service_ready_work()
5595 ath10k_wmi_map_svc(ar, arg.service_map, ar->wmi.svc_map, in ath10k_wmi_event_service_ready_work()
5598 ar->hw_min_tx_power = __le32_to_cpu(arg.min_tx_power); in ath10k_wmi_event_service_ready_work()
5599 ar->hw_max_tx_power = __le32_to_cpu(arg.max_tx_power); in ath10k_wmi_event_service_ready_work()
5600 ar->ht_cap_info = __le32_to_cpu(arg.ht_cap); in ath10k_wmi_event_service_ready_work()
5601 ar->vht_cap_info = __le32_to_cpu(arg.vht_cap); in ath10k_wmi_event_service_ready_work()
5602 ar->vht_supp_mcs = __le32_to_cpu(arg.vht_supp_mcs); in ath10k_wmi_event_service_ready_work()
5603 ar->fw_version_major = in ath10k_wmi_event_service_ready_work()
5605 ar->fw_version_minor = (__le32_to_cpu(arg.sw_ver0) & 0x00ffffff); in ath10k_wmi_event_service_ready_work()
5606 ar->fw_version_release = in ath10k_wmi_event_service_ready_work()
5608 ar->fw_version_build = (__le32_to_cpu(arg.sw_ver1) & 0x0000ffff); in ath10k_wmi_event_service_ready_work()
5609 ar->phy_capability = __le32_to_cpu(arg.phy_capab); in ath10k_wmi_event_service_ready_work()
5610 ar->num_rf_chains = __le32_to_cpu(arg.num_rf_chains); in ath10k_wmi_event_service_ready_work()
5611 ar->hw_eeprom_rd = __le32_to_cpu(arg.eeprom_rd); in ath10k_wmi_event_service_ready_work()
5612 ar->low_2ghz_chan = __le32_to_cpu(arg.low_2ghz_chan); in ath10k_wmi_event_service_ready_work()
5613 ar->high_2ghz_chan = __le32_to_cpu(arg.high_2ghz_chan); in ath10k_wmi_event_service_ready_work()
5614 ar->low_5ghz_chan = __le32_to_cpu(arg.low_5ghz_chan); in ath10k_wmi_event_service_ready_work()
5615 ar->high_5ghz_chan = __le32_to_cpu(arg.high_5ghz_chan); in ath10k_wmi_event_service_ready_work()
5616 ar->sys_cap_info = __le32_to_cpu(arg.sys_cap_info); in ath10k_wmi_event_service_ready_work()
5621 ar->sys_cap_info); in ath10k_wmi_event_service_ready_work()
5623 if (ar->num_rf_chains > ar->max_spatial_stream) { in ath10k_wmi_event_service_ready_work()
5625 ar->num_rf_chains, ar->max_spatial_stream); in ath10k_wmi_event_service_ready_work()
5626 ar->num_rf_chains = ar->max_spatial_stream; in ath10k_wmi_event_service_ready_work()
5629 if (!ar->cfg_tx_chainmask) { in ath10k_wmi_event_service_ready_work()
5630 ar->cfg_tx_chainmask = (1 << ar->num_rf_chains) - 1; in ath10k_wmi_event_service_ready_work()
5631 ar->cfg_rx_chainmask = (1 << ar->num_rf_chains) - 1; in ath10k_wmi_event_service_ready_work()
5634 if (strlen(ar->hw->wiphy->fw_version) == 0) { in ath10k_wmi_event_service_ready_work()
5635 snprintf(ar->hw->wiphy->fw_version, in ath10k_wmi_event_service_ready_work()
5636 sizeof(ar->hw->wiphy->fw_version), in ath10k_wmi_event_service_ready_work()
5638 ar->fw_version_major, in ath10k_wmi_event_service_ready_work()
5639 ar->fw_version_minor, in ath10k_wmi_event_service_ready_work()
5640 ar->fw_version_release, in ath10k_wmi_event_service_ready_work()
5641 ar->fw_version_build); in ath10k_wmi_event_service_ready_work()
5651 if (test_bit(WMI_SERVICE_PEER_CACHING, ar->wmi.svc_map)) { in ath10k_wmi_event_service_ready_work()
5653 ar->running_fw->fw_file.fw_features)) in ath10k_wmi_event_service_ready_work()
5654 ar->num_active_peers = TARGET_10_4_QCACHE_ACTIVE_PEERS_PFC + in ath10k_wmi_event_service_ready_work()
5655 ar->max_num_vdevs; in ath10k_wmi_event_service_ready_work()
5657 ar->num_active_peers = TARGET_10_4_QCACHE_ACTIVE_PEERS + in ath10k_wmi_event_service_ready_work()
5658 ar->max_num_vdevs; in ath10k_wmi_event_service_ready_work()
5660 ar->max_num_peers = TARGET_10_4_NUM_QCACHE_PEERS_MAX + in ath10k_wmi_event_service_ready_work()
5661 ar->max_num_vdevs; in ath10k_wmi_event_service_ready_work()
5662 ar->num_tids = ar->num_active_peers * 2; in ath10k_wmi_event_service_ready_work()
5663 ar->max_num_stations = TARGET_10_4_NUM_QCACHE_PEERS_MAX; in ath10k_wmi_event_service_ready_work()
5683 req_id = __le32_to_cpu(arg.mem_reqs[i]->req_id); in ath10k_wmi_event_service_ready_work()
5684 num_units = __le32_to_cpu(arg.mem_reqs[i]->num_units); in ath10k_wmi_event_service_ready_work()
5685 unit_size = __le32_to_cpu(arg.mem_reqs[i]->unit_size); in ath10k_wmi_event_service_ready_work()
5686 num_unit_info = __le32_to_cpu(arg.mem_reqs[i]->num_unit_info); in ath10k_wmi_event_service_ready_work()
5689 if (ar->num_active_peers) in ath10k_wmi_event_service_ready_work()
5690 num_units = ar->num_active_peers + 1; in ath10k_wmi_event_service_ready_work()
5692 num_units = ar->max_num_peers + 1; in ath10k_wmi_event_service_ready_work()
5699 num_units = ar->max_num_peers + 1; in ath10k_wmi_event_service_ready_work()
5701 num_units = ar->max_num_vdevs + 1; in ath10k_wmi_event_service_ready_work()
5707 __le32_to_cpu(arg.mem_reqs[i]->num_units), in ath10k_wmi_event_service_ready_work()
5739 ar->svc_rdy_skb = NULL; in ath10k_wmi_event_service_ready_work()
5740 complete(&ar->wmi.service_ready); in ath10k_wmi_event_service_ready_work()
5745 ar->svc_rdy_skb = skb; in ath10k_wmi_event_service_ready()
5746 queue_work(ar->workqueue_aux, &ar->svc_rdy_work); in ath10k_wmi_event_service_ready()
5752 struct wmi_ready_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_rdy_ev()
5754 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_rdy_ev()
5755 return -EPROTO; in ath10k_wmi_op_pull_rdy_ev()
5758 arg->sw_version = ev->sw_version; in ath10k_wmi_op_pull_rdy_ev()
5759 arg->abi_version = ev->abi_version; in ath10k_wmi_op_pull_rdy_ev()
5760 arg->status = ev->status; in ath10k_wmi_op_pull_rdy_ev()
5761 arg->mac_addr = ev->mac_addr.addr; in ath10k_wmi_op_pull_rdy_ev()
5769 struct wmi_roam_ev *ev = (void *)skb->data; in ath10k_wmi_op_pull_roam_ev()
5771 if (skb->len < sizeof(*ev)) in ath10k_wmi_op_pull_roam_ev()
5772 return -EPROTO; in ath10k_wmi_op_pull_roam_ev()
5775 arg->vdev_id = ev->vdev_id; in ath10k_wmi_op_pull_roam_ev()
5776 arg->reason = ev->reason; in ath10k_wmi_op_pull_roam_ev()
5785 struct wmi_echo_event *ev = (void *)skb->data; in ath10k_wmi_op_pull_echo_ev()
5787 arg->value = ev->value; in ath10k_wmi_op_pull_echo_ev()
5810 if (is_zero_ether_addr(ar->mac_addr)) in ath10k_wmi_event_ready()
5811 ether_addr_copy(ar->mac_addr, arg.mac_addr); in ath10k_wmi_event_ready()
5812 complete(&ar->wmi.unified_ready); in ath10k_wmi_event_ready()
5832 ath10k_wmi_map_svc_ext(ar, arg.service_map_ext, ar->wmi.svc_map, in ath10k_wmi_event_service_available()
5840 ev = (struct wmi_pdev_temperature_event *)skb->data; in ath10k_wmi_event_temperature()
5841 if (WARN_ON(skb->len < sizeof(*ev))) in ath10k_wmi_event_temperature()
5842 return -EPROTO; in ath10k_wmi_event_temperature()
5844 ath10k_thermal_event_temperature(ar, __le32_to_cpu(ev->temperature)); in ath10k_wmi_event_temperature()
5855 u32 cc_freq_hz = ar->hw_params.channel_counters_freq_hz; in ath10k_wmi_event_pdev_bss_chan_info()
5858 ev = (struct wmi_pdev_bss_chan_info_event *)skb->data; in ath10k_wmi_event_pdev_bss_chan_info()
5859 if (WARN_ON(skb->len < sizeof(*ev))) in ath10k_wmi_event_pdev_bss_chan_info()
5860 return -EPROTO; in ath10k_wmi_event_pdev_bss_chan_info()
5862 freq = __le32_to_cpu(ev->freq); in ath10k_wmi_event_pdev_bss_chan_info()
5863 noise_floor = __le32_to_cpu(ev->noise_floor); in ath10k_wmi_event_pdev_bss_chan_info()
5864 busy = __le64_to_cpu(ev->cycle_busy); in ath10k_wmi_event_pdev_bss_chan_info()
5865 total = __le64_to_cpu(ev->cycle_total); in ath10k_wmi_event_pdev_bss_chan_info()
5866 tx = __le64_to_cpu(ev->cycle_tx); in ath10k_wmi_event_pdev_bss_chan_info()
5867 rx = __le64_to_cpu(ev->cycle_rx); in ath10k_wmi_event_pdev_bss_chan_info()
5868 rx_bss = __le64_to_cpu(ev->cycle_rx_bss); in ath10k_wmi_event_pdev_bss_chan_info()
5879 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_pdev_bss_chan_info()
5881 if (idx >= ARRAY_SIZE(ar->survey)) { in ath10k_wmi_event_pdev_bss_chan_info()
5887 survey = &ar->survey[idx]; in ath10k_wmi_event_pdev_bss_chan_info()
5889 survey->noise = noise_floor; in ath10k_wmi_event_pdev_bss_chan_info()
5890 survey->time = div_u64(total, cc_freq_hz); in ath10k_wmi_event_pdev_bss_chan_info()
5891 survey->time_busy = div_u64(busy, cc_freq_hz); in ath10k_wmi_event_pdev_bss_chan_info()
5892 survey->time_rx = div_u64(rx_bss, cc_freq_hz); in ath10k_wmi_event_pdev_bss_chan_info()
5893 survey->time_tx = div_u64(tx, cc_freq_hz); in ath10k_wmi_event_pdev_bss_chan_info()
5894 survey->filled |= (SURVEY_INFO_NOISE_DBM | in ath10k_wmi_event_pdev_bss_chan_info()
5900 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_pdev_bss_chan_info()
5901 complete(&ar->bss_survey_done); in ath10k_wmi_event_pdev_bss_chan_info()
5907 if (ar->hw_params.hw_ops->set_coverage_class) { in ath10k_wmi_queue_set_coverage_class_work()
5908 spin_lock_bh(&ar->data_lock); in ath10k_wmi_queue_set_coverage_class_work()
5913 * coverage class has a non-zero value. in ath10k_wmi_queue_set_coverage_class_work()
5915 if (ar->fw_coverage.coverage_class) in ath10k_wmi_queue_set_coverage_class_work()
5916 queue_work(ar->workqueue, &ar->set_coverage_class_work); in ath10k_wmi_queue_set_coverage_class_work()
5918 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_queue_set_coverage_class_work()
5927 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_op_rx()
5928 id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID); in ath10k_wmi_op_rx()
5933 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_op_rx()
6059 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_10_1_op_rx()
6060 id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID); in ath10k_wmi_10_1_op_rx()
6065 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_10_1_op_rx()
6194 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_10_2_op_rx()
6195 id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID); in ath10k_wmi_10_2_op_rx()
6200 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_10_2_op_rx()
6347 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_10_4_op_rx()
6348 id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID); in ath10k_wmi_10_4_op_rx()
6353 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_10_4_op_rx()
6480 memset(&ar->wmi.svc_map, 0, sizeof(ar->wmi.svc_map)); in ath10k_wmi_connect()
6493 status = ath10k_htc_connect_service(&ar->htc, &conn_req, &conn_resp); in ath10k_wmi_connect()
6500 ar->wmi.eid = conn_resp.eid; in ath10k_wmi_connect()
6513 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_set_base_macaddr()
6515 cmd = (struct wmi_pdev_set_base_macaddr_cmd *)skb->data; in ath10k_wmi_op_gen_pdev_set_base_macaddr()
6516 ether_addr_copy(cmd->mac_addr.addr, macaddr); in ath10k_wmi_op_gen_pdev_set_base_macaddr()
6533 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_set_rd()
6535 cmd = (struct wmi_pdev_set_regdomain_cmd *)skb->data; in ath10k_wmi_op_gen_pdev_set_rd()
6536 cmd->reg_domain = __cpu_to_le32(rd); in ath10k_wmi_op_gen_pdev_set_rd()
6537 cmd->reg_domain_2G = __cpu_to_le32(rd2g); in ath10k_wmi_op_gen_pdev_set_rd()
6538 cmd->reg_domain_5G = __cpu_to_le32(rd5g); in ath10k_wmi_op_gen_pdev_set_rd()
6539 cmd->conformance_test_limit_2G = __cpu_to_le32(ctl2g); in ath10k_wmi_op_gen_pdev_set_rd()
6540 cmd->conformance_test_limit_5G = __cpu_to_le32(ctl5g); in ath10k_wmi_op_gen_pdev_set_rd()
6558 return ERR_PTR(-ENOMEM); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6560 cmd = (struct wmi_pdev_set_regdomain_cmd_10x *)skb->data; in ath10k_wmi_10x_op_gen_pdev_set_rd()
6561 cmd->reg_domain = __cpu_to_le32(rd); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6562 cmd->reg_domain_2G = __cpu_to_le32(rd2g); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6563 cmd->reg_domain_5G = __cpu_to_le32(rd5g); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6564 cmd->conformance_test_limit_2G = __cpu_to_le32(ctl2g); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6565 cmd->conformance_test_limit_5G = __cpu_to_le32(ctl5g); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6566 cmd->dfs_domain = __cpu_to_le32(dfs_reg); in ath10k_wmi_10x_op_gen_pdev_set_rd()
6582 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_suspend()
6584 cmd = (struct wmi_pdev_suspend_cmd *)skb->data; in ath10k_wmi_op_gen_pdev_suspend()
6585 cmd->suspend_opt = __cpu_to_le32(suspend_opt); in ath10k_wmi_op_gen_pdev_suspend()
6597 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_resume()
6611 return ERR_PTR(-EOPNOTSUPP); in ath10k_wmi_op_gen_pdev_set_param()
6616 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_set_param()
6618 cmd = (struct wmi_pdev_set_param_cmd *)skb->data; in ath10k_wmi_op_gen_pdev_set_param()
6619 cmd->param_id = __cpu_to_le32(id); in ath10k_wmi_op_gen_pdev_set_param()
6620 cmd->param_value = __cpu_to_le32(value); in ath10k_wmi_op_gen_pdev_set_param()
6633 chunks->count = __cpu_to_le32(ar->wmi.num_mem_chunks); in ath10k_wmi_put_host_mem_chunks()
6635 for (i = 0; i < ar->wmi.num_mem_chunks; i++) { in ath10k_wmi_put_host_mem_chunks()
6636 chunk = &chunks->items[i]; in ath10k_wmi_put_host_mem_chunks()
6637 chunk->ptr = __cpu_to_le32(ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_put_host_mem_chunks()
6638 chunk->size = __cpu_to_le32(ar->wmi.mem_chunks[i].len); in ath10k_wmi_put_host_mem_chunks()
6639 chunk->req_id = __cpu_to_le32(ar->wmi.mem_chunks[i].req_id); in ath10k_wmi_put_host_mem_chunks()
6644 ar->wmi.mem_chunks[i].len, in ath10k_wmi_put_host_mem_chunks()
6645 (unsigned long long)ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_put_host_mem_chunks()
6672 config.rx_decap_mode = __cpu_to_le32(ar->wmi.rx_decap_mode); in ath10k_wmi_op_gen_init()
6707 ar->wmi.num_mem_chunks)); in ath10k_wmi_op_gen_init()
6709 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_init()
6711 cmd = (struct wmi_init_cmd *)buf->data; in ath10k_wmi_op_gen_init()
6713 memcpy(&cmd->resource_config, &config, sizeof(config)); in ath10k_wmi_op_gen_init()
6714 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_op_gen_init()
6738 config.rx_decap_mode = __cpu_to_le32(ar->wmi.rx_decap_mode); in ath10k_wmi_10_1_op_gen_init()
6770 ar->wmi.num_mem_chunks)); in ath10k_wmi_10_1_op_gen_init()
6772 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_1_op_gen_init()
6774 cmd = (struct wmi_init_cmd_10x *)buf->data; in ath10k_wmi_10_1_op_gen_init()
6776 memcpy(&cmd->resource_config, &config, sizeof(config)); in ath10k_wmi_10_1_op_gen_init()
6777 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_10_1_op_gen_init()
6808 config.rx_decap_mode = __cpu_to_le32(ar->wmi.rx_decap_mode); in ath10k_wmi_10_2_op_gen_init()
6841 ar->wmi.num_mem_chunks)); in ath10k_wmi_10_2_op_gen_init()
6843 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_op_gen_init()
6845 cmd = (struct wmi_init_cmd_10_2 *)buf->data; in ath10k_wmi_10_2_op_gen_init()
6849 if (test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags) && in ath10k_wmi_10_2_op_gen_init()
6850 test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map)) in ath10k_wmi_10_2_op_gen_init()
6856 if (test_bit(WMI_SERVICE_BSS_CHANNEL_INFO_64, ar->wmi.svc_map)) in ath10k_wmi_10_2_op_gen_init()
6859 cmd->resource_config.feature_mask = __cpu_to_le32(features); in ath10k_wmi_10_2_op_gen_init()
6861 memcpy(&cmd->resource_config.common, &config, sizeof(config)); in ath10k_wmi_10_2_op_gen_init()
6862 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_10_2_op_gen_init()
6874 config.num_vdevs = __cpu_to_le32(ar->max_num_vdevs); in ath10k_wmi_10_4_op_gen_init()
6875 config.num_peers = __cpu_to_le32(ar->max_num_peers); in ath10k_wmi_10_4_op_gen_init()
6876 config.num_active_peers = __cpu_to_le32(ar->num_active_peers); in ath10k_wmi_10_4_op_gen_init()
6877 config.num_tids = __cpu_to_le32(ar->num_tids); in ath10k_wmi_10_4_op_gen_init()
6884 config.tx_chain_mask = __cpu_to_le32(ar->hw_params.tx_chain_mask); in ath10k_wmi_10_4_op_gen_init()
6885 config.rx_chain_mask = __cpu_to_le32(ar->hw_params.rx_chain_mask); in ath10k_wmi_10_4_op_gen_init()
6892 config.rx_decap_mode = __cpu_to_le32(ar->wmi.rx_decap_mode); in ath10k_wmi_10_4_op_gen_init()
6916 config.num_msdu_desc = __cpu_to_le32(ar->htt.max_num_pending_tx); in ath10k_wmi_10_4_op_gen_init()
6935 ar->wmi.num_mem_chunks)); in ath10k_wmi_10_4_op_gen_init()
6937 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_op_gen_init()
6939 cmd = (struct wmi_init_cmd_10_4 *)buf->data; in ath10k_wmi_10_4_op_gen_init()
6940 memcpy(&cmd->resource_config, &config, sizeof(config)); in ath10k_wmi_10_4_op_gen_init()
6941 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_10_4_op_gen_init()
6949 if (arg->ie_len > WLAN_SCAN_PARAMS_MAX_IE_LEN) in ath10k_wmi_start_scan_verify()
6950 return -EINVAL; in ath10k_wmi_start_scan_verify()
6951 if (arg->n_channels > ARRAY_SIZE(arg->channels)) in ath10k_wmi_start_scan_verify()
6952 return -EINVAL; in ath10k_wmi_start_scan_verify()
6953 if (arg->n_ssids > WLAN_SCAN_PARAMS_MAX_SSID) in ath10k_wmi_start_scan_verify()
6954 return -EINVAL; in ath10k_wmi_start_scan_verify()
6955 if (arg->n_bssids > WLAN_SCAN_PARAMS_MAX_BSSID) in ath10k_wmi_start_scan_verify()
6956 return -EINVAL; in ath10k_wmi_start_scan_verify()
6966 if (arg->ie_len) { in ath10k_wmi_start_scan_tlvs_len()
6968 len += roundup(arg->ie_len, 4); in ath10k_wmi_start_scan_tlvs_len()
6971 if (arg->n_channels) { in ath10k_wmi_start_scan_tlvs_len()
6973 len += sizeof(__le32) * arg->n_channels; in ath10k_wmi_start_scan_tlvs_len()
6976 if (arg->n_ssids) { in ath10k_wmi_start_scan_tlvs_len()
6978 len += sizeof(struct wmi_ssid) * arg->n_ssids; in ath10k_wmi_start_scan_tlvs_len()
6981 if (arg->n_bssids) { in ath10k_wmi_start_scan_tlvs_len()
6983 len += sizeof(struct wmi_mac_addr) * arg->n_bssids; in ath10k_wmi_start_scan_tlvs_len()
6996 scan_id |= arg->scan_id; in ath10k_wmi_put_start_scan_common()
6999 scan_req_id |= arg->scan_req_id; in ath10k_wmi_put_start_scan_common()
7001 cmn->scan_id = __cpu_to_le32(scan_id); in ath10k_wmi_put_start_scan_common()
7002 cmn->scan_req_id = __cpu_to_le32(scan_req_id); in ath10k_wmi_put_start_scan_common()
7003 cmn->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_put_start_scan_common()
7004 cmn->scan_priority = __cpu_to_le32(arg->scan_priority); in ath10k_wmi_put_start_scan_common()
7005 cmn->notify_scan_events = __cpu_to_le32(arg->notify_scan_events); in ath10k_wmi_put_start_scan_common()
7006 cmn->dwell_time_active = __cpu_to_le32(arg->dwell_time_active); in ath10k_wmi_put_start_scan_common()
7007 cmn->dwell_time_passive = __cpu_to_le32(arg->dwell_time_passive); in ath10k_wmi_put_start_scan_common()
7008 cmn->min_rest_time = __cpu_to_le32(arg->min_rest_time); in ath10k_wmi_put_start_scan_common()
7009 cmn->max_rest_time = __cpu_to_le32(arg->max_rest_time); in ath10k_wmi_put_start_scan_common()
7010 cmn->repeat_probe_time = __cpu_to_le32(arg->repeat_probe_time); in ath10k_wmi_put_start_scan_common()
7011 cmn->probe_spacing_time = __cpu_to_le32(arg->probe_spacing_time); in ath10k_wmi_put_start_scan_common()
7012 cmn->idle_time = __cpu_to_le32(arg->idle_time); in ath10k_wmi_put_start_scan_common()
7013 cmn->max_scan_time = __cpu_to_le32(arg->max_scan_time); in ath10k_wmi_put_start_scan_common()
7014 cmn->probe_delay = __cpu_to_le32(arg->probe_delay); in ath10k_wmi_put_start_scan_common()
7015 cmn->scan_ctrl_flags = __cpu_to_le32(arg->scan_ctrl_flags); in ath10k_wmi_put_start_scan_common()
7027 void *ptr = tlvs->tlvs; in ath10k_wmi_put_start_scan_tlvs()
7029 u8 *ptr = (void *)tlvs->tlvs; in ath10k_wmi_put_start_scan_tlvs()
7033 if (arg->n_channels) { in ath10k_wmi_put_start_scan_tlvs()
7039 channels->tag = __cpu_to_le32(WMI_CHAN_LIST_TAG); in ath10k_wmi_put_start_scan_tlvs()
7040 channels->num_chan = __cpu_to_le32(arg->n_channels); in ath10k_wmi_put_start_scan_tlvs()
7042 for (i = 0; i < arg->n_channels; i++) in ath10k_wmi_put_start_scan_tlvs()
7043 channels->channel_list[i].freq = in ath10k_wmi_put_start_scan_tlvs()
7044 __cpu_to_le16(arg->channels[i]); in ath10k_wmi_put_start_scan_tlvs()
7047 ptr += sizeof(__le32) * arg->n_channels; in ath10k_wmi_put_start_scan_tlvs()
7050 if (arg->n_ssids) { in ath10k_wmi_put_start_scan_tlvs()
7056 ssids->tag = __cpu_to_le32(WMI_SSID_LIST_TAG); in ath10k_wmi_put_start_scan_tlvs()
7057 ssids->num_ssids = __cpu_to_le32(arg->n_ssids); in ath10k_wmi_put_start_scan_tlvs()
7059 for (i = 0; i < arg->n_ssids; i++) { in ath10k_wmi_put_start_scan_tlvs()
7060 ssids->ssids[i].ssid_len = in ath10k_wmi_put_start_scan_tlvs()
7061 __cpu_to_le32(arg->ssids[i].len); in ath10k_wmi_put_start_scan_tlvs()
7062 memcpy(&ssids->ssids[i].ssid, in ath10k_wmi_put_start_scan_tlvs()
7063 arg->ssids[i].ssid, in ath10k_wmi_put_start_scan_tlvs()
7064 arg->ssids[i].len); in ath10k_wmi_put_start_scan_tlvs()
7068 ptr += sizeof(struct wmi_ssid) * arg->n_ssids; in ath10k_wmi_put_start_scan_tlvs()
7071 if (arg->n_bssids) { in ath10k_wmi_put_start_scan_tlvs()
7077 bssids->tag = __cpu_to_le32(WMI_BSSID_LIST_TAG); in ath10k_wmi_put_start_scan_tlvs()
7078 bssids->num_bssid = __cpu_to_le32(arg->n_bssids); in ath10k_wmi_put_start_scan_tlvs()
7080 for (i = 0; i < arg->n_bssids; i++) in ath10k_wmi_put_start_scan_tlvs()
7081 ether_addr_copy(bssids->bssid_list[i].addr, in ath10k_wmi_put_start_scan_tlvs()
7082 arg->bssids[i].bssid); in ath10k_wmi_put_start_scan_tlvs()
7085 ptr += sizeof(struct wmi_mac_addr) * arg->n_bssids; in ath10k_wmi_put_start_scan_tlvs()
7088 if (arg->ie_len) { in ath10k_wmi_put_start_scan_tlvs()
7094 ie->tag = __cpu_to_le32(WMI_IE_TAG); in ath10k_wmi_put_start_scan_tlvs()
7095 ie->ie_len = __cpu_to_le32(arg->ie_len); in ath10k_wmi_put_start_scan_tlvs()
7096 memcpy(ie->ie_data, arg->ie, arg->ie_len); in ath10k_wmi_put_start_scan_tlvs()
7099 ptr += roundup(arg->ie_len, 4); in ath10k_wmi_put_start_scan_tlvs()
7119 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_start_scan()
7121 cmd = (struct wmi_start_scan_cmd *)skb->data; in ath10k_wmi_op_gen_start_scan()
7123 ath10k_wmi_put_start_scan_common(&cmd->common, arg); in ath10k_wmi_op_gen_start_scan()
7124 ath10k_wmi_put_start_scan_tlvs(&cmd->tlvs, arg); in ath10k_wmi_op_gen_start_scan()
7126 cmd->burst_duration_ms = __cpu_to_le32(0); in ath10k_wmi_op_gen_start_scan()
7148 return ERR_PTR(-ENOMEM); in ath10k_wmi_10x_op_gen_start_scan()
7150 cmd = (struct wmi_10x_start_scan_cmd *)skb->data; in ath10k_wmi_10x_op_gen_start_scan()
7152 ath10k_wmi_put_start_scan_common(&cmd->common, arg); in ath10k_wmi_10x_op_gen_start_scan()
7153 ath10k_wmi_put_start_scan_tlvs(&cmd->tlvs, arg); in ath10k_wmi_10x_op_gen_start_scan()
7163 arg->scan_req_id = 1; in ath10k_wmi_start_scan_init()
7164 arg->scan_priority = WMI_SCAN_PRIORITY_LOW; in ath10k_wmi_start_scan_init()
7165 arg->dwell_time_active = 50; in ath10k_wmi_start_scan_init()
7166 arg->dwell_time_passive = 150; in ath10k_wmi_start_scan_init()
7167 arg->min_rest_time = 50; in ath10k_wmi_start_scan_init()
7168 arg->max_rest_time = 500; in ath10k_wmi_start_scan_init()
7169 arg->repeat_probe_time = 0; in ath10k_wmi_start_scan_init()
7170 arg->probe_spacing_time = 0; in ath10k_wmi_start_scan_init()
7171 arg->idle_time = 0; in ath10k_wmi_start_scan_init()
7172 arg->max_scan_time = 20000; in ath10k_wmi_start_scan_init()
7173 arg->probe_delay = 5; in ath10k_wmi_start_scan_init()
7174 arg->notify_scan_events = WMI_SCAN_EVENT_STARTED in ath10k_wmi_start_scan_init()
7180 arg->scan_ctrl_flags |= WMI_SCAN_CHAN_STAT_EVENT; in ath10k_wmi_start_scan_init()
7181 arg->n_bssids = 1; in ath10k_wmi_start_scan_init()
7182 arg->bssids[0].bssid = "\xFF\xFF\xFF\xFF\xFF\xFF"; in ath10k_wmi_start_scan_init()
7194 if (arg->req_id > 0xFFF) in ath10k_wmi_op_gen_stop_scan()
7195 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_stop_scan()
7196 if (arg->req_type == WMI_SCAN_STOP_ONE && arg->u.scan_id > 0xFFF) in ath10k_wmi_op_gen_stop_scan()
7197 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_stop_scan()
7201 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_stop_scan()
7203 scan_id = arg->u.scan_id; in ath10k_wmi_op_gen_stop_scan()
7206 req_id = arg->req_id; in ath10k_wmi_op_gen_stop_scan()
7209 cmd = (struct wmi_stop_scan_cmd *)skb->data; in ath10k_wmi_op_gen_stop_scan()
7210 cmd->req_type = __cpu_to_le32(arg->req_type); in ath10k_wmi_op_gen_stop_scan()
7211 cmd->vdev_id = __cpu_to_le32(arg->u.vdev_id); in ath10k_wmi_op_gen_stop_scan()
7212 cmd->scan_id = __cpu_to_le32(scan_id); in ath10k_wmi_op_gen_stop_scan()
7213 cmd->scan_req_id = __cpu_to_le32(req_id); in ath10k_wmi_op_gen_stop_scan()
7217 arg->req_id, arg->req_type, arg->u.scan_id); in ath10k_wmi_op_gen_stop_scan()
7232 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_create()
7234 cmd = (struct wmi_vdev_create_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_create()
7235 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_create()
7236 cmd->vdev_type = __cpu_to_le32(type); in ath10k_wmi_op_gen_vdev_create()
7237 cmd->vdev_subtype = __cpu_to_le32(subtype); in ath10k_wmi_op_gen_vdev_create()
7238 ether_addr_copy(cmd->vdev_macaddr.addr, macaddr); in ath10k_wmi_op_gen_vdev_create()
7254 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_delete()
7256 cmd = (struct wmi_vdev_delete_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_delete()
7257 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_delete()
7274 if (WARN_ON(arg->hidden_ssid && !arg->ssid)) in ath10k_wmi_op_gen_vdev_start()
7275 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_vdev_start()
7276 if (WARN_ON(arg->ssid_len > sizeof(cmd->ssid.ssid))) in ath10k_wmi_op_gen_vdev_start()
7277 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_vdev_start()
7286 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_start()
7288 if (arg->hidden_ssid) in ath10k_wmi_op_gen_vdev_start()
7290 if (arg->pmf_enabled) in ath10k_wmi_op_gen_vdev_start()
7293 cmd = (struct wmi_vdev_start_request_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_start()
7294 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_op_gen_vdev_start()
7295 cmd->disable_hw_ack = __cpu_to_le32(arg->disable_hw_ack); in ath10k_wmi_op_gen_vdev_start()
7296 cmd->beacon_interval = __cpu_to_le32(arg->bcn_intval); in ath10k_wmi_op_gen_vdev_start()
7297 cmd->dtim_period = __cpu_to_le32(arg->dtim_period); in ath10k_wmi_op_gen_vdev_start()
7298 cmd->flags = __cpu_to_le32(flags); in ath10k_wmi_op_gen_vdev_start()
7299 cmd->bcn_tx_rate = __cpu_to_le32(arg->bcn_tx_rate); in ath10k_wmi_op_gen_vdev_start()
7300 cmd->bcn_tx_power = __cpu_to_le32(arg->bcn_tx_power); in ath10k_wmi_op_gen_vdev_start()
7302 if (arg->ssid) { in ath10k_wmi_op_gen_vdev_start()
7303 cmd->ssid.ssid_len = __cpu_to_le32(arg->ssid_len); in ath10k_wmi_op_gen_vdev_start()
7304 memcpy(cmd->ssid.ssid, arg->ssid, arg->ssid_len); in ath10k_wmi_op_gen_vdev_start()
7307 ath10k_wmi_put_wmi_channel(ar, &cmd->chan, &arg->channel); in ath10k_wmi_op_gen_vdev_start()
7311 cmdname, arg->vdev_id, in ath10k_wmi_op_gen_vdev_start()
7312 flags, arg->channel.freq, arg->channel.mode, in ath10k_wmi_op_gen_vdev_start()
7313 cmd->chan.flags, arg->channel.max_power); in ath10k_wmi_op_gen_vdev_start()
7326 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_stop()
7328 cmd = (struct wmi_vdev_stop_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_stop()
7329 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_stop()
7344 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_up()
7346 cmd = (struct wmi_vdev_up_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_up()
7347 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_up()
7348 cmd->vdev_assoc_id = __cpu_to_le32(aid); in ath10k_wmi_op_gen_vdev_up()
7349 ether_addr_copy(cmd->vdev_bssid.addr, bssid); in ath10k_wmi_op_gen_vdev_up()
7365 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_down()
7367 cmd = (struct wmi_vdev_down_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_down()
7368 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_down()
7386 return ERR_PTR(-EOPNOTSUPP); in ath10k_wmi_op_gen_vdev_set_param()
7391 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_set_param()
7393 cmd = (struct wmi_vdev_set_param_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_set_param()
7394 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_set_param()
7395 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_op_gen_vdev_set_param()
7396 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_op_gen_vdev_set_param()
7411 if (arg->key_cipher == WMI_CIPHER_NONE && arg->key_data != NULL) in ath10k_wmi_op_gen_vdev_install_key()
7412 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_vdev_install_key()
7413 if (arg->key_cipher != WMI_CIPHER_NONE && arg->key_data == NULL) in ath10k_wmi_op_gen_vdev_install_key()
7414 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_vdev_install_key()
7416 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd) + arg->key_len); in ath10k_wmi_op_gen_vdev_install_key()
7418 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_install_key()
7420 cmd = (struct wmi_vdev_install_key_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_install_key()
7421 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_op_gen_vdev_install_key()
7422 cmd->key_idx = __cpu_to_le32(arg->key_idx); in ath10k_wmi_op_gen_vdev_install_key()
7423 cmd->key_flags = __cpu_to_le32(arg->key_flags); in ath10k_wmi_op_gen_vdev_install_key()
7424 cmd->key_cipher = __cpu_to_le32(arg->key_cipher); in ath10k_wmi_op_gen_vdev_install_key()
7425 cmd->key_len = __cpu_to_le32(arg->key_len); in ath10k_wmi_op_gen_vdev_install_key()
7426 cmd->key_txmic_len = __cpu_to_le32(arg->key_txmic_len); in ath10k_wmi_op_gen_vdev_install_key()
7427 cmd->key_rxmic_len = __cpu_to_le32(arg->key_rxmic_len); in ath10k_wmi_op_gen_vdev_install_key()
7429 if (arg->macaddr) in ath10k_wmi_op_gen_vdev_install_key()
7430 ether_addr_copy(cmd->peer_macaddr.addr, arg->macaddr); in ath10k_wmi_op_gen_vdev_install_key()
7431 if (arg->key_data) in ath10k_wmi_op_gen_vdev_install_key()
7432 memcpy(cmd->key_data, arg->key_data, arg->key_len); in ath10k_wmi_op_gen_vdev_install_key()
7436 arg->key_idx, arg->key_cipher, arg->key_len); in ath10k_wmi_op_gen_vdev_install_key()
7449 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_spectral_conf()
7451 cmd = (struct wmi_vdev_spectral_conf_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_spectral_conf()
7452 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_op_gen_vdev_spectral_conf()
7453 cmd->scan_count = __cpu_to_le32(arg->scan_count); in ath10k_wmi_op_gen_vdev_spectral_conf()
7454 cmd->scan_period = __cpu_to_le32(arg->scan_period); in ath10k_wmi_op_gen_vdev_spectral_conf()
7455 cmd->scan_priority = __cpu_to_le32(arg->scan_priority); in ath10k_wmi_op_gen_vdev_spectral_conf()
7456 cmd->scan_fft_size = __cpu_to_le32(arg->scan_fft_size); in ath10k_wmi_op_gen_vdev_spectral_conf()
7457 cmd->scan_gc_ena = __cpu_to_le32(arg->scan_gc_ena); in ath10k_wmi_op_gen_vdev_spectral_conf()
7458 cmd->scan_restart_ena = __cpu_to_le32(arg->scan_restart_ena); in ath10k_wmi_op_gen_vdev_spectral_conf()
7459 cmd->scan_noise_floor_ref = __cpu_to_le32(arg->scan_noise_floor_ref); in ath10k_wmi_op_gen_vdev_spectral_conf()
7460 cmd->scan_init_delay = __cpu_to_le32(arg->scan_init_delay); in ath10k_wmi_op_gen_vdev_spectral_conf()
7461 cmd->scan_nb_tone_thr = __cpu_to_le32(arg->scan_nb_tone_thr); in ath10k_wmi_op_gen_vdev_spectral_conf()
7462 cmd->scan_str_bin_thr = __cpu_to_le32(arg->scan_str_bin_thr); in ath10k_wmi_op_gen_vdev_spectral_conf()
7463 cmd->scan_wb_rpt_mode = __cpu_to_le32(arg->scan_wb_rpt_mode); in ath10k_wmi_op_gen_vdev_spectral_conf()
7464 cmd->scan_rssi_rpt_mode = __cpu_to_le32(arg->scan_rssi_rpt_mode); in ath10k_wmi_op_gen_vdev_spectral_conf()
7465 cmd->scan_rssi_thr = __cpu_to_le32(arg->scan_rssi_thr); in ath10k_wmi_op_gen_vdev_spectral_conf()
7466 cmd->scan_pwr_format = __cpu_to_le32(arg->scan_pwr_format); in ath10k_wmi_op_gen_vdev_spectral_conf()
7467 cmd->scan_rpt_mode = __cpu_to_le32(arg->scan_rpt_mode); in ath10k_wmi_op_gen_vdev_spectral_conf()
7468 cmd->scan_bin_scale = __cpu_to_le32(arg->scan_bin_scale); in ath10k_wmi_op_gen_vdev_spectral_conf()
7469 cmd->scan_dbm_adj = __cpu_to_le32(arg->scan_dbm_adj); in ath10k_wmi_op_gen_vdev_spectral_conf()
7470 cmd->scan_chn_mask = __cpu_to_le32(arg->scan_chn_mask); in ath10k_wmi_op_gen_vdev_spectral_conf()
7484 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_vdev_spectral_enable()
7486 cmd = (struct wmi_vdev_spectral_enable_cmd *)skb->data; in ath10k_wmi_op_gen_vdev_spectral_enable()
7487 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_vdev_spectral_enable()
7488 cmd->trigger_cmd = __cpu_to_le32(trigger); in ath10k_wmi_op_gen_vdev_spectral_enable()
7489 cmd->enable_cmd = __cpu_to_le32(enable); in ath10k_wmi_op_gen_vdev_spectral_enable()
7504 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_peer_create()
7506 cmd = (struct wmi_peer_create_cmd *)skb->data; in ath10k_wmi_op_gen_peer_create()
7507 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_peer_create()
7508 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_op_gen_peer_create()
7509 cmd->peer_type = __cpu_to_le32(peer_type); in ath10k_wmi_op_gen_peer_create()
7526 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_peer_delete()
7528 cmd = (struct wmi_peer_delete_cmd *)skb->data; in ath10k_wmi_op_gen_peer_delete()
7529 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_peer_delete()
7530 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_op_gen_peer_delete()
7547 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_peer_flush()
7549 cmd = (struct wmi_peer_flush_tids_cmd *)skb->data; in ath10k_wmi_op_gen_peer_flush()
7550 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_peer_flush()
7551 cmd->peer_tid_bitmap = __cpu_to_le32(tid_bitmap); in ath10k_wmi_op_gen_peer_flush()
7552 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_op_gen_peer_flush()
7571 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_peer_set_param()
7573 cmd = (struct wmi_peer_set_param_cmd *)skb->data; in ath10k_wmi_op_gen_peer_set_param()
7574 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_peer_set_param()
7575 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_op_gen_peer_set_param()
7576 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_op_gen_peer_set_param()
7577 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_op_gen_peer_set_param()
7594 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_set_psmode()
7596 cmd = (struct wmi_sta_powersave_mode_cmd *)skb->data; in ath10k_wmi_op_gen_set_psmode()
7597 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_set_psmode()
7598 cmd->sta_ps_mode = __cpu_to_le32(psmode); in ath10k_wmi_op_gen_set_psmode()
7616 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_set_sta_ps()
7618 cmd = (struct wmi_sta_powersave_param_cmd *)skb->data; in ath10k_wmi_op_gen_set_sta_ps()
7619 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_set_sta_ps()
7620 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_op_gen_set_sta_ps()
7621 cmd->param_value = __cpu_to_le32(value); in ath10k_wmi_op_gen_set_sta_ps()
7637 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_set_ap_ps()
7641 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_set_ap_ps()
7643 cmd = (struct wmi_ap_ps_peer_cmd *)skb->data; in ath10k_wmi_op_gen_set_ap_ps()
7644 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_set_ap_ps()
7645 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_op_gen_set_ap_ps()
7646 cmd->param_value = __cpu_to_le32(value); in ath10k_wmi_op_gen_set_ap_ps()
7647 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_op_gen_set_ap_ps()
7665 skb = ath10k_wmi_alloc_skb(ar, struct_size(cmd, chan_info, arg->n_channels)); in ath10k_wmi_op_gen_scan_chan_list()
7667 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_scan_chan_list()
7669 cmd = (struct wmi_scan_chan_list_cmd *)skb->data; in ath10k_wmi_op_gen_scan_chan_list()
7670 cmd->num_scan_chans = __cpu_to_le32(arg->n_channels); in ath10k_wmi_op_gen_scan_chan_list()
7672 for (i = 0; i < arg->n_channels; i++) { in ath10k_wmi_op_gen_scan_chan_list()
7673 ch = &arg->channels[i]; in ath10k_wmi_op_gen_scan_chan_list()
7674 ci = &cmd->chan_info[i]; in ath10k_wmi_op_gen_scan_chan_list()
7688 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_peer_assoc_fill()
7689 cmd->peer_new_assoc = __cpu_to_le32(arg->peer_reassoc ? 0 : 1); in ath10k_wmi_peer_assoc_fill()
7690 cmd->peer_associd = __cpu_to_le32(arg->peer_aid); in ath10k_wmi_peer_assoc_fill()
7691 cmd->peer_flags = __cpu_to_le32(arg->peer_flags); in ath10k_wmi_peer_assoc_fill()
7692 cmd->peer_caps = __cpu_to_le32(arg->peer_caps); in ath10k_wmi_peer_assoc_fill()
7693 cmd->peer_listen_intval = __cpu_to_le32(arg->peer_listen_intval); in ath10k_wmi_peer_assoc_fill()
7694 cmd->peer_ht_caps = __cpu_to_le32(arg->peer_ht_caps); in ath10k_wmi_peer_assoc_fill()
7695 cmd->peer_max_mpdu = __cpu_to_le32(arg->peer_max_mpdu); in ath10k_wmi_peer_assoc_fill()
7696 cmd->peer_mpdu_density = __cpu_to_le32(arg->peer_mpdu_density); in ath10k_wmi_peer_assoc_fill()
7697 cmd->peer_rate_caps = __cpu_to_le32(arg->peer_rate_caps); in ath10k_wmi_peer_assoc_fill()
7698 cmd->peer_nss = __cpu_to_le32(arg->peer_num_spatial_streams); in ath10k_wmi_peer_assoc_fill()
7699 cmd->peer_vht_caps = __cpu_to_le32(arg->peer_vht_caps); in ath10k_wmi_peer_assoc_fill()
7700 cmd->peer_phymode = __cpu_to_le32(arg->peer_phymode); in ath10k_wmi_peer_assoc_fill()
7702 ether_addr_copy(cmd->peer_macaddr.addr, arg->addr); in ath10k_wmi_peer_assoc_fill()
7704 cmd->peer_legacy_rates.num_rates = in ath10k_wmi_peer_assoc_fill()
7705 __cpu_to_le32(arg->peer_legacy_rates.num_rates); in ath10k_wmi_peer_assoc_fill()
7706 memcpy(cmd->peer_legacy_rates.rates, arg->peer_legacy_rates.rates, in ath10k_wmi_peer_assoc_fill()
7707 arg->peer_legacy_rates.num_rates); in ath10k_wmi_peer_assoc_fill()
7709 cmd->peer_ht_rates.num_rates = in ath10k_wmi_peer_assoc_fill()
7710 __cpu_to_le32(arg->peer_ht_rates.num_rates); in ath10k_wmi_peer_assoc_fill()
7711 memcpy(cmd->peer_ht_rates.rates, arg->peer_ht_rates.rates, in ath10k_wmi_peer_assoc_fill()
7712 arg->peer_ht_rates.num_rates); in ath10k_wmi_peer_assoc_fill()
7714 cmd->peer_vht_rates.rx_max_rate = in ath10k_wmi_peer_assoc_fill()
7715 __cpu_to_le32(arg->peer_vht_rates.rx_max_rate); in ath10k_wmi_peer_assoc_fill()
7716 cmd->peer_vht_rates.rx_mcs_set = in ath10k_wmi_peer_assoc_fill()
7717 __cpu_to_le32(arg->peer_vht_rates.rx_mcs_set); in ath10k_wmi_peer_assoc_fill()
7718 cmd->peer_vht_rates.tx_max_rate = in ath10k_wmi_peer_assoc_fill()
7719 __cpu_to_le32(arg->peer_vht_rates.tx_max_rate); in ath10k_wmi_peer_assoc_fill()
7720 cmd->peer_vht_rates.tx_mcs_set = in ath10k_wmi_peer_assoc_fill()
7721 __cpu_to_le32(arg->peer_vht_rates.tx_mcs_set); in ath10k_wmi_peer_assoc_fill()
7731 memset(cmd->peer_ht_info, 0, sizeof(cmd->peer_ht_info)); in ath10k_wmi_peer_assoc_fill_main()
7757 cmd->info0 = __cpu_to_le32(info0); in ath10k_wmi_peer_assoc_fill_10_2()
7767 cmd->peer_bw_rxnss_override = in ath10k_wmi_peer_assoc_fill_10_4()
7768 __cpu_to_le32(arg->peer_bw_rxnss_override); in ath10k_wmi_peer_assoc_fill_10_4()
7774 if (arg->peer_mpdu_density > 16) in ath10k_wmi_peer_assoc_check_arg()
7775 return -EINVAL; in ath10k_wmi_peer_assoc_check_arg()
7776 if (arg->peer_legacy_rates.num_rates > MAX_SUPPORTED_RATES) in ath10k_wmi_peer_assoc_check_arg()
7777 return -EINVAL; in ath10k_wmi_peer_assoc_check_arg()
7778 if (arg->peer_ht_rates.num_rates > MAX_SUPPORTED_RATES) in ath10k_wmi_peer_assoc_check_arg()
7779 return -EINVAL; in ath10k_wmi_peer_assoc_check_arg()
7798 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_peer_assoc()
7800 ath10k_wmi_peer_assoc_fill_main(ar, skb->data, arg); in ath10k_wmi_op_gen_peer_assoc()
7804 arg->vdev_id, arg->addr, in ath10k_wmi_op_gen_peer_assoc()
7805 arg->peer_reassoc ? "reassociate" : "new"); in ath10k_wmi_op_gen_peer_assoc()
7823 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_1_op_gen_peer_assoc()
7825 ath10k_wmi_peer_assoc_fill_10_1(ar, skb->data, arg); in ath10k_wmi_10_1_op_gen_peer_assoc()
7829 arg->vdev_id, arg->addr, in ath10k_wmi_10_1_op_gen_peer_assoc()
7830 arg->peer_reassoc ? "reassociate" : "new"); in ath10k_wmi_10_1_op_gen_peer_assoc()
7848 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_op_gen_peer_assoc()
7850 ath10k_wmi_peer_assoc_fill_10_2(ar, skb->data, arg); in ath10k_wmi_10_2_op_gen_peer_assoc()
7854 arg->vdev_id, arg->addr, in ath10k_wmi_10_2_op_gen_peer_assoc()
7855 arg->peer_reassoc ? "reassociate" : "new"); in ath10k_wmi_10_2_op_gen_peer_assoc()
7873 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_op_gen_peer_assoc()
7875 ath10k_wmi_peer_assoc_fill_10_4(ar, skb->data, arg); in ath10k_wmi_10_4_op_gen_peer_assoc()
7879 arg->vdev_id, arg->addr, in ath10k_wmi_10_4_op_gen_peer_assoc()
7880 arg->peer_reassoc ? "reassociate" : "new"); in ath10k_wmi_10_4_op_gen_peer_assoc()
7891 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_op_gen_pdev_get_temperature()
7906 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_op_gen_pdev_bss_chan_info()
7908 cmd = (struct wmi_pdev_chan_info_req_cmd *)skb->data; in ath10k_wmi_10_2_op_gen_pdev_bss_chan_info()
7909 cmd->type = __cpu_to_le32(type); in ath10k_wmi_10_2_op_gen_pdev_bss_chan_info()
7934 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_beacon_dma()
7941 fc = le16_to_cpu(hdr->frame_control); in ath10k_wmi_op_gen_beacon_dma()
7943 cmd = (struct wmi_bcn_tx_ref_cmd *)skb->data; in ath10k_wmi_op_gen_beacon_dma()
7944 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_beacon_dma()
7945 cmd->data_len = __cpu_to_le32(bcn_len); in ath10k_wmi_op_gen_beacon_dma()
7946 cmd->data_ptr = __cpu_to_le32(bcn_paddr); in ath10k_wmi_op_gen_beacon_dma()
7947 cmd->msdu_id = 0; in ath10k_wmi_op_gen_beacon_dma()
7948 cmd->frame_control = __cpu_to_le32(fc); in ath10k_wmi_op_gen_beacon_dma()
7949 cmd->flags = 0; in ath10k_wmi_op_gen_beacon_dma()
7950 cmd->antenna_mask = __cpu_to_le32(WMI_BCN_TX_REF_DEF_ANTENNA); in ath10k_wmi_op_gen_beacon_dma()
7953 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DTIM_ZERO); in ath10k_wmi_op_gen_beacon_dma()
7956 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DELIVER_CAB); in ath10k_wmi_op_gen_beacon_dma()
7964 params->cwmin = __cpu_to_le32(arg->cwmin); in ath10k_wmi_set_wmm_param()
7965 params->cwmax = __cpu_to_le32(arg->cwmax); in ath10k_wmi_set_wmm_param()
7966 params->aifs = __cpu_to_le32(arg->aifs); in ath10k_wmi_set_wmm_param()
7967 params->txop = __cpu_to_le32(arg->txop); in ath10k_wmi_set_wmm_param()
7968 params->acm = __cpu_to_le32(arg->acm); in ath10k_wmi_set_wmm_param()
7969 params->no_ack = __cpu_to_le32(arg->no_ack); in ath10k_wmi_set_wmm_param()
7981 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_set_wmm()
7983 cmd = (struct wmi_pdev_set_wmm_params *)skb->data; in ath10k_wmi_op_gen_pdev_set_wmm()
7984 ath10k_wmi_set_wmm_param(&cmd->ac_be, &arg->ac_be); in ath10k_wmi_op_gen_pdev_set_wmm()
7985 ath10k_wmi_set_wmm_param(&cmd->ac_bk, &arg->ac_bk); in ath10k_wmi_op_gen_pdev_set_wmm()
7986 ath10k_wmi_set_wmm_param(&cmd->ac_vi, &arg->ac_vi); in ath10k_wmi_op_gen_pdev_set_wmm()
7987 ath10k_wmi_set_wmm_param(&cmd->ac_vo, &arg->ac_vo); in ath10k_wmi_op_gen_pdev_set_wmm()
8001 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_request_stats()
8003 cmd = (struct wmi_request_stats_cmd *)skb->data; in ath10k_wmi_op_gen_request_stats()
8004 cmd->stats_id = __cpu_to_le32(stats_mask); in ath10k_wmi_op_gen_request_stats()
8020 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_force_fw_hang()
8022 cmd = (struct wmi_force_fw_hang_cmd *)skb->data; in ath10k_wmi_op_gen_force_fw_hang()
8023 cmd->type = __cpu_to_le32(type); in ath10k_wmi_op_gen_force_fw_hang()
8024 cmd->delay_ms = __cpu_to_le32(delay_ms); in ath10k_wmi_op_gen_force_fw_hang()
8041 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_dbglog_cfg()
8043 cmd = (struct wmi_dbglog_cfg_cmd *)skb->data; in ath10k_wmi_op_gen_dbglog_cfg()
8055 cmd->module_enable = __cpu_to_le32(module_enable); in ath10k_wmi_op_gen_dbglog_cfg()
8056 cmd->module_valid = __cpu_to_le32(~0); in ath10k_wmi_op_gen_dbglog_cfg()
8057 cmd->config_enable = __cpu_to_le32(cfg); in ath10k_wmi_op_gen_dbglog_cfg()
8058 cmd->config_valid = __cpu_to_le32(ATH10K_DBGLOG_CFG_LOG_LVL_MASK); in ath10k_wmi_op_gen_dbglog_cfg()
8062 __le32_to_cpu(cmd->module_enable), in ath10k_wmi_op_gen_dbglog_cfg()
8063 __le32_to_cpu(cmd->module_valid), in ath10k_wmi_op_gen_dbglog_cfg()
8064 __le32_to_cpu(cmd->config_enable), in ath10k_wmi_op_gen_dbglog_cfg()
8065 __le32_to_cpu(cmd->config_valid)); in ath10k_wmi_op_gen_dbglog_cfg()
8079 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8081 cmd = (struct wmi_10_4_dbglog_cfg_cmd *)skb->data; in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8093 cmd->module_enable = __cpu_to_le64(module_enable); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8094 cmd->module_valid = __cpu_to_le64(~0); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8095 cmd->config_enable = __cpu_to_le32(cfg); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8096 cmd->config_valid = __cpu_to_le32(ATH10K_DBGLOG_CFG_LOG_LVL_MASK); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8101 __le64_to_cpu(cmd->module_enable), in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8102 __le64_to_cpu(cmd->module_valid), in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8105 (uintmax_t)__le64_to_cpu(cmd->module_enable), in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8106 (uintmax_t)__le64_to_cpu(cmd->module_valid), in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8108 __le32_to_cpu(cmd->config_enable), in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8109 __le32_to_cpu(cmd->config_valid)); in ath10k_wmi_10_4_op_gen_dbglog_cfg()
8121 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pktlog_enable()
8125 cmd = (struct wmi_pdev_pktlog_enable_cmd *)skb->data; in ath10k_wmi_op_gen_pktlog_enable()
8126 cmd->ev_bitmap = __cpu_to_le32(ev_bitmap); in ath10k_wmi_op_gen_pktlog_enable()
8140 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pktlog_disable()
8156 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8158 cmd = (struct wmi_pdev_set_quiet_cmd *)skb->data; in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8159 cmd->period = __cpu_to_le32(period); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8160 cmd->duration = __cpu_to_le32(duration); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8161 cmd->next_start = __cpu_to_le32(next_offset); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8162 cmd->enabled = __cpu_to_le32(enabled); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
8178 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_addba_clear_resp()
8182 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_addba_clear_resp()
8184 cmd = (struct wmi_addba_clear_resp_cmd *)skb->data; in ath10k_wmi_op_gen_addba_clear_resp()
8185 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_addba_clear_resp()
8186 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_op_gen_addba_clear_resp()
8202 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_addba_send()
8206 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_addba_send()
8208 cmd = (struct wmi_addba_send_cmd *)skb->data; in ath10k_wmi_op_gen_addba_send()
8209 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_addba_send()
8210 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_op_gen_addba_send()
8211 cmd->tid = __cpu_to_le32(tid); in ath10k_wmi_op_gen_addba_send()
8212 cmd->buffersize = __cpu_to_le32(buf_size); in ath10k_wmi_op_gen_addba_send()
8228 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_addba_set_resp()
8232 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_addba_set_resp()
8234 cmd = (struct wmi_addba_setresponse_cmd *)skb->data; in ath10k_wmi_op_gen_addba_set_resp()
8235 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_addba_set_resp()
8236 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_op_gen_addba_set_resp()
8237 cmd->tid = __cpu_to_le32(tid); in ath10k_wmi_op_gen_addba_set_resp()
8238 cmd->statuscode = __cpu_to_le32(status); in ath10k_wmi_op_gen_addba_set_resp()
8254 return ERR_PTR(-EINVAL); in ath10k_wmi_op_gen_delba_send()
8258 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_delba_send()
8260 cmd = (struct wmi_delba_send_cmd *)skb->data; in ath10k_wmi_op_gen_delba_send()
8261 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_op_gen_delba_send()
8262 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_op_gen_delba_send()
8263 cmd->tid = __cpu_to_le32(tid); in ath10k_wmi_op_gen_delba_send()
8264 cmd->initiator = __cpu_to_le32(initiator); in ath10k_wmi_op_gen_delba_send()
8265 cmd->reasoncode = __cpu_to_le32(reason); in ath10k_wmi_op_gen_delba_send()
8281 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config()
8283 cmd = (struct wmi_pdev_get_tpc_config_cmd *)skb->data; in ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config()
8284 cmd->param = __cpu_to_le32(param); in ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config()
8298 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_fw_pdev_base_stats_fill()
8299 len += scnprintf(buf + len, buf_len - len, "%30s\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8301 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8304 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8305 "Channel noise floor", pdev->ch_noise_floor); in ath10k_wmi_fw_pdev_base_stats_fill()
8306 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8307 "Channel TX power", pdev->chan_tx_power); in ath10k_wmi_fw_pdev_base_stats_fill()
8308 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8309 "TX frame count", pdev->tx_frame_count); in ath10k_wmi_fw_pdev_base_stats_fill()
8310 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8311 "RX frame count", pdev->rx_frame_count); in ath10k_wmi_fw_pdev_base_stats_fill()
8312 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8313 "RX clear count", pdev->rx_clear_count); in ath10k_wmi_fw_pdev_base_stats_fill()
8314 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8315 "Cycle count", pdev->cycle_count); in ath10k_wmi_fw_pdev_base_stats_fill()
8316 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_base_stats_fill()
8317 "PHY error count", pdev->phy_err_count); in ath10k_wmi_fw_pdev_base_stats_fill()
8329 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_extra_stats_fill()
8330 "RTS bad count", pdev->rts_bad); in ath10k_wmi_fw_pdev_extra_stats_fill()
8331 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_extra_stats_fill()
8332 "RTS good count", pdev->rts_good); in ath10k_wmi_fw_pdev_extra_stats_fill()
8333 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_extra_stats_fill()
8334 "FCS bad count", pdev->fcs_bad); in ath10k_wmi_fw_pdev_extra_stats_fill()
8335 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_extra_stats_fill()
8336 "No beacon count", pdev->no_beacons); in ath10k_wmi_fw_pdev_extra_stats_fill()
8337 len += scnprintf(buf + len, buf_len - len, "%30s %10u\n", in ath10k_wmi_fw_pdev_extra_stats_fill()
8338 "MIB int count", pdev->mib_int_count); in ath10k_wmi_fw_pdev_extra_stats_fill()
8340 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_fw_pdev_extra_stats_fill()
8351 len += scnprintf(buf + len, buf_len - len, "\n%30s\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8353 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8356 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8357 "HTT cookies queued", pdev->comp_queued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8358 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8359 "HTT cookies disp.", pdev->comp_delivered); in ath10k_wmi_fw_pdev_tx_stats_fill()
8360 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8361 "MSDU queued", pdev->msdu_enqued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8362 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8363 "MPDU queued", pdev->mpdu_enqued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8364 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8365 "MSDUs dropped", pdev->wmm_drop); in ath10k_wmi_fw_pdev_tx_stats_fill()
8366 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8367 "Local enqued", pdev->local_enqued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8368 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8369 "Local freed", pdev->local_freed); in ath10k_wmi_fw_pdev_tx_stats_fill()
8370 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8371 "HW queued", pdev->hw_queued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8372 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8373 "PPDUs reaped", pdev->hw_reaped); in ath10k_wmi_fw_pdev_tx_stats_fill()
8374 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8375 "Num underruns", pdev->underrun); in ath10k_wmi_fw_pdev_tx_stats_fill()
8376 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8377 "PPDUs cleaned", pdev->tx_abort); in ath10k_wmi_fw_pdev_tx_stats_fill()
8378 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8379 "MPDUs requeued", pdev->mpdus_requeued); in ath10k_wmi_fw_pdev_tx_stats_fill()
8380 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8381 "Excessive retries", pdev->tx_ko); in ath10k_wmi_fw_pdev_tx_stats_fill()
8382 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8383 "HW rate", pdev->data_rc); in ath10k_wmi_fw_pdev_tx_stats_fill()
8384 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8385 "Sched self triggers", pdev->self_triggers); in ath10k_wmi_fw_pdev_tx_stats_fill()
8386 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8388 pdev->sw_retry_failure); in ath10k_wmi_fw_pdev_tx_stats_fill()
8389 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8391 pdev->illgl_rate_phy_err); in ath10k_wmi_fw_pdev_tx_stats_fill()
8392 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8393 "Pdev continuous xretry", pdev->pdev_cont_xretry); in ath10k_wmi_fw_pdev_tx_stats_fill()
8394 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8395 "TX timeout", pdev->pdev_tx_timeout); in ath10k_wmi_fw_pdev_tx_stats_fill()
8396 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8397 "PDEV resets", pdev->pdev_resets); in ath10k_wmi_fw_pdev_tx_stats_fill()
8398 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8399 "PHY underrun", pdev->phy_underrun); in ath10k_wmi_fw_pdev_tx_stats_fill()
8400 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_tx_stats_fill()
8401 "MPDU is more than txop limit", pdev->txop_ovf); in ath10k_wmi_fw_pdev_tx_stats_fill()
8412 len += scnprintf(buf + len, buf_len - len, "\n%30s\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8414 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8417 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8419 pdev->mid_ppdu_route_change); in ath10k_wmi_fw_pdev_rx_stats_fill()
8420 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8421 "Tot. number of statuses", pdev->status_rcvd); in ath10k_wmi_fw_pdev_rx_stats_fill()
8422 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8423 "Extra frags on rings 0", pdev->r0_frags); in ath10k_wmi_fw_pdev_rx_stats_fill()
8424 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8425 "Extra frags on rings 1", pdev->r1_frags); in ath10k_wmi_fw_pdev_rx_stats_fill()
8426 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8427 "Extra frags on rings 2", pdev->r2_frags); in ath10k_wmi_fw_pdev_rx_stats_fill()
8428 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8429 "Extra frags on rings 3", pdev->r3_frags); in ath10k_wmi_fw_pdev_rx_stats_fill()
8430 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8431 "MSDUs delivered to HTT", pdev->htt_msdus); in ath10k_wmi_fw_pdev_rx_stats_fill()
8432 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8433 "MPDUs delivered to HTT", pdev->htt_mpdus); in ath10k_wmi_fw_pdev_rx_stats_fill()
8434 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8435 "MSDUs delivered to stack", pdev->loc_msdus); in ath10k_wmi_fw_pdev_rx_stats_fill()
8436 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8437 "MPDUs delivered to stack", pdev->loc_mpdus); in ath10k_wmi_fw_pdev_rx_stats_fill()
8438 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8439 "Oversized AMSDUs", pdev->oversize_amsdu); in ath10k_wmi_fw_pdev_rx_stats_fill()
8440 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8441 "PHY errors", pdev->phy_errs); in ath10k_wmi_fw_pdev_rx_stats_fill()
8442 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8443 "PHY errors drops", pdev->phy_err_drop); in ath10k_wmi_fw_pdev_rx_stats_fill()
8444 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_fw_pdev_rx_stats_fill()
8445 "MPDU errors (FCS, MIC, ENC)", pdev->mpdu_errs); in ath10k_wmi_fw_pdev_rx_stats_fill()
8457 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8458 "vdev id", vdev->vdev_id); in ath10k_wmi_fw_vdev_stats_fill()
8459 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8460 "beacon snr", vdev->beacon_snr); in ath10k_wmi_fw_vdev_stats_fill()
8461 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8462 "data snr", vdev->data_snr); in ath10k_wmi_fw_vdev_stats_fill()
8463 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8464 "num rx frames", vdev->num_rx_frames); in ath10k_wmi_fw_vdev_stats_fill()
8465 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8466 "num rts fail", vdev->num_rts_fail); in ath10k_wmi_fw_vdev_stats_fill()
8467 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8468 "num rts success", vdev->num_rts_success); in ath10k_wmi_fw_vdev_stats_fill()
8469 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8470 "num rx err", vdev->num_rx_err); in ath10k_wmi_fw_vdev_stats_fill()
8471 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8472 "num rx discard", vdev->num_rx_discard); in ath10k_wmi_fw_vdev_stats_fill()
8473 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_fill()
8474 "num tx not acked", vdev->num_tx_not_acked); in ath10k_wmi_fw_vdev_stats_fill()
8476 for (i = 0 ; i < ARRAY_SIZE(vdev->num_tx_frames); i++) in ath10k_wmi_fw_vdev_stats_fill()
8477 len += scnprintf(buf + len, buf_len - len, in ath10k_wmi_fw_vdev_stats_fill()
8480 vdev->num_tx_frames[i]); in ath10k_wmi_fw_vdev_stats_fill()
8482 for (i = 0 ; i < ARRAY_SIZE(vdev->num_tx_frames_retries); i++) in ath10k_wmi_fw_vdev_stats_fill()
8483 len += scnprintf(buf + len, buf_len - len, in ath10k_wmi_fw_vdev_stats_fill()
8486 vdev->num_tx_frames_retries[i]); in ath10k_wmi_fw_vdev_stats_fill()
8488 for (i = 0 ; i < ARRAY_SIZE(vdev->num_tx_frames_failures); i++) in ath10k_wmi_fw_vdev_stats_fill()
8489 len += scnprintf(buf + len, buf_len - len, in ath10k_wmi_fw_vdev_stats_fill()
8492 vdev->num_tx_frames_failures[i]); in ath10k_wmi_fw_vdev_stats_fill()
8494 for (i = 0 ; i < ARRAY_SIZE(vdev->tx_rate_history); i++) in ath10k_wmi_fw_vdev_stats_fill()
8495 len += scnprintf(buf + len, buf_len - len, in ath10k_wmi_fw_vdev_stats_fill()
8498 vdev->tx_rate_history[i]); in ath10k_wmi_fw_vdev_stats_fill()
8500 for (i = 0 ; i < ARRAY_SIZE(vdev->beacon_rssi_history); i++) in ath10k_wmi_fw_vdev_stats_fill()
8501 len += scnprintf(buf + len, buf_len - len, in ath10k_wmi_fw_vdev_stats_fill()
8504 vdev->beacon_rssi_history[i]); in ath10k_wmi_fw_vdev_stats_fill()
8506 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_fw_vdev_stats_fill()
8517 len += scnprintf(buf + len, buf_len - len, "%30s %pM\n", in ath10k_wmi_fw_peer_stats_fill()
8518 "Peer MAC address", peer->peer_macaddr); in ath10k_wmi_fw_peer_stats_fill()
8519 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_peer_stats_fill()
8520 "Peer RSSI", peer->peer_rssi); in ath10k_wmi_fw_peer_stats_fill()
8521 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_peer_stats_fill()
8522 "Peer TX rate", peer->peer_tx_rate); in ath10k_wmi_fw_peer_stats_fill()
8523 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_peer_stats_fill()
8524 "Peer RX rate", peer->peer_rx_rate); in ath10k_wmi_fw_peer_stats_fill()
8526 len += scnprintf(buf + len, buf_len - len, "%30s %llu\n", in ath10k_wmi_fw_peer_stats_fill()
8527 "Peer RX duration", peer->rx_duration); in ath10k_wmi_fw_peer_stats_fill()
8529 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_fw_peer_stats_fill()
8540 len += scnprintf(buf + len, buf_len - len, "%30s %pM\n", in ath10k_wmi_fw_extd_peer_stats_fill()
8541 "Peer MAC address", peer->peer_macaddr); in ath10k_wmi_fw_extd_peer_stats_fill()
8542 len += scnprintf(buf + len, buf_len - len, "%30s %llu\n", in ath10k_wmi_fw_extd_peer_stats_fill()
8543 "Peer RX duration", peer->rx_duration); in ath10k_wmi_fw_extd_peer_stats_fill()
8558 spin_lock_bh(&ar->data_lock); in ath10k_wmi_main_op_fw_stats_fill()
8560 pdev = list_first_entry_or_null(&fw_stats->pdevs, in ath10k_wmi_main_op_fw_stats_fill()
8567 num_peers = list_count_nodes(&fw_stats->peers); in ath10k_wmi_main_op_fw_stats_fill()
8568 num_vdevs = list_count_nodes(&fw_stats->vdevs); in ath10k_wmi_main_op_fw_stats_fill()
8574 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_main_op_fw_stats_fill()
8575 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_main_op_fw_stats_fill()
8577 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_main_op_fw_stats_fill()
8580 list_for_each_entry(vdev, &fw_stats->vdevs, list) { in ath10k_wmi_main_op_fw_stats_fill()
8584 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_main_op_fw_stats_fill()
8585 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_main_op_fw_stats_fill()
8587 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_main_op_fw_stats_fill()
8590 list_for_each_entry(peer, &fw_stats->peers, list) { in ath10k_wmi_main_op_fw_stats_fill()
8592 fw_stats->extended); in ath10k_wmi_main_op_fw_stats_fill()
8596 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_main_op_fw_stats_fill()
8599 buf[len - 1] = 0; in ath10k_wmi_main_op_fw_stats_fill()
8616 spin_lock_bh(&ar->data_lock); in ath10k_wmi_10x_op_fw_stats_fill()
8618 pdev = list_first_entry_or_null(&fw_stats->pdevs, in ath10k_wmi_10x_op_fw_stats_fill()
8625 num_peers = list_count_nodes(&fw_stats->peers); in ath10k_wmi_10x_op_fw_stats_fill()
8626 num_vdevs = list_count_nodes(&fw_stats->vdevs); in ath10k_wmi_10x_op_fw_stats_fill()
8633 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_10x_op_fw_stats_fill()
8634 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_10x_op_fw_stats_fill()
8636 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_10x_op_fw_stats_fill()
8639 list_for_each_entry(vdev, &fw_stats->vdevs, list) { in ath10k_wmi_10x_op_fw_stats_fill()
8643 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_10x_op_fw_stats_fill()
8644 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_10x_op_fw_stats_fill()
8646 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_10x_op_fw_stats_fill()
8649 list_for_each_entry(peer, &fw_stats->peers, list) { in ath10k_wmi_10x_op_fw_stats_fill()
8651 fw_stats->extended); in ath10k_wmi_10x_op_fw_stats_fill()
8655 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_10x_op_fw_stats_fill()
8658 buf[len - 1] = 0; in ath10k_wmi_10x_op_fw_stats_fill()
8672 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_pdev_enable_adaptive_cca()
8674 cmd = (struct wmi_pdev_set_adaptive_cca_params *)skb->data; in ath10k_wmi_op_gen_pdev_enable_adaptive_cca()
8675 cmd->enable = __cpu_to_le32(enable); in ath10k_wmi_op_gen_pdev_enable_adaptive_cca()
8676 cmd->cca_detect_level = __cpu_to_le32(detect_level); in ath10k_wmi_op_gen_pdev_enable_adaptive_cca()
8677 cmd->cca_detect_margin = __cpu_to_le32(detect_margin); in ath10k_wmi_op_gen_pdev_enable_adaptive_cca()
8693 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8694 "vdev id", vdev->vdev_id); in ath10k_wmi_fw_vdev_stats_extd_fill()
8695 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8696 "ppdu aggr count", vdev->ppdu_aggr_cnt); in ath10k_wmi_fw_vdev_stats_extd_fill()
8697 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8698 "ppdu noack", vdev->ppdu_noack); in ath10k_wmi_fw_vdev_stats_extd_fill()
8699 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8700 "mpdu queued", vdev->mpdu_queued); in ath10k_wmi_fw_vdev_stats_extd_fill()
8701 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8702 "ppdu nonaggr count", vdev->ppdu_nonaggr_cnt); in ath10k_wmi_fw_vdev_stats_extd_fill()
8703 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8704 "mpdu sw requeued", vdev->mpdu_sw_requeued); in ath10k_wmi_fw_vdev_stats_extd_fill()
8705 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8706 "mpdu success retry", vdev->mpdu_suc_retry); in ath10k_wmi_fw_vdev_stats_extd_fill()
8707 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8708 "mpdu success multitry", vdev->mpdu_suc_multitry); in ath10k_wmi_fw_vdev_stats_extd_fill()
8709 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8710 "mpdu fail retry", vdev->mpdu_fail_retry); in ath10k_wmi_fw_vdev_stats_extd_fill()
8711 val = vdev->tx_ftm_suc; in ath10k_wmi_fw_vdev_stats_extd_fill()
8713 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8714 "tx ftm success", in ath10k_wmi_fw_vdev_stats_extd_fill()
8716 val = vdev->tx_ftm_suc_retry; in ath10k_wmi_fw_vdev_stats_extd_fill()
8718 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8719 "tx ftm success retry", in ath10k_wmi_fw_vdev_stats_extd_fill()
8721 val = vdev->tx_ftm_fail; in ath10k_wmi_fw_vdev_stats_extd_fill()
8723 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8724 "tx ftm fail", in ath10k_wmi_fw_vdev_stats_extd_fill()
8726 val = vdev->rx_ftmr_cnt; in ath10k_wmi_fw_vdev_stats_extd_fill()
8728 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8729 "rx ftm request count", in ath10k_wmi_fw_vdev_stats_extd_fill()
8731 val = vdev->rx_ftmr_dup_cnt; in ath10k_wmi_fw_vdev_stats_extd_fill()
8733 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8734 "rx ftm request dup count", in ath10k_wmi_fw_vdev_stats_extd_fill()
8736 val = vdev->rx_iftmr_cnt; in ath10k_wmi_fw_vdev_stats_extd_fill()
8738 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8739 "rx initial ftm req count", in ath10k_wmi_fw_vdev_stats_extd_fill()
8741 val = vdev->rx_iftmr_dup_cnt; in ath10k_wmi_fw_vdev_stats_extd_fill()
8743 len += scnprintf(buf + len, buf_len - len, "%30s %u\n", in ath10k_wmi_fw_vdev_stats_extd_fill()
8744 "rx initial ftm req dup cnt", in ath10k_wmi_fw_vdev_stats_extd_fill()
8746 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_fw_vdev_stats_extd_fill()
8764 spin_lock_bh(&ar->data_lock); in ath10k_wmi_10_4_op_fw_stats_fill()
8766 pdev = list_first_entry_or_null(&fw_stats->pdevs, in ath10k_wmi_10_4_op_fw_stats_fill()
8773 num_peers = list_count_nodes(&fw_stats->peers); in ath10k_wmi_10_4_op_fw_stats_fill()
8774 num_vdevs = list_count_nodes(&fw_stats->vdevs); in ath10k_wmi_10_4_op_fw_stats_fill()
8780 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8781 "HW paused", pdev->hw_paused); in ath10k_wmi_10_4_op_fw_stats_fill()
8782 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8783 "Seqs posted", pdev->seq_posted); in ath10k_wmi_10_4_op_fw_stats_fill()
8784 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8785 "Seqs failed queueing", pdev->seq_failed_queueing); in ath10k_wmi_10_4_op_fw_stats_fill()
8786 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8787 "Seqs completed", pdev->seq_completed); in ath10k_wmi_10_4_op_fw_stats_fill()
8788 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8789 "Seqs restarted", pdev->seq_restarted); in ath10k_wmi_10_4_op_fw_stats_fill()
8790 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8791 "MU Seqs posted", pdev->mu_seq_posted); in ath10k_wmi_10_4_op_fw_stats_fill()
8792 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8793 "MPDUs SW flushed", pdev->mpdus_sw_flush); in ath10k_wmi_10_4_op_fw_stats_fill()
8794 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8795 "MPDUs HW filtered", pdev->mpdus_hw_filter); in ath10k_wmi_10_4_op_fw_stats_fill()
8796 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8797 "MPDUs truncated", pdev->mpdus_truncated); in ath10k_wmi_10_4_op_fw_stats_fill()
8798 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8799 "MPDUs receive no ACK", pdev->mpdus_ack_failed); in ath10k_wmi_10_4_op_fw_stats_fill()
8800 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8801 "MPDUs expired", pdev->mpdus_expired); in ath10k_wmi_10_4_op_fw_stats_fill()
8804 len += scnprintf(buf + len, buf_len - len, "%30s %10d\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8805 "Num Rx Overflow errors", pdev->rx_ovfl_errs); in ath10k_wmi_10_4_op_fw_stats_fill()
8807 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_10_4_op_fw_stats_fill()
8808 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8810 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8812 list_for_each_entry(vdev, &fw_stats->vdevs, list) { in ath10k_wmi_10_4_op_fw_stats_fill()
8816 len += scnprintf(buf + len, buf_len - len, "\n"); in ath10k_wmi_10_4_op_fw_stats_fill()
8817 len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8819 len += scnprintf(buf + len, buf_len - len, "%30s\n\n", in ath10k_wmi_10_4_op_fw_stats_fill()
8822 list_for_each_entry(peer, &fw_stats->peers, list) { in ath10k_wmi_10_4_op_fw_stats_fill()
8824 fw_stats->extended); in ath10k_wmi_10_4_op_fw_stats_fill()
8827 if (fw_stats->extended) { in ath10k_wmi_10_4_op_fw_stats_fill()
8828 list_for_each_entry(extd_peer, &fw_stats->peers_extd, list) { in ath10k_wmi_10_4_op_fw_stats_fill()
8835 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_10_4_op_fw_stats_fill()
8838 buf[len - 1] = 0; in ath10k_wmi_10_4_op_fw_stats_fill()
8859 return -ENOTSUPP; in ath10k_wmi_op_get_vdev_subtype()
8861 return -ENOTSUPP; in ath10k_wmi_op_get_vdev_subtype()
8881 return -ENOTSUPP; in ath10k_wmi_10_2_4_op_get_vdev_subtype()
8883 return -ENOTSUPP; in ath10k_wmi_10_2_4_op_get_vdev_subtype()
8905 return -ENOTSUPP; in ath10k_wmi_10_4_op_get_vdev_subtype()
8919 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_ext_resource_config()
8921 if (test_bit(WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, ar->wmi.svc_map)) in ath10k_wmi_10_4_ext_resource_config()
8924 cmd = (struct wmi_ext_resource_config_10_4_cmd *)skb->data; in ath10k_wmi_10_4_ext_resource_config()
8925 cmd->host_platform_config = __cpu_to_le32(type); in ath10k_wmi_10_4_ext_resource_config()
8926 cmd->fw_feature_bitmap = __cpu_to_le32(fw_feature_bitmap); in ath10k_wmi_10_4_ext_resource_config()
8927 cmd->wlan_gpio_priority = __cpu_to_le32(ar->coex_gpio_pin); in ath10k_wmi_10_4_ext_resource_config()
8928 cmd->coex_version = __cpu_to_le32(WMI_NO_COEX_VERSION_SUPPORT); in ath10k_wmi_10_4_ext_resource_config()
8929 cmd->coex_gpio_pin1 = __cpu_to_le32(-1); in ath10k_wmi_10_4_ext_resource_config()
8930 cmd->coex_gpio_pin2 = __cpu_to_le32(-1); in ath10k_wmi_10_4_ext_resource_config()
8931 cmd->coex_gpio_pin3 = __cpu_to_le32(-1); in ath10k_wmi_10_4_ext_resource_config()
8932 cmd->num_tdls_vdevs = __cpu_to_le32(TARGET_10_4_NUM_TDLS_VDEVS); in ath10k_wmi_10_4_ext_resource_config()
8933 cmd->num_tdls_conn_table_entries = __cpu_to_le32(20); in ath10k_wmi_10_4_ext_resource_config()
8934 cmd->max_tdls_concurrent_sleep_sta = __cpu_to_le32(num_tdls_sleep_sta); in ath10k_wmi_10_4_ext_resource_config()
8935 cmd->max_tdls_concurrent_buffer_sta = in ath10k_wmi_10_4_ext_resource_config()
8954 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8956 if (test_bit(WMI_SERVICE_TDLS_EXPLICIT_MODE_ONLY, ar->wmi.svc_map) && in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8960 if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map)) in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8963 cmd = (struct wmi_10_4_tdls_set_state_cmd *)skb->data; in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8964 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8965 cmd->state = __cpu_to_le32(state); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8966 cmd->notification_interval_ms = __cpu_to_le32(5000); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8967 cmd->tx_discovery_threshold = __cpu_to_le32(100); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8968 cmd->tx_teardown_threshold = __cpu_to_le32(5); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8969 cmd->rssi_teardown_threshold = __cpu_to_le32(-75); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8970 cmd->rssi_delta = __cpu_to_le32(-20); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8971 cmd->tdls_options = __cpu_to_le32(options); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8972 cmd->tdls_peer_traffic_ind_window = __cpu_to_le32(2); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8973 cmd->tdls_peer_traffic_response_timeout_ms = __cpu_to_le32(5000); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8974 cmd->tdls_puapsd_mask = __cpu_to_le32(0xf); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8975 cmd->tdls_puapsd_inactivity_time_ms = __cpu_to_le32(0); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8976 cmd->tdls_puapsd_rx_frame_threshold = __cpu_to_le32(10); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8977 cmd->teardown_notification_ms = __cpu_to_le32(10); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
8978 cmd->tdls_peer_kickout_threshold = __cpu_to_le32(96); in ath10k_wmi_10_4_gen_update_fw_tdls_state()
9011 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_op_gen_pdev_get_tpc_table_cmdid()
9013 cmd = (struct wmi_pdev_get_tpc_table_cmd *)skb->data; in ath10k_wmi_10_4_op_gen_pdev_get_tpc_table_cmdid()
9014 cmd->param = __cpu_to_le32(param); in ath10k_wmi_10_4_op_gen_pdev_get_tpc_table_cmdid()
9036 chan_len = cap->peer_chan_len ? (cap->peer_chan_len - 1) : 0; in ath10k_wmi_10_4_gen_tdls_peer_update()
9042 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_gen_tdls_peer_update()
9044 memset(skb->data, 0, sizeof(*cmd)); in ath10k_wmi_10_4_gen_tdls_peer_update()
9046 cmd = (struct wmi_10_4_tdls_peer_update_cmd *)skb->data; in ath10k_wmi_10_4_gen_tdls_peer_update()
9047 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_10_4_gen_tdls_peer_update()
9048 ether_addr_copy(cmd->peer_macaddr.addr, arg->addr); in ath10k_wmi_10_4_gen_tdls_peer_update()
9049 cmd->peer_state = __cpu_to_le32(arg->peer_state); in ath10k_wmi_10_4_gen_tdls_peer_update()
9051 peer_qos = ath10k_wmi_prepare_peer_qos(cap->peer_uapsd_queues, in ath10k_wmi_10_4_gen_tdls_peer_update()
9052 cap->peer_max_sp); in ath10k_wmi_10_4_gen_tdls_peer_update()
9054 peer_cap = &cmd->peer_capab; in ath10k_wmi_10_4_gen_tdls_peer_update()
9055 peer_cap->peer_qos = __cpu_to_le32(peer_qos); in ath10k_wmi_10_4_gen_tdls_peer_update()
9056 peer_cap->buff_sta_support = __cpu_to_le32(cap->buff_sta_support); in ath10k_wmi_10_4_gen_tdls_peer_update()
9057 peer_cap->off_chan_support = __cpu_to_le32(cap->off_chan_support); in ath10k_wmi_10_4_gen_tdls_peer_update()
9058 peer_cap->peer_curr_operclass = __cpu_to_le32(cap->peer_curr_operclass); in ath10k_wmi_10_4_gen_tdls_peer_update()
9059 peer_cap->self_curr_operclass = __cpu_to_le32(cap->self_curr_operclass); in ath10k_wmi_10_4_gen_tdls_peer_update()
9060 peer_cap->peer_chan_len = __cpu_to_le32(cap->peer_chan_len); in ath10k_wmi_10_4_gen_tdls_peer_update()
9061 peer_cap->peer_operclass_len = __cpu_to_le32(cap->peer_operclass_len); in ath10k_wmi_10_4_gen_tdls_peer_update()
9064 peer_cap->peer_operclass[i] = cap->peer_operclass[i]; in ath10k_wmi_10_4_gen_tdls_peer_update()
9066 peer_cap->is_peer_responder = __cpu_to_le32(cap->is_peer_responder); in ath10k_wmi_10_4_gen_tdls_peer_update()
9067 peer_cap->pref_offchan_num = __cpu_to_le32(cap->pref_offchan_num); in ath10k_wmi_10_4_gen_tdls_peer_update()
9068 peer_cap->pref_offchan_bw = __cpu_to_le32(cap->pref_offchan_bw); in ath10k_wmi_10_4_gen_tdls_peer_update()
9070 for (i = 0; i < cap->peer_chan_len; i++) { in ath10k_wmi_10_4_gen_tdls_peer_update()
9071 chan = (struct wmi_channel *)&peer_cap->peer_chan_list[i]; in ath10k_wmi_10_4_gen_tdls_peer_update()
9077 arg->vdev_id, arg->peer_state, cap->peer_chan_len); in ath10k_wmi_10_4_gen_tdls_peer_update()
9090 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_gen_radar_found()
9092 cmd = (struct wmi_radar_found_info *)skb->data; in ath10k_wmi_10_4_gen_radar_found()
9093 cmd->pri_min = __cpu_to_le32(arg->pri_min); in ath10k_wmi_10_4_gen_radar_found()
9094 cmd->pri_max = __cpu_to_le32(arg->pri_max); in ath10k_wmi_10_4_gen_radar_found()
9095 cmd->width_min = __cpu_to_le32(arg->width_min); in ath10k_wmi_10_4_gen_radar_found()
9096 cmd->width_max = __cpu_to_le32(arg->width_max); in ath10k_wmi_10_4_gen_radar_found()
9097 cmd->sidx_min = __cpu_to_le32(arg->sidx_min); in ath10k_wmi_10_4_gen_radar_found()
9098 cmd->sidx_max = __cpu_to_le32(arg->sidx_max); in ath10k_wmi_10_4_gen_radar_found()
9102 arg->pri_min, arg->pri_max, arg->width_min, in ath10k_wmi_10_4_gen_radar_found()
9103 arg->width_max, arg->sidx_min, arg->sidx_max); in ath10k_wmi_10_4_gen_radar_found()
9116 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9118 memset(skb->data, 0, sizeof(*cmd)); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9120 cmd = (struct wmi_peer_per_tid_cfg_cmd *)skb->data; in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9121 cmd->vdev_id = cpu_to_le32(arg->vdev_id); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9122 ether_addr_copy(cmd->peer_macaddr.addr, arg->peer_macaddr.addr); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9123 cmd->tid = cpu_to_le32(arg->tid); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9124 cmd->ack_policy = cpu_to_le32(arg->ack_policy); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9125 cmd->aggr_control = cpu_to_le32(arg->aggr_control); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9126 cmd->rate_control = cpu_to_le32(arg->rate_ctrl); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9127 cmd->retry_count = cpu_to_le32(arg->retry_count); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9128 cmd->rcode_flags = cpu_to_le32(arg->rcode_flags); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9129 cmd->ext_tid_cfg_bitmap = cpu_to_le32(arg->ext_tid_cfg_bitmap); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9130 cmd->rtscts_ctrl = cpu_to_le32(arg->rtscts_ctrl); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9134 arg->tid, arg->vdev_id, arg->ack_policy, arg->aggr_control, in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9135 arg->rate_ctrl, arg->rcode_flags, arg->retry_count, in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9136 arg->rtscts_ctrl, arg->ext_tid_cfg_bitmap, arg->peer_macaddr.addr); in ath10k_wmi_10_4_gen_per_peer_per_tid_cfg()
9148 return ERR_PTR(-ENOMEM); in ath10k_wmi_op_gen_echo()
9150 cmd = (struct wmi_echo_cmd *)skb->data; in ath10k_wmi_op_gen_echo()
9151 cmd->value = cpu_to_le32(value); in ath10k_wmi_op_gen_echo()
9164 spin_lock_bh(&ar->data_lock); in ath10k_wmi_barrier()
9165 reinit_completion(&ar->wmi.barrier); in ath10k_wmi_barrier()
9166 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_barrier()
9174 time_left = wait_for_completion_timeout(&ar->wmi.barrier, in ath10k_wmi_barrier()
9177 return -ETIMEDOUT; in ath10k_wmi_barrier()
9191 return ERR_PTR(-ENOMEM); in ath10k_wmi_10_2_4_op_gen_bb_timing()
9193 cmd = (struct wmi_pdev_bb_timing_cfg_cmd *)skb->data; in ath10k_wmi_10_2_4_op_gen_bb_timing()
9194 cmd->bb_tx_timing = __cpu_to_le32(arg->bb_tx_timing); in ath10k_wmi_10_2_4_op_gen_bb_timing()
9195 cmd->bb_xpa_timing = __cpu_to_le32(arg->bb_xpa_timing); in ath10k_wmi_10_2_4_op_gen_bb_timing()
9199 arg->bb_tx_timing, arg->bb_xpa_timing); in ath10k_wmi_10_2_4_op_gen_bb_timing()
9563 switch (ar->running_fw->fw_file.wmi_op_version) { in ath10k_wmi_attach()
9565 ar->wmi.ops = &wmi_10_4_ops; in ath10k_wmi_attach()
9566 ar->wmi.cmd = &wmi_10_4_cmd_map; in ath10k_wmi_attach()
9567 ar->wmi.vdev_param = &wmi_10_4_vdev_param_map; in ath10k_wmi_attach()
9568 ar->wmi.pdev_param = &wmi_10_4_pdev_param_map; in ath10k_wmi_attach()
9569 ar->wmi.peer_param = &wmi_peer_param_map; in ath10k_wmi_attach()
9570 ar->wmi.peer_flags = &wmi_10_2_peer_flags_map; in ath10k_wmi_attach()
9571 ar->wmi_key_cipher = wmi_key_cipher_suites; in ath10k_wmi_attach()
9574 ar->wmi.cmd = &wmi_10_2_4_cmd_map; in ath10k_wmi_attach()
9575 ar->wmi.ops = &wmi_10_2_4_ops; in ath10k_wmi_attach()
9576 ar->wmi.vdev_param = &wmi_10_2_4_vdev_param_map; in ath10k_wmi_attach()
9577 ar->wmi.pdev_param = &wmi_10_2_4_pdev_param_map; in ath10k_wmi_attach()
9578 ar->wmi.peer_param = &wmi_peer_param_map; in ath10k_wmi_attach()
9579 ar->wmi.peer_flags = &wmi_10_2_peer_flags_map; in ath10k_wmi_attach()
9580 ar->wmi_key_cipher = wmi_key_cipher_suites; in ath10k_wmi_attach()
9583 ar->wmi.cmd = &wmi_10_2_cmd_map; in ath10k_wmi_attach()
9584 ar->wmi.ops = &wmi_10_2_ops; in ath10k_wmi_attach()
9585 ar->wmi.vdev_param = &wmi_10x_vdev_param_map; in ath10k_wmi_attach()
9586 ar->wmi.pdev_param = &wmi_10x_pdev_param_map; in ath10k_wmi_attach()
9587 ar->wmi.peer_param = &wmi_peer_param_map; in ath10k_wmi_attach()
9588 ar->wmi.peer_flags = &wmi_10_2_peer_flags_map; in ath10k_wmi_attach()
9589 ar->wmi_key_cipher = wmi_key_cipher_suites; in ath10k_wmi_attach()
9592 ar->wmi.cmd = &wmi_10x_cmd_map; in ath10k_wmi_attach()
9593 ar->wmi.ops = &wmi_10_1_ops; in ath10k_wmi_attach()
9594 ar->wmi.vdev_param = &wmi_10x_vdev_param_map; in ath10k_wmi_attach()
9595 ar->wmi.pdev_param = &wmi_10x_pdev_param_map; in ath10k_wmi_attach()
9596 ar->wmi.peer_param = &wmi_peer_param_map; in ath10k_wmi_attach()
9597 ar->wmi.peer_flags = &wmi_10x_peer_flags_map; in ath10k_wmi_attach()
9598 ar->wmi_key_cipher = wmi_key_cipher_suites; in ath10k_wmi_attach()
9601 ar->wmi.cmd = &wmi_cmd_map; in ath10k_wmi_attach()
9602 ar->wmi.ops = &wmi_ops; in ath10k_wmi_attach()
9603 ar->wmi.vdev_param = &wmi_vdev_param_map; in ath10k_wmi_attach()
9604 ar->wmi.pdev_param = &wmi_pdev_param_map; in ath10k_wmi_attach()
9605 ar->wmi.peer_param = &wmi_peer_param_map; in ath10k_wmi_attach()
9606 ar->wmi.peer_flags = &wmi_peer_flags_map; in ath10k_wmi_attach()
9607 ar->wmi_key_cipher = wmi_key_cipher_suites; in ath10k_wmi_attach()
9611 ar->wmi_key_cipher = wmi_tlv_key_cipher_suites; in ath10k_wmi_attach()
9616 ar->running_fw->fw_file.wmi_op_version); in ath10k_wmi_attach()
9617 return -EINVAL; in ath10k_wmi_attach()
9620 init_completion(&ar->wmi.service_ready); in ath10k_wmi_attach()
9621 init_completion(&ar->wmi.unified_ready); in ath10k_wmi_attach()
9622 init_completion(&ar->wmi.barrier); in ath10k_wmi_attach()
9623 init_completion(&ar->wmi.radar_confirm); in ath10k_wmi_attach()
9625 INIT_WORK(&ar->svc_rdy_work, ath10k_wmi_event_service_ready_work); in ath10k_wmi_attach()
9626 INIT_WORK(&ar->radar_confirmation_work, in ath10k_wmi_attach()
9630 ar->running_fw->fw_file.fw_features)) { in ath10k_wmi_attach()
9631 idr_init(&ar->wmi.mgmt_pending_tx); in ath10k_wmi_attach()
9642 for (i = 0; i < ar->wmi.num_mem_chunks; i++) { in ath10k_wmi_free_host_mem()
9643 dma_free_coherent(ar->dev, in ath10k_wmi_free_host_mem()
9644 ar->wmi.mem_chunks[i].len, in ath10k_wmi_free_host_mem()
9645 ar->wmi.mem_chunks[i].vaddr, in ath10k_wmi_free_host_mem()
9646 ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_free_host_mem()
9649 ar->wmi.num_mem_chunks = 0; in ath10k_wmi_free_host_mem()
9662 msdu = pkt_addr->vaddr; in ath10k_wmi_mgmt_tx_clean_up_pending()
9663 dma_unmap_single(ar->dev, pkt_addr->paddr, in ath10k_wmi_mgmt_tx_clean_up_pending()
9664 msdu->len, DMA_TO_DEVICE); in ath10k_wmi_mgmt_tx_clean_up_pending()
9665 ieee80211_free_txskb(ar->hw, msdu); in ath10k_wmi_mgmt_tx_clean_up_pending()
9673 ar->running_fw->fw_file.fw_features)) { in ath10k_wmi_detach()
9674 spin_lock_bh(&ar->data_lock); in ath10k_wmi_detach()
9675 idr_for_each(&ar->wmi.mgmt_pending_tx, in ath10k_wmi_detach()
9677 idr_destroy(&ar->wmi.mgmt_pending_tx); in ath10k_wmi_detach()
9678 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_detach()
9681 cancel_work_sync(&ar->svc_rdy_work); in ath10k_wmi_detach()
9682 dev_kfree_skb(ar->svc_rdy_skb); in ath10k_wmi_detach()