Lines Matching defs:ar

239 static int ath11k_wmi_tlv_parse(struct ath11k_base *ar, const void **tb,
242 return ath11k_wmi_tlv_iter(ar, ptr, len, ath11k_wmi_tlv_iter_parse,
639 static u32 ath11k_wmi_mgmt_get_freq(struct ath11k *ar,
642 struct ath11k_base *ab = ar->ab;
646 ar->scan.is_roc &&
648 freq = ar->scan.roc_freq;
653 int ath11k_wmi_mgmt_send(struct ath11k *ar, u32 vdev_id, u32 buf_id,
656 struct ath11k_pdev_wmi *wmi = ar->wmi;
678 cmd->chanfreq = ath11k_wmi_mgmt_get_freq(ar, info);
695 ath11k_warn(ar->ab,
700 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd mgmt tx send");
705 int ath11k_wmi_vdev_create(struct ath11k *ar, u8 *macaddr,
708 struct ath11k_pdev_wmi *wmi = ar->wmi;
772 ath11k_warn(ar->ab,
777 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
785 int ath11k_wmi_vdev_delete(struct ath11k *ar, u8 vdev_id)
787 struct ath11k_pdev_wmi *wmi = ar->wmi;
803 ath11k_warn(ar->ab, "failed to submit WMI_VDEV_DELETE_CMDID\n");
807 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd vdev delete id %d\n", vdev_id);
812 int ath11k_wmi_vdev_stop(struct ath11k *ar, u8 vdev_id)
814 struct ath11k_pdev_wmi *wmi = ar->wmi;
831 ath11k_warn(ar->ab, "failed to submit WMI_VDEV_STOP cmd\n");
835 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd vdev stop id 0x%x\n", vdev_id);
840 int ath11k_wmi_vdev_down(struct ath11k *ar, u8 vdev_id)
842 struct ath11k_pdev_wmi *wmi = ar->wmi;
859 ath11k_warn(ar->ab, "failed to submit WMI_VDEV_DOWN cmd\n");
863 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd vdev down id 0x%x\n", vdev_id);
922 int ath11k_wmi_vdev_start(struct ath11k *ar, struct wmi_vdev_start_req_arg *arg,
925 struct ath11k_pdev_wmi *wmi = ar->wmi;
971 if (test_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags))
1001 ath11k_warn(ar->ab, "failed to submit vdev_%s cmd\n",
1006 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd vdev %s id 0x%x freq 0x%x mode 0x%x\n",
1013 int ath11k_wmi_vdev_up(struct ath11k *ar, u32 vdev_id, u32 aid, const u8 *bssid,
1016 struct ath11k_pdev_wmi *wmi = ar->wmi;
1023 arvif = ath11k_mac_get_arvif(ar, vdev_id);
1056 ath11k_warn(ar->ab, "failed to submit WMI_VDEV_UP cmd\n");
1060 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1067 int ath11k_wmi_send_peer_create_cmd(struct ath11k *ar,
1070 struct ath11k_pdev_wmi *wmi = ar->wmi;
1089 ath11k_warn(ar->ab, "failed to submit WMI_PEER_CREATE cmd\n");
1093 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1100 int ath11k_wmi_send_peer_delete_cmd(struct ath11k *ar,
1103 struct ath11k_pdev_wmi *wmi = ar->wmi;
1121 ath11k_warn(ar->ab, "failed to send WMI_PEER_DELETE cmd\n");
1125 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1132 int ath11k_wmi_send_pdev_set_regdomain(struct ath11k *ar,
1135 struct ath11k_pdev_wmi *wmi = ar->wmi;
1159 ath11k_warn(ar->ab,
1164 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1172 int ath11k_wmi_set_peer_param(struct ath11k *ar, const u8 *peer_addr,
1175 struct ath11k_pdev_wmi *wmi = ar->wmi;
1194 ath11k_warn(ar->ab, "failed to send WMI_PEER_SET_PARAM cmd\n");
1198 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1205 int ath11k_wmi_send_peer_flush_tids_cmd(struct ath11k *ar,
1209 struct ath11k_pdev_wmi *wmi = ar->wmi;
1228 ath11k_warn(ar->ab,
1233 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1240 int ath11k_wmi_peer_rx_reorder_queue_setup(struct ath11k *ar,
1250 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, sizeof(*cmd));
1268 ret = ath11k_wmi_cmd_send(ar->wmi, skb,
1271 ath11k_warn(ar->ab,
1276 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1284 ath11k_wmi_rx_reord_queue_remove(struct ath11k *ar,
1287 struct ath11k_pdev_wmi *wmi = ar->wmi;
1308 ath11k_warn(ar->ab,
1313 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1320 int ath11k_wmi_pdev_set_param(struct ath11k *ar, u32 param_id,
1323 struct ath11k_pdev_wmi *wmi = ar->wmi;
1341 ath11k_warn(ar->ab, "failed to send WMI_PDEV_SET_PARAM cmd\n");
1345 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1352 int ath11k_wmi_pdev_set_ps_mode(struct ath11k *ar, int vdev_id,
1355 struct ath11k_pdev_wmi *wmi = ar->wmi;
1372 ath11k_warn(ar->ab, "failed to send WMI_PDEV_SET_PARAM cmd\n");
1376 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1383 int ath11k_wmi_pdev_suspend(struct ath11k *ar, u32 suspend_opt,
1386 struct ath11k_pdev_wmi *wmi = ar->wmi;
1405 ath11k_warn(ar->ab, "failed to send WMI_PDEV_SUSPEND cmd\n");
1409 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1415 int ath11k_wmi_pdev_resume(struct ath11k *ar, u32 pdev_id)
1417 struct ath11k_pdev_wmi *wmi = ar->wmi;
1434 ath11k_warn(ar->ab, "failed to send WMI_PDEV_RESUME cmd\n");
1438 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1448 int ath11k_wmi_pdev_bss_chan_info_request(struct ath11k *ar,
1451 struct ath11k_pdev_wmi *wmi = ar->wmi;
1466 cmd->pdev_id = ar->pdev->pdev_id;
1471 ath11k_warn(ar->ab,
1476 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1482 int ath11k_wmi_send_set_ap_ps_param_cmd(struct ath11k *ar, u8 *peer_addr,
1485 struct ath11k_pdev_wmi *wmi = ar->wmi;
1505 ath11k_warn(ar->ab,
1510 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1517 int ath11k_wmi_set_sta_ps_param(struct ath11k *ar, u32 vdev_id,
1520 struct ath11k_pdev_wmi *wmi = ar->wmi;
1540 ath11k_warn(ar->ab, "failed to send WMI_STA_POWERSAVE_PARAM_CMDID");
1544 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1551 int ath11k_wmi_force_fw_hang_cmd(struct ath11k *ar, u32 type, u32 delay_time_ms)
1553 struct ath11k_pdev_wmi *wmi = ar->wmi;
1574 ath11k_warn(ar->ab, "Failed to send WMI_FORCE_FW_HANG_CMDID");
1578 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd force fw hang");
1583 int ath11k_wmi_vdev_set_param_cmd(struct ath11k *ar, u32 vdev_id,
1586 struct ath11k_pdev_wmi *wmi = ar->wmi;
1605 ath11k_warn(ar->ab,
1610 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1617 int ath11k_wmi_send_stats_request_cmd(struct ath11k *ar,
1620 struct ath11k_pdev_wmi *wmi = ar->wmi;
1639 ath11k_warn(ar->ab, "failed to send WMI_REQUEST_STATS cmd\n");
1643 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1650 int ath11k_wmi_send_pdev_temperature_cmd(struct ath11k *ar)
1652 struct ath11k_pdev_wmi *wmi = ar->wmi;
1664 cmd->pdev_id = ar->pdev->pdev_id;
1668 ath11k_warn(ar->ab, "failed to send WMI_PDEV_GET_TEMPERATURE cmd\n");
1672 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1673 "cmd pdev get temperature for pdev_id %d\n", ar->pdev->pdev_id);
1678 int ath11k_wmi_send_bcn_offload_control_cmd(struct ath11k *ar,
1681 struct ath11k_pdev_wmi *wmi = ar->wmi;
1700 ath11k_warn(ar->ab,
1705 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1712 int ath11k_wmi_p2p_go_bcn_ie(struct ath11k *ar, u32 vdev_id,
1715 struct ath11k_pdev_wmi *wmi = ar->wmi;
1744 ath11k_warn(ar->ab, "failed to send WMI_P2P_GO_SET_BEACON_IE\n");
1751 int ath11k_wmi_bcn_tmpl(struct ath11k *ar, u32 vdev_id,
1755 struct ath11k_pdev_wmi *wmi = ar->wmi;
1764 struct ath11k_vif *arvif = ath11k_mac_get_arvif(ar, vdev_id);
1767 ath11k_warn(ar->ab, "failed to find arvif with vdev id %d\n", vdev_id);
1813 ath11k_warn(ar->ab, "failed to send WMI_BCN_TMPL_CMDID\n");
1817 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd bcn tmpl");
1822 int ath11k_wmi_vdev_install_key(struct ath11k *ar,
1825 struct ath11k_pdev_wmi *wmi = ar->wmi;
1862 ath11k_warn(ar->ab,
1867 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
1958 int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar,
1961 struct ath11k_pdev_wmi *wmi = ar->wmi;
2001 &ar->ab->dev_flags));
2098 ath11k_warn(ar->ab,
2103 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2119 void ath11k_wmi_start_scan_init(struct ath11k *ar,
2124 if (ar->state_11d == ATH11K_11D_PREPARING)
2148 ar->ab->wmi_ab.svc_map))
2237 int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar,
2240 struct ath11k_pdev_wmi *wmi = ar->wmi;
2417 ath11k_warn(ar->ab, "failed to send WMI_START_SCAN_CMDID\n");
2421 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd start scan");
2426 int ath11k_wmi_send_vdev_set_tpc_power(struct ath11k *ar,
2430 struct ath11k_pdev_wmi *wmi = ar->wmi;
2455 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2476 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tpc chan freq %d TX power %d\n",
2482 ath11k_warn(ar->ab, "failed to send WMI_VDEV_SET_TPC_POWER_CMDID\n");
2490 int ath11k_wmi_send_scan_stop_cmd(struct ath11k *ar,
2493 struct ath11k_pdev_wmi *wmi = ar->wmi;
2522 ath11k_warn(ar->ab, "invalid scan cancel param %d",
2531 ath11k_warn(ar->ab, "failed to send WMI_STOP_SCAN_CMDID\n");
2535 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd stop scan");
2540 int ath11k_wmi_send_scan_chan_list_cmd(struct ath11k *ar,
2543 struct ath11k_pdev_wmi *wmi = ar->wmi;
2557 max_chan_limit = (wmi->wmi_ab->max_msg_len[ar->pdev_idx] - len) /
2580 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2639 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2650 ath11k_warn(ar->ab, "failed to send WMI_SCAN_CHAN_LIST cmd\n");
2655 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd scan chan list channels %d",
2664 int ath11k_wmi_send_wmm_update_cmd_tlv(struct ath11k *ar, u32 vdev_id,
2667 struct ath11k_pdev_wmi *wmi = ar->wmi;
2716 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2725 ath11k_warn(ar->ab,
2730 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd vdev set wmm params");
2735 int ath11k_wmi_send_dfs_phyerr_offload_enable_cmd(struct ath11k *ar,
2738 struct ath11k_pdev_wmi *wmi = ar->wmi;
2758 ath11k_warn(ar->ab,
2763 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2769 int ath11k_wmi_delba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
2772 struct ath11k_pdev_wmi *wmi = ar->wmi;
2793 ath11k_warn(ar->ab,
2798 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2805 int ath11k_wmi_addba_set_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac,
2808 struct ath11k_pdev_wmi *wmi = ar->wmi;
2829 ath11k_warn(ar->ab,
2834 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2841 int ath11k_wmi_addba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
2844 struct ath11k_pdev_wmi *wmi = ar->wmi;
2864 ath11k_warn(ar->ab,
2869 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2876 int ath11k_wmi_addba_clear_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac)
2878 struct ath11k_pdev_wmi *wmi = ar->wmi;
2897 ath11k_warn(ar->ab,
2902 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
2909 int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable)
2911 struct ath11k_pdev_wmi *wmi = ar->wmi;
2929 cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
2950 ath11k_warn(ar->ab, "failed to send WMI_PDEV_PKTLOG_ENABLE_CMDID\n");
2954 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd pdev pktlog filter");
2960 ath11k_wmi_send_init_country_cmd(struct ath11k *ar,
2963 struct ath11k_pdev_wmi *wmi = ar->wmi;
2978 cmd->pdev_id = ar->pdev->pdev_id;
2995 ath11k_warn(ar->ab, "unknown cc params flags: 0x%x",
3004 ath11k_warn(ar->ab,
3010 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd set init country");
3019 int ath11k_wmi_send_set_current_country_cmd(struct ath11k *ar,
3022 struct ath11k_pdev_wmi *wmi = ar->wmi;
3036 cmd->pdev_id = ar->pdev->pdev_id;
3041 ath11k_warn(ar->ab,
3046 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3048 ar->pdev->pdev_id,
3056 ath11k_wmi_send_thermal_mitigation_param_cmd(struct ath11k *ar,
3059 struct ath11k_pdev_wmi *wmi = ar->wmi;
3078 cmd->pdev_id = ar->pdev->pdev_id;
3107 ath11k_warn(ar->ab, "failed to send THERM_THROT_SET_CONF cmd\n");
3111 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3113 ar->pdev->pdev_id, param->enable, param->dc,
3119 int ath11k_wmi_send_11d_scan_start_cmd(struct ath11k *ar,
3122 struct ath11k_pdev_wmi *wmi = ar->wmi;
3142 ath11k_warn(ar->ab,
3147 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3156 int ath11k_wmi_send_11d_scan_stop_cmd(struct ath11k *ar, u32 vdev_id)
3158 struct ath11k_pdev_wmi *wmi = ar->wmi;
3176 ath11k_warn(ar->ab,
3181 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3188 int ath11k_wmi_pdev_pktlog_enable(struct ath11k *ar, u32 pktlog_filter)
3190 struct ath11k_pdev_wmi *wmi = ar->wmi;
3204 cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
3211 ath11k_warn(ar->ab, "failed to send WMI_PDEV_PKTLOG_ENABLE_CMDID\n");
3215 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd pdev pktlog enable");
3220 int ath11k_wmi_pdev_pktlog_disable(struct ath11k *ar)
3222 struct ath11k_pdev_wmi *wmi = ar->wmi;
3236 cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
3241 ath11k_warn(ar->ab, "failed to send WMI_PDEV_PKTLOG_ENABLE_CMDID\n");
3245 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd pdev pktlog disable");
3276 int ath11k_wmi_send_twt_enable_cmd(struct ath11k *ar, u32 pdev_id,
3279 struct ath11k_pdev_wmi *wmi = ar->wmi;
3319 ar->twt_enabled = 1;
3327 ath11k_wmi_send_twt_disable_cmd(struct ath11k *ar, u32 pdev_id)
3329 struct ath11k_pdev_wmi *wmi = ar->wmi;
3355 ar->twt_enabled = 0;
3360 int ath11k_wmi_send_twt_add_dialog_cmd(struct ath11k *ar,
3363 struct ath11k_pdev_wmi *wmi = ar->wmi;
3405 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3414 int ath11k_wmi_send_twt_del_dialog_cmd(struct ath11k *ar,
3417 struct ath11k_pdev_wmi *wmi = ar->wmi;
3446 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3453 int ath11k_wmi_send_twt_pause_dialog_cmd(struct ath11k *ar,
3456 struct ath11k_pdev_wmi *wmi = ar->wmi;
3486 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3493 int ath11k_wmi_send_twt_resume_dialog_cmd(struct ath11k *ar,
3496 struct ath11k_pdev_wmi *wmi = ar->wmi;
3528 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3537 ath11k_wmi_send_obss_spr_cmd(struct ath11k *ar, u32 vdev_id,
3540 struct ath11k_pdev_wmi *wmi = ar->wmi;
3576 ath11k_wmi_pdev_set_srg_bss_color_bitmap(struct ath11k *ar, u32 *bitmap)
3578 struct ath11k_pdev_wmi *wmi = ar->wmi;
3594 cmd->pdev_id = ar->pdev->pdev_id;
3606 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3614 ath11k_wmi_pdev_set_srg_patial_bssid_bitmap(struct ath11k *ar, u32 *bitmap)
3616 struct ath11k_pdev_wmi *wmi = ar->wmi;
3633 cmd->pdev_id = ar->pdev->pdev_id;
3645 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3653 ath11k_wmi_pdev_srg_obss_color_enable_bitmap(struct ath11k *ar, u32 *bitmap)
3655 struct ath11k_pdev_wmi *wmi = ar->wmi;
3672 cmd->pdev_id = ar->pdev->pdev_id;
3684 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3692 ath11k_wmi_pdev_srg_obss_bssid_enable_bitmap(struct ath11k *ar, u32 *bitmap)
3694 struct ath11k_pdev_wmi *wmi = ar->wmi;
3711 cmd->pdev_id = ar->pdev->pdev_id;
3723 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3731 ath11k_wmi_pdev_non_srg_obss_color_enable_bitmap(struct ath11k *ar, u32 *bitmap)
3733 struct ath11k_pdev_wmi *wmi = ar->wmi;
3750 cmd->pdev_id = ar->pdev->pdev_id;
3762 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3770 ath11k_wmi_pdev_non_srg_obss_bssid_enable_bitmap(struct ath11k *ar, u32 *bitmap)
3772 struct ath11k_pdev_wmi *wmi = ar->wmi;
3789 cmd->pdev_id = ar->pdev->pdev_id;
3801 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3809 ath11k_wmi_send_obss_color_collision_cfg_cmd(struct ath11k *ar, u32 vdev_id,
3813 struct ath11k_pdev_wmi *wmi = ar->wmi;
3846 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3854 int ath11k_wmi_send_bss_color_change_enable_cmd(struct ath11k *ar, u32 vdev_id,
3857 struct ath11k_pdev_wmi *wmi = ar->wmi;
3883 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3890 int ath11k_wmi_fils_discovery_tmpl(struct ath11k *ar, u32 vdev_id,
3903 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3906 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
3923 ret = ath11k_wmi_cmd_send(ar->wmi, skb, WMI_FILS_DISCOVERY_TMPL_CMDID);
3925 ath11k_warn(ar->ab,
3932 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd fils discovery tmpl");
3937 int ath11k_wmi_probe_resp_tmpl(struct ath11k *ar, u32 vdev_id,
3948 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
3953 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
3980 ret = ath11k_wmi_cmd_send(ar->wmi, skb, WMI_PRB_TMPL_CMDID);
3982 ath11k_warn(ar->ab,
3989 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd ");
3994 int ath11k_wmi_fils_discovery(struct ath11k *ar, u32 vdev_id, u32 interval,
4001 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
4008 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
4019 ret = ath11k_wmi_cmd_send(ar->wmi, skb, WMI_ENABLE_FILS_CMDID);
4021 ath11k_warn(ar->ab,
4028 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd enable fils");
4306 int ath11k_wmi_pdev_lro_cfg(struct ath11k *ar,
4313 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, sizeof(*cmd));
4326 ret = ath11k_wmi_cmd_send(ar->wmi, skb, WMI_LRO_CONFIG_CMDID);
4328 ath11k_warn(ar->ab,
4333 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
4431 int ath11k_wmi_vdev_spectral_conf(struct ath11k *ar,
4438 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, sizeof(*cmd));
4449 ret = ath11k_wmi_cmd_send(ar->wmi, skb,
4452 ath11k_warn(ar->ab,
4457 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
4467 int ath11k_wmi_vdev_spectral_enable(struct ath11k *ar, u32 vdev_id,
4474 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, sizeof(*cmd));
4487 ret = ath11k_wmi_cmd_send(ar->wmi, skb,
4490 ath11k_warn(ar->ab,
4495 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
4505 int ath11k_wmi_pdev_dma_ring_cfg(struct ath11k *ar,
4512 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, sizeof(*cmd));
4533 ret = ath11k_wmi_cmd_send(ar->wmi, skb,
4536 ath11k_warn(ar->ab,
4541 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
5938 static int wmi_process_mgmt_tx_comp(struct ath11k *ar,
5946 spin_lock_bh(&ar->txmgmt_idr_lock);
5947 msdu = idr_find(&ar->txmgmt_idr, tx_compl_param->desc_id);
5950 ath11k_warn(ar->ab, "received mgmt tx compl for invalid msdu_id: %d\n",
5952 spin_unlock_bh(&ar->txmgmt_idr_lock);
5956 idr_remove(&ar->txmgmt_idr, tx_compl_param->desc_id);
5957 spin_unlock_bh(&ar->txmgmt_idr_lock);
5960 dma_unmap_single(ar->ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
5967 ar->ab->wmi_ab.svc_map))
5971 ieee80211_tx_status_irqsafe(ar->hw, msdu);
5973 num_mgmt = atomic_dec_if_positive(&ar->num_pending_mgmt_tx);
5979 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
5984 wake_up(&ar->txmgmt_empty_waitq);
6020 static void ath11k_wmi_event_scan_started(struct ath11k *ar)
6022 lockdep_assert_held(&ar->data_lock);
6024 switch (ar->scan.state) {
6028 ath11k_warn(ar->ab, "received scan started event in an invalid scan state: %s (%d)\n",
6029 ath11k_scan_state_str(ar->scan.state),
6030 ar->scan.state);
6033 ar->scan.state = ATH11K_SCAN_RUNNING;
6034 if (ar->scan.is_roc)
6035 ieee80211_ready_on_channel(ar->hw);
6036 complete(&ar->scan.started);
6041 static void ath11k_wmi_event_scan_start_failed(struct ath11k *ar)
6043 lockdep_assert_held(&ar->data_lock);
6045 switch (ar->scan.state) {
6049 ath11k_warn(ar->ab, "received scan start failed event in an invalid scan state: %s (%d)\n",
6050 ath11k_scan_state_str(ar->scan.state),
6051 ar->scan.state);
6054 complete(&ar->scan.started);
6055 __ath11k_mac_scan_finish(ar);
6060 static void ath11k_wmi_event_scan_completed(struct ath11k *ar)
6062 lockdep_assert_held(&ar->data_lock);
6064 switch (ar->scan.state) {
6075 ath11k_warn(ar->ab, "received scan completed event in an invalid scan state: %s (%d)\n",
6076 ath11k_scan_state_str(ar->scan.state),
6077 ar->scan.state);
6081 __ath11k_mac_scan_finish(ar);
6086 static void ath11k_wmi_event_scan_bss_chan(struct ath11k *ar)
6088 lockdep_assert_held(&ar->data_lock);
6090 switch (ar->scan.state) {
6093 ath11k_warn(ar->ab, "received scan bss chan event in an invalid scan state: %s (%d)\n",
6094 ath11k_scan_state_str(ar->scan.state),
6095 ar->scan.state);
6099 ar->scan_channel = NULL;
6104 static void ath11k_wmi_event_scan_foreign_chan(struct ath11k *ar, u32 freq)
6106 lockdep_assert_held(&ar->data_lock);
6108 switch (ar->scan.state) {
6111 ath11k_warn(ar->ab, "received scan foreign chan event in an invalid scan state: %s (%d)\n",
6112 ath11k_scan_state_str(ar->scan.state),
6113 ar->scan.state);
6117 ar->scan_channel = ieee80211_get_channel(ar->hw->wiphy, freq);
6118 if (ar->scan.is_roc && ar->scan.roc_freq == freq)
6119 complete(&ar->scan.on_channel);
6255 static int freq_to_idx(struct ath11k *ar, int freq)
6261 sband = ar->hw->wiphy->bands[band];
6533 struct ath11k *ar;
6545 ar = ath11k_mac_get_ar_by_pdev_id(ab, ev->pdev_id);
6552 arvif = ath11k_mac_get_arvif(ar, stats_rssi->vdev_id);
6564 sta = ieee80211_find_sta_by_ifaddr(ar->hw,
6601 struct ath11k *ar;
6617 ar = ath11k_mac_get_ar_by_pdev_id(ab, ev->pdev_id);
6656 arvif = ath11k_mac_get_arvif(ar, src->vdev_id);
6658 sta = ieee80211_find_sta_by_ifaddr(ar->hw,
6937 ath11k_wmi_fw_vdev_stats_fill(struct ath11k *ar,
6943 struct ath11k_vif *arvif = ath11k_mac_get_arvif(ar, vdev->vdev_id);
7011 ath11k_wmi_fw_bcn_stats_fill(struct ath11k *ar,
7017 struct ath11k_vif *arvif = ath11k_mac_get_arvif(ar, bcn->vdev_id);
7021 ath11k_warn(ar->ab, "invalid vdev id %d in bcn stats",
7043 void ath11k_wmi_fw_stats_fill(struct ath11k *ar,
7054 spin_lock_bh(&ar->data_lock);
7060 ath11k_warn(ar->ab, "failed to get pdev stats\n");
7077 ath11k_wmi_fw_vdev_stats_fill(ar, vdev, buf, &len);
7090 ath11k_wmi_fw_bcn_stats_fill(ar, bcn, buf, &len);
7094 spin_unlock_bh(&ar->data_lock);
7111 struct ath11k *ar;
7142 ar = pdev->ar;
7143 ar->state_11d = ATH11K_11D_IDLE;
7144 complete(&ar->completed_11d_scan);
7279 struct ath11k *ar;
7289 ar = ath11k_mac_get_ar_by_vdev_id(ab, peer_del_resp.vdev_id);
7290 if (!ar) {
7297 complete(&ar->peer_delete_done);
7306 struct ath11k *ar;
7315 ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_id);
7316 if (!ar) {
7323 complete(&ar->vdev_delete_done);
7350 struct ath11k *ar;
7361 ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_start_resp.vdev_id);
7362 if (!ar) {
7369 ar->last_wmi_vdev_start_status = 0;
7370 ar->max_allowed_tx_power = vdev_start_resp.max_allowed_tx_power;
7376 ar->last_wmi_vdev_start_status = status;
7379 complete(&ar->vdev_setup_done);
7417 struct ath11k *ar;
7455 ar = ath11k_mac_get_ar_by_vdev_id(ab, peer->vdev_id);
7457 if (!ar) {
7477 spin_lock_bh(&ar->data_lock);
7484 ar->ab->wmi_ab.svc_map)) {
7499 if (ar->ps_timekeeper_enable)
7500 trace_ath11k_ps_timekeeper(ar, ev->peer_macaddr.addr,
7506 spin_unlock_bh(&ar->data_lock);
7514 struct ath11k *ar;
7525 ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_id);
7526 if (!ar) {
7533 complete(&ar->vdev_setup_done);
7543 struct ath11k *ar;
7561 ar = ath11k_mac_get_ar_by_pdev_id(ab, rx_ev.pdev_id);
7563 if (!ar) {
7570 if ((test_bit(ATH11K_CAC_RUNNING, &ar->dev_flags)) ||
7602 sband = &ar->mac.sbands[status->band];
7637 ath11k_mac_handle_beacon(ar, skb);
7649 ieee80211_rx_ni(ar->hw, skb);
7658 struct ath11k *ar;
7666 ar = ath11k_mac_get_ar_by_pdev_id(ab, tx_compl_param.pdev_id);
7667 if (!ar) {
7673 wmi_process_mgmt_tx_comp(ar, &tx_compl_param);
7690 struct ath11k *ar;
7694 if (pdev && pdev->ar) {
7695 ar = pdev->ar;
7697 spin_lock_bh(&ar->data_lock);
7698 if (ar->scan.state == state &&
7699 ar->scan.vdev_id == vdev_id) {
7700 spin_unlock_bh(&ar->data_lock);
7701 return ar;
7703 spin_unlock_bh(&ar->data_lock);
7711 struct ath11k *ar;
7724 * search 'ar' if the corresponding 'ar' scan is ABORTING and the
7729 ar = ath11k_get_ar_on_scan_state(ab, scan_ev.vdev_id,
7731 if (!ar)
7732 ar = ath11k_get_ar_on_scan_state(ab, scan_ev.vdev_id,
7735 ar = ath11k_mac_get_ar_by_vdev_id(ab, scan_ev.vdev_id);
7738 if (!ar) {
7744 spin_lock_bh(&ar->data_lock);
7751 ath11k_scan_state_str(ar->scan.state), ar->scan.state);
7755 ath11k_wmi_event_scan_started(ar);
7758 ath11k_wmi_event_scan_completed(ar);
7761 ath11k_wmi_event_scan_bss_chan(ar);
7764 ath11k_wmi_event_scan_foreign_chan(ar, scan_ev.channel_freq);
7768 ath11k_wmi_event_scan_start_failed(ar);
7771 __ath11k_mac_scan_finish(ar);
7780 spin_unlock_bh(&ar->data_lock);
7790 struct ath11k *ar;
7815 ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_id);
7816 if (!ar) {
7822 sta = ieee80211_find_sta_by_ifaddr(ar->hw,
7842 struct ath11k *ar;
7854 ar = ath11k_mac_get_ar_by_vdev_id(ab, roam_ev.vdev_id);
7855 if (!ar) {
7868 ath11k_mac_handle_beacon_miss(ar, roam_ev.vdev_id);
7885 struct ath11k *ar;
7909 ar = ath11k_mac_get_ar_by_vdev_id(ab, ch_info_ev.vdev_id);
7910 if (!ar) {
7916 spin_lock_bh(&ar->data_lock);
7918 switch (ar->scan.state) {
7928 idx = freq_to_idx(ar, ch_info_ev.freq);
7929 if (idx >= ARRAY_SIZE(ar->survey)) {
7942 survey = &ar->survey[idx];
7951 spin_unlock_bh(&ar->data_lock);
7960 struct ath11k *ar;
7992 ar = ath11k_mac_get_ar_by_pdev_id(ab, bss_ch_info_ev.pdev_id);
7994 if (!ar) {
8001 spin_lock_bh(&ar->data_lock);
8002 idx = freq_to_idx(ar, bss_ch_info_ev.freq);
8003 if (idx >= ARRAY_SIZE(ar->survey)) {
8009 survey = &ar->survey[idx];
8022 spin_unlock_bh(&ar->data_lock);
8023 complete(&ar->bss_survey_done);
8032 struct ath11k *ar;
8045 ar = ath11k_mac_get_ar_by_vdev_id(ab, install_key_compl.vdev_id);
8046 if (!ar) {
8053 ar->install_key_status = 0;
8058 ar->install_key_status = install_key_compl.status;
8061 complete(&ar->install_key_done);
8130 struct ath11k *ar;
8142 ar = ath11k_mac_get_ar_by_vdev_id(ab, peer_assoc_conf.vdev_id);
8144 if (!ar) {
8151 complete(&ar->peer_assoc_done);
8158 struct ath11k *ar;
8174 ar = ath11k_mac_get_ar_by_pdev_id(ab, stats.pdev_id);
8175 if (!ar) {
8177 ath11k_warn(ab, "failed to get ar for pdev_id %d: %d\n",
8182 spin_lock_bh(&ar->data_lock);
8188 list_splice_tail_init(&stats.pdevs, &ar->fw_stats.pdevs);
8189 ar->fw_stats_done = true;
8197 ath11k_debugfs_fw_stats_process(ar, &stats);
8200 complete(&ar->fw_stats_complete);
8202 spin_unlock_bh(&ar->data_lock);
8319 struct ath11k *ar;
8345 ar = ath11k_mac_get_ar_by_pdev_id(ab, ev->pdev_id);
8347 if (!ar) {
8353 ath11k_dbg(ar->ab, ATH11K_DBG_REG, "DFS Radar Detected in pdev %d\n",
8356 if (ar->dfs_block_radar_events)
8359 ieee80211_radar_detected(ar->hw);
8371 struct ath11k *ar;
8395 ar = ath11k_mac_get_ar_by_pdev_id(ab, ev->pdev_id);
8396 if (!ar) {
8401 ath11k_thermal_event_temperature(ar, ev->temp);
8660 struct ath11k *ar;
8691 ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_id);
8692 if (!ar) {
8698 ath11k_p2p_noa_update_by_vdev_id(ar, vdev_id, noa);
8883 ath11k_wmi_send_unit_test_cmd(struct ath11k *ar,
8887 struct ath11k_pdev_wmi *wmi = ar->wmi;
8928 ath11k_warn(ar->ab, "failed to send WMI_UNIT_TEST CMD :%d\n",
8933 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
8941 int ath11k_wmi_simulate_radar(struct ath11k *ar)
8948 list_for_each_entry(arvif, &ar->arvifs, list) {
8959 dfs_args[DFS_TEST_PDEV_ID] = ar->pdev->pdev_id;
8971 ath11k_dbg(ar->ab, ATH11K_DBG_REG, "Triggering Radar Simulation\n");
8973 return ath11k_wmi_send_unit_test_cmd(ar, wmi_ut, dfs_args);
8976 int ath11k_wmi_fw_dbglog_cfg(struct ath11k *ar, u32 *module_id_bitmap,
8979 struct ath11k_pdev_wmi *wmi = ar->wmi;
9022 ath11k_warn(ar->ab,
9027 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd dbglog cfg");
9107 int ath11k_wmi_hw_data_filter_cmd(struct ath11k *ar, u32 vdev_id,
9115 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9133 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
9137 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_HW_DATA_FILTER_CMDID);
9140 int ath11k_wmi_wow_host_wakeup_ind(struct ath11k *ar)
9147 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9156 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv wow host wakeup ind\n");
9158 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID);
9161 int ath11k_wmi_wow_enable(struct ath11k *ar)
9168 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9178 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv wow enable\n");
9180 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_WOW_ENABLE_CMDID);
9183 int ath11k_wmi_scan_prob_req_oui(struct ath11k *ar,
9195 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9205 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "scan prob req oui %d\n",
9208 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_SCAN_PROB_REQ_OUI_CMDID);
9211 int ath11k_wmi_wow_add_wakeup_event(struct ath11k *ar, u32 vdev_id,
9220 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9232 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv wow add wakeup event %s enable %d vdev_id %d\n",
9235 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID);
9238 int ath11k_wmi_wow_add_pattern(struct ath11k *ar, u32 vdev_id, u32 pattern_id,
9258 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9337 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv wow add pattern vdev_id %d pattern_id %d pattern_offset %d\n",
9340 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_WOW_ADD_WAKE_PATTERN_CMDID);
9343 int ath11k_wmi_wow_del_pattern(struct ath11k *ar, u32 vdev_id, u32 pattern_id)
9350 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9363 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv wow del pattern vdev_id %d pattern_id %d\n",
9366 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_WOW_DEL_WAKE_PATTERN_CMDID);
9370 ath11k_wmi_op_gen_config_pno_start(struct ath11k *ar,
9397 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9476 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "tlv start pno config vdev_id %d\n",
9482 static struct sk_buff *ath11k_wmi_op_gen_config_pno_stop(struct ath11k *ar,
9490 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9501 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
9506 int ath11k_wmi_wow_config_pno(struct ath11k *ar, u32 vdev_id,
9512 skb = ath11k_wmi_op_gen_config_pno_start(ar, vdev_id, pno_scan);
9514 skb = ath11k_wmi_op_gen_config_pno_stop(ar, vdev_id);
9519 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID);
9522 static void ath11k_wmi_fill_ns_offload(struct ath11k *ar,
9578 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
9590 static void ath11k_wmi_fill_arp_offload(struct ath11k *ar,
9617 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "arp offload address %pI4",
9627 int ath11k_wmi_arp_ns_offload(struct ath11k *ar,
9653 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9669 ath11k_wmi_fill_ns_offload(ar, offload, &buf_ptr, enable, 0);
9670 ath11k_wmi_fill_arp_offload(ar, offload, &buf_ptr, enable);
9673 ath11k_wmi_fill_ns_offload(ar, offload, &buf_ptr, enable, 1);
9675 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_SET_ARP_NS_OFFLOAD_CMDID);
9678 int ath11k_wmi_gtk_rekey_offload(struct ath11k *ar,
9688 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9715 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "offload gtk rekey vdev: %d %d\n",
9717 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_GTK_OFFLOAD_CMDID);
9720 int ath11k_wmi_gtk_rekey_getinfo(struct ath11k *ar,
9728 skb = ath11k_wmi_alloc_skb(ar->wmi->wmi_ab, len);
9739 ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "get gtk rekey vdev_id: %d\n",
9741 return ath11k_wmi_cmd_send(ar->wmi, skb, WMI_GTK_OFFLOAD_CMDID);
9744 int ath11k_wmi_pdev_set_bios_sar_table_param(struct ath11k *ar, const u8 *sar_val)
9745 { struct ath11k_pdev_wmi *wmi = ar->wmi;
9765 cmd->pdev_id = ar->pdev->pdev_id;
9784 int ath11k_wmi_pdev_set_bios_geo_table_param(struct ath11k *ar)
9786 struct ath11k_pdev_wmi *wmi = ar->wmi;
9803 cmd->pdev_id = ar->pdev->pdev_id;
9814 int ath11k_wmi_sta_keepalive(struct ath11k *ar,
9817 struct ath11k_pdev_wmi *wmi = ar->wmi;
9849 ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
9856 bool ath11k_wmi_supports_6ghz_cc_ext(struct ath11k *ar)
9859 ar->ab->wmi_ab.svc_map) && ar->supports_6ghz;