Lines Matching +full:- +full:eproto

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.
12 #include "wmi-ops.h"
13 #include "wmi-tlv.h"
92 ptr - begin, len, sizeof(*tlv)); in ath10k_wmi_tlv_iter()
93 return -EINVAL; in ath10k_wmi_tlv_iter()
101 tlv_tag = __le16_to_cpu(tlv->tag); in ath10k_wmi_tlv_iter()
102 tlv_len = __le16_to_cpu(tlv->len); in ath10k_wmi_tlv_iter()
104 len -= sizeof(*tlv); in ath10k_wmi_tlv_iter()
109 tlv_tag, ptr - begin, len, tlv_len); in ath10k_wmi_tlv_iter()
110 return -EINVAL; in ath10k_wmi_tlv_iter()
118 tlv_tag, ptr - begin, tlv_len, in ath10k_wmi_tlv_iter()
120 return -EINVAL; in ath10k_wmi_tlv_iter()
128 len -= tlv_len; in ath10k_wmi_tlv_iter()
161 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_parse_alloc()
174 return __le16_to_cpu((((const struct wmi_tlv *)ptr) - 1)->len); in ath10k_wmi_tlv_len()
189 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_bcn_tx_status()
199 return -EPROTO; in ath10k_wmi_tlv_event_bcn_tx_status()
202 tx_status = __le32_to_cpu(ev->tx_status); in ath10k_wmi_tlv_event_bcn_tx_status()
203 vdev_id = __le32_to_cpu(ev->vdev_id); in ath10k_wmi_tlv_event_bcn_tx_status()
220 if (arvif && arvif->is_up && arvif->vif->bss_conf.csa_active) in ath10k_wmi_tlv_event_bcn_tx_status()
221 ieee80211_queue_work(ar->hw, &arvif->ap_csa_work); in ath10k_wmi_tlv_event_bcn_tx_status()
231 complete(&ar->vdev_delete_done); in ath10k_wmi_tlv_event_vdev_delete_resp()
242 return -EPROTO; in ath10k_wmi_tlv_parse_peer_stats_info()
246 stat->peer_macaddr.addr, in ath10k_wmi_tlv_parse_peer_stats_info()
247 __le32_to_cpu(stat->last_rx_rate_code), in ath10k_wmi_tlv_parse_peer_stats_info()
248 __le32_to_cpu(stat->last_rx_bitrate_kbps)); in ath10k_wmi_tlv_parse_peer_stats_info()
252 __le32_to_cpu(stat->last_tx_rate_code), in ath10k_wmi_tlv_parse_peer_stats_info()
253 __le32_to_cpu(stat->last_tx_bitrate_kbps)); in ath10k_wmi_tlv_parse_peer_stats_info()
256 sta = ieee80211_find_sta_by_ifaddr(ar->hw, stat->peer_macaddr.addr, NULL); in ath10k_wmi_tlv_parse_peer_stats_info()
260 return -EINVAL; in ath10k_wmi_tlv_parse_peer_stats_info()
263 arsta = (struct ath10k_sta *)sta->drv_priv; in ath10k_wmi_tlv_parse_peer_stats_info()
264 arsta->rx_rate_code = __le32_to_cpu(stat->last_rx_rate_code); in ath10k_wmi_tlv_parse_peer_stats_info()
265 arsta->rx_bitrate_kbps = __le32_to_cpu(stat->last_rx_bitrate_kbps); in ath10k_wmi_tlv_parse_peer_stats_info()
266 arsta->tx_rate_code = __le32_to_cpu(stat->last_tx_rate_code); in ath10k_wmi_tlv_parse_peer_stats_info()
267 arsta->tx_bitrate_kbps = __le32_to_cpu(stat->last_tx_bitrate_kbps); in ath10k_wmi_tlv_parse_peer_stats_info()
282 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_peer_stats_info()
294 return -EPROTO; in ath10k_wmi_tlv_op_pull_peer_stats_info()
297 num_peer_stats = __le32_to_cpu(ev->num_peers); in ath10k_wmi_tlv_op_pull_peer_stats_info()
301 __le32_to_cpu(ev->vdev_id), in ath10k_wmi_tlv_op_pull_peer_stats_info()
303 __le32_to_cpu(ev->more_data)); in ath10k_wmi_tlv_op_pull_peer_stats_info()
319 complete(&ar->peer_stats_info_complete); in ath10k_wmi_tlv_event_peer_stats_info()
335 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_diag_data()
346 return -EPROTO; in ath10k_wmi_tlv_event_diag_data()
349 num_items = __le32_to_cpu(ev->num_items); in ath10k_wmi_tlv_event_diag_data()
352 while (num_items--) { in ath10k_wmi_tlv_event_diag_data()
366 if (len < sizeof(*item) + __le16_to_cpu(item->len)) { in ath10k_wmi_tlv_event_diag_data()
372 item->type, in ath10k_wmi_tlv_event_diag_data()
373 __le32_to_cpu(item->timestamp), in ath10k_wmi_tlv_event_diag_data()
374 __le32_to_cpu(item->code), in ath10k_wmi_tlv_event_diag_data()
375 __le16_to_cpu(item->len), in ath10k_wmi_tlv_event_diag_data()
376 item->payload); in ath10k_wmi_tlv_event_diag_data()
378 len -= sizeof(*item); in ath10k_wmi_tlv_event_diag_data()
379 len -= roundup(__le16_to_cpu(item->len), 4); in ath10k_wmi_tlv_event_diag_data()
382 data += roundup(__le16_to_cpu(item->len), 4); in ath10k_wmi_tlv_event_diag_data()
385 if (num_items != -1 || len != 0) in ath10k_wmi_tlv_event_diag_data()
400 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_diag()
410 return -EPROTO; in ath10k_wmi_tlv_event_diag()
429 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_p2p_noa()
441 return -EPROTO; in ath10k_wmi_tlv_event_p2p_noa()
444 vdev_id = __le32_to_cpu(ev->vdev_id); in ath10k_wmi_tlv_event_p2p_noa()
448 vdev_id, noa->num_descriptors); in ath10k_wmi_tlv_event_p2p_noa()
463 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_tx_pause()
473 return -EPROTO; in ath10k_wmi_tlv_event_tx_pause()
476 pause_id = __le32_to_cpu(ev->pause_id); in ath10k_wmi_tlv_event_tx_pause()
477 action = __le32_to_cpu(ev->action); in ath10k_wmi_tlv_event_tx_pause()
478 vdev_map = __le32_to_cpu(ev->vdev_map); in ath10k_wmi_tlv_event_tx_pause()
479 peer_id = __le32_to_cpu(ev->peer_id); in ath10k_wmi_tlv_event_tx_pause()
480 tid_map = __le32_to_cpu(ev->tid_map); in ath10k_wmi_tlv_event_tx_pause()
528 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_event_rfkill_state_change()
545 __le32_to_cpu(ev->gpio_pin_num), in ath10k_wmi_tlv_event_rfkill_state_change()
546 __le32_to_cpu(ev->int_type), in ath10k_wmi_tlv_event_rfkill_state_change()
547 __le32_to_cpu(ev->radio_state)); in ath10k_wmi_tlv_event_rfkill_state_change()
549 radio = (__le32_to_cpu(ev->radio_state) == WMI_TLV_RFKILL_RADIO_STATE_ON); in ath10k_wmi_tlv_event_rfkill_state_change()
551 spin_lock_bh(&ar->data_lock); in ath10k_wmi_tlv_event_rfkill_state_change()
554 ar->hw_rfkill_on = true; in ath10k_wmi_tlv_event_rfkill_state_change()
556 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_tlv_event_rfkill_state_change()
560 wiphy_rfkill_set_hw_state(ar->hw->wiphy, !radio); in ath10k_wmi_tlv_event_rfkill_state_change()
568 ev = (struct wmi_tlv_pdev_temperature_event *)skb->data; in ath10k_wmi_tlv_event_temperature()
569 if (WARN_ON(skb->len < sizeof(*ev))) in ath10k_wmi_tlv_event_temperature()
570 return -EPROTO; in ath10k_wmi_tlv_event_temperature()
572 ath10k_thermal_event_temperature(ar, __le32_to_cpu(ev->temperature)); in ath10k_wmi_tlv_event_temperature()
583 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_event_tdls_peer()
595 switch (__le32_to_cpu(ev->peer_reason)) { in ath10k_wmi_event_tdls_peer()
600 station = ieee80211_find_sta_by_ifaddr(ar->hw, in ath10k_wmi_event_tdls_peer()
601 ev->peer_macaddr.addr, in ath10k_wmi_event_tdls_peer()
608 arvif = ath10k_get_arvif(ar, __le32_to_cpu(ev->vdev_id)); in ath10k_wmi_event_tdls_peer()
611 __le32_to_cpu(ev->vdev_id)); in ath10k_wmi_event_tdls_peer()
616 arvif->vif, station->addr, in ath10k_wmi_event_tdls_peer()
638 tlv_hdr = (struct wmi_tlv *)skb->data; in ath10k_wmi_tlv_event_peer_delete_resp()
639 arg = (struct wmi_peer_delete_resp_ev_arg *)tlv_hdr->value; in ath10k_wmi_tlv_event_peer_delete_resp()
641 ath10k_dbg(ar, ATH10K_DBG_WMI, "vdev id %d", arg->vdev_id); in ath10k_wmi_tlv_event_peer_delete_resp()
642 ath10k_dbg(ar, ATH10K_DBG_WMI, "peer mac addr %pM", &arg->peer_addr); in ath10k_wmi_tlv_event_peer_delete_resp()
645 complete(&ar->peer_delete_done); in ath10k_wmi_tlv_event_peer_delete_resp()
660 cmd_hdr = (struct wmi_cmd_hdr *)skb->data; in ath10k_wmi_tlv_op_rx()
661 id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID); in ath10k_wmi_tlv_op_rx()
666 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_tlv_op_rx()
834 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_scan_ev()
844 return -EPROTO; in ath10k_wmi_tlv_op_pull_scan_ev()
847 arg->event_type = ev->event_type; in ath10k_wmi_tlv_op_pull_scan_ev()
848 arg->reason = ev->reason; in ath10k_wmi_tlv_op_pull_scan_ev()
849 arg->channel_freq = ev->channel_freq; in ath10k_wmi_tlv_op_pull_scan_ev()
850 arg->scan_req_id = ev->scan_req_id; in ath10k_wmi_tlv_op_pull_scan_ev()
851 arg->scan_id = ev->scan_id; in ath10k_wmi_tlv_op_pull_scan_ev()
852 arg->vdev_id = ev->vdev_id; in ath10k_wmi_tlv_op_pull_scan_ev()
866 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
875 arg->desc_id = ev->desc_id; in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
876 arg->status = ev->status; in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
877 arg->pdev_id = ev->pdev_id; in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
878 arg->ppdu_id = ev->ppdu_id; in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
880 if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map)) in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
881 arg->ack_rssi = ev->ack_rssi; in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
907 bundle_tx_compl->num_reports = ptr; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
910 if (!bundle_tx_compl->desc_ids_done) { in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
911 bundle_tx_compl->desc_ids_done = true; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
912 bundle_tx_compl->desc_ids = ptr; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
913 } else if (!bundle_tx_compl->status_done) { in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
914 bundle_tx_compl->status_done = true; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
915 bundle_tx_compl->status = ptr; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
916 } else if (!bundle_tx_compl->ppdu_ids_done) { in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
917 bundle_tx_compl->ppdu_ids_done = true; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
918 bundle_tx_compl->ppdu_ids = ptr; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
919 } else if (!bundle_tx_compl->ack_rssi_done) { in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
920 bundle_tx_compl->ack_rssi_done = true; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
921 bundle_tx_compl->ack_rssi = ptr; in ath10k_wmi_tlv_mgmt_tx_bundle_compl_parse()
937 ret = ath10k_wmi_tlv_iter(ar, skb->data, skb->len, in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
947 return -EPROTO; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
949 arg->num_reports = *bundle_tx_compl.num_reports; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
950 arg->desc_ids = bundle_tx_compl.desc_ids; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
951 arg->status = bundle_tx_compl.status; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
952 arg->ppdu_ids = bundle_tx_compl.ppdu_ids; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
954 if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map)) in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
955 arg->ack_rssi = bundle_tx_compl.ack_rssi; in ath10k_wmi_tlv_op_pull_mgmt_tx_bundle_compl_ev()
970 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
982 return -EPROTO; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
985 arg->channel = ev->channel; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
986 arg->buf_len = ev->buf_len; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
987 arg->status = ev->status; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
988 arg->snr = ev->snr; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
989 arg->phy_mode = ev->phy_mode; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
990 arg->rate = ev->rate; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
992 for (i = 0; i < ARRAY_SIZE(ev->rssi); i++) in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
993 arg->rssi[i] = ev->rssi[i]; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
995 msdu_len = __le32_to_cpu(arg->buf_len); in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
997 if (skb->len < (frame - skb->data) + msdu_len) { in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
999 return -EPROTO; in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
1004 skb_put(skb, frame - skb->data); in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
1005 skb_pull(skb, frame - skb->data); in ath10k_wmi_tlv_op_pull_mgmt_rx_ev()
1020 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_ch_info_ev()
1030 return -EPROTO; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1033 arg->err_code = ev->err_code; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1034 arg->freq = ev->freq; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1035 arg->cmd_flags = ev->cmd_flags; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1036 arg->noise_floor = ev->noise_floor; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1037 arg->rx_clear_count = ev->rx_clear_count; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1038 arg->cycle_count = ev->cycle_count; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1040 ar->running_fw->fw_file.fw_features)) in ath10k_wmi_tlv_op_pull_ch_info_ev()
1041 arg->mac_clk_mhz = ev->mac_clk_mhz; in ath10k_wmi_tlv_op_pull_ch_info_ev()
1055 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1065 return -EPROTO; in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1069 arg->vdev_id = ev->vdev_id; in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1070 arg->req_id = ev->req_id; in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1071 arg->resp_type = ev->resp_type; in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1072 arg->status = ev->status; in ath10k_wmi_tlv_op_pull_vdev_start_ev()
1086 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_peer_kick_ev()
1096 return -EPROTO; in ath10k_wmi_tlv_op_pull_peer_kick_ev()
1099 arg->mac_addr = ev->peer_macaddr.addr; in ath10k_wmi_tlv_op_pull_peer_kick_ev()
1122 return -EPROTO; in ath10k_wmi_tlv_swba_tim_parse()
1124 if (swba->n_tim >= ARRAY_SIZE(swba->arg->tim_info)) in ath10k_wmi_tlv_swba_tim_parse()
1125 return -ENOBUFS; in ath10k_wmi_tlv_swba_tim_parse()
1127 if (__le32_to_cpu(tim_info_ev->tim_len) > in ath10k_wmi_tlv_swba_tim_parse()
1128 sizeof(tim_info_ev->tim_bitmap)) { in ath10k_wmi_tlv_swba_tim_parse()
1130 return -EPROTO; in ath10k_wmi_tlv_swba_tim_parse()
1133 tim_info_arg = &swba->arg->tim_info[swba->n_tim]; in ath10k_wmi_tlv_swba_tim_parse()
1134 tim_info_arg->tim_len = tim_info_ev->tim_len; in ath10k_wmi_tlv_swba_tim_parse()
1135 tim_info_arg->tim_mcast = tim_info_ev->tim_mcast; in ath10k_wmi_tlv_swba_tim_parse()
1136 tim_info_arg->tim_bitmap = tim_info_ev->tim_bitmap; in ath10k_wmi_tlv_swba_tim_parse()
1137 tim_info_arg->tim_changed = tim_info_ev->tim_changed; in ath10k_wmi_tlv_swba_tim_parse()
1138 tim_info_arg->tim_num_ps_pending = tim_info_ev->tim_num_ps_pending; in ath10k_wmi_tlv_swba_tim_parse()
1140 swba->n_tim++; in ath10k_wmi_tlv_swba_tim_parse()
1151 return -EPROTO; in ath10k_wmi_tlv_swba_noa_parse()
1153 if (swba->n_noa >= ARRAY_SIZE(swba->arg->noa_info)) in ath10k_wmi_tlv_swba_noa_parse()
1154 return -ENOBUFS; in ath10k_wmi_tlv_swba_noa_parse()
1156 swba->arg->noa_info[swba->n_noa++] = ptr; in ath10k_wmi_tlv_swba_noa_parse()
1168 swba->ev = ptr; in ath10k_wmi_tlv_swba_parse()
1171 if (!swba->tim_done) { in ath10k_wmi_tlv_swba_parse()
1172 swba->tim_done = true; in ath10k_wmi_tlv_swba_parse()
1178 } else if (!swba->noa_done) { in ath10k_wmi_tlv_swba_parse()
1179 swba->noa_done = true; in ath10k_wmi_tlv_swba_parse()
1202 ret = ath10k_wmi_tlv_iter(ar, skb->data, skb->len, in ath10k_wmi_tlv_op_pull_swba_ev()
1210 return -EPROTO; in ath10k_wmi_tlv_op_pull_swba_ev()
1212 arg->vdev_map = swba.ev->vdev_map; in ath10k_wmi_tlv_op_pull_swba_ev()
1214 for (map = __le32_to_cpu(arg->vdev_map), n_vdevs = 0; map; map >>= 1) in ath10k_wmi_tlv_op_pull_swba_ev()
1220 return -EPROTO; in ath10k_wmi_tlv_op_pull_swba_ev()
1234 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1246 return -EPROTO; in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1249 arg->num_phyerrs = __le32_to_cpu(ev->num_phyerrs); in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1250 arg->tsf_l32 = __le32_to_cpu(ev->tsf_l32); in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1251 arg->tsf_u32 = __le32_to_cpu(ev->tsf_u32); in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1252 arg->buf_len = __le32_to_cpu(ev->buf_len); in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1253 arg->phyerrs = phyerrs; in ath10k_wmi_tlv_op_pull_phyerr_ev_hdr()
1278 return -EPROTO; in ath10k_wmi_tlv_parse_mem_reqs()
1280 for (i = 0; i < ARRAY_SIZE(arg->mem_reqs); i++) { in ath10k_wmi_tlv_parse_mem_reqs()
1281 if (!arg->mem_reqs[i]) { in ath10k_wmi_tlv_parse_mem_reqs()
1282 arg->mem_reqs[i] = ptr; in ath10k_wmi_tlv_parse_mem_reqs()
1287 return -ENOMEM; in ath10k_wmi_tlv_parse_mem_reqs()
1306 svc_rdy->ev = ptr; in ath10k_wmi_tlv_svc_rdy_parse()
1309 svc_rdy->reg = ptr; in ath10k_wmi_tlv_svc_rdy_parse()
1312 svc_rdy->mem_reqs = ptr; in ath10k_wmi_tlv_svc_rdy_parse()
1315 if (!svc_rdy->svc_bmap_done) { in ath10k_wmi_tlv_svc_rdy_parse()
1316 svc_rdy->svc_bmap_done = true; in ath10k_wmi_tlv_svc_rdy_parse()
1317 svc_rdy->svc_bmap = ptr; in ath10k_wmi_tlv_svc_rdy_parse()
1318 } else if (!svc_rdy->dbs_hw_mode_done) { in ath10k_wmi_tlv_svc_rdy_parse()
1319 svc_rdy->dbs_hw_mode_done = true; in ath10k_wmi_tlv_svc_rdy_parse()
1339 ret = ath10k_wmi_tlv_iter(ar, skb->data, skb->len, in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1352 return -EPROTO; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1359 __le32_to_cpu(ev->abi.abi_ver0), WMI_TLV_ABI_VER0, in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1360 __le32_to_cpu(ev->abi.abi_ver_ns0), WMI_TLV_ABI_VER_NS0, in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1361 __le32_to_cpu(ev->abi.abi_ver_ns1), WMI_TLV_ABI_VER_NS1, in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1362 __le32_to_cpu(ev->abi.abi_ver_ns2), WMI_TLV_ABI_VER_NS2, in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1363 __le32_to_cpu(ev->abi.abi_ver_ns3), WMI_TLV_ABI_VER_NS3); in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1365 if (__le32_to_cpu(ev->abi.abi_ver0) != WMI_TLV_ABI_VER0 || in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1366 __le32_to_cpu(ev->abi.abi_ver_ns0) != WMI_TLV_ABI_VER_NS0 || in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1367 __le32_to_cpu(ev->abi.abi_ver_ns1) != WMI_TLV_ABI_VER_NS1 || in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1368 __le32_to_cpu(ev->abi.abi_ver_ns2) != WMI_TLV_ABI_VER_NS2 || in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1369 __le32_to_cpu(ev->abi.abi_ver_ns3) != WMI_TLV_ABI_VER_NS3) { in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1370 return -ENOTSUPP; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1373 arg->min_tx_power = ev->hw_min_tx_power; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1374 arg->max_tx_power = ev->hw_max_tx_power; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1375 arg->ht_cap = ev->ht_cap_info; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1376 arg->vht_cap = ev->vht_cap_info; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1377 arg->vht_supp_mcs = ev->vht_supp_mcs; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1378 arg->sw_ver0 = ev->abi.abi_ver0; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1379 arg->sw_ver1 = ev->abi.abi_ver1; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1380 arg->fw_build = ev->fw_build_vers; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1381 arg->phy_capab = ev->phy_capability; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1382 arg->num_rf_chains = ev->num_rf_chains; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1383 arg->eeprom_rd = reg->eeprom_rd; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1384 arg->low_2ghz_chan = reg->low_2ghz_chan; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1385 arg->high_2ghz_chan = reg->high_2ghz_chan; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1386 arg->low_5ghz_chan = reg->low_5ghz_chan; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1387 arg->high_5ghz_chan = reg->high_5ghz_chan; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1388 arg->num_mem_reqs = ev->num_mem_reqs; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1389 arg->service_map = svc_bmap; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1390 arg->service_map_len = ath10k_wmi_tlv_len(svc_bmap); in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1391 arg->sys_cap_info = ev->sys_cap_info; in ath10k_wmi_tlv_op_pull_svc_rdy_ev()
1415 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_rdy_ev()
1425 return -EPROTO; in ath10k_wmi_tlv_op_pull_rdy_ev()
1428 arg->sw_version = ev->abi.abi_ver0; in ath10k_wmi_tlv_op_pull_rdy_ev()
1429 arg->abi_version = ev->abi.abi_ver1; in ath10k_wmi_tlv_op_pull_rdy_ev()
1430 arg->status = ev->status; in ath10k_wmi_tlv_op_pull_rdy_ev()
1431 arg->mac_addr = ev->mac_addr.addr; in ath10k_wmi_tlv_op_pull_rdy_ev()
1444 arg->service_map_ext_valid = true; in ath10k_wmi_tlv_svc_avail_parse()
1446 arg->service_map_ext_len = *(__le32 *)ptr; in ath10k_wmi_tlv_svc_avail_parse()
1447 arg->service_map_ext = ptr + sizeof(__le32); in ath10k_wmi_tlv_svc_avail_parse()
1449 arg->service_map_ext_len = *(const __le32 *)ptr; in ath10k_wmi_tlv_svc_avail_parse()
1450 arg->service_map_ext = (const __le32 *)((const u8 *)ptr + sizeof(__le32)); in ath10k_wmi_tlv_svc_avail_parse()
1466 ret = ath10k_wmi_tlv_iter(ar, skb->data, skb->len, in ath10k_wmi_tlv_op_pull_svc_avail()
1482 dst->vdev_id = __le32_to_cpu(src->vdev_id); in ath10k_wmi_tlv_pull_vdev_stats()
1483 dst->beacon_snr = __le32_to_cpu(src->beacon_snr); in ath10k_wmi_tlv_pull_vdev_stats()
1484 dst->data_snr = __le32_to_cpu(src->data_snr); in ath10k_wmi_tlv_pull_vdev_stats()
1485 dst->num_rx_frames = __le32_to_cpu(src->num_rx_frames); in ath10k_wmi_tlv_pull_vdev_stats()
1486 dst->num_rts_fail = __le32_to_cpu(src->num_rts_fail); in ath10k_wmi_tlv_pull_vdev_stats()
1487 dst->num_rts_success = __le32_to_cpu(src->num_rts_success); in ath10k_wmi_tlv_pull_vdev_stats()
1488 dst->num_rx_err = __le32_to_cpu(src->num_rx_err); in ath10k_wmi_tlv_pull_vdev_stats()
1489 dst->num_rx_discard = __le32_to_cpu(src->num_rx_discard); in ath10k_wmi_tlv_pull_vdev_stats()
1490 dst->num_tx_not_acked = __le32_to_cpu(src->num_tx_not_acked); in ath10k_wmi_tlv_pull_vdev_stats()
1492 for (i = 0; i < ARRAY_SIZE(src->num_tx_frames); i++) in ath10k_wmi_tlv_pull_vdev_stats()
1493 dst->num_tx_frames[i] = in ath10k_wmi_tlv_pull_vdev_stats()
1494 __le32_to_cpu(src->num_tx_frames[i]); in ath10k_wmi_tlv_pull_vdev_stats()
1496 for (i = 0; i < ARRAY_SIZE(src->num_tx_frames_retries); i++) in ath10k_wmi_tlv_pull_vdev_stats()
1497 dst->num_tx_frames_retries[i] = in ath10k_wmi_tlv_pull_vdev_stats()
1498 __le32_to_cpu(src->num_tx_frames_retries[i]); in ath10k_wmi_tlv_pull_vdev_stats()
1500 for (i = 0; i < ARRAY_SIZE(src->num_tx_frames_failures); i++) in ath10k_wmi_tlv_pull_vdev_stats()
1501 dst->num_tx_frames_failures[i] = in ath10k_wmi_tlv_pull_vdev_stats()
1502 __le32_to_cpu(src->num_tx_frames_failures[i]); in ath10k_wmi_tlv_pull_vdev_stats()
1504 for (i = 0; i < ARRAY_SIZE(src->tx_rate_history); i++) in ath10k_wmi_tlv_pull_vdev_stats()
1505 dst->tx_rate_history[i] = in ath10k_wmi_tlv_pull_vdev_stats()
1506 __le32_to_cpu(src->tx_rate_history[i]); in ath10k_wmi_tlv_pull_vdev_stats()
1508 for (i = 0; i < ARRAY_SIZE(src->beacon_rssi_history); i++) in ath10k_wmi_tlv_pull_vdev_stats()
1509 dst->beacon_rssi_history[i] = in ath10k_wmi_tlv_pull_vdev_stats()
1510 __le32_to_cpu(src->beacon_rssi_history[i]); in ath10k_wmi_tlv_pull_vdev_stats()
1535 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_fw_stats()
1547 return -EPROTO; in ath10k_wmi_tlv_op_pull_fw_stats()
1551 num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats); in ath10k_wmi_tlv_op_pull_fw_stats()
1552 num_vdev_stats = __le32_to_cpu(ev->num_vdev_stats); in ath10k_wmi_tlv_op_pull_fw_stats()
1553 num_peer_stats = __le32_to_cpu(ev->num_peer_stats); in ath10k_wmi_tlv_op_pull_fw_stats()
1554 num_bcnflt_stats = __le32_to_cpu(ev->num_bcnflt_stats); in ath10k_wmi_tlv_op_pull_fw_stats()
1555 num_chan_stats = __le32_to_cpu(ev->num_chan_stats); in ath10k_wmi_tlv_op_pull_fw_stats()
1556 stats_id = __le32_to_cpu(ev->stats_id); in ath10k_wmi_tlv_op_pull_fw_stats()
1557 num_peer_stats_extd = __le32_to_cpu(ev->num_peer_stats_extd); in ath10k_wmi_tlv_op_pull_fw_stats()
1575 return -EPROTO; in ath10k_wmi_tlv_op_pull_fw_stats()
1579 data_len -= sizeof(*src); in ath10k_wmi_tlv_op_pull_fw_stats()
1585 ath10k_wmi_pull_pdev_stats_base(&src->base, dst); in ath10k_wmi_tlv_op_pull_fw_stats()
1586 ath10k_wmi_pull_pdev_stats_tx(&src->tx, dst); in ath10k_wmi_tlv_op_pull_fw_stats()
1587 ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst); in ath10k_wmi_tlv_op_pull_fw_stats()
1588 list_add_tail(&dst->list, &stats->pdevs); in ath10k_wmi_tlv_op_pull_fw_stats()
1602 return -EPROTO; in ath10k_wmi_tlv_op_pull_fw_stats()
1606 data_len -= sizeof(*src); in ath10k_wmi_tlv_op_pull_fw_stats()
1613 list_add_tail(&dst->list, &stats->vdevs); in ath10k_wmi_tlv_op_pull_fw_stats()
1627 return -EPROTO; in ath10k_wmi_tlv_op_pull_fw_stats()
1631 data_len -= sizeof(*src); in ath10k_wmi_tlv_op_pull_fw_stats()
1637 ath10k_wmi_pull_peer_stats(&src->old, dst); in ath10k_wmi_tlv_op_pull_fw_stats()
1638 dst->peer_rx_rate = __le32_to_cpu(src->peer_rx_rate); in ath10k_wmi_tlv_op_pull_fw_stats()
1645 extd = data + sizeof(*src) * (num_peer_stats - i - 1) in ath10k_wmi_tlv_op_pull_fw_stats()
1648 extd = (const void *)(data + sizeof(*src) * (num_peer_stats - i - 1) in ath10k_wmi_tlv_op_pull_fw_stats()
1652 dst->rx_duration = __le32_to_cpu(extd->rx_duration); in ath10k_wmi_tlv_op_pull_fw_stats()
1654 (extd->rx_duration_high); in ath10k_wmi_tlv_op_pull_fw_stats()
1661 dst->rx_duration |= (u64)rx_duration_high << in ath10k_wmi_tlv_op_pull_fw_stats()
1666 list_add_tail(&dst->list, &stats->peers); in ath10k_wmi_tlv_op_pull_fw_stats()
1681 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_roam_ev()
1691 return -EPROTO; in ath10k_wmi_tlv_op_pull_roam_ev()
1694 arg->vdev_id = ev->vdev_id; in ath10k_wmi_tlv_op_pull_roam_ev()
1695 arg->reason = ev->reason; in ath10k_wmi_tlv_op_pull_roam_ev()
1696 arg->rssi = ev->rssi; in ath10k_wmi_tlv_op_pull_roam_ev()
1710 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_wow_ev()
1720 return -EPROTO; in ath10k_wmi_tlv_op_pull_wow_ev()
1723 arg->vdev_id = __le32_to_cpu(ev->vdev_id); in ath10k_wmi_tlv_op_pull_wow_ev()
1724 arg->flag = __le32_to_cpu(ev->flag); in ath10k_wmi_tlv_op_pull_wow_ev()
1725 arg->wake_reason = __le32_to_cpu(ev->wake_reason); in ath10k_wmi_tlv_op_pull_wow_ev()
1726 arg->data_len = __le32_to_cpu(ev->data_len); in ath10k_wmi_tlv_op_pull_wow_ev()
1740 tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC); in ath10k_wmi_tlv_op_pull_echo_ev()
1750 return -EPROTO; in ath10k_wmi_tlv_op_pull_echo_ev()
1753 arg->value = ev->value; in ath10k_wmi_tlv_op_pull_echo_ev()
1768 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_suspend()
1770 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_suspend()
1771 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_SUSPEND_CMD); in ath10k_wmi_tlv_op_gen_pdev_suspend()
1772 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_suspend()
1773 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_suspend()
1774 cmd->opt = __cpu_to_le32(opt); in ath10k_wmi_tlv_op_gen_pdev_suspend()
1789 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_resume()
1791 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_resume()
1792 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_RESUME_CMD); in ath10k_wmi_tlv_op_gen_pdev_resume()
1793 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_resume()
1794 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_resume()
1795 cmd->reserved = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_pdev_resume()
1813 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1815 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1816 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_SET_REGDOMAIN_CMD); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1817 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1818 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1819 cmd->regd = __cpu_to_le32(rd); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1820 cmd->regd_2ghz = __cpu_to_le32(rd2g); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1821 cmd->regd_5ghz = __cpu_to_le32(rd5g); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1822 cmd->conform_limit_2ghz = __cpu_to_le32(ctl2g); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1823 cmd->conform_limit_5ghz = __cpu_to_le32(ctl5g); in ath10k_wmi_tlv_op_gen_pdev_set_rd()
1844 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_set_param()
1846 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_set_param()
1847 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_SET_PARAM_CMD); in ath10k_wmi_tlv_op_gen_pdev_set_param()
1848 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_set_param()
1849 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_set_param()
1850 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_tlv_op_gen_pdev_set_param()
1851 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_tlv_op_gen_pdev_set_param()
1873 for (i = 0; i < ar->wmi.num_mem_chunks; i++) { in ath10k_wmi_tlv_put_host_mem_chunks()
1879 tlv->tag = tlv_tag; in ath10k_wmi_tlv_put_host_mem_chunks()
1880 tlv->len = tlv_len; in ath10k_wmi_tlv_put_host_mem_chunks()
1881 chunk = (void *)tlv->value; in ath10k_wmi_tlv_put_host_mem_chunks()
1883 chunk->ptr = __cpu_to_le32(ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_tlv_put_host_mem_chunks()
1884 chunk->size = __cpu_to_le32(ar->wmi.mem_chunks[i].len); in ath10k_wmi_tlv_put_host_mem_chunks()
1885 chunk->req_id = __cpu_to_le32(ar->wmi.mem_chunks[i].req_id); in ath10k_wmi_tlv_put_host_mem_chunks()
1888 ar->wmi.svc_map)) { in ath10k_wmi_tlv_put_host_mem_chunks()
1889 paddr = ar->wmi.mem_chunks[i].paddr; in ath10k_wmi_tlv_put_host_mem_chunks()
1890 chunk->ptr_high = __cpu_to_le32(upper_32_bits(paddr)); in ath10k_wmi_tlv_put_host_mem_chunks()
1894 "wmi-tlv chunk %d len %d, addr 0x%llx, id 0x%x\n", in ath10k_wmi_tlv_put_host_mem_chunks()
1896 ar->wmi.mem_chunks[i].len, in ath10k_wmi_tlv_put_host_mem_chunks()
1897 (unsigned long long)ar->wmi.mem_chunks[i].paddr, in ath10k_wmi_tlv_put_host_mem_chunks()
1898 ar->wmi.mem_chunks[i].req_id); in ath10k_wmi_tlv_put_host_mem_chunks()
1919 chunks_len = ar->wmi.num_mem_chunks * in ath10k_wmi_tlv_op_gen_init()
1927 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_init()
1930 ptr = skb->data; in ath10k_wmi_tlv_op_gen_init()
1934 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_init()
1937 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_INIT_CMD); in ath10k_wmi_tlv_op_gen_init()
1938 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_init()
1939 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_init()
1948 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_RESOURCE_CONFIG); in ath10k_wmi_tlv_op_gen_init()
1949 tlv->len = __cpu_to_le16(sizeof(*cfg)); in ath10k_wmi_tlv_op_gen_init()
1950 cfg = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_init()
1959 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_init()
1960 tlv->len = __cpu_to_le16(chunks_len); in ath10k_wmi_tlv_op_gen_init()
1961 chunks = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_init()
1966 cmd->abi.abi_ver0 = __cpu_to_le32(WMI_TLV_ABI_VER0); in ath10k_wmi_tlv_op_gen_init()
1967 cmd->abi.abi_ver1 = __cpu_to_le32(WMI_TLV_ABI_VER1); in ath10k_wmi_tlv_op_gen_init()
1968 cmd->abi.abi_ver_ns0 = __cpu_to_le32(WMI_TLV_ABI_VER_NS0); in ath10k_wmi_tlv_op_gen_init()
1969 cmd->abi.abi_ver_ns1 = __cpu_to_le32(WMI_TLV_ABI_VER_NS1); in ath10k_wmi_tlv_op_gen_init()
1970 cmd->abi.abi_ver_ns2 = __cpu_to_le32(WMI_TLV_ABI_VER_NS2); in ath10k_wmi_tlv_op_gen_init()
1971 cmd->abi.abi_ver_ns3 = __cpu_to_le32(WMI_TLV_ABI_VER_NS3); in ath10k_wmi_tlv_op_gen_init()
1972 cmd->num_host_mem_chunks = __cpu_to_le32(ar->wmi.num_mem_chunks); in ath10k_wmi_tlv_op_gen_init()
1974 cfg->num_vdevs = __cpu_to_le32(TARGET_TLV_NUM_VDEVS); in ath10k_wmi_tlv_op_gen_init()
1976 if (ar->hw_params.num_peers) in ath10k_wmi_tlv_op_gen_init()
1977 cfg->num_peers = __cpu_to_le32(ar->hw_params.num_peers); in ath10k_wmi_tlv_op_gen_init()
1979 cfg->num_peers = __cpu_to_le32(TARGET_TLV_NUM_PEERS); in ath10k_wmi_tlv_op_gen_init()
1980 cfg->ast_skid_limit = __cpu_to_le32(ar->hw_params.ast_skid_limit); in ath10k_wmi_tlv_op_gen_init()
1981 cfg->num_wds_entries = __cpu_to_le32(ar->hw_params.num_wds_entries); in ath10k_wmi_tlv_op_gen_init()
1983 if (test_bit(WMI_SERVICE_RX_FULL_REORDER, ar->wmi.svc_map)) { in ath10k_wmi_tlv_op_gen_init()
1984 cfg->num_offload_peers = __cpu_to_le32(TARGET_TLV_NUM_VDEVS); in ath10k_wmi_tlv_op_gen_init()
1985 cfg->num_offload_reorder_bufs = __cpu_to_le32(TARGET_TLV_NUM_VDEVS); in ath10k_wmi_tlv_op_gen_init()
1987 cfg->num_offload_peers = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
1988 cfg->num_offload_reorder_bufs = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
1991 cfg->num_peer_keys = __cpu_to_le32(2); in ath10k_wmi_tlv_op_gen_init()
1992 if (ar->hw_params.num_peers) in ath10k_wmi_tlv_op_gen_init()
1993 cfg->num_tids = __cpu_to_le32(ar->hw_params.num_peers * 2); in ath10k_wmi_tlv_op_gen_init()
1995 cfg->num_tids = __cpu_to_le32(TARGET_TLV_NUM_TIDS); in ath10k_wmi_tlv_op_gen_init()
1996 cfg->tx_chain_mask = __cpu_to_le32(0x7); in ath10k_wmi_tlv_op_gen_init()
1997 cfg->rx_chain_mask = __cpu_to_le32(0x7); in ath10k_wmi_tlv_op_gen_init()
1998 cfg->rx_timeout_pri[0] = __cpu_to_le32(0x64); in ath10k_wmi_tlv_op_gen_init()
1999 cfg->rx_timeout_pri[1] = __cpu_to_le32(0x64); in ath10k_wmi_tlv_op_gen_init()
2000 cfg->rx_timeout_pri[2] = __cpu_to_le32(0x64); in ath10k_wmi_tlv_op_gen_init()
2001 cfg->rx_timeout_pri[3] = __cpu_to_le32(0x28); in ath10k_wmi_tlv_op_gen_init()
2002 cfg->rx_decap_mode = __cpu_to_le32(ar->wmi.rx_decap_mode); in ath10k_wmi_tlv_op_gen_init()
2003 cfg->scan_max_pending_reqs = __cpu_to_le32(4); in ath10k_wmi_tlv_op_gen_init()
2004 cfg->bmiss_offload_max_vdev = __cpu_to_le32(TARGET_TLV_NUM_VDEVS); in ath10k_wmi_tlv_op_gen_init()
2005 cfg->roam_offload_max_vdev = __cpu_to_le32(TARGET_TLV_NUM_VDEVS); in ath10k_wmi_tlv_op_gen_init()
2006 cfg->roam_offload_max_ap_profiles = __cpu_to_le32(8); in ath10k_wmi_tlv_op_gen_init()
2007 cfg->num_mcast_groups = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2008 cfg->num_mcast_table_elems = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2009 cfg->mcast2ucast_mode = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2010 cfg->tx_dbg_log_size = __cpu_to_le32(0x400); in ath10k_wmi_tlv_op_gen_init()
2011 cfg->dma_burst_size = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2012 cfg->mac_aggr_delim = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2013 cfg->rx_skip_defrag_timeout_dup_detection_check = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2014 cfg->vow_config = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2015 cfg->gtk_offload_max_vdev = __cpu_to_le32(2); in ath10k_wmi_tlv_op_gen_init()
2016 cfg->num_msdu_desc = __cpu_to_le32(ar->htt.max_num_pending_tx); in ath10k_wmi_tlv_op_gen_init()
2017 cfg->max_frag_entries = __cpu_to_le32(2); in ath10k_wmi_tlv_op_gen_init()
2018 cfg->num_tdls_vdevs = __cpu_to_le32(TARGET_TLV_NUM_TDLS_VDEVS); in ath10k_wmi_tlv_op_gen_init()
2019 cfg->num_tdls_conn_table_entries = __cpu_to_le32(0x20); in ath10k_wmi_tlv_op_gen_init()
2020 cfg->beacon_tx_offload_max_vdev = __cpu_to_le32(2); in ath10k_wmi_tlv_op_gen_init()
2021 cfg->num_multicast_filter_entries = __cpu_to_le32(5); in ath10k_wmi_tlv_op_gen_init()
2022 cfg->num_wow_filters = __cpu_to_le32(ar->wow.max_num_patterns); in ath10k_wmi_tlv_op_gen_init()
2023 cfg->num_keep_alive_pattern = __cpu_to_le32(6); in ath10k_wmi_tlv_op_gen_init()
2024 cfg->keep_alive_pattern_size = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2025 cfg->max_tdls_concurrent_sleep_sta = __cpu_to_le32(1); in ath10k_wmi_tlv_op_gen_init()
2026 cfg->max_tdls_concurrent_buffer_sta = __cpu_to_le32(1); in ath10k_wmi_tlv_op_gen_init()
2027 cfg->wmi_send_separate = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2028 cfg->num_ocb_vdevs = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2029 cfg->num_ocb_channels = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2030 cfg->num_ocb_schedules = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_init()
2031 cfg->host_capab = __cpu_to_le32(WMI_TLV_FLAG_MGMT_BUNDLE_TX_COMPL); in ath10k_wmi_tlv_op_gen_init()
2033 if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map)) in ath10k_wmi_tlv_op_gen_init()
2034 cfg->host_capab |= __cpu_to_le32(WMI_RSRC_CFG_FLAG_TX_ACK_RSSI); in ath10k_wmi_tlv_op_gen_init()
2064 chan_len = arg->n_channels * sizeof(__le32); in ath10k_wmi_tlv_op_gen_start_scan()
2065 ssid_len = arg->n_ssids * sizeof(struct wmi_ssid); in ath10k_wmi_tlv_op_gen_start_scan()
2066 bssid_len = arg->n_bssids * sizeof(struct wmi_mac_addr); in ath10k_wmi_tlv_op_gen_start_scan()
2067 ie_len = roundup(arg->ie_len, 4); in ath10k_wmi_tlv_op_gen_start_scan()
2076 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_start_scan()
2079 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_start_scan()
2082 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_start_scan()
2085 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_START_SCAN_CMD); in ath10k_wmi_tlv_op_gen_start_scan()
2086 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_start_scan()
2087 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_start_scan()
2089 ath10k_wmi_put_start_scan_common(&cmd->common, arg); in ath10k_wmi_tlv_op_gen_start_scan()
2090 cmd->burst_duration_ms = __cpu_to_le32(arg->burst_duration_ms); in ath10k_wmi_tlv_op_gen_start_scan()
2091 cmd->num_channels = __cpu_to_le32(arg->n_channels); in ath10k_wmi_tlv_op_gen_start_scan()
2092 cmd->num_ssids = __cpu_to_le32(arg->n_ssids); in ath10k_wmi_tlv_op_gen_start_scan()
2093 cmd->num_bssids = __cpu_to_le32(arg->n_bssids); in ath10k_wmi_tlv_op_gen_start_scan()
2094 cmd->ie_len = __cpu_to_le32(arg->ie_len); in ath10k_wmi_tlv_op_gen_start_scan()
2095 cmd->num_probes = __cpu_to_le32(3); in ath10k_wmi_tlv_op_gen_start_scan()
2096 ether_addr_copy(cmd->mac_addr.addr, arg->mac_addr.addr); in ath10k_wmi_tlv_op_gen_start_scan()
2097 ether_addr_copy(cmd->mac_mask.addr, arg->mac_mask.addr); in ath10k_wmi_tlv_op_gen_start_scan()
2100 * e.g. WMI-TLV inverts the logic behind the following flag. in ath10k_wmi_tlv_op_gen_start_scan()
2102 cmd->common.scan_ctrl_flags ^= __cpu_to_le32(WMI_SCAN_FILTER_PROBE_REQ); in ath10k_wmi_tlv_op_gen_start_scan()
2112 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_start_scan()
2113 tlv->len = __cpu_to_le16(chan_len); in ath10k_wmi_tlv_op_gen_start_scan()
2114 chans = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_start_scan()
2115 for (i = 0; i < arg->n_channels; i++) in ath10k_wmi_tlv_op_gen_start_scan()
2116 chans[i] = __cpu_to_le32(arg->channels[i]); in ath10k_wmi_tlv_op_gen_start_scan()
2126 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_FIXED_STRUCT); in ath10k_wmi_tlv_op_gen_start_scan()
2127 tlv->len = __cpu_to_le16(ssid_len); in ath10k_wmi_tlv_op_gen_start_scan()
2128 ssids = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_start_scan()
2129 for (i = 0; i < arg->n_ssids; i++) { in ath10k_wmi_tlv_op_gen_start_scan()
2130 ssids[i].ssid_len = __cpu_to_le32(arg->ssids[i].len); in ath10k_wmi_tlv_op_gen_start_scan()
2131 memcpy(ssids[i].ssid, arg->ssids[i].ssid, arg->ssids[i].len); in ath10k_wmi_tlv_op_gen_start_scan()
2142 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_FIXED_STRUCT); in ath10k_wmi_tlv_op_gen_start_scan()
2143 tlv->len = __cpu_to_le16(bssid_len); in ath10k_wmi_tlv_op_gen_start_scan()
2144 addrs = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_start_scan()
2145 for (i = 0; i < arg->n_bssids; i++) in ath10k_wmi_tlv_op_gen_start_scan()
2146 ether_addr_copy(addrs[i].addr, arg->bssids[i].bssid); in ath10k_wmi_tlv_op_gen_start_scan()
2156 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_start_scan()
2157 tlv->len = __cpu_to_le16(ie_len); in ath10k_wmi_tlv_op_gen_start_scan()
2158 memcpy(tlv->value, arg->ie, arg->ie_len); in ath10k_wmi_tlv_op_gen_start_scan()
2179 if (arg->req_id > 0xFFF) in ath10k_wmi_tlv_op_gen_stop_scan()
2180 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_stop_scan()
2181 if (arg->req_type == WMI_SCAN_STOP_ONE && arg->u.scan_id > 0xFFF) in ath10k_wmi_tlv_op_gen_stop_scan()
2182 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_stop_scan()
2186 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_stop_scan()
2188 scan_id = arg->u.scan_id; in ath10k_wmi_tlv_op_gen_stop_scan()
2191 req_id = arg->req_id; in ath10k_wmi_tlv_op_gen_stop_scan()
2194 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_stop_scan()
2195 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STOP_SCAN_CMD); in ath10k_wmi_tlv_op_gen_stop_scan()
2196 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_stop_scan()
2197 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_stop_scan()
2198 cmd->req_type = __cpu_to_le32(arg->req_type); in ath10k_wmi_tlv_op_gen_stop_scan()
2199 cmd->vdev_id = __cpu_to_le32(arg->u.vdev_id); in ath10k_wmi_tlv_op_gen_stop_scan()
2200 cmd->scan_id = __cpu_to_le32(scan_id); in ath10k_wmi_tlv_op_gen_stop_scan()
2201 cmd->scan_req_id = __cpu_to_le32(req_id); in ath10k_wmi_tlv_op_gen_stop_scan()
2224 return -ENOTSUPP; in ath10k_wmi_tlv_op_get_vdev_subtype()
2226 return -ENOTSUPP; in ath10k_wmi_tlv_op_get_vdev_subtype()
2242 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_create()
2244 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_create()
2245 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_CREATE_CMD); in ath10k_wmi_tlv_op_gen_vdev_create()
2246 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_create()
2247 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_create()
2248 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_create()
2249 cmd->vdev_type = __cpu_to_le32(vdev_type); in ath10k_wmi_tlv_op_gen_vdev_create()
2250 cmd->vdev_subtype = __cpu_to_le32(vdev_subtype); in ath10k_wmi_tlv_op_gen_vdev_create()
2251 ether_addr_copy(cmd->vdev_macaddr.addr, mac_addr); in ath10k_wmi_tlv_op_gen_vdev_create()
2266 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_delete()
2268 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_delete()
2269 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_DELETE_CMD); in ath10k_wmi_tlv_op_gen_vdev_delete()
2270 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_delete()
2271 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_delete()
2272 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_delete()
2295 if (WARN_ON(arg->hidden_ssid && !arg->ssid)) in ath10k_wmi_tlv_op_gen_vdev_start()
2296 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_vdev_start()
2297 if (WARN_ON(arg->ssid_len > sizeof(cmd->ssid.ssid))) in ath10k_wmi_tlv_op_gen_vdev_start()
2298 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_vdev_start()
2305 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_start()
2307 if (arg->hidden_ssid) in ath10k_wmi_tlv_op_gen_vdev_start()
2309 if (arg->pmf_enabled) in ath10k_wmi_tlv_op_gen_vdev_start()
2313 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_start()
2317 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_start()
2320 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_START_REQUEST_CMD); in ath10k_wmi_tlv_op_gen_vdev_start()
2321 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_start()
2322 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_start()
2323 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_vdev_start()
2324 cmd->bcn_intval = __cpu_to_le32(arg->bcn_intval); in ath10k_wmi_tlv_op_gen_vdev_start()
2325 cmd->dtim_period = __cpu_to_le32(arg->dtim_period); in ath10k_wmi_tlv_op_gen_vdev_start()
2326 cmd->flags = __cpu_to_le32(flags); in ath10k_wmi_tlv_op_gen_vdev_start()
2327 cmd->bcn_tx_rate = __cpu_to_le32(arg->bcn_tx_rate); in ath10k_wmi_tlv_op_gen_vdev_start()
2328 cmd->bcn_tx_power = __cpu_to_le32(arg->bcn_tx_power); in ath10k_wmi_tlv_op_gen_vdev_start()
2329 cmd->disable_hw_ack = __cpu_to_le32(arg->disable_hw_ack); in ath10k_wmi_tlv_op_gen_vdev_start()
2331 if (arg->ssid) { in ath10k_wmi_tlv_op_gen_vdev_start()
2332 cmd->ssid.ssid_len = __cpu_to_le32(arg->ssid_len); in ath10k_wmi_tlv_op_gen_vdev_start()
2333 memcpy(cmd->ssid.ssid, arg->ssid, arg->ssid_len); in ath10k_wmi_tlv_op_gen_vdev_start()
2344 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_CHANNEL); in ath10k_wmi_tlv_op_gen_vdev_start()
2345 tlv->len = __cpu_to_le16(sizeof(*ch)); in ath10k_wmi_tlv_op_gen_vdev_start()
2346 ch = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_start()
2347 ath10k_wmi_put_wmi_channel(ar, ch, &arg->channel); in ath10k_wmi_tlv_op_gen_vdev_start()
2357 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_vdev_start()
2358 tlv->len = 0; in ath10k_wmi_tlv_op_gen_vdev_start()
2382 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_stop()
2384 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_stop()
2385 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_STOP_CMD); in ath10k_wmi_tlv_op_gen_vdev_stop()
2386 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_stop()
2387 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_stop()
2388 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_stop()
2405 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_up()
2407 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_up()
2408 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_UP_CMD); in ath10k_wmi_tlv_op_gen_vdev_up()
2409 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_up()
2410 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_up()
2411 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_up()
2412 cmd->vdev_assoc_id = __cpu_to_le32(aid); in ath10k_wmi_tlv_op_gen_vdev_up()
2413 ether_addr_copy(cmd->vdev_bssid.addr, bssid); in ath10k_wmi_tlv_op_gen_vdev_up()
2428 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_down()
2430 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_down()
2431 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_DOWN_CMD); in ath10k_wmi_tlv_op_gen_vdev_down()
2432 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_down()
2433 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_down()
2434 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_down()
2450 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2452 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_set_param()
2453 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SET_PARAM_CMD); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2454 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2455 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_set_param()
2456 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2457 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2458 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_tlv_op_gen_vdev_set_param()
2479 if (arg->key_cipher == ar->wmi_key_cipher[WMI_CIPHER_NONE] && in ath10k_wmi_tlv_op_gen_vdev_install_key()
2480 arg->key_data) in ath10k_wmi_tlv_op_gen_vdev_install_key()
2481 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2482 if (arg->key_cipher != ar->wmi_key_cipher[WMI_CIPHER_NONE] && in ath10k_wmi_tlv_op_gen_vdev_install_key()
2483 !arg->key_data) in ath10k_wmi_tlv_op_gen_vdev_install_key()
2484 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2487 sizeof(*tlv) + roundup(arg->key_len, sizeof(__le32)); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2490 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2493 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_install_key()
2496 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_install_key()
2499 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_INSTALL_KEY_CMD); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2500 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2501 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_install_key()
2502 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2503 cmd->key_idx = __cpu_to_le32(arg->key_idx); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2504 cmd->key_flags = __cpu_to_le32(arg->key_flags); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2505 cmd->key_cipher = __cpu_to_le32(arg->key_cipher); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2506 cmd->key_len = __cpu_to_le32(arg->key_len); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2507 cmd->key_txmic_len = __cpu_to_le32(arg->key_txmic_len); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2508 cmd->key_rxmic_len = __cpu_to_le32(arg->key_rxmic_len); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2510 if (arg->macaddr) in ath10k_wmi_tlv_op_gen_vdev_install_key()
2511 ether_addr_copy(cmd->peer_macaddr.addr, arg->macaddr); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2521 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2522 tlv->len = __cpu_to_le16(roundup(arg->key_len, sizeof(__le32))); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2523 if (arg->key_data) in ath10k_wmi_tlv_op_gen_vdev_install_key()
2524 memcpy(tlv->value, arg->key_data, arg->key_len); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2528 ptr += roundup(arg->key_len, sizeof(__le32)); in ath10k_wmi_tlv_op_gen_vdev_install_key()
2542 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_UAPSD_AUTO_TRIG_PARAM); in ath10k_wmi_tlv_put_uapsd_ac()
2543 tlv->len = __cpu_to_le16(sizeof(*ac)); in ath10k_wmi_tlv_put_uapsd_ac()
2544 ac = (void *)tlv->value; in ath10k_wmi_tlv_put_uapsd_ac()
2546 ac->wmm_ac = __cpu_to_le32(arg->wmm_ac); in ath10k_wmi_tlv_put_uapsd_ac()
2547 ac->user_priority = __cpu_to_le32(arg->user_priority); in ath10k_wmi_tlv_put_uapsd_ac()
2548 ac->service_interval = __cpu_to_le32(arg->service_interval); in ath10k_wmi_tlv_put_uapsd_ac()
2549 ac->suspend_interval = __cpu_to_le32(arg->suspend_interval); in ath10k_wmi_tlv_put_uapsd_ac()
2550 ac->delay_interval = __cpu_to_le32(arg->delay_interval); in ath10k_wmi_tlv_put_uapsd_ac()
2554 ac->wmm_ac, ac->user_priority, ac->service_interval, in ath10k_wmi_tlv_put_uapsd_ac()
2555 ac->suspend_interval, ac->delay_interval); in ath10k_wmi_tlv_put_uapsd_ac()
2588 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2591 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2594 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2597 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_UAPSD_AUTO_TRIG_CMD); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2598 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2599 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2600 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2601 cmd->num_ac = __cpu_to_le32(num_ac); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2602 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2612 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2613 tlv->len = __cpu_to_le16(ac_tlv_len); in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2614 ac = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_sta_uapsd()
2631 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WMM_PARAMS); in ath10k_wmi_tlv_put_wmm()
2632 tlv->len = __cpu_to_le16(sizeof(*wmm)); in ath10k_wmi_tlv_put_wmm()
2633 wmm = (void *)tlv->value; in ath10k_wmi_tlv_put_wmm()
2656 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2658 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2660 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SET_WMM_PARAMS_CMD); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2661 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2662 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2663 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2665 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[0].params, &arg->ac_be); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2666 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[1].params, &arg->ac_bk); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2667 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[2].params, &arg->ac_vi); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2668 ath10k_wmi_set_wmm_param(&cmd->vdev_wmm_params[3].params, &arg->ac_vo); in ath10k_wmi_tlv_op_gen_vdev_wmm_conf()
2693 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2696 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2699 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2702 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_KEEPALIVE_CMD); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2703 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2704 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2705 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2706 cmd->enabled = __cpu_to_le32(arg->enabled); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2707 cmd->method = __cpu_to_le32(arg->method); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2708 cmd->interval = __cpu_to_le32(arg->interval); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2718 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_KEEPALVE_ARP_RESPONSE); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2719 tlv->len = __cpu_to_le16(sizeof(*arp)); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2720 arp = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2722 arp->src_ip4_addr = arg->src_ip4_addr; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2723 arp->dest_ip4_addr = arg->dest_ip4_addr; in ath10k_wmi_tlv_op_gen_sta_keepalive()
2724 ether_addr_copy(arp->dest_mac_addr.addr, arg->dest_mac_addr); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2727 arg->vdev_id, arg->enabled, arg->method, arg->interval); in ath10k_wmi_tlv_op_gen_sta_keepalive()
2742 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_peer_create()
2744 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_peer_create()
2745 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PEER_CREATE_CMD); in ath10k_wmi_tlv_op_gen_peer_create()
2746 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_peer_create()
2747 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_create()
2748 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_peer_create()
2749 cmd->peer_type = __cpu_to_le32(peer_type); in ath10k_wmi_tlv_op_gen_peer_create()
2750 ether_addr_copy(cmd->peer_addr.addr, peer_addr); in ath10k_wmi_tlv_op_gen_peer_create()
2766 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_peer_delete()
2768 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_peer_delete()
2769 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PEER_DELETE_CMD); in ath10k_wmi_tlv_op_gen_peer_delete()
2770 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_peer_delete()
2771 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_delete()
2772 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_peer_delete()
2773 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_tlv_op_gen_peer_delete()
2789 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_peer_flush()
2791 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_peer_flush()
2792 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PEER_FLUSH_TIDS_CMD); in ath10k_wmi_tlv_op_gen_peer_flush()
2793 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_peer_flush()
2794 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_flush()
2795 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_peer_flush()
2796 cmd->peer_tid_bitmap = __cpu_to_le32(tid_bitmap); in ath10k_wmi_tlv_op_gen_peer_flush()
2797 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_tlv_op_gen_peer_flush()
2815 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_peer_set_param()
2817 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_peer_set_param()
2818 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PEER_SET_PARAM_CMD); in ath10k_wmi_tlv_op_gen_peer_set_param()
2819 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_peer_set_param()
2820 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_set_param()
2821 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_peer_set_param()
2822 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_tlv_op_gen_peer_set_param()
2823 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_tlv_op_gen_peer_set_param()
2824 ether_addr_copy(cmd->peer_macaddr.addr, peer_addr); in ath10k_wmi_tlv_op_gen_peer_set_param()
2847 if (arg->peer_mpdu_density > 16) in ath10k_wmi_tlv_op_gen_peer_assoc()
2848 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_peer_assoc()
2849 if (arg->peer_legacy_rates.num_rates > MAX_SUPPORTED_RATES) in ath10k_wmi_tlv_op_gen_peer_assoc()
2850 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_peer_assoc()
2851 if (arg->peer_ht_rates.num_rates > MAX_SUPPORTED_RATES) in ath10k_wmi_tlv_op_gen_peer_assoc()
2852 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_peer_assoc()
2854 legacy_rate_len = roundup(arg->peer_legacy_rates.num_rates, in ath10k_wmi_tlv_op_gen_peer_assoc()
2856 ht_rate_len = roundup(arg->peer_ht_rates.num_rates, sizeof(__le32)); in ath10k_wmi_tlv_op_gen_peer_assoc()
2863 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_peer_assoc()
2866 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_peer_assoc()
2869 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_peer_assoc()
2872 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PEER_ASSOC_COMPLETE_CMD); in ath10k_wmi_tlv_op_gen_peer_assoc()
2873 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_peer_assoc()
2874 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_assoc()
2876 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_peer_assoc()
2877 cmd->new_assoc = __cpu_to_le32(arg->peer_reassoc ? 0 : 1); in ath10k_wmi_tlv_op_gen_peer_assoc()
2878 cmd->assoc_id = __cpu_to_le32(arg->peer_aid); in ath10k_wmi_tlv_op_gen_peer_assoc()
2879 cmd->flags = __cpu_to_le32(arg->peer_flags); in ath10k_wmi_tlv_op_gen_peer_assoc()
2880 cmd->caps = __cpu_to_le32(arg->peer_caps); in ath10k_wmi_tlv_op_gen_peer_assoc()
2881 cmd->listen_intval = __cpu_to_le32(arg->peer_listen_intval); in ath10k_wmi_tlv_op_gen_peer_assoc()
2882 cmd->ht_caps = __cpu_to_le32(arg->peer_ht_caps); in ath10k_wmi_tlv_op_gen_peer_assoc()
2883 cmd->max_mpdu = __cpu_to_le32(arg->peer_max_mpdu); in ath10k_wmi_tlv_op_gen_peer_assoc()
2884 cmd->mpdu_density = __cpu_to_le32(arg->peer_mpdu_density); in ath10k_wmi_tlv_op_gen_peer_assoc()
2885 cmd->rate_caps = __cpu_to_le32(arg->peer_rate_caps); in ath10k_wmi_tlv_op_gen_peer_assoc()
2886 cmd->nss = __cpu_to_le32(arg->peer_num_spatial_streams); in ath10k_wmi_tlv_op_gen_peer_assoc()
2887 cmd->vht_caps = __cpu_to_le32(arg->peer_vht_caps); in ath10k_wmi_tlv_op_gen_peer_assoc()
2888 cmd->phy_mode = __cpu_to_le32(arg->peer_phymode); in ath10k_wmi_tlv_op_gen_peer_assoc()
2889 cmd->num_legacy_rates = __cpu_to_le32(arg->peer_legacy_rates.num_rates); in ath10k_wmi_tlv_op_gen_peer_assoc()
2890 cmd->num_ht_rates = __cpu_to_le32(arg->peer_ht_rates.num_rates); in ath10k_wmi_tlv_op_gen_peer_assoc()
2891 ether_addr_copy(cmd->mac_addr.addr, arg->addr); in ath10k_wmi_tlv_op_gen_peer_assoc()
2901 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_peer_assoc()
2902 tlv->len = __cpu_to_le16(legacy_rate_len); in ath10k_wmi_tlv_op_gen_peer_assoc()
2903 memcpy(tlv->value, arg->peer_legacy_rates.rates, in ath10k_wmi_tlv_op_gen_peer_assoc()
2904 arg->peer_legacy_rates.num_rates); in ath10k_wmi_tlv_op_gen_peer_assoc()
2914 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_peer_assoc()
2915 tlv->len = __cpu_to_le16(ht_rate_len); in ath10k_wmi_tlv_op_gen_peer_assoc()
2916 memcpy(tlv->value, arg->peer_ht_rates.rates, in ath10k_wmi_tlv_op_gen_peer_assoc()
2917 arg->peer_ht_rates.num_rates); in ath10k_wmi_tlv_op_gen_peer_assoc()
2927 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VHT_RATE_SET); in ath10k_wmi_tlv_op_gen_peer_assoc()
2928 tlv->len = __cpu_to_le16(sizeof(*vht_rate)); in ath10k_wmi_tlv_op_gen_peer_assoc()
2929 vht_rate = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_peer_assoc()
2931 vht_rate->rx_max_rate = __cpu_to_le32(arg->peer_vht_rates.rx_max_rate); in ath10k_wmi_tlv_op_gen_peer_assoc()
2932 vht_rate->rx_mcs_set = __cpu_to_le32(arg->peer_vht_rates.rx_mcs_set); in ath10k_wmi_tlv_op_gen_peer_assoc()
2933 vht_rate->tx_max_rate = __cpu_to_le32(arg->peer_vht_rates.tx_max_rate); in ath10k_wmi_tlv_op_gen_peer_assoc()
2934 vht_rate->tx_mcs_set = __cpu_to_le32(arg->peer_vht_rates.tx_mcs_set); in ath10k_wmi_tlv_op_gen_peer_assoc()
2955 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_set_psmode()
2957 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_set_psmode()
2958 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_POWERSAVE_MODE_CMD); in ath10k_wmi_tlv_op_gen_set_psmode()
2959 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_set_psmode()
2960 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_set_psmode()
2961 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_set_psmode()
2962 cmd->sta_ps_mode = __cpu_to_le32(psmode); in ath10k_wmi_tlv_op_gen_set_psmode()
2979 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_set_sta_ps()
2981 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_set_sta_ps()
2982 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_STA_POWERSAVE_PARAM_CMD); in ath10k_wmi_tlv_op_gen_set_sta_ps()
2983 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_set_sta_ps()
2984 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_set_sta_ps()
2985 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_set_sta_ps()
2986 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_tlv_op_gen_set_sta_ps()
2987 cmd->param_value = __cpu_to_le32(param_value); in ath10k_wmi_tlv_op_gen_set_sta_ps()
3002 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3006 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3008 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_set_ap_ps()
3009 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_AP_PS_PEER_CMD); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3010 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3011 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_set_ap_ps()
3012 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3013 cmd->param_id = __cpu_to_le32(param_id); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3014 cmd->param_value = __cpu_to_le32(value); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3015 ether_addr_copy(cmd->peer_macaddr.addr, mac); in ath10k_wmi_tlv_op_gen_set_ap_ps()
3038 chans_len = arg->n_channels * (sizeof(*tlv) + sizeof(*ci)); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3044 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3047 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3050 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3053 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_SCAN_CHAN_LIST_CMD); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3054 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3055 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3056 cmd->num_scan_chans = __cpu_to_le32(arg->n_channels); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3066 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3067 tlv->len = __cpu_to_le16(chans_len); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3068 chans = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3070 for (i = 0; i < arg->n_channels; i++) { in ath10k_wmi_tlv_op_gen_scan_chan_list()
3071 ch = &arg->channels[i]; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3078 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_CHANNEL); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3079 tlv->len = __cpu_to_le16(sizeof(*ci)); in ath10k_wmi_tlv_op_gen_scan_chan_list()
3080 ci = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_scan_chan_list()
3106 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3108 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3109 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_SCAN_PROB_REQ_OUI_CMD); in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3110 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3111 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3112 cmd->prob_req_oui = __cpu_to_le32(prob_req_oui); in ath10k_wmi_tlv_op_gen_scan_prob_req_oui()
3137 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_beacon_dma()
3144 fc = le16_to_cpu(hdr->frame_control); in ath10k_wmi_tlv_op_gen_beacon_dma()
3146 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_beacon_dma()
3147 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_BCN_SEND_FROM_HOST_CMD); in ath10k_wmi_tlv_op_gen_beacon_dma()
3148 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_beacon_dma()
3149 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_beacon_dma()
3150 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_beacon_dma()
3151 cmd->data_len = __cpu_to_le32(bcn_len); in ath10k_wmi_tlv_op_gen_beacon_dma()
3152 cmd->data_ptr = __cpu_to_le32(bcn_paddr); in ath10k_wmi_tlv_op_gen_beacon_dma()
3153 cmd->msdu_id = 0; in ath10k_wmi_tlv_op_gen_beacon_dma()
3154 cmd->frame_control = __cpu_to_le32(fc); in ath10k_wmi_tlv_op_gen_beacon_dma()
3155 cmd->flags = 0; in ath10k_wmi_tlv_op_gen_beacon_dma()
3158 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DTIM_ZERO); in ath10k_wmi_tlv_op_gen_beacon_dma()
3161 cmd->flags |= __cpu_to_le32(WMI_BCN_TX_REF_FLAG_DELIVER_CAB); in ath10k_wmi_tlv_op_gen_beacon_dma()
3186 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3189 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3193 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3196 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_SET_WMM_PARAMS_CMD); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3197 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3198 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3205 ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_be); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3206 ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_bk); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3207 ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_vi); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3208 ptr = ath10k_wmi_tlv_put_wmm(ptr, &arg->ac_vo); in ath10k_wmi_tlv_op_gen_pdev_set_wmm()
3223 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_request_stats()
3225 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_request_stats()
3226 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_REQUEST_STATS_CMD); in ath10k_wmi_tlv_op_gen_request_stats()
3227 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_request_stats()
3228 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_request_stats()
3229 cmd->stats_id = __cpu_to_le32(stats_mask); in ath10k_wmi_tlv_op_gen_request_stats()
3248 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3250 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3251 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_REQUEST_PEER_STATS_INFO_CMD); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3252 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3253 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3254 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3255 cmd->request_type = __cpu_to_le32(type); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3258 ether_addr_copy(cmd->peer_macaddr.addr, addr); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3260 cmd->reset_after_request = __cpu_to_le32(reset); in ath10k_wmi_tlv_op_gen_request_peer_stats_info()
3270 struct ath10k_wmi *wmi = &ar->wmi; in ath10k_wmi_tlv_op_cleanup_mgmt_tx_send()
3272 idr_remove(&wmi->mgmt_pending_tx, cb->msdu_id); in ath10k_wmi_tlv_op_cleanup_mgmt_tx_send()
3281 struct ath10k_wmi *wmi = &ar->wmi; in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3287 return -ENOMEM; in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3289 pkt_addr->vaddr = skb; in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3290 pkt_addr->paddr = paddr; in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3292 spin_lock_bh(&ar->data_lock); in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3293 ret = idr_alloc(&wmi->mgmt_pending_tx, pkt_addr, 0, in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3294 wmi->mgmt_max_num_pending_tx, GFP_ATOMIC); in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3295 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_mgmt_tx_alloc_msdu_id()
3309 u32 buf_len = msdu->len; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3320 if (!cb->vif) in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3321 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3323 hdr = (struct ieee80211_hdr *)msdu->data; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3324 arvif = (void *)cb->vif->drv_priv; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3325 vdev_id = arvif->vdev_id; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3327 if (WARN_ON_ONCE(!ieee80211_is_mgmt(hdr->frame_control) && in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3328 (!(ieee80211_is_nullfunc(hdr->frame_control) || in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3329 ieee80211_is_qos_nullfunc(hdr->frame_control))))) in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3330 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3334 if ((ieee80211_is_action(hdr->frame_control) || in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3335 ieee80211_is_deauth(hdr->frame_control) || in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3336 ieee80211_is_disassoc(hdr->frame_control)) && in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3337 ieee80211_has_protected(hdr->frame_control)) { in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3349 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3355 cb->msdu_id = desc_id; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3358 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3361 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3364 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_MGMT_TX_CMD); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3365 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3366 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3367 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3368 cmd->desc_id = __cpu_to_le32(desc_id); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3369 cmd->chanfreq = 0; in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3370 cmd->buf_len = __cpu_to_le32(buf_len); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3371 cmd->frame_len = __cpu_to_le32(msdu->len); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3372 cmd->paddr = __cpu_to_le64(paddr); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3382 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3383 tlv->len = __cpu_to_le16(buf_len); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3386 memcpy(ptr, msdu->data, buf_len); in ath10k_wmi_tlv_op_gen_mgmt_tx_send()
3406 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_force_fw_hang()
3408 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_force_fw_hang()
3409 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_FORCE_FW_HANG_CMD); in ath10k_wmi_tlv_op_gen_force_fw_hang()
3410 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_force_fw_hang()
3411 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_force_fw_hang()
3412 cmd->type = __cpu_to_le32(type); in ath10k_wmi_tlv_op_gen_force_fw_hang()
3413 cmd->delay_ms = __cpu_to_le32(delay_ms); in ath10k_wmi_tlv_op_gen_force_fw_hang()
3448 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3451 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3455 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3458 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_DEBUG_LOG_CONFIG_CMD); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3459 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3460 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3461 cmd->param = __cpu_to_le32(WMI_TLV_DBGLOG_PARAM_LOG_LEVEL); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3462 cmd->value = __cpu_to_le32(value); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3472 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3473 tlv->len = __cpu_to_le16(bmap_len); in ath10k_wmi_tlv_op_gen_dbglog_cfg()
3502 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pktlog_enable()
3505 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pktlog_enable()
3508 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_pktlog_enable()
3511 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_PKTLOG_ENABLE_CMD); in ath10k_wmi_tlv_op_gen_pktlog_enable()
3512 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pktlog_enable()
3513 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pktlog_enable()
3514 cmd->filter = __cpu_to_le32(filter); in ath10k_wmi_tlv_op_gen_pktlog_enable()
3535 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_get_temperature()
3537 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_get_temperature()
3538 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_GET_TEMPERATURE_CMD); in ath10k_wmi_tlv_op_gen_pdev_get_temperature()
3539 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_get_temperature()
3540 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_get_temperature()
3561 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pktlog_disable()
3564 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pktlog_disable()
3567 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_pktlog_disable()
3570 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_PKTLOG_DISABLE_CMD); in ath10k_wmi_tlv_op_gen_pktlog_disable()
3571 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pktlog_disable()
3572 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pktlog_disable()
3601 return ERR_PTR(-EINVAL); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3605 sizeof(*tlv) + roundup(bcn->len, 4); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3608 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3611 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3614 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3617 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_BCN_TMPL_CMD); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3618 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3619 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3620 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3621 cmd->tim_ie_offset = __cpu_to_le32(tim_ie_offset); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3622 cmd->buf_len = __cpu_to_le32(bcn->len); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3637 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_BCN_PRB_INFO); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3638 tlv->len = __cpu_to_le16(sizeof(*info) + prb_ies_len); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3639 info = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3640 info->caps = __cpu_to_le32(prb_caps); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3641 info->erp = __cpu_to_le32(prb_erp); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3642 memcpy(info->ies, prb_ies, prb_ies_len); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3653 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3654 tlv->len = __cpu_to_le16(roundup(bcn->len, 4)); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3655 memcpy(tlv->value, bcn->data, bcn->len); in ath10k_wmi_tlv_op_gen_bcn_tmpl()
3681 sizeof(*tlv) + roundup(prb->len, 4); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3684 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3687 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3690 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3693 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PRB_TMPL_CMD); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3694 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3695 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3696 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3697 cmd->buf_len = __cpu_to_le32(prb->len); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3707 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_BCN_PRB_INFO); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3708 tlv->len = __cpu_to_le16(sizeof(*info)); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3709 info = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3710 info->caps = 0; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3711 info->erp = 0; in ath10k_wmi_tlv_op_gen_prb_tmpl()
3721 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3722 tlv->len = __cpu_to_le16(roundup(prb->len, 4)); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3723 memcpy(tlv->value, prb->data, prb->len); in ath10k_wmi_tlv_op_gen_prb_tmpl()
3748 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3751 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3754 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3757 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_P2P_GO_SET_BEACON_IE); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3758 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3759 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3760 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3761 cmd->ie_len = __cpu_to_le32(p2p_ie[1] + 2); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3771 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3772 tlv->len = __cpu_to_le16(roundup(p2p_ie[1] + 2, 4)); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3773 memcpy(tlv->value, p2p_ie, p2p_ie[1] + 2); in ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie()
3803 if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map)) in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3815 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3818 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3821 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3824 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_TDLS_SET_STATE_CMD); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3825 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3827 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3828 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3829 cmd->state = __cpu_to_le32(state); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3830 cmd->notification_interval_ms = __cpu_to_le32(5000); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3831 cmd->tx_discovery_threshold = __cpu_to_le32(100); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3832 cmd->tx_teardown_threshold = __cpu_to_le32(5); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3833 cmd->rssi_teardown_threshold = __cpu_to_le32(-75); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3834 cmd->rssi_delta = __cpu_to_le32(-20); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3835 cmd->tdls_options = __cpu_to_le32(options); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3836 cmd->tdls_peer_traffic_ind_window = __cpu_to_le32(2); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3837 cmd->tdls_peer_traffic_response_timeout_ms = __cpu_to_le32(5000); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3838 cmd->tdls_puapsd_mask = __cpu_to_le32(0xf); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3839 cmd->tdls_puapsd_inactivity_time_ms = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3840 cmd->tdls_puapsd_rx_frame_threshold = __cpu_to_le32(10); in ath10k_wmi_tlv_op_gen_update_fw_tdls_state()
3892 sizeof(*tlv) + cap->peer_chan_len * sizeof(*chan); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3896 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3899 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3902 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3905 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_TDLS_PEER_UPDATE_CMD); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3906 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3908 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3909 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3910 ether_addr_copy(cmd->peer_macaddr.addr, arg->addr); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3911 cmd->peer_state = __cpu_to_le32(arg->peer_state); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3921 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_TDLS_PEER_CAPABILITIES); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3922 tlv->len = __cpu_to_le16(sizeof(*peer_cap)); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3923 peer_cap = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3924 peer_qos = ath10k_wmi_tlv_prepare_peer_qos(cap->peer_uapsd_queues, in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3925 cap->peer_max_sp); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3926 peer_cap->peer_qos = __cpu_to_le32(peer_qos); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3927 peer_cap->buff_sta_support = __cpu_to_le32(cap->buff_sta_support); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3928 peer_cap->off_chan_support = __cpu_to_le32(cap->off_chan_support); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3929 peer_cap->peer_curr_operclass = __cpu_to_le32(cap->peer_curr_operclass); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3930 peer_cap->self_curr_operclass = __cpu_to_le32(cap->self_curr_operclass); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3931 peer_cap->peer_chan_len = __cpu_to_le32(cap->peer_chan_len); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3932 peer_cap->peer_operclass_len = __cpu_to_le32(cap->peer_operclass_len); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3935 peer_cap->peer_operclass[i] = cap->peer_operclass[i]; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3937 peer_cap->is_peer_responder = __cpu_to_le32(cap->is_peer_responder); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3938 peer_cap->pref_offchan_num = __cpu_to_le32(cap->pref_offchan_num); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3939 peer_cap->pref_offchan_bw = __cpu_to_le32(cap->pref_offchan_bw); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3949 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3950 tlv->len = __cpu_to_le16(cap->peer_chan_len * sizeof(*chan)); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3954 for (i = 0; i < cap->peer_chan_len; i++) { in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3960 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_CHANNEL); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3961 tlv->len = __cpu_to_le16(sizeof(*chan)); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3962 chan = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3971 arg->vdev_id, arg->peer_state, cap->peer_chan_len); in ath10k_wmi_tlv_op_gen_tdls_peer_update()
3986 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3988 tlv = (void *)skb->data; in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3989 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_PDEV_SET_QUIET_CMD); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3990 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3991 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3994 cmd->vdev_id = __cpu_to_le32(0); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3995 cmd->period = __cpu_to_le32(period); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3996 cmd->duration = __cpu_to_le32(duration); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3997 cmd->next_start = __cpu_to_le32(next_offset); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
3998 cmd->enabled = __cpu_to_le32(enabled); in ath10k_wmi_tlv_op_gen_pdev_set_quiet_mode()
4017 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_wow_enable()
4019 tlv = (struct wmi_tlv *)skb->data; in ath10k_wmi_tlv_op_gen_wow_enable()
4020 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_ENABLE_CMD); in ath10k_wmi_tlv_op_gen_wow_enable()
4021 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_wow_enable()
4022 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_wow_enable()
4024 cmd->enable = __cpu_to_le32(1); in ath10k_wmi_tlv_op_gen_wow_enable()
4025 if (!ar->bus_param.link_can_suspend) in ath10k_wmi_tlv_op_gen_wow_enable()
4026 cmd->pause_iface_config = __cpu_to_le32(WOW_IFACE_PAUSE_DISABLED); in ath10k_wmi_tlv_op_gen_wow_enable()
4046 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4048 tlv = (struct wmi_tlv *)skb->data; in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4049 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_ADD_DEL_EVT_CMD); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4050 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4051 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4053 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4054 cmd->is_add = __cpu_to_le32(enable); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4055 cmd->event_bitmap = __cpu_to_le32(1 << event); in ath10k_wmi_tlv_op_gen_wow_add_wakeup_event()
4073 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_gen_wow_host_wakeup_ind()
4075 tlv = (struct wmi_tlv *)skb->data; in ath10k_wmi_tlv_gen_wow_host_wakeup_ind()
4076 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_HOSTWAKEUP_FROM_SLEEP_CMD); in ath10k_wmi_tlv_gen_wow_host_wakeup_ind()
4077 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_gen_wow_host_wakeup_ind()
4078 cmd = (void *)tlv->value; in ath10k_wmi_tlv_gen_wow_host_wakeup_ind()
4112 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4116 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4119 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4122 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_ADD_PATTERN_CMD); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4123 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4124 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4126 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4127 cmd->pattern_id = __cpu_to_le32(pattern_id); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4128 cmd->pattern_type = __cpu_to_le32(WOW_BITMAP_PATTERN); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4139 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4140 tlv->len = __cpu_to_le16(sizeof(*tlv) + sizeof(*bitmap)); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4149 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_BITMAP_PATTERN_T); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4150 tlv->len = __cpu_to_le16(sizeof(*bitmap)); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4151 bitmap = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4153 memcpy(bitmap->patternbuf, pattern, pattern_len); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4154 memcpy(bitmap->bitmaskbuf, bitmask, pattern_len); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4155 bitmap->pattern_offset = __cpu_to_le32(pattern_offset); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4156 bitmap->pattern_len = __cpu_to_le32(pattern_len); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4157 bitmap->bitmask_len = __cpu_to_le32(pattern_len); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4158 bitmap->pattern_id = __cpu_to_le32(pattern_id); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4169 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4170 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4180 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4181 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4191 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4192 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4202 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4203 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4213 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4214 tlv->len = __cpu_to_le16(sizeof(u32)); in ath10k_wmi_tlv_op_gen_wow_add_pattern()
4233 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4235 tlv = (struct wmi_tlv *)skb->data; in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4236 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_WOW_DEL_PATTERN_CMD); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4237 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4238 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4240 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4241 cmd->pattern_id = __cpu_to_le32(pattern_id); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4242 cmd->pattern_type = __cpu_to_le32(WOW_BITMAP_PATTERN); in ath10k_wmi_tlv_op_gen_wow_del_pattern()
4277 len += sizeof(u32) * min_t(u8, pno->a_networks[0].channel_count, in ath10k_wmi_tlv_op_gen_config_pno_start()
4280 min_t(u8, pno->uc_networks_count, WMI_NLO_MAX_SSIDS); in ath10k_wmi_tlv_op_gen_config_pno_start()
4284 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_config_pno_start()
4287 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_config_pno_start()
4290 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_config_pno_start()
4293 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_NLO_CONFIG_CMD); in ath10k_wmi_tlv_op_gen_config_pno_start()
4294 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_config_pno_start()
4295 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_config_pno_start()
4298 cmd->vdev_id = __cpu_to_le32(pno->vdev_id); in ath10k_wmi_tlv_op_gen_config_pno_start()
4299 cmd->flags = __cpu_to_le32(WMI_NLO_CONFIG_START | WMI_NLO_CONFIG_SSID_HIDE_EN); in ath10k_wmi_tlv_op_gen_config_pno_start()
4301 /* current FW does not support min-max range for dwell time */ in ath10k_wmi_tlv_op_gen_config_pno_start()
4302 cmd->active_dwell_time = __cpu_to_le32(pno->active_max_time); in ath10k_wmi_tlv_op_gen_config_pno_start()
4303 cmd->passive_dwell_time = __cpu_to_le32(pno->passive_max_time); in ath10k_wmi_tlv_op_gen_config_pno_start()
4305 if (pno->do_passive_scan) in ath10k_wmi_tlv_op_gen_config_pno_start()
4306 cmd->flags |= __cpu_to_le32(WMI_NLO_CONFIG_SCAN_PASSIVE); in ath10k_wmi_tlv_op_gen_config_pno_start()
4309 cmd->fast_scan_period = __cpu_to_le32(pno->fast_scan_period); in ath10k_wmi_tlv_op_gen_config_pno_start()
4310 cmd->slow_scan_period = __cpu_to_le32(pno->slow_scan_period); in ath10k_wmi_tlv_op_gen_config_pno_start()
4311 cmd->fast_scan_max_cycles = __cpu_to_le32(pno->fast_scan_max_cycles); in ath10k_wmi_tlv_op_gen_config_pno_start()
4312 cmd->delay_start_time = __cpu_to_le32(pno->delay_start_time); in ath10k_wmi_tlv_op_gen_config_pno_start()
4314 if (pno->enable_pno_scan_randomization) { in ath10k_wmi_tlv_op_gen_config_pno_start()
4315 cmd->flags |= __cpu_to_le32(WMI_NLO_CONFIG_SPOOFED_MAC_IN_PROBE_REQ | in ath10k_wmi_tlv_op_gen_config_pno_start()
4317 ether_addr_copy(cmd->mac_addr.addr, pno->mac_addr); in ath10k_wmi_tlv_op_gen_config_pno_start()
4318 ether_addr_copy(cmd->mac_mask.addr, pno->mac_addr_mask); in ath10k_wmi_tlv_op_gen_config_pno_start()
4325 cmd->no_of_ssids = __cpu_to_le32(min_t(u8, pno->uc_networks_count, in ath10k_wmi_tlv_op_gen_config_pno_start()
4327 tlv_len = __le32_to_cpu(cmd->no_of_ssids) * in ath10k_wmi_tlv_op_gen_config_pno_start()
4335 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_config_pno_start()
4336 tlv->len = __cpu_to_le16(tlv_len); in ath10k_wmi_tlv_op_gen_config_pno_start()
4344 for (i = 0; i < __le32_to_cpu(cmd->no_of_ssids); i++) { in ath10k_wmi_tlv_op_gen_config_pno_start()
4346 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_BYTE); in ath10k_wmi_tlv_op_gen_config_pno_start()
4347 tlv->len = __cpu_to_le16(sizeof(struct nlo_configured_parameters) - in ath10k_wmi_tlv_op_gen_config_pno_start()
4352 nlo_list[i].ssid.ssid.ssid_len = pno->a_networks[i].ssid.ssid_len; in ath10k_wmi_tlv_op_gen_config_pno_start()
4354 pno->a_networks[i].ssid.ssid, in ath10k_wmi_tlv_op_gen_config_pno_start()
4358 if (pno->a_networks[i].rssi_threshold && in ath10k_wmi_tlv_op_gen_config_pno_start()
4359 pno->a_networks[i].rssi_threshold > -300) { in ath10k_wmi_tlv_op_gen_config_pno_start()
4362 __cpu_to_le32(pno->a_networks[i].rssi_threshold); in ath10k_wmi_tlv_op_gen_config_pno_start()
4367 __cpu_to_le32(pno->a_networks[i].bcast_nw_type); in ath10k_wmi_tlv_op_gen_config_pno_start()
4370 ptr += __le32_to_cpu(cmd->no_of_ssids) * sizeof(struct nlo_configured_parameters); in ath10k_wmi_tlv_op_gen_config_pno_start()
4373 cmd->num_of_channels = __cpu_to_le32(min_t(u8, in ath10k_wmi_tlv_op_gen_config_pno_start()
4374 pno->a_networks[0].channel_count, in ath10k_wmi_tlv_op_gen_config_pno_start()
4382 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_config_pno_start()
4383 tlv->len = __cpu_to_le16(__le32_to_cpu(cmd->num_of_channels) * in ath10k_wmi_tlv_op_gen_config_pno_start()
4388 for (i = 0; i < __le32_to_cpu(cmd->num_of_channels); i++) in ath10k_wmi_tlv_op_gen_config_pno_start()
4389 channel_list[i] = __cpu_to_le32(pno->a_networks[0].channels[i]); in ath10k_wmi_tlv_op_gen_config_pno_start()
4420 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4423 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_config_pno_stop()
4426 ptr = (u8 *)skb->data; in ath10k_wmi_tlv_op_gen_config_pno_stop()
4429 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_NLO_CONFIG_CMD); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4430 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4431 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_config_pno_stop()
4433 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4434 cmd->flags = __cpu_to_le32(WMI_NLO_CONFIG_STOP); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4445 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_STRUCT); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4446 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4456 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_ARRAY_UINT32); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4457 tlv->len = __cpu_to_le16(0); in ath10k_wmi_tlv_op_gen_config_pno_stop()
4467 if (pno_scan->enable) in ath10k_wmi_tlv_op_gen_config_pno()
4485 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4487 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4489 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_RESMGR_ADAPTIVE_OCS_CMD); in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4490 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4491 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4492 cmd->enable = __cpu_to_le32(enable ? 1 : 0); in ath10k_wmi_tlv_op_gen_adaptive_qcs()
4515 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_echo()
4517 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_echo()
4519 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_ECHO_CMD); in ath10k_wmi_tlv_op_gen_echo()
4520 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_echo()
4521 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_echo()
4522 cmd->value = cpu_to_le32(value); in ath10k_wmi_tlv_op_gen_echo()
4546 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4548 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4550 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SPECTRAL_CONFIGURE_CMD); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4551 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4552 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4553 cmd->vdev_id = __cpu_to_le32(arg->vdev_id); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4554 cmd->scan_count = __cpu_to_le32(arg->scan_count); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4555 cmd->scan_period = __cpu_to_le32(arg->scan_period); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4556 cmd->scan_priority = __cpu_to_le32(arg->scan_priority); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4557 cmd->scan_fft_size = __cpu_to_le32(arg->scan_fft_size); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4558 cmd->scan_gc_ena = __cpu_to_le32(arg->scan_gc_ena); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4559 cmd->scan_restart_ena = __cpu_to_le32(arg->scan_restart_ena); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4560 cmd->scan_noise_floor_ref = __cpu_to_le32(arg->scan_noise_floor_ref); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4561 cmd->scan_init_delay = __cpu_to_le32(arg->scan_init_delay); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4562 cmd->scan_nb_tone_thr = __cpu_to_le32(arg->scan_nb_tone_thr); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4563 cmd->scan_str_bin_thr = __cpu_to_le32(arg->scan_str_bin_thr); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4564 cmd->scan_wb_rpt_mode = __cpu_to_le32(arg->scan_wb_rpt_mode); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4565 cmd->scan_rssi_rpt_mode = __cpu_to_le32(arg->scan_rssi_rpt_mode); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4566 cmd->scan_rssi_thr = __cpu_to_le32(arg->scan_rssi_thr); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4567 cmd->scan_pwr_format = __cpu_to_le32(arg->scan_pwr_format); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4568 cmd->scan_rpt_mode = __cpu_to_le32(arg->scan_rpt_mode); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4569 cmd->scan_bin_scale = __cpu_to_le32(arg->scan_bin_scale); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4570 cmd->scan_dbm_adj = __cpu_to_le32(arg->scan_dbm_adj); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4571 cmd->scan_chn_mask = __cpu_to_le32(arg->scan_chn_mask); in ath10k_wmi_tlv_op_gen_vdev_spectral_conf()
4589 return ERR_PTR(-ENOMEM); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4591 ptr = (void *)skb->data; in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4593 tlv->tag = __cpu_to_le16(WMI_TLV_TAG_STRUCT_VDEV_SPECTRAL_ENABLE_CMD); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4594 tlv->len = __cpu_to_le16(sizeof(*cmd)); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4595 cmd = (void *)tlv->value; in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4596 cmd->vdev_id = __cpu_to_le32(vdev_id); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4597 cmd->trigger_cmd = __cpu_to_le32(trigger); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
4598 cmd->enable_cmd = __cpu_to_le32(enable); in ath10k_wmi_tlv_op_gen_vdev_spectral_enable()
5070 ar->wmi.cmd = &wmi_tlv_cmd_map; in ath10k_wmi_tlv_attach()
5071 ar->wmi.vdev_param = &wmi_tlv_vdev_param_map; in ath10k_wmi_tlv_attach()
5072 ar->wmi.pdev_param = &wmi_tlv_pdev_param_map; in ath10k_wmi_tlv_attach()
5073 ar->wmi.peer_param = &wmi_tlv_peer_param_map; in ath10k_wmi_tlv_attach()
5074 ar->wmi.ops = &wmi_tlv_ops; in ath10k_wmi_tlv_attach()
5075 ar->wmi.peer_flags = &wmi_tlv_peer_flags_map; in ath10k_wmi_tlv_attach()