Lines Matching refs:ar

885 int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)  in ath10k_wmi_wait_for_service_ready()  argument
889 ret = wait_for_completion_timeout(&ar->wmi.service_ready, in ath10k_wmi_wait_for_service_ready()
894 int ath10k_wmi_wait_for_unified_ready(struct ath10k *ar) in ath10k_wmi_wait_for_unified_ready() argument
898 ret = wait_for_completion_timeout(&ar->wmi.unified_ready, in ath10k_wmi_wait_for_unified_ready()
903 struct sk_buff *ath10k_wmi_alloc_skb(struct ath10k *ar, u32 len) in ath10k_wmi_alloc_skb() argument
908 skb = ath10k_htc_alloc_skb(ar, WMI_SKB_HEADROOM + round_len); in ath10k_wmi_alloc_skb()
914 ath10k_warn(ar, "Unaligned WMI skb\n"); in ath10k_wmi_alloc_skb()
922 static void ath10k_wmi_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_htc_tx_complete() argument
927 int ath10k_wmi_cmd_send_nowait(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_cmd_send_nowait() argument
944 ret = ath10k_htc_send(&ar->htc, ar->wmi.eid, skb); in ath10k_wmi_cmd_send_nowait()
945 trace_ath10k_wmi_cmd(ar, cmd_id, skb->data, skb->len, ret); in ath10k_wmi_cmd_send_nowait()
959 struct ath10k *ar = arvif->ar; in ath10k_wmi_tx_beacon_nowait() local
964 spin_lock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
979 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
981 ret = ath10k_wmi_beacon_send_ref_nowait(arvif->ar, in ath10k_wmi_tx_beacon_nowait()
988 spin_lock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
997 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_tx_beacon_nowait()
1008 static void ath10k_wmi_tx_beacons_nowait(struct ath10k *ar) in ath10k_wmi_tx_beacons_nowait() argument
1010 ieee80211_iterate_active_interfaces_atomic(ar->hw, in ath10k_wmi_tx_beacons_nowait()
1016 static void ath10k_wmi_op_ep_tx_credits(struct ath10k *ar) in ath10k_wmi_op_ep_tx_credits() argument
1019 ath10k_wmi_tx_beacons_nowait(ar); in ath10k_wmi_op_ep_tx_credits()
1021 wake_up(&ar->wmi.tx_credits_wq); in ath10k_wmi_op_ep_tx_credits()
1024 int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id) in ath10k_wmi_cmd_send() argument
1031 ath10k_warn(ar, "wmi command %d is not supported by firmware\n", in ath10k_wmi_cmd_send()
1036 wait_event_timeout(ar->wmi.tx_credits_wq, ({ in ath10k_wmi_cmd_send()
1038 ath10k_wmi_tx_beacons_nowait(ar); in ath10k_wmi_cmd_send()
1040 ret = ath10k_wmi_cmd_send_nowait(ar, skb, cmd_id); in ath10k_wmi_cmd_send()
1042 if (ret && test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) in ath10k_wmi_cmd_send()
1055 ath10k_wmi_op_gen_mgmt_tx(struct ath10k *ar, struct sk_buff *msdu) in ath10k_wmi_op_gen_mgmt_tx() argument
1082 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_op_gen_mgmt_tx()
1096 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi mgmt tx skb %p len %d ftype %02x stype %02x\n", in ath10k_wmi_op_gen_mgmt_tx()
1099 trace_ath10k_tx_hdr(ar, skb->data, skb->len); in ath10k_wmi_op_gen_mgmt_tx()
1100 trace_ath10k_tx_payload(ar, skb->data, skb->len); in ath10k_wmi_op_gen_mgmt_tx()
1105 static void ath10k_wmi_event_scan_started(struct ath10k *ar) in ath10k_wmi_event_scan_started() argument
1107 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_started()
1109 switch (ar->scan.state) { in ath10k_wmi_event_scan_started()
1113 ath10k_warn(ar, "received scan started event in an invalid scan state: %s (%d)\n", in ath10k_wmi_event_scan_started()
1114 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_started()
1115 ar->scan.state); in ath10k_wmi_event_scan_started()
1118 ar->scan.state = ATH10K_SCAN_RUNNING; in ath10k_wmi_event_scan_started()
1120 if (ar->scan.is_roc) in ath10k_wmi_event_scan_started()
1121 ieee80211_ready_on_channel(ar->hw); in ath10k_wmi_event_scan_started()
1123 complete(&ar->scan.started); in ath10k_wmi_event_scan_started()
1128 static void ath10k_wmi_event_scan_start_failed(struct ath10k *ar) in ath10k_wmi_event_scan_start_failed() argument
1130 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_start_failed()
1132 switch (ar->scan.state) { in ath10k_wmi_event_scan_start_failed()
1136 ath10k_warn(ar, "received scan start failed event in an invalid scan state: %s (%d)\n", in ath10k_wmi_event_scan_start_failed()
1137 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_start_failed()
1138 ar->scan.state); in ath10k_wmi_event_scan_start_failed()
1141 complete(&ar->scan.started); in ath10k_wmi_event_scan_start_failed()
1142 __ath10k_scan_finish(ar); in ath10k_wmi_event_scan_start_failed()
1147 static void ath10k_wmi_event_scan_completed(struct ath10k *ar) in ath10k_wmi_event_scan_completed() argument
1149 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_completed()
1151 switch (ar->scan.state) { in ath10k_wmi_event_scan_completed()
1162 ath10k_warn(ar, "received scan completed event in an invalid scan state: %s (%d)\n", in ath10k_wmi_event_scan_completed()
1163 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_completed()
1164 ar->scan.state); in ath10k_wmi_event_scan_completed()
1168 __ath10k_scan_finish(ar); in ath10k_wmi_event_scan_completed()
1173 static void ath10k_wmi_event_scan_bss_chan(struct ath10k *ar) in ath10k_wmi_event_scan_bss_chan() argument
1175 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_bss_chan()
1177 switch (ar->scan.state) { in ath10k_wmi_event_scan_bss_chan()
1180 ath10k_warn(ar, "received scan bss chan event in an invalid scan state: %s (%d)\n", in ath10k_wmi_event_scan_bss_chan()
1181 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_bss_chan()
1182 ar->scan.state); in ath10k_wmi_event_scan_bss_chan()
1186 ar->scan_channel = NULL; in ath10k_wmi_event_scan_bss_chan()
1191 static void ath10k_wmi_event_scan_foreign_chan(struct ath10k *ar, u32 freq) in ath10k_wmi_event_scan_foreign_chan() argument
1193 lockdep_assert_held(&ar->data_lock); in ath10k_wmi_event_scan_foreign_chan()
1195 switch (ar->scan.state) { in ath10k_wmi_event_scan_foreign_chan()
1198 ath10k_warn(ar, "received scan foreign chan event in an invalid scan state: %s (%d)\n", in ath10k_wmi_event_scan_foreign_chan()
1199 ath10k_scan_state_str(ar->scan.state), in ath10k_wmi_event_scan_foreign_chan()
1200 ar->scan.state); in ath10k_wmi_event_scan_foreign_chan()
1204 ar->scan_channel = ieee80211_get_channel(ar->hw->wiphy, freq); in ath10k_wmi_event_scan_foreign_chan()
1206 if (ar->scan.is_roc && ar->scan.roc_freq == freq) in ath10k_wmi_event_scan_foreign_chan()
1207 complete(&ar->scan.on_channel); in ath10k_wmi_event_scan_foreign_chan()
1248 static int ath10k_wmi_op_pull_scan_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_scan_ev() argument
1267 int ath10k_wmi_event_scan(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_scan() argument
1278 ret = ath10k_wmi_pull_scan(ar, skb, &arg); in ath10k_wmi_event_scan()
1280 ath10k_warn(ar, "failed to parse scan event: %d\n", ret); in ath10k_wmi_event_scan()
1291 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_scan()
1293 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_scan()
1297 ath10k_scan_state_str(ar->scan.state), ar->scan.state); in ath10k_wmi_event_scan()
1301 ath10k_wmi_event_scan_started(ar); in ath10k_wmi_event_scan()
1304 ath10k_wmi_event_scan_completed(ar); in ath10k_wmi_event_scan()
1307 ath10k_wmi_event_scan_bss_chan(ar); in ath10k_wmi_event_scan()
1310 ath10k_wmi_event_scan_foreign_chan(ar, freq); in ath10k_wmi_event_scan()
1313 ath10k_warn(ar, "received scan start failure event\n"); in ath10k_wmi_event_scan()
1314 ath10k_wmi_event_scan_start_failed(ar); in ath10k_wmi_event_scan()
1322 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_scan()
1414 static void ath10k_wmi_handle_wep_reauth(struct ath10k *ar, in ath10k_wmi_handle_wep_reauth() argument
1434 spin_lock_bh(&ar->data_lock); in ath10k_wmi_handle_wep_reauth()
1435 peer_key = ath10k_mac_is_peer_wep_key_set(ar, addr, keyidx); in ath10k_wmi_handle_wep_reauth()
1436 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_handle_wep_reauth()
1439 ath10k_dbg(ar, ATH10K_DBG_MAC, in ath10k_wmi_handle_wep_reauth()
1445 static int ath10k_wmi_op_pull_mgmt_rx_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_mgmt_rx_ev() argument
1454 if (test_bit(ATH10K_FW_FEATURE_EXT_WMI_MGMT_RX, ar->fw_features)) { in ath10k_wmi_op_pull_mgmt_rx_ev()
1487 int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_mgmt_rx() argument
1501 ret = ath10k_wmi_pull_mgmt_rx(ar, skb, &arg); in ath10k_wmi_event_mgmt_rx()
1503 ath10k_warn(ar, "failed to parse mgmt rx event: %d\n", ret); in ath10k_wmi_event_mgmt_rx()
1516 ath10k_dbg(ar, ATH10K_DBG_MGMT, in ath10k_wmi_event_mgmt_rx()
1519 if (test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags)) { in ath10k_wmi_event_mgmt_rx()
1560 ath10k_dbg(ar, ATH10K_DBG_MGMT, "wmi mgmt rx 11b (CCK) on 5GHz\n"); in ath10k_wmi_event_mgmt_rx()
1569 ath10k_wmi_handle_wep_reauth(ar, skb, status); in ath10k_wmi_event_mgmt_rx()
1588 ath10k_dbg(ar, ATH10K_DBG_MGMT, in ath10k_wmi_event_mgmt_rx()
1593 ath10k_dbg(ar, ATH10K_DBG_MGMT, in ath10k_wmi_event_mgmt_rx()
1598 ieee80211_rx(ar->hw, skb); in ath10k_wmi_event_mgmt_rx()
1602 static int freq_to_idx(struct ath10k *ar, int freq) in freq_to_idx() argument
1608 sband = ar->hw->wiphy->bands[band]; in freq_to_idx()
1621 static int ath10k_wmi_op_pull_ch_info_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_ch_info_ev() argument
1640 void ath10k_wmi_event_chan_info(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_chan_info() argument
1647 ret = ath10k_wmi_pull_ch_info(ar, skb, &arg); in ath10k_wmi_event_chan_info()
1649 ath10k_warn(ar, "failed to parse chan info event: %d\n", ret); in ath10k_wmi_event_chan_info()
1660 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_chan_info()
1665 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_chan_info()
1667 switch (ar->scan.state) { in ath10k_wmi_event_chan_info()
1670 ath10k_warn(ar, "received chan info event without a scan request, ignoring\n"); in ath10k_wmi_event_chan_info()
1677 idx = freq_to_idx(ar, freq); in ath10k_wmi_event_chan_info()
1678 if (idx >= ARRAY_SIZE(ar->survey)) { in ath10k_wmi_event_chan_info()
1679 ath10k_warn(ar, "chan info: invalid frequency %d (idx %d out of bounds)\n", in ath10k_wmi_event_chan_info()
1689 cycle_count -= ar->survey_last_cycle_count; in ath10k_wmi_event_chan_info()
1690 rx_clear_count -= ar->survey_last_rx_clear_count; in ath10k_wmi_event_chan_info()
1692 survey = &ar->survey[idx]; in ath10k_wmi_event_chan_info()
1701 ar->survey_last_rx_clear_count = rx_clear_count; in ath10k_wmi_event_chan_info()
1702 ar->survey_last_cycle_count = cycle_count; in ath10k_wmi_event_chan_info()
1705 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_chan_info()
1708 void ath10k_wmi_event_echo(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_echo() argument
1710 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_ECHO_EVENTID\n"); in ath10k_wmi_event_echo()
1713 int ath10k_wmi_event_debug_mesg(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_debug_mesg() argument
1715 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi event debug mesg len %d\n", in ath10k_wmi_event_debug_mesg()
1718 trace_ath10k_wmi_dbglog(ar, skb->data, skb->len); in ath10k_wmi_event_debug_mesg()
1800 static int ath10k_wmi_main_op_pull_fw_stats(struct ath10k *ar, in ath10k_wmi_main_op_pull_fw_stats() argument
1855 static int ath10k_wmi_10x_op_pull_fw_stats(struct ath10k *ar, in ath10k_wmi_10x_op_pull_fw_stats() argument
1914 static int ath10k_wmi_10_2_op_pull_fw_stats(struct ath10k *ar, in ath10k_wmi_10_2_op_pull_fw_stats() argument
1993 static int ath10k_wmi_10_2_4_op_pull_fw_stats(struct ath10k *ar, in ath10k_wmi_10_2_4_op_pull_fw_stats() argument
2072 void ath10k_wmi_event_update_stats(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_update_stats() argument
2074 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_UPDATE_STATS_EVENTID\n"); in ath10k_wmi_event_update_stats()
2075 ath10k_debug_fw_stats_process(ar, skb); in ath10k_wmi_event_update_stats()
2079 ath10k_wmi_op_pull_vdev_start_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_vdev_start_ev() argument
2096 void ath10k_wmi_event_vdev_start_resp(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_vdev_start_resp() argument
2101 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_START_RESP_EVENTID\n"); in ath10k_wmi_event_vdev_start_resp()
2103 ret = ath10k_wmi_pull_vdev_start(ar, skb, &arg); in ath10k_wmi_event_vdev_start_resp()
2105 ath10k_warn(ar, "failed to parse vdev start event: %d\n", ret); in ath10k_wmi_event_vdev_start_resp()
2112 complete(&ar->vdev_setup_done); in ath10k_wmi_event_vdev_start_resp()
2115 void ath10k_wmi_event_vdev_stopped(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_vdev_stopped() argument
2117 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_STOPPED_EVENTID\n"); in ath10k_wmi_event_vdev_stopped()
2118 complete(&ar->vdev_setup_done); in ath10k_wmi_event_vdev_stopped()
2122 ath10k_wmi_op_pull_peer_kick_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_peer_kick_ev() argument
2136 void ath10k_wmi_event_peer_sta_kickout(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_peer_sta_kickout() argument
2142 ret = ath10k_wmi_pull_peer_kick(ar, skb, &arg); in ath10k_wmi_event_peer_sta_kickout()
2144 ath10k_warn(ar, "failed to parse peer kickout event: %d\n", in ath10k_wmi_event_peer_sta_kickout()
2149 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi event peer sta kickout %pM\n", in ath10k_wmi_event_peer_sta_kickout()
2154 sta = ieee80211_find_sta_by_ifaddr(ar->hw, arg.mac_addr, NULL); in ath10k_wmi_event_peer_sta_kickout()
2156 ath10k_warn(ar, "Spurious quick kickout for STA %pM\n", in ath10k_wmi_event_peer_sta_kickout()
2191 static void ath10k_wmi_update_tim(struct ath10k *ar, in ath10k_wmi_update_tim() argument
2235 ath10k_warn(ar, "no tim ie found;\n"); in ath10k_wmi_update_tim()
2255 ath10k_warn(ar, "tim expansion failed\n"); in ath10k_wmi_update_tim()
2260 ath10k_warn(ar, "tim pvm length is too great (%d)\n", pvm_len); in ath10k_wmi_update_tim()
2274 ath10k_dbg(ar, ATH10K_DBG_MGMT, "dtim %d/%d mcast %d pvmlen %d\n", in ath10k_wmi_update_tim()
2340 static void ath10k_wmi_update_noa(struct ath10k *ar, struct ath10k_vif *arvif, in ath10k_wmi_update_noa() argument
2350 ath10k_dbg(ar, ATH10K_DBG_MGMT, "noa changed: %d\n", noa->changed); in ath10k_wmi_update_noa()
2362 spin_lock_bh(&ar->data_lock); in ath10k_wmi_update_noa()
2365 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_update_noa()
2377 spin_lock_bh(&ar->data_lock); in ath10k_wmi_update_noa()
2380 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_update_noa()
2384 static int ath10k_wmi_op_pull_swba_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_swba_ev() argument
2415 void ath10k_wmi_event_host_swba(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_host_swba() argument
2427 ret = ath10k_wmi_pull_swba(ar, skb, &arg); in ath10k_wmi_event_host_swba()
2429 ath10k_warn(ar, "failed to parse swba event: %d\n", ret); in ath10k_wmi_event_host_swba()
2435 ath10k_dbg(ar, ATH10K_DBG_MGMT, "mgmt swba vdev_map 0x%x\n", in ath10k_wmi_event_host_swba()
2445 ath10k_warn(ar, "swba has corrupted vdev map\n"); in ath10k_wmi_event_host_swba()
2452 ath10k_dbg(ar, ATH10K_DBG_MGMT, in ath10k_wmi_event_host_swba()
2464 arvif = ath10k_get_arvif(ar, vdev_id); in ath10k_wmi_event_host_swba()
2466 ath10k_warn(ar, "no vif for vdev_id %d found\n", in ath10k_wmi_event_host_swba()
2482 bcn = ieee80211_beacon_get(ar->hw, arvif->vif); in ath10k_wmi_event_host_swba()
2484 ath10k_warn(ar, "could not get mac80211 beacon\n"); in ath10k_wmi_event_host_swba()
2489 ath10k_wmi_update_tim(ar, arvif, bcn, tim_info); in ath10k_wmi_event_host_swba()
2490 ath10k_wmi_update_noa(ar, arvif, bcn, noa_info); in ath10k_wmi_event_host_swba()
2492 spin_lock_bh(&ar->data_lock); in ath10k_wmi_event_host_swba()
2499 ath10k_warn(ar, "SWBA overrun on vdev %d, skipped old beacon\n", in ath10k_wmi_event_host_swba()
2503 ath10k_warn(ar, "SWBA overrun on vdev %d, skipped new beacon\n", in ath10k_wmi_event_host_swba()
2513 paddr = dma_map_single(arvif->ar->dev, bcn->data, in ath10k_wmi_event_host_swba()
2515 ret = dma_mapping_error(arvif->ar->dev, paddr); in ath10k_wmi_event_host_swba()
2517 ath10k_warn(ar, "failed to map beacon: %d\n", in ath10k_wmi_event_host_swba()
2527 ath10k_warn(ar, "trimming beacon %d -> %d bytes!\n", in ath10k_wmi_event_host_swba()
2538 trace_ath10k_tx_hdr(ar, bcn->data, bcn->len); in ath10k_wmi_event_host_swba()
2539 trace_ath10k_tx_payload(ar, bcn->data, bcn->len); in ath10k_wmi_event_host_swba()
2542 spin_unlock_bh(&ar->data_lock); in ath10k_wmi_event_host_swba()
2545 ath10k_wmi_tx_beacons_nowait(ar); in ath10k_wmi_event_host_swba()
2548 void ath10k_wmi_event_tbttoffset_update(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_tbttoffset_update() argument
2550 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_TBTTOFFSET_UPDATE_EVENTID\n"); in ath10k_wmi_event_tbttoffset_update()
2553 static void ath10k_dfs_radar_report(struct ath10k *ar, in ath10k_dfs_radar_report() argument
2566 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_radar_report()
2572 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_radar_report()
2579 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_radar_report()
2584 if (!ar->dfs_detector) in ath10k_dfs_radar_report()
2602 pe.freq = ar->hw->conf.chandef.chan->center_freq; in ath10k_dfs_radar_report()
2606 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_radar_report()
2610 ATH10K_DFS_STAT_INC(ar, pulses_detected); in ath10k_dfs_radar_report()
2612 if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe)) { in ath10k_dfs_radar_report()
2613 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_radar_report()
2618 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, "dfs radar detected\n"); in ath10k_dfs_radar_report()
2619 ATH10K_DFS_STAT_INC(ar, radar_detected); in ath10k_dfs_radar_report()
2623 if (ar->dfs_block_radar_events) { in ath10k_dfs_radar_report()
2624 ath10k_info(ar, "DFS Radar detected, but ignored as requested\n"); in ath10k_dfs_radar_report()
2628 ieee80211_radar_detected(ar->hw); in ath10k_dfs_radar_report()
2631 static int ath10k_dfs_fft_report(struct ath10k *ar, in ath10k_dfs_fft_report() argument
2643 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_fft_report()
2649 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_dfs_fft_report()
2661 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, "dfs false pulse detected\n"); in ath10k_dfs_fft_report()
2662 ATH10K_DFS_STAT_INC(ar, pulses_discarded); in ath10k_dfs_fft_report()
2669 void ath10k_wmi_event_dfs(struct ath10k *ar, in ath10k_wmi_event_dfs() argument
2680 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_wmi_event_dfs()
2689 ATH10K_DFS_STAT_INC(ar, pulses_total); in ath10k_wmi_event_dfs()
2693 ath10k_warn(ar, "too short buf for tlv header (%d)\n", in ath10k_wmi_event_dfs()
2701 ath10k_dbg(ar, ATH10K_DBG_REGULATORY, in ath10k_wmi_event_dfs()
2708 ath10k_warn(ar, "too short radar pulse summary (%d)\n", in ath10k_wmi_event_dfs()
2714 ath10k_dfs_radar_report(ar, phyerr, rr, tsf); in ath10k_wmi_event_dfs()
2718 ath10k_warn(ar, "too short fft report (%d)\n", in ath10k_wmi_event_dfs()
2724 res = ath10k_dfs_fft_report(ar, phyerr, fftr, tsf); in ath10k_wmi_event_dfs()
2734 void ath10k_wmi_event_spectral_scan(struct ath10k *ar, in ath10k_wmi_event_spectral_scan() argument
2748 ath10k_warn(ar, "failed to parse phyerr tlv header at byte %d\n", in ath10k_wmi_event_spectral_scan()
2758 ath10k_warn(ar, "failed to parse phyerr tlv payload at byte %d\n", in ath10k_wmi_event_spectral_scan()
2766 ath10k_warn(ar, "failed to parse fft report at byte %d\n", in ath10k_wmi_event_spectral_scan()
2773 res = ath10k_spectral_process_fft(ar, phyerr, in ath10k_wmi_event_spectral_scan()
2777 ath10k_warn(ar, "failed to process fft report: %d\n", in ath10k_wmi_event_spectral_scan()
2788 static int ath10k_wmi_op_pull_phyerr_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_phyerr_ev() argument
2805 void ath10k_wmi_event_phyerr(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_phyerr() argument
2813 ATH10K_DFS_STAT_INC(ar, phy_errors); in ath10k_wmi_event_phyerr()
2815 ret = ath10k_wmi_pull_phyerr(ar, skb, &arg); in ath10k_wmi_event_phyerr()
2817 ath10k_warn(ar, "failed to parse phyerr event: %d\n", ret); in ath10k_wmi_event_phyerr()
2830 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_phyerr()
2838 ath10k_warn(ar, "single event (%d) wrong head len\n", in ath10k_wmi_event_phyerr()
2849 ath10k_warn(ar, "single event (%d) wrong buf len\n", i); in ath10k_wmi_event_phyerr()
2857 ath10k_wmi_event_dfs(ar, phyerr, tsf); in ath10k_wmi_event_phyerr()
2860 ath10k_wmi_event_spectral_scan(ar, phyerr, tsf); in ath10k_wmi_event_phyerr()
2863 ath10k_wmi_event_dfs(ar, phyerr, tsf); in ath10k_wmi_event_phyerr()
2864 ath10k_wmi_event_spectral_scan(ar, phyerr, tsf); in ath10k_wmi_event_phyerr()
2874 void ath10k_wmi_event_roam(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_roam() argument
2876 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_ROAM_EVENTID\n"); in ath10k_wmi_event_roam()
2879 void ath10k_wmi_event_profile_match(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_profile_match() argument
2881 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_PROFILE_MATCH\n"); in ath10k_wmi_event_profile_match()
2884 void ath10k_wmi_event_debug_print(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_debug_print() argument
2905 ath10k_warn(ar, "wmi debug print truncated: %d\n", skb->len); in ath10k_wmi_event_debug_print()
2914 ath10k_dbg(ar, ATH10K_DBG_WMI_PRINT, "wmi print '%s'\n", buf); in ath10k_wmi_event_debug_print()
2917 void ath10k_wmi_event_pdev_qvit(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_pdev_qvit() argument
2919 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_PDEV_QVIT_EVENTID\n"); in ath10k_wmi_event_pdev_qvit()
2922 void ath10k_wmi_event_wlan_profile_data(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_wlan_profile_data() argument
2924 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_WLAN_PROFILE_DATA_EVENTID\n"); in ath10k_wmi_event_wlan_profile_data()
2927 void ath10k_wmi_event_rtt_measurement_report(struct ath10k *ar, in ath10k_wmi_event_rtt_measurement_report() argument
2930 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_RTT_MEASUREMENT_REPORT_EVENTID\n"); in ath10k_wmi_event_rtt_measurement_report()
2933 void ath10k_wmi_event_tsf_measurement_report(struct ath10k *ar, in ath10k_wmi_event_tsf_measurement_report() argument
2936 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_TSF_MEASUREMENT_REPORT_EVENTID\n"); in ath10k_wmi_event_tsf_measurement_report()
2939 void ath10k_wmi_event_rtt_error_report(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_rtt_error_report() argument
2941 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_RTT_ERROR_REPORT_EVENTID\n"); in ath10k_wmi_event_rtt_error_report()
2944 void ath10k_wmi_event_wow_wakeup_host(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_wow_wakeup_host() argument
2946 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_WOW_WAKEUP_HOST_EVENTID\n"); in ath10k_wmi_event_wow_wakeup_host()
2949 void ath10k_wmi_event_dcs_interference(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_dcs_interference() argument
2951 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_DCS_INTERFERENCE_EVENTID\n"); in ath10k_wmi_event_dcs_interference()
2954 void ath10k_wmi_event_pdev_tpc_config(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_pdev_tpc_config() argument
2956 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_PDEV_TPC_CONFIG_EVENTID\n"); in ath10k_wmi_event_pdev_tpc_config()
2959 void ath10k_wmi_event_pdev_ftm_intg(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_pdev_ftm_intg() argument
2961 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_PDEV_FTM_INTG_EVENTID\n"); in ath10k_wmi_event_pdev_ftm_intg()
2964 void ath10k_wmi_event_gtk_offload_status(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_gtk_offload_status() argument
2966 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_GTK_OFFLOAD_STATUS_EVENTID\n"); in ath10k_wmi_event_gtk_offload_status()
2969 void ath10k_wmi_event_gtk_rekey_fail(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_gtk_rekey_fail() argument
2971 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_GTK_REKEY_FAIL_EVENTID\n"); in ath10k_wmi_event_gtk_rekey_fail()
2974 void ath10k_wmi_event_delba_complete(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_delba_complete() argument
2976 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_TX_DELBA_COMPLETE_EVENTID\n"); in ath10k_wmi_event_delba_complete()
2979 void ath10k_wmi_event_addba_complete(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_addba_complete() argument
2981 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_TX_ADDBA_COMPLETE_EVENTID\n"); in ath10k_wmi_event_addba_complete()
2984 void ath10k_wmi_event_vdev_install_key_complete(struct ath10k *ar, in ath10k_wmi_event_vdev_install_key_complete() argument
2987 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_INSTALL_KEY_COMPLETE_EVENTID\n"); in ath10k_wmi_event_vdev_install_key_complete()
2990 void ath10k_wmi_event_inst_rssi_stats(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_inst_rssi_stats() argument
2992 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_INST_RSSI_STATS_EVENTID\n"); in ath10k_wmi_event_inst_rssi_stats()
2995 void ath10k_wmi_event_vdev_standby_req(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_vdev_standby_req() argument
2997 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_STANDBY_REQ_EVENTID\n"); in ath10k_wmi_event_vdev_standby_req()
3000 void ath10k_wmi_event_vdev_resume_req(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_vdev_resume_req() argument
3002 ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_RESUME_REQ_EVENTID\n"); in ath10k_wmi_event_vdev_resume_req()
3005 static int ath10k_wmi_alloc_host_mem(struct ath10k *ar, u32 req_id, in ath10k_wmi_alloc_host_mem() argument
3010 int idx = ar->wmi.num_mem_chunks; in ath10k_wmi_alloc_host_mem()
3017 ar->wmi.mem_chunks[idx].vaddr = dma_alloc_coherent(ar->dev, in ath10k_wmi_alloc_host_mem()
3021 if (!ar->wmi.mem_chunks[idx].vaddr) { in ath10k_wmi_alloc_host_mem()
3022 ath10k_warn(ar, "failed to allocate memory chunk\n"); in ath10k_wmi_alloc_host_mem()
3026 memset(ar->wmi.mem_chunks[idx].vaddr, 0, pool_size); in ath10k_wmi_alloc_host_mem()
3028 ar->wmi.mem_chunks[idx].paddr = paddr; in ath10k_wmi_alloc_host_mem()
3029 ar->wmi.mem_chunks[idx].len = pool_size; in ath10k_wmi_alloc_host_mem()
3030 ar->wmi.mem_chunks[idx].req_id = req_id; in ath10k_wmi_alloc_host_mem()
3031 ar->wmi.num_mem_chunks++; in ath10k_wmi_alloc_host_mem()
3037 ath10k_wmi_main_op_pull_svc_rdy_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_main_op_pull_svc_rdy_ev() argument
3074 ath10k_wmi_10x_op_pull_svc_rdy_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_10x_op_pull_svc_rdy_ev() argument
3109 void ath10k_wmi_event_service_ready(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_service_ready() argument
3115 ret = ath10k_wmi_pull_svc_rdy(ar, skb, &arg); in ath10k_wmi_event_service_ready()
3117 ath10k_warn(ar, "failed to parse service ready: %d\n", ret); in ath10k_wmi_event_service_ready()
3121 memset(&ar->wmi.svc_map, 0, sizeof(ar->wmi.svc_map)); in ath10k_wmi_event_service_ready()
3122 ath10k_wmi_map_svc(ar, arg.service_map, ar->wmi.svc_map, in ath10k_wmi_event_service_ready()
3125 ar->hw_min_tx_power = __le32_to_cpu(arg.min_tx_power); in ath10k_wmi_event_service_ready()
3126 ar->hw_max_tx_power = __le32_to_cpu(arg.max_tx_power); in ath10k_wmi_event_service_ready()
3127 ar->ht_cap_info = __le32_to_cpu(arg.ht_cap); in ath10k_wmi_event_service_ready()
3128 ar->vht_cap_info = __le32_to_cpu(arg.vht_cap); in ath10k_wmi_event_service_ready()
3129 ar->fw_version_major = in ath10k_wmi_event_service_ready()
3131 ar->fw_version_minor = (__le32_to_cpu(arg.sw_ver0) & 0x00ffffff); in ath10k_wmi_event_service_ready()
3132 ar->fw_version_release = in ath10k_wmi_event_service_ready()
3134 ar->fw_version_build = (__le32_to_cpu(arg.sw_ver1) & 0x0000ffff); in ath10k_wmi_event_service_ready()
3135 ar->phy_capability = __le32_to_cpu(arg.phy_capab); in ath10k_wmi_event_service_ready()
3136 ar->num_rf_chains = __le32_to_cpu(arg.num_rf_chains); in ath10k_wmi_event_service_ready()
3137 ar->ath_common.regulatory.current_rd = __le32_to_cpu(arg.eeprom_rd); in ath10k_wmi_event_service_ready()
3139 ath10k_dbg_dump(ar, ATH10K_DBG_WMI, NULL, "wmi svc: ", in ath10k_wmi_event_service_ready()
3143 if (ar->fw_api == 1 && ar->fw_version_build > 636) in ath10k_wmi_event_service_ready()
3144 set_bit(ATH10K_FW_FEATURE_EXT_WMI_MGMT_RX, ar->fw_features); in ath10k_wmi_event_service_ready()
3146 if (ar->num_rf_chains > WMI_MAX_SPATIAL_STREAM) { in ath10k_wmi_event_service_ready()
3147 ath10k_warn(ar, "hardware advertises support for more spatial streams than it should (%d > %d)\n", in ath10k_wmi_event_service_ready()
3148 ar->num_rf_chains, WMI_MAX_SPATIAL_STREAM); in ath10k_wmi_event_service_ready()
3149 ar->num_rf_chains = WMI_MAX_SPATIAL_STREAM; in ath10k_wmi_event_service_ready()
3152 ar->supp_tx_chainmask = (1 << ar->num_rf_chains) - 1; in ath10k_wmi_event_service_ready()
3153 ar->supp_rx_chainmask = (1 << ar->num_rf_chains) - 1; in ath10k_wmi_event_service_ready()
3155 if (strlen(ar->hw->wiphy->fw_version) == 0) { in ath10k_wmi_event_service_ready()
3156 snprintf(ar->hw->wiphy->fw_version, in ath10k_wmi_event_service_ready()
3157 sizeof(ar->hw->wiphy->fw_version), in ath10k_wmi_event_service_ready()
3159 ar->fw_version_major, in ath10k_wmi_event_service_ready()
3160 ar->fw_version_minor, in ath10k_wmi_event_service_ready()
3161 ar->fw_version_release, in ath10k_wmi_event_service_ready()
3162 ar->fw_version_build); in ath10k_wmi_event_service_ready()
3167 ath10k_warn(ar, "requested memory chunks number (%d) exceeds the limit\n", in ath10k_wmi_event_service_ready()
3187 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_service_ready()
3195 ret = ath10k_wmi_alloc_host_mem(ar, req_id, num_units, in ath10k_wmi_event_service_ready()
3201 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_service_ready()
3215 complete(&ar->wmi.service_ready); in ath10k_wmi_event_service_ready()
3218 static int ath10k_wmi_op_pull_rdy_ev(struct ath10k *ar, struct sk_buff *skb, in ath10k_wmi_op_pull_rdy_ev() argument
3235 int ath10k_wmi_event_ready(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_ready() argument
3240 ret = ath10k_wmi_pull_rdy(ar, skb, &arg); in ath10k_wmi_event_ready()
3242 ath10k_warn(ar, "failed to parse ready event: %d\n", ret); in ath10k_wmi_event_ready()
3246 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_event_ready()
3253 ether_addr_copy(ar->mac_addr, arg.mac_addr); in ath10k_wmi_event_ready()
3254 complete(&ar->wmi.unified_ready); in ath10k_wmi_event_ready()
3258 static int ath10k_wmi_event_temperature(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_event_temperature() argument
3266 ath10k_thermal_event_temperature(ar, __le32_to_cpu(ev->temperature)); in ath10k_wmi_event_temperature()
3270 static void ath10k_wmi_op_rx(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_op_rx() argument
3281 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_op_rx()
3285 ath10k_wmi_event_mgmt_rx(ar, skb); in ath10k_wmi_op_rx()
3289 ath10k_wmi_event_scan(ar, skb); in ath10k_wmi_op_rx()
3292 ath10k_wmi_event_chan_info(ar, skb); in ath10k_wmi_op_rx()
3295 ath10k_wmi_event_echo(ar, skb); in ath10k_wmi_op_rx()
3298 ath10k_wmi_event_debug_mesg(ar, skb); in ath10k_wmi_op_rx()
3301 ath10k_wmi_event_update_stats(ar, skb); in ath10k_wmi_op_rx()
3304 ath10k_wmi_event_vdev_start_resp(ar, skb); in ath10k_wmi_op_rx()
3307 ath10k_wmi_event_vdev_stopped(ar, skb); in ath10k_wmi_op_rx()
3310 ath10k_wmi_event_peer_sta_kickout(ar, skb); in ath10k_wmi_op_rx()
3313 ath10k_wmi_event_host_swba(ar, skb); in ath10k_wmi_op_rx()
3316 ath10k_wmi_event_tbttoffset_update(ar, skb); in ath10k_wmi_op_rx()
3319 ath10k_wmi_event_phyerr(ar, skb); in ath10k_wmi_op_rx()
3322 ath10k_wmi_event_roam(ar, skb); in ath10k_wmi_op_rx()
3325 ath10k_wmi_event_profile_match(ar, skb); in ath10k_wmi_op_rx()
3328 ath10k_wmi_event_debug_print(ar, skb); in ath10k_wmi_op_rx()
3331 ath10k_wmi_event_pdev_qvit(ar, skb); in ath10k_wmi_op_rx()
3334 ath10k_wmi_event_wlan_profile_data(ar, skb); in ath10k_wmi_op_rx()
3337 ath10k_wmi_event_rtt_measurement_report(ar, skb); in ath10k_wmi_op_rx()
3340 ath10k_wmi_event_tsf_measurement_report(ar, skb); in ath10k_wmi_op_rx()
3343 ath10k_wmi_event_rtt_error_report(ar, skb); in ath10k_wmi_op_rx()
3346 ath10k_wmi_event_wow_wakeup_host(ar, skb); in ath10k_wmi_op_rx()
3349 ath10k_wmi_event_dcs_interference(ar, skb); in ath10k_wmi_op_rx()
3352 ath10k_wmi_event_pdev_tpc_config(ar, skb); in ath10k_wmi_op_rx()
3355 ath10k_wmi_event_pdev_ftm_intg(ar, skb); in ath10k_wmi_op_rx()
3358 ath10k_wmi_event_gtk_offload_status(ar, skb); in ath10k_wmi_op_rx()
3361 ath10k_wmi_event_gtk_rekey_fail(ar, skb); in ath10k_wmi_op_rx()
3364 ath10k_wmi_event_delba_complete(ar, skb); in ath10k_wmi_op_rx()
3367 ath10k_wmi_event_addba_complete(ar, skb); in ath10k_wmi_op_rx()
3370 ath10k_wmi_event_vdev_install_key_complete(ar, skb); in ath10k_wmi_op_rx()
3373 ath10k_wmi_event_service_ready(ar, skb); in ath10k_wmi_op_rx()
3376 ath10k_wmi_event_ready(ar, skb); in ath10k_wmi_op_rx()
3379 ath10k_warn(ar, "Unknown eventid: %d\n", id); in ath10k_wmi_op_rx()
3386 static void ath10k_wmi_10_1_op_rx(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_10_1_op_rx() argument
3398 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_10_1_op_rx()
3400 consumed = ath10k_tm_event_wmi(ar, id, skb); in ath10k_wmi_10_1_op_rx()
3407 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_10_1_op_rx()
3414 ath10k_wmi_event_mgmt_rx(ar, skb); in ath10k_wmi_10_1_op_rx()
3418 ath10k_wmi_event_scan(ar, skb); in ath10k_wmi_10_1_op_rx()
3421 ath10k_wmi_event_chan_info(ar, skb); in ath10k_wmi_10_1_op_rx()
3424 ath10k_wmi_event_echo(ar, skb); in ath10k_wmi_10_1_op_rx()
3427 ath10k_wmi_event_debug_mesg(ar, skb); in ath10k_wmi_10_1_op_rx()
3430 ath10k_wmi_event_update_stats(ar, skb); in ath10k_wmi_10_1_op_rx()
3433 ath10k_wmi_event_vdev_start_resp(ar, skb); in ath10k_wmi_10_1_op_rx()
3436 ath10k_wmi_event_vdev_stopped(ar, skb); in ath10k_wmi_10_1_op_rx()
3439 ath10k_wmi_event_peer_sta_kickout(ar, skb); in ath10k_wmi_10_1_op_rx()
3442 ath10k_wmi_event_host_swba(ar, skb); in ath10k_wmi_10_1_op_rx()
3445 ath10k_wmi_event_tbttoffset_update(ar, skb); in ath10k_wmi_10_1_op_rx()
3448 ath10k_wmi_event_phyerr(ar, skb); in ath10k_wmi_10_1_op_rx()
3451 ath10k_wmi_event_roam(ar, skb); in ath10k_wmi_10_1_op_rx()
3454 ath10k_wmi_event_profile_match(ar, skb); in ath10k_wmi_10_1_op_rx()
3457 ath10k_wmi_event_debug_print(ar, skb); in ath10k_wmi_10_1_op_rx()
3460 ath10k_wmi_event_pdev_qvit(ar, skb); in ath10k_wmi_10_1_op_rx()
3463 ath10k_wmi_event_wlan_profile_data(ar, skb); in ath10k_wmi_10_1_op_rx()
3466 ath10k_wmi_event_rtt_measurement_report(ar, skb); in ath10k_wmi_10_1_op_rx()
3469 ath10k_wmi_event_tsf_measurement_report(ar, skb); in ath10k_wmi_10_1_op_rx()
3472 ath10k_wmi_event_rtt_error_report(ar, skb); in ath10k_wmi_10_1_op_rx()
3475 ath10k_wmi_event_wow_wakeup_host(ar, skb); in ath10k_wmi_10_1_op_rx()
3478 ath10k_wmi_event_dcs_interference(ar, skb); in ath10k_wmi_10_1_op_rx()
3481 ath10k_wmi_event_pdev_tpc_config(ar, skb); in ath10k_wmi_10_1_op_rx()
3484 ath10k_wmi_event_inst_rssi_stats(ar, skb); in ath10k_wmi_10_1_op_rx()
3487 ath10k_wmi_event_vdev_standby_req(ar, skb); in ath10k_wmi_10_1_op_rx()
3490 ath10k_wmi_event_vdev_resume_req(ar, skb); in ath10k_wmi_10_1_op_rx()
3493 ath10k_wmi_event_service_ready(ar, skb); in ath10k_wmi_10_1_op_rx()
3496 ath10k_wmi_event_ready(ar, skb); in ath10k_wmi_10_1_op_rx()
3502 ath10k_warn(ar, "Unknown eventid: %d\n", id); in ath10k_wmi_10_1_op_rx()
3510 static void ath10k_wmi_10_2_op_rx(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_10_2_op_rx() argument
3521 trace_ath10k_wmi_event(ar, id, skb->data, skb->len); in ath10k_wmi_10_2_op_rx()
3525 ath10k_wmi_event_mgmt_rx(ar, skb); in ath10k_wmi_10_2_op_rx()
3529 ath10k_wmi_event_scan(ar, skb); in ath10k_wmi_10_2_op_rx()
3532 ath10k_wmi_event_chan_info(ar, skb); in ath10k_wmi_10_2_op_rx()
3535 ath10k_wmi_event_echo(ar, skb); in ath10k_wmi_10_2_op_rx()
3538 ath10k_wmi_event_debug_mesg(ar, skb); in ath10k_wmi_10_2_op_rx()
3541 ath10k_wmi_event_update_stats(ar, skb); in ath10k_wmi_10_2_op_rx()
3544 ath10k_wmi_event_vdev_start_resp(ar, skb); in ath10k_wmi_10_2_op_rx()
3547 ath10k_wmi_event_vdev_stopped(ar, skb); in ath10k_wmi_10_2_op_rx()
3550 ath10k_wmi_event_peer_sta_kickout(ar, skb); in ath10k_wmi_10_2_op_rx()
3553 ath10k_wmi_event_host_swba(ar, skb); in ath10k_wmi_10_2_op_rx()
3556 ath10k_wmi_event_tbttoffset_update(ar, skb); in ath10k_wmi_10_2_op_rx()
3559 ath10k_wmi_event_phyerr(ar, skb); in ath10k_wmi_10_2_op_rx()
3562 ath10k_wmi_event_roam(ar, skb); in ath10k_wmi_10_2_op_rx()
3565 ath10k_wmi_event_profile_match(ar, skb); in ath10k_wmi_10_2_op_rx()
3568 ath10k_wmi_event_debug_print(ar, skb); in ath10k_wmi_10_2_op_rx()
3571 ath10k_wmi_event_pdev_qvit(ar, skb); in ath10k_wmi_10_2_op_rx()
3574 ath10k_wmi_event_wlan_profile_data(ar, skb); in ath10k_wmi_10_2_op_rx()
3577 ath10k_wmi_event_rtt_measurement_report(ar, skb); in ath10k_wmi_10_2_op_rx()
3580 ath10k_wmi_event_tsf_measurement_report(ar, skb); in ath10k_wmi_10_2_op_rx()
3583 ath10k_wmi_event_rtt_error_report(ar, skb); in ath10k_wmi_10_2_op_rx()
3586 ath10k_wmi_event_wow_wakeup_host(ar, skb); in ath10k_wmi_10_2_op_rx()
3589 ath10k_wmi_event_dcs_interference(ar, skb); in ath10k_wmi_10_2_op_rx()
3592 ath10k_wmi_event_pdev_tpc_config(ar, skb); in ath10k_wmi_10_2_op_rx()
3595 ath10k_wmi_event_inst_rssi_stats(ar, skb); in ath10k_wmi_10_2_op_rx()
3598 ath10k_wmi_event_vdev_standby_req(ar, skb); in ath10k_wmi_10_2_op_rx()
3601 ath10k_wmi_event_vdev_resume_req(ar, skb); in ath10k_wmi_10_2_op_rx()
3604 ath10k_wmi_event_service_ready(ar, skb); in ath10k_wmi_10_2_op_rx()
3607 ath10k_wmi_event_ready(ar, skb); in ath10k_wmi_10_2_op_rx()
3610 ath10k_wmi_event_temperature(ar, skb); in ath10k_wmi_10_2_op_rx()
3619 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_10_2_op_rx()
3623 ath10k_warn(ar, "Unknown eventid: %d\n", id); in ath10k_wmi_10_2_op_rx()
3630 static void ath10k_wmi_process_rx(struct ath10k *ar, struct sk_buff *skb) in ath10k_wmi_process_rx() argument
3634 ret = ath10k_wmi_rx(ar, skb); in ath10k_wmi_process_rx()
3636 ath10k_warn(ar, "failed to process wmi rx: %d\n", ret); in ath10k_wmi_process_rx()
3639 int ath10k_wmi_connect(struct ath10k *ar) in ath10k_wmi_connect() argument
3656 status = ath10k_htc_connect_service(&ar->htc, &conn_req, &conn_resp); in ath10k_wmi_connect()
3658 ath10k_warn(ar, "failed to connect to WMI CONTROL service status: %d\n", in ath10k_wmi_connect()
3663 ar->wmi.eid = conn_resp.eid; in ath10k_wmi_connect()
3668 ath10k_wmi_op_gen_pdev_set_rd(struct ath10k *ar, u16 rd, u16 rd2g, u16 rd5g, in ath10k_wmi_op_gen_pdev_set_rd() argument
3675 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pdev_set_rd()
3686 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_pdev_set_rd()
3693 ath10k_wmi_10x_op_gen_pdev_set_rd(struct ath10k *ar, u16 rd, u16 rd2g, u16 in ath10k_wmi_10x_op_gen_pdev_set_rd() argument
3700 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_10x_op_gen_pdev_set_rd()
3712 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_10x_op_gen_pdev_set_rd()
3719 ath10k_wmi_op_gen_pdev_suspend(struct ath10k *ar, u32 suspend_opt) in ath10k_wmi_op_gen_pdev_suspend() argument
3724 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pdev_suspend()
3735 ath10k_wmi_op_gen_pdev_resume(struct ath10k *ar) in ath10k_wmi_op_gen_pdev_resume() argument
3739 skb = ath10k_wmi_alloc_skb(ar, 0); in ath10k_wmi_op_gen_pdev_resume()
3747 ath10k_wmi_op_gen_pdev_set_param(struct ath10k *ar, u32 id, u32 value) in ath10k_wmi_op_gen_pdev_set_param() argument
3753 ath10k_warn(ar, "pdev param %d not supported by firmware\n", in ath10k_wmi_op_gen_pdev_set_param()
3758 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pdev_set_param()
3766 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi pdev set param %d value %d\n", in ath10k_wmi_op_gen_pdev_set_param()
3771 void ath10k_wmi_put_host_mem_chunks(struct ath10k *ar, in ath10k_wmi_put_host_mem_chunks() argument
3777 chunks->count = __cpu_to_le32(ar->wmi.num_mem_chunks); in ath10k_wmi_put_host_mem_chunks()
3779 for (i = 0; i < ar->wmi.num_mem_chunks; i++) { in ath10k_wmi_put_host_mem_chunks()
3781 chunk->ptr = __cpu_to_le32(ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_put_host_mem_chunks()
3782 chunk->size = __cpu_to_le32(ar->wmi.mem_chunks[i].len); in ath10k_wmi_put_host_mem_chunks()
3783 chunk->req_id = __cpu_to_le32(ar->wmi.mem_chunks[i].req_id); in ath10k_wmi_put_host_mem_chunks()
3785 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_put_host_mem_chunks()
3788 ar->wmi.mem_chunks[i].len, in ath10k_wmi_put_host_mem_chunks()
3789 (unsigned long long)ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_put_host_mem_chunks()
3793 static struct sk_buff *ath10k_wmi_op_gen_init(struct ath10k *ar) in ath10k_wmi_op_gen_init() argument
3852 (sizeof(struct host_memory_chunk) * ar->wmi.num_mem_chunks); in ath10k_wmi_op_gen_init()
3854 buf = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_op_gen_init()
3861 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_op_gen_init()
3863 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi init\n"); in ath10k_wmi_op_gen_init()
3867 static struct sk_buff *ath10k_wmi_10_1_op_gen_init(struct ath10k *ar) in ath10k_wmi_10_1_op_gen_init() argument
3918 (sizeof(struct host_memory_chunk) * ar->wmi.num_mem_chunks); in ath10k_wmi_10_1_op_gen_init()
3920 buf = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_10_1_op_gen_init()
3927 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_10_1_op_gen_init()
3929 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi init 10x\n"); in ath10k_wmi_10_1_op_gen_init()
3933 static struct sk_buff *ath10k_wmi_10_2_op_gen_init(struct ath10k *ar) in ath10k_wmi_10_2_op_gen_init() argument
3984 (sizeof(struct host_memory_chunk) * ar->wmi.num_mem_chunks); in ath10k_wmi_10_2_op_gen_init()
3986 buf = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_10_2_op_gen_init()
3996 ath10k_wmi_put_host_mem_chunks(ar, &cmd->mem_chunks); in ath10k_wmi_10_2_op_gen_init()
3998 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi init 10.2\n"); in ath10k_wmi_10_2_op_gen_init()
4149 ath10k_wmi_op_gen_start_scan(struct ath10k *ar, in ath10k_wmi_op_gen_start_scan() argument
4162 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_op_gen_start_scan()
4173 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi start scan\n"); in ath10k_wmi_op_gen_start_scan()
4178 ath10k_wmi_10x_op_gen_start_scan(struct ath10k *ar, in ath10k_wmi_10x_op_gen_start_scan() argument
4191 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_10x_op_gen_start_scan()
4200 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi 10x start scan\n"); in ath10k_wmi_10x_op_gen_start_scan()
4204 void ath10k_wmi_start_scan_init(struct ath10k *ar, in ath10k_wmi_start_scan_init() argument
4231 ath10k_wmi_op_gen_stop_scan(struct ath10k *ar, in ath10k_wmi_op_gen_stop_scan() argument
4244 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_stop_scan()
4260 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_stop_scan()
4267 ath10k_wmi_op_gen_vdev_create(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_vdev_create() argument
4275 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_create()
4285 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_create()
4292 ath10k_wmi_op_gen_vdev_delete(struct ath10k *ar, u32 vdev_id) in ath10k_wmi_op_gen_vdev_delete() argument
4297 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_delete()
4304 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_delete()
4310 ath10k_wmi_op_gen_vdev_start(struct ath10k *ar, in ath10k_wmi_op_gen_vdev_start() argument
4331 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_start()
4356 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_start()
4366 ath10k_wmi_op_gen_vdev_stop(struct ath10k *ar, u32 vdev_id) in ath10k_wmi_op_gen_vdev_stop() argument
4371 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_stop()
4378 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi vdev stop id 0x%x\n", vdev_id); in ath10k_wmi_op_gen_vdev_stop()
4383 ath10k_wmi_op_gen_vdev_up(struct ath10k *ar, u32 vdev_id, u32 aid, in ath10k_wmi_op_gen_vdev_up() argument
4389 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_up()
4398 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_up()
4405 ath10k_wmi_op_gen_vdev_down(struct ath10k *ar, u32 vdev_id) in ath10k_wmi_op_gen_vdev_down() argument
4410 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_down()
4417 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_down()
4423 ath10k_wmi_op_gen_vdev_set_param(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_vdev_set_param() argument
4430 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_set_param()
4436 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_set_param()
4445 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_set_param()
4452 ath10k_wmi_op_gen_vdev_install_key(struct ath10k *ar, in ath10k_wmi_op_gen_vdev_install_key() argument
4463 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd) + arg->key_len); in ath10k_wmi_op_gen_vdev_install_key()
4481 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_vdev_install_key()
4488 ath10k_wmi_op_gen_vdev_spectral_conf(struct ath10k *ar, in ath10k_wmi_op_gen_vdev_spectral_conf() argument
4494 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_spectral_conf()
4523 ath10k_wmi_op_gen_vdev_spectral_enable(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_vdev_spectral_enable() argument
4529 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_vdev_spectral_enable()
4542 ath10k_wmi_op_gen_peer_create(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_peer_create() argument
4548 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_peer_create()
4556 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_peer_create()
4563 ath10k_wmi_op_gen_peer_delete(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_peer_delete() argument
4569 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_peer_delete()
4577 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_peer_delete()
4584 ath10k_wmi_op_gen_peer_flush(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_peer_flush() argument
4590 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_peer_flush()
4599 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_peer_flush()
4606 ath10k_wmi_op_gen_peer_set_param(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_peer_set_param() argument
4614 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_peer_set_param()
4624 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_peer_set_param()
4631 ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_set_psmode() argument
4637 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_set_psmode()
4645 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_set_psmode()
4652 ath10k_wmi_op_gen_set_sta_ps(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_set_sta_ps() argument
4659 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_set_sta_ps()
4668 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_set_sta_ps()
4675 ath10k_wmi_op_gen_set_ap_ps(struct ath10k *ar, u32 vdev_id, const u8 *mac, in ath10k_wmi_op_gen_set_ap_ps() argument
4684 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_set_ap_ps()
4694 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_set_ap_ps()
4701 ath10k_wmi_op_gen_scan_chan_list(struct ath10k *ar, in ath10k_wmi_op_gen_scan_chan_list() argument
4713 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_op_gen_scan_chan_list()
4731 ath10k_wmi_peer_assoc_fill(struct ath10k *ar, void *buf, in ath10k_wmi_peer_assoc_fill() argument
4773 ath10k_wmi_peer_assoc_fill_main(struct ath10k *ar, void *buf, in ath10k_wmi_peer_assoc_fill_main() argument
4778 ath10k_wmi_peer_assoc_fill(ar, buf, arg); in ath10k_wmi_peer_assoc_fill_main()
4783 ath10k_wmi_peer_assoc_fill_10_1(struct ath10k *ar, void *buf, in ath10k_wmi_peer_assoc_fill_10_1() argument
4786 ath10k_wmi_peer_assoc_fill(ar, buf, arg); in ath10k_wmi_peer_assoc_fill_10_1()
4790 ath10k_wmi_peer_assoc_fill_10_2(struct ath10k *ar, void *buf, in ath10k_wmi_peer_assoc_fill_10_2() argument
4804 ath10k_wmi_peer_assoc_fill(ar, buf, arg); in ath10k_wmi_peer_assoc_fill_10_2()
4822 ath10k_wmi_op_gen_peer_assoc(struct ath10k *ar, in ath10k_wmi_op_gen_peer_assoc() argument
4833 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_op_gen_peer_assoc()
4837 ath10k_wmi_peer_assoc_fill_main(ar, skb->data, arg); in ath10k_wmi_op_gen_peer_assoc()
4839 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_peer_assoc()
4847 ath10k_wmi_10_1_op_gen_peer_assoc(struct ath10k *ar, in ath10k_wmi_10_1_op_gen_peer_assoc() argument
4858 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_10_1_op_gen_peer_assoc()
4862 ath10k_wmi_peer_assoc_fill_10_1(ar, skb->data, arg); in ath10k_wmi_10_1_op_gen_peer_assoc()
4864 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_10_1_op_gen_peer_assoc()
4872 ath10k_wmi_10_2_op_gen_peer_assoc(struct ath10k *ar, in ath10k_wmi_10_2_op_gen_peer_assoc() argument
4883 skb = ath10k_wmi_alloc_skb(ar, len); in ath10k_wmi_10_2_op_gen_peer_assoc()
4887 ath10k_wmi_peer_assoc_fill_10_2(ar, skb->data, arg); in ath10k_wmi_10_2_op_gen_peer_assoc()
4889 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_10_2_op_gen_peer_assoc()
4897 ath10k_wmi_10_2_op_gen_pdev_get_temperature(struct ath10k *ar) in ath10k_wmi_10_2_op_gen_pdev_get_temperature() argument
4901 skb = ath10k_wmi_alloc_skb(ar, 0); in ath10k_wmi_10_2_op_gen_pdev_get_temperature()
4905 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi pdev get temperature\n"); in ath10k_wmi_10_2_op_gen_pdev_get_temperature()
4911 ath10k_wmi_op_gen_beacon_dma(struct ath10k *ar, u32 vdev_id, const void *bcn, in ath10k_wmi_op_gen_beacon_dma() argument
4920 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_beacon_dma()
4957 ath10k_wmi_op_gen_pdev_set_wmm(struct ath10k *ar, in ath10k_wmi_op_gen_pdev_set_wmm() argument
4963 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pdev_set_wmm()
4973 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi pdev set wmm params\n"); in ath10k_wmi_op_gen_pdev_set_wmm()
4978 ath10k_wmi_op_gen_request_stats(struct ath10k *ar, u32 stats_mask) in ath10k_wmi_op_gen_request_stats() argument
4983 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_request_stats()
4990 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi request stats 0x%08x\n", in ath10k_wmi_op_gen_request_stats()
4996 ath10k_wmi_op_gen_force_fw_hang(struct ath10k *ar, in ath10k_wmi_op_gen_force_fw_hang() argument
5002 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_force_fw_hang()
5010 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi force fw hang %d delay %d\n", in ath10k_wmi_op_gen_force_fw_hang()
5016 ath10k_wmi_op_gen_dbglog_cfg(struct ath10k *ar, u32 module_enable, in ath10k_wmi_op_gen_dbglog_cfg() argument
5023 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_dbglog_cfg()
5044 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_dbglog_cfg()
5054 ath10k_wmi_op_gen_pktlog_enable(struct ath10k *ar, u32 ev_bitmap) in ath10k_wmi_op_gen_pktlog_enable() argument
5059 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pktlog_enable()
5068 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi enable pktlog filter 0x%08x\n", in ath10k_wmi_op_gen_pktlog_enable()
5074 ath10k_wmi_op_gen_pktlog_disable(struct ath10k *ar) in ath10k_wmi_op_gen_pktlog_disable() argument
5078 skb = ath10k_wmi_alloc_skb(ar, 0); in ath10k_wmi_op_gen_pktlog_disable()
5082 ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi disable pktlog\n"); in ath10k_wmi_op_gen_pktlog_disable()
5087 ath10k_wmi_op_gen_pdev_set_quiet_mode(struct ath10k *ar, u32 period, in ath10k_wmi_op_gen_pdev_set_quiet_mode() argument
5094 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_pdev_set_quiet_mode()
5104 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_pdev_set_quiet_mode()
5111 ath10k_wmi_op_gen_addba_clear_resp(struct ath10k *ar, u32 vdev_id, in ath10k_wmi_op_gen_addba_clear_resp() argument
5120 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_addba_clear_resp()
5128 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_addba_clear_resp()
5135 ath10k_wmi_op_gen_addba_send(struct ath10k *ar, u32 vdev_id, const u8 *mac, in ath10k_wmi_op_gen_addba_send() argument
5144 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_addba_send()
5154 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_addba_send()
5161 ath10k_wmi_op_gen_addba_set_resp(struct ath10k *ar, u32 vdev_id, const u8 *mac, in ath10k_wmi_op_gen_addba_set_resp() argument
5170 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_addba_set_resp()
5180 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_addba_set_resp()
5187 ath10k_wmi_op_gen_delba_send(struct ath10k *ar, u32 vdev_id, const u8 *mac, in ath10k_wmi_op_gen_delba_send() argument
5196 skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd)); in ath10k_wmi_op_gen_delba_send()
5207 ath10k_dbg(ar, ATH10K_DBG_WMI, in ath10k_wmi_op_gen_delba_send()
5458 int ath10k_wmi_attach(struct ath10k *ar) in ath10k_wmi_attach() argument
5460 switch (ar->wmi.op_version) { in ath10k_wmi_attach()
5462 ar->wmi.cmd = &wmi_10_2_4_cmd_map; in ath10k_wmi_attach()
5463 ar->wmi.ops = &wmi_10_2_4_ops; in ath10k_wmi_attach()
5464 ar->wmi.vdev_param = &wmi_10_2_4_vdev_param_map; in ath10k_wmi_attach()
5465 ar->wmi.pdev_param = &wmi_10_2_4_pdev_param_map; in ath10k_wmi_attach()
5468 ar->wmi.cmd = &wmi_10_2_cmd_map; in ath10k_wmi_attach()
5469 ar->wmi.ops = &wmi_10_2_ops; in ath10k_wmi_attach()
5470 ar->wmi.vdev_param = &wmi_10x_vdev_param_map; in ath10k_wmi_attach()
5471 ar->wmi.pdev_param = &wmi_10x_pdev_param_map; in ath10k_wmi_attach()
5474 ar->wmi.cmd = &wmi_10x_cmd_map; in ath10k_wmi_attach()
5475 ar->wmi.ops = &wmi_10_1_ops; in ath10k_wmi_attach()
5476 ar->wmi.vdev_param = &wmi_10x_vdev_param_map; in ath10k_wmi_attach()
5477 ar->wmi.pdev_param = &wmi_10x_pdev_param_map; in ath10k_wmi_attach()
5480 ar->wmi.cmd = &wmi_cmd_map; in ath10k_wmi_attach()
5481 ar->wmi.ops = &wmi_ops; in ath10k_wmi_attach()
5482 ar->wmi.vdev_param = &wmi_vdev_param_map; in ath10k_wmi_attach()
5483 ar->wmi.pdev_param = &wmi_pdev_param_map; in ath10k_wmi_attach()
5486 ath10k_wmi_tlv_attach(ar); in ath10k_wmi_attach()
5490 ath10k_err(ar, "unsupported WMI op version: %d\n", in ath10k_wmi_attach()
5491 ar->wmi.op_version); in ath10k_wmi_attach()
5495 init_completion(&ar->wmi.service_ready); in ath10k_wmi_attach()
5496 init_completion(&ar->wmi.unified_ready); in ath10k_wmi_attach()
5501 void ath10k_wmi_detach(struct ath10k *ar) in ath10k_wmi_detach() argument
5506 for (i = 0; i < ar->wmi.num_mem_chunks; i++) { in ath10k_wmi_detach()
5507 dma_free_coherent(ar->dev, in ath10k_wmi_detach()
5508 ar->wmi.mem_chunks[i].len, in ath10k_wmi_detach()
5509 ar->wmi.mem_chunks[i].vaddr, in ath10k_wmi_detach()
5510 ar->wmi.mem_chunks[i].paddr); in ath10k_wmi_detach()
5513 ar->wmi.num_mem_chunks = 0; in ath10k_wmi_detach()