Lines Matching full:ab

206 void ath12k_wmi_init_qcn9274(struct ath12k_base *ab,  in ath12k_wmi_init_qcn9274()  argument
209 config->num_vdevs = ab->num_radios * TARGET_NUM_VDEVS(ab); in ath12k_wmi_init_qcn9274()
210 config->num_peers = ab->num_radios * in ath12k_wmi_init_qcn9274()
211 ath12k_core_get_max_peers_per_radio(ab); in ath12k_wmi_init_qcn9274()
216 config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; in ath12k_wmi_init_qcn9274()
217 config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; in ath12k_wmi_init_qcn9274()
223 if (test_bit(ATH12K_FLAG_RAW_MODE, &ab->dev_flags)) in ath12k_wmi_init_qcn9274()
243 config->beacon_tx_offload_max_vdev = ab->num_radios * TARGET_MAX_BCN_OFFLD; in ath12k_wmi_init_qcn9274()
247 config->twt_ap_pdev_count = ab->num_radios; in ath12k_wmi_init_qcn9274()
249 config->ema_max_vap_cnt = ab->num_radios; in ath12k_wmi_init_qcn9274()
253 if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map)) in ath12k_wmi_init_qcn9274()
257 void ath12k_wmi_init_wcn7850(struct ath12k_base *ab, in ath12k_wmi_init_wcn7850() argument
268 config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; in ath12k_wmi_init_wcn7850()
269 config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; in ath12k_wmi_init_wcn7850()
318 ath12k_wmi_tlv_iter(struct ath12k_base *ab, const void *ptr, size_t len, in ath12k_wmi_tlv_iter() argument
319 int (*iter)(struct ath12k_base *ab, u16 tag, u16 len, in ath12k_wmi_tlv_iter() argument
330 ath12k_err(ab, "wmi tlv parse failure at byte %zd (%zu bytes left, %zu expected)\n", in ath12k_wmi_tlv_iter()
342 ath12k_err(ab, "wmi tlv parse failure of tag %u at byte %zd (%zu bytes left, %u expected)\n", in ath12k_wmi_tlv_iter()
350 …ath12k_err(ab, "wmi tlv parse failure of tag %u at byte %zd (%u bytes is less than min length %zu)… in ath12k_wmi_tlv_iter()
356 ret = iter(ab, tlv_tag, tlv_len, ptr, data); in ath12k_wmi_tlv_iter()
367 static int ath12k_wmi_tlv_iter_parse(struct ath12k_base *ab, u16 tag, u16 len, in ath12k_wmi_tlv_iter_parse() argument
386 ath12k_wmi_tlv_parse_alloc(struct ath12k_base *ab, in ath12k_wmi_tlv_parse_alloc() argument
396 ret = ath12k_wmi_tlv_parse(ab, tb, skb->data, skb->len); in ath12k_wmi_tlv_parse_alloc()
409 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_cmd_send_nowait() local
420 ret = ath12k_htc_send(&ab->htc, wmi->eid, skb); in ath12k_wmi_cmd_send_nowait()
443 if (ret && test_bit(ATH12K_FLAG_CRASH_FLUSH, &wmi_ab->ab->dev_flags)) in ath12k_wmi_cmd_send()
450 ath12k_warn(wmi_ab->ab, "wmi command %d timeout\n", cmd_id); in ath12k_wmi_cmd_send()
492 struct ath12k_base *ab = wmi_handle->wmi_ab->ab; in ath12k_pull_mac_phy_cap_svc_ready_ext() local
525 fw_pdev = &ab->fw_pdev[ab->fw_pdev_count]; in ath12k_pull_mac_phy_cap_svc_ready_ext()
529 ab->fw_pdev_count++; in ath12k_pull_mac_phy_cap_svc_ready_ext()
659 static int ath12k_pull_service_ready_tlv(struct ath12k_base *ab, in ath12k_pull_service_ready_tlv() argument
666 ath12k_err(ab, "%s: failed by NULL param\n", in ath12k_pull_service_ready_tlv()
709 static int ath12k_wmi_svc_rdy_parse(struct ath12k_base *ab, u16 tag, u16 len, in ath12k_wmi_svc_rdy_parse() argument
713 struct ath12k_wmi_pdev *wmi_handle = &ab->wmi_ab.wmi[0]; in ath12k_wmi_svc_rdy_parse()
718 if (ath12k_pull_service_ready_tlv(ab, ptr, &ab->target_caps)) in ath12k_wmi_svc_rdy_parse()
726 ath12k_warn(ab, "invalid len %d for the tag 0x%x\n", in ath12k_wmi_svc_rdy_parse()
743 static int ath12k_service_ready_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_service_ready_event() argument
748 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_service_ready_event()
752 ath12k_warn(ab, "failed to parse tlv %d\n", ret); in ath12k_service_ready_event()
762 struct ath12k_base *ab = ar->ab; in ath12k_wmi_mgmt_get_freq() local
765 if (ab->hw_params->single_pdev_only && in ath12k_wmi_mgmt_get_freq()
776 struct ath12k_base *ab = wmi_ab->ab; in ath12k_wmi_alloc_skb() local
779 skb = ath12k_htc_alloc_skb(ab, WMI_SKB_HEADROOM + round_len); in ath12k_wmi_alloc_skb()
785 ath12k_warn(ab, "unaligned WMI skb data\n"); in ath12k_wmi_alloc_skb()
805 struct ath12k_base *ab = ar->ab; in ath12k_wmi_mgmt_send() local
824 ab->hw_params->hw_ops->is_frame_link_agnostic && in ath12k_wmi_mgmt_send()
825 ab->hw_params->hw_ops->is_frame_link_agnostic(arvif, mgmt)) { in ath12k_wmi_mgmt_send()
879 ath12k_warn(ar->ab, in ath12k_wmi_mgmt_send()
909 ath12k_warn(ar->ab, "failed to send WMI_REQUEST_STATS cmd\n"); in ath12k_wmi_send_stats_request_cmd()
913 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_stats_request_cmd()
1003 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_create()
1010 ath12k_warn(ar->ab, in ath12k_wmi_vdev_create()
1034 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "WMI vdev delete id %d\n", vdev_id); in ath12k_wmi_vdev_delete()
1038 ath12k_warn(ar->ab, "failed to submit WMI_VDEV_DELETE_CMDID\n"); in ath12k_wmi_vdev_delete()
1062 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "WMI vdev stop id 0x%x\n", vdev_id); in ath12k_wmi_vdev_stop()
1066 ath12k_warn(ar->ab, "failed to submit WMI_VDEV_STOP cmd\n"); in ath12k_wmi_vdev_stop()
1090 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "WMI vdev down id 0x%x\n", vdev_id); in ath12k_wmi_vdev_down()
1094 ath12k_warn(ar->ab, "failed to submit WMI_VDEV_DOWN cmd\n"); in ath12k_wmi_vdev_down()
1255 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "vdev %d start ml flags 0x%x\n", in ath12k_wmi_vdev_start()
1279 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "partner vdev %d hw_link_id %d macaddr%pM\n", in ath12k_wmi_vdev_start()
1289 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "vdev %s id 0x%x freq 0x%x mode 0x%x\n", in ath12k_wmi_vdev_start()
1300 ath12k_warn(ar->ab, "failed to submit vdev_%s cmd\n", in ath12k_wmi_vdev_start()
1334 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_up()
1340 ath12k_warn(ar->ab, "failed to submit WMI_VDEV_UP cmd\n"); in ath12k_wmi_vdev_up()
1386 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_peer_create_cmd()
1392 ath12k_warn(ar->ab, "failed to submit WMI_PEER_CREATE cmd\n"); in ath12k_wmi_send_peer_create_cmd()
1418 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_peer_delete_cmd()
1424 ath12k_warn(ar->ab, "failed to send WMI_PEER_DELETE cmd\n"); in ath12k_wmi_send_peer_delete_cmd()
1455 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_pdev_set_regdomain()
1462 ath12k_warn(ar->ab, in ath12k_wmi_send_pdev_set_regdomain()
1490 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_set_peer_param()
1496 ath12k_warn(ar->ab, "failed to send WMI_PEER_SET_PARAM cmd\n"); in ath12k_wmi_set_peer_param()
1525 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_peer_flush_tids_cmd()
1531 ath12k_warn(ar->ab, in ath12k_wmi_send_peer_flush_tids_cmd()
1566 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_peer_rx_reorder_queue_setup()
1573 ath12k_warn(ar->ab, in ath12k_wmi_peer_rx_reorder_queue_setup()
1602 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_rx_reord_queue_remove()
1609 ath12k_warn(ar->ab, in ath12k_wmi_rx_reord_queue_remove()
1636 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_set_param()
1642 ath12k_warn(ar->ab, "failed to send WMI_PDEV_SET_PARAM cmd\n"); in ath12k_wmi_pdev_set_param()
1666 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_set_ps_mode()
1672 ath12k_warn(ar->ab, "failed to send WMI_PDEV_SET_PARAM cmd\n"); in ath12k_wmi_pdev_set_ps_mode()
1699 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_suspend()
1704 ath12k_warn(ar->ab, "failed to send WMI_PDEV_SUSPEND cmd\n"); in ath12k_wmi_pdev_suspend()
1728 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_resume()
1733 ath12k_warn(ar->ab, "failed to send WMI_PDEV_RESUME cmd\n"); in ath12k_wmi_pdev_resume()
1763 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_bss_chan_info_request()
1769 ath12k_warn(ar->ab, in ath12k_wmi_pdev_bss_chan_info_request()
1798 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_set_ap_ps_param_cmd()
1804 ath12k_warn(ar->ab, in ath12k_wmi_send_set_ap_ps_param_cmd()
1832 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_set_sta_ps_param()
1838 ath12k_warn(ar->ab, "failed to send WMI_STA_POWERSAVE_PARAM_CMDID"); in ath12k_wmi_set_sta_ps_param()
1868 ath12k_warn(ar->ab, "Failed to send WMI_FORCE_FW_HANG_CMDID"); in ath12k_wmi_force_fw_hang_cmd()
1894 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_set_param_cmd()
1900 ath12k_warn(ar->ab, in ath12k_wmi_vdev_set_param_cmd()
1924 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_pdev_temperature_cmd()
1929 ath12k_warn(ar->ab, "failed to send WMI_PDEV_GET_TEMPERATURE cmd\n"); in ath12k_wmi_send_pdev_temperature_cmd()
1955 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_bcn_offload_control_cmd()
1961 ath12k_warn(ar->ab, in ath12k_wmi_send_bcn_offload_control_cmd()
2004 ath12k_warn(ar->ab, "failed to send WMI_P2P_GO_SET_BEACON_IE\n"); in ath12k_wmi_p2p_go_bcn_ie()
2018 struct ath12k_base *ab = ar->ab; in ath12k_wmi_bcn_tmpl() local
2033 ath12k_warn(ab, in ath12k_wmi_bcn_tmpl()
2092 ath12k_warn(ab, "failed to send WMI_BCN_TMPL_CMDID\n"); in ath12k_wmi_bcn_tmpl()
2138 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_install_key()
2144 ath12k_warn(ar->ab, in ath12k_wmi_vdev_install_key()
2295 &ar->ab->dev_flags)); in ath12k_wmi_send_peer_assoc_cmd()
2442 …ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi peer %pM emlsr padding delay %u, trans delay %u trans time… in ath12k_wmi_send_peer_assoc_cmd()
2509 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_peer_assoc_cmd()
2527 ath12k_warn(ar->ab, in ath12k_wmi_send_peer_assoc_cmd()
2684 ath12k_warn(ar->ab, "discard large size %d bytes extraie for scan start\n", in ath12k_wmi_send_scan_start_cmd()
2819 ath12k_warn(ar->ab, "failed to send WMI_START_SCAN_CMDID\n"); in ath12k_wmi_send_scan_start_cmd()
2858 ath12k_warn(ar->ab, "invalid scan cancel req_type %d", in ath12k_wmi_send_scan_stop_cmd()
2867 ath12k_warn(ar->ab, "failed to send WMI_STOP_SCAN_CMDID\n"); in ath12k_wmi_send_scan_stop_cmd()
2911 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_scan_chan_list_cmd()
2971 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_scan_chan_list_cmd()
2982 ath12k_warn(ar->ab, "failed to send WMI_SCAN_CHAN_LIST cmd\n"); in ath12k_wmi_send_scan_chan_list_cmd()
3042 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_wmm_update_cmd()
3051 ath12k_warn(ar->ab, in ath12k_wmi_send_wmm_update_cmd()
3078 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_dfs_phyerr_offload_enable_cmd()
3084 ath12k_warn(ar->ab, in ath12k_wmi_send_dfs_phyerr_offload_enable_cmd()
3092 int ath12k_wmi_set_bios_cmd(struct ath12k_base *ab, u32 param_id, in ath12k_wmi_set_bios_cmd() argument
3095 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_set_bios_cmd()
3127 ath12k_warn(ab, in ath12k_wmi_set_bios_cmd()
3136 int ath12k_wmi_set_bios_sar_cmd(struct ath12k_base *ab, const u8 *psar_table) in ath12k_wmi_set_bios_sar_cmd() argument
3138 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_set_bios_sar_cmd()
3183 ath12k_warn(ab, in ath12k_wmi_set_bios_sar_cmd()
3192 int ath12k_wmi_set_bios_geo_cmd(struct ath12k_base *ab, const u8 *pgeo_table) in ath12k_wmi_set_bios_geo_cmd() argument
3194 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_set_bios_geo_cmd()
3226 ath12k_warn(ab, in ath12k_wmi_set_bios_geo_cmd()
3256 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_delba_send()
3263 ath12k_warn(ar->ab, in ath12k_wmi_delba_send()
3292 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_addba_set_resp()
3299 ath12k_warn(ar->ab, in ath12k_wmi_addba_set_resp()
3327 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_addba_send()
3334 ath12k_warn(ar->ab, in ath12k_wmi_addba_send()
3360 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_addba_clear_resp()
3367 ath12k_warn(ar->ab, in ath12k_wmi_addba_clear_resp()
3418 ath12k_warn(ar->ab, in ath12k_wmi_send_init_country_cmd()
3448 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_set_current_country_cmd()
3455 ath12k_warn(ar->ab, in ath12k_wmi_send_set_current_country_cmd()
3485 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_11d_scan_start_cmd()
3491 ath12k_warn(ar->ab, in ath12k_wmi_send_11d_scan_start_cmd()
3518 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_11d_scan_stop_cmd()
3523 ath12k_warn(ar->ab, in ath12k_wmi_send_11d_scan_stop_cmd()
3535 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_send_twt_enable_cmd() local
3578 ath12k_warn(ab, "Failed to send WMI_TWT_ENABLE_CMDID"); in ath12k_wmi_send_twt_enable_cmd()
3588 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_send_twt_disable_cmd() local
3607 ath12k_warn(ab, "Failed to send WMI_TWT_DISABLE_CMDID"); in ath12k_wmi_send_twt_disable_cmd()
3618 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_send_obss_spr_cmd() local
3640 ath12k_warn(ab, in ath12k_wmi_send_obss_spr_cmd()
3652 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_obss_color_cfg_cmd() local
3675 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_obss_color_cfg_cmd()
3683 ath12k_warn(ab, "Failed to send WMI_OBSS_COLOR_COLLISION_DET_CONFIG_CMDID"); in ath12k_wmi_obss_color_cfg_cmd()
3693 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_wmi_send_bss_color_change_enable_cmd() local
3710 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_bss_color_change_enable_cmd()
3717 ath12k_warn(ab, "Failed to send WMI_BSS_COLOR_CHANGE_ENABLE_CMDID"); in ath12k_wmi_send_bss_color_change_enable_cmd()
3736 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_fils_discovery_tmpl()
3756 ath12k_warn(ar->ab, in ath12k_wmi_fils_discovery_tmpl()
3775 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_probe_resp_tmpl()
3807 ath12k_warn(ar->ab, in ath12k_wmi_probe_resp_tmpl()
3822 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_fils_discovery()
3842 ath12k_warn(ar->ab, in ath12k_wmi_fils_discovery()
3883 ath12k_wmi_copy_resource_config(struct ath12k_base *ab, in ath12k_wmi_copy_resource_config() argument
3952 if (ab->hw_params->reoq_lut_support) in ath12k_wmi_copy_resource_config()
3963 struct ath12k_base *ab = wmi->wmi_ab->ab; in ath12k_init_cmd_send() local
3995 ath12k_wmi_copy_resource_config(ab, cfg, &arg->res_cfg); in ath12k_init_cmd_send()
4013 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_init_cmd_send()
4061 ath12k_warn(ab, "failed to send WMI_INIT_CMDID\n"); in ath12k_init_cmd_send()
4088 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_lro_cfg()
4093 ath12k_warn(ar->ab, in ath12k_wmi_pdev_lro_cfg()
4104 int ath12k_wmi_wait_for_service_ready(struct ath12k_base *ab) in ath12k_wmi_wait_for_service_ready() argument
4108 time_left = wait_for_completion_timeout(&ab->wmi_ab.service_ready, in ath12k_wmi_wait_for_service_ready()
4116 int ath12k_wmi_wait_for_unified_ready(struct ath12k_base *ab) in ath12k_wmi_wait_for_unified_ready() argument
4120 time_left = wait_for_completion_timeout(&ab->wmi_ab.unified_ready, in ath12k_wmi_wait_for_unified_ready()
4128 int ath12k_wmi_set_hw_mode(struct ath12k_base *ab, in ath12k_wmi_set_hw_mode() argument
4133 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_set_hw_mode()
4153 ath12k_warn(ab, "failed to send WMI_PDEV_SET_HW_MODE_CMDID\n"); in ath12k_wmi_set_hw_mode()
4160 int ath12k_wmi_cmd_init(struct ath12k_base *ab) in ath12k_wmi_cmd_init() argument
4162 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_cmd_init()
4166 ab->wmi_ab.svc_map)) in ath12k_wmi_cmd_init()
4169 ab->hw_params->wmi_init(ab, &arg.res_cfg); in ath12k_wmi_cmd_init()
4170 ab->wow.wmi_conf_rx_decap_mode = arg.res_cfg.rx_decap_mode; in ath12k_wmi_cmd_init()
4176 if (ab->hw_params->single_pdev_only) in ath12k_wmi_cmd_init()
4179 arg.num_band_to_mac = ab->num_radios; in ath12k_wmi_cmd_init()
4180 ath12k_fill_band_to_mac_param(ab, arg.band_to_mac); in ath12k_wmi_cmd_init()
4182 ab->dp.peer_metadata_ver = arg.res_cfg.peer_metadata_ver; in ath12k_wmi_cmd_init()
4221 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_spectral_conf()
4228 ath12k_warn(ar->ab, in ath12k_wmi_vdev_spectral_conf()
4258 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_vdev_spectral_enable()
4265 ath12k_warn(ar->ab, in ath12k_wmi_vdev_spectral_enable()
4304 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_dma_ring_cfg()
4311 ath12k_warn(ar->ab, in ath12k_wmi_pdev_dma_ring_cfg()
4355 static int ath12k_wmi_dma_buf_parse(struct ath12k_base *ab, in ath12k_wmi_dma_buf_parse() argument
4376 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_dma_buf_parse()
4380 ath12k_warn(ab, "failed to parse dma buf entry tlv %d\n", in ath12k_wmi_dma_buf_parse()
4390 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_dma_buf_parse()
4394 ath12k_warn(ab, "failed to parse dma buf meta tlv %d\n", in ath12k_wmi_dma_buf_parse()
4408 static void ath12k_wmi_pdev_dma_ring_buf_release_event(struct ath12k_base *ab, in ath12k_wmi_pdev_dma_ring_buf_release_event() argument
4415 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_wmi_pdev_dma_ring_buf_release_event()
4419 ath12k_warn(ab, "failed to parse dma buf release tlv %d\n", ret); in ath12k_wmi_pdev_dma_ring_buf_release_event()
4429 ret = ath12k_dbring_buffer_release_event(ab, &param); in ath12k_wmi_pdev_dma_ring_buf_release_event()
4431 ath12k_warn(ab, "failed to handle dma buf release event %d\n", ret); in ath12k_wmi_pdev_dma_ring_buf_release_event()
4651 static int ath12k_wmi_alloc_dbring_caps(struct ath12k_base *ab, in ath12k_wmi_alloc_dbring_caps() argument
4662 ab->db_caps = ptr; in ath12k_wmi_alloc_dbring_caps()
4663 ab->num_db_cap = num_cap; in ath12k_wmi_alloc_dbring_caps()
4668 static void ath12k_wmi_free_dbring_caps(struct ath12k_base *ab) in ath12k_wmi_free_dbring_caps() argument
4670 kfree(ab->db_caps); in ath12k_wmi_free_dbring_caps()
4671 ab->db_caps = NULL; in ath12k_wmi_free_dbring_caps()
4672 ab->num_db_cap = 0; in ath12k_wmi_free_dbring_caps()
4675 static int ath12k_wmi_dma_ring_caps(struct ath12k_base *ab, in ath12k_wmi_dma_ring_caps() argument
4686 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_dma_ring_caps()
4690 ath12k_warn(ab, "failed to parse dma ring caps tlv %d\n", ret); in ath12k_wmi_dma_ring_caps()
4697 if (ab->num_db_cap) { in ath12k_wmi_dma_ring_caps()
4698 ath12k_warn(ab, "Already processed, so ignoring dma ring caps\n"); in ath12k_wmi_dma_ring_caps()
4702 ret = ath12k_wmi_alloc_dbring_caps(ab, dma_caps_parse->n_dma_ring_caps); in ath12k_wmi_dma_ring_caps()
4706 dir_buff_caps = ab->db_caps; in ath12k_wmi_dma_ring_caps()
4709 ath12k_warn(ab, "Invalid module id %d\n", in ath12k_wmi_dma_ring_caps()
4726 ath12k_wmi_free_dbring_caps(ab); in ath12k_wmi_dma_ring_caps()
4731 ath12k_wmi_save_mac_phy_info(struct ath12k_base *ab, in ath12k_wmi_save_mac_phy_info() argument
4748 ath12k_wmi_save_all_mac_phy_info(struct ath12k_base *ab, in ath12k_wmi_save_all_mac_phy_info() argument
4751 struct ath12k_svc_ext_info *svc_ext_info = &ab->wmi_ab.svc_ext_info; in ath12k_wmi_save_all_mac_phy_info()
4767 ath12k_wmi_save_mac_phy_info(ab, mac_phy_cap, mac_phy_info); in ath12k_wmi_save_all_mac_phy_info()
4771 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_save_all_mac_phy_info()
4789 static int ath12k_wmi_svc_rdy_ext_parse(struct ath12k_base *ab, in ath12k_wmi_svc_rdy_ext_parse() argument
4793 struct ath12k_wmi_pdev *wmi_handle = &ab->wmi_ab.wmi[0]; in ath12k_wmi_svc_rdy_ext_parse()
4802 ath12k_warn(ab, "unable to extract ext params\n"); in ath12k_wmi_svc_rdy_ext_parse()
4814 ret = ath12k_wmi_ext_soc_hal_reg_caps_parse(ab, len, ptr, in ath12k_wmi_svc_rdy_ext_parse()
4822 ret = ath12k_wmi_hw_mode_caps(ab, len, ptr, svc_rdy_ext); in ath12k_wmi_svc_rdy_ext_parse()
4829 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_svc_rdy_ext_parse()
4833 ath12k_warn(ab, "failed to parse tlv %d\n", ret); in ath12k_wmi_svc_rdy_ext_parse()
4837 ath12k_wmi_save_all_mac_phy_info(ab, svc_rdy_ext); in ath12k_wmi_svc_rdy_ext_parse()
4841 ret = ath12k_wmi_ext_hal_reg_caps(ab, len, ptr, svc_rdy_ext); in ath12k_wmi_svc_rdy_ext_parse()
4853 ret = ath12k_wmi_dma_ring_caps(ab, len, ptr, in ath12k_wmi_svc_rdy_ext_parse()
4868 static int ath12k_service_ready_ext_event(struct ath12k_base *ab, in ath12k_service_ready_ext_event() argument
4874 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_service_ready_ext_event()
4878 ath12k_warn(ab, "failed to parse tlv %d\n", ret); in ath12k_service_ready_ext_event()
4882 if (!test_bit(WMI_TLV_SERVICE_EXT2_MSG, ab->wmi_ab.svc_map)) in ath12k_service_ready_ext_event()
4883 complete(&ab->wmi_ab.service_ready); in ath12k_service_ready_ext_event()
4890 ath12k_wmi_free_dbring_caps(ab); in ath12k_service_ready_ext_event()
4955 ath12k_wmi_tlv_mac_phy_caps_ext_parse(struct ath12k_base *ab, in ath12k_wmi_tlv_mac_phy_caps_ext_parse() argument
4963 if (ab->hw_params->single_pdev_only) { in ath12k_wmi_tlv_mac_phy_caps_ext_parse()
4972 for (i = 0; i < ab->fw_pdev_count; i++) { in ath12k_wmi_tlv_mac_phy_caps_ext_parse()
4973 struct ath12k_fw_pdev *fw_pdev = &ab->fw_pdev[i]; in ath12k_wmi_tlv_mac_phy_caps_ext_parse()
4982 if (i == ab->fw_pdev_count) in ath12k_wmi_tlv_mac_phy_caps_ext_parse()
5019 static int ath12k_wmi_tlv_mac_phy_caps_ext(struct ath12k_base *ab, u16 tag, in ath12k_wmi_tlv_mac_phy_caps_ext() argument
5029 if (ab->hw_params->single_pdev_only) { in ath12k_wmi_tlv_mac_phy_caps_ext()
5030 if (ab->wmi_ab.preferred_hw_mode != le32_to_cpu(caps->hw_mode_id) && in ath12k_wmi_tlv_mac_phy_caps_ext()
5034 for (i = 0; i < ab->num_radios; i++) { in ath12k_wmi_tlv_mac_phy_caps_ext()
5035 if (ab->pdevs[i].pdev_id == in ath12k_wmi_tlv_mac_phy_caps_ext()
5040 if (i == ab->num_radios) in ath12k_wmi_tlv_mac_phy_caps_ext()
5044 ret = ath12k_wmi_tlv_mac_phy_caps_ext_parse(ab, caps, &ab->pdevs[i]); in ath12k_wmi_tlv_mac_phy_caps_ext()
5046 ath12k_warn(ab, in ath12k_wmi_tlv_mac_phy_caps_ext()
5048 ret, ab->pdevs[i].pdev_id); in ath12k_wmi_tlv_mac_phy_caps_ext()
5056 ath12k_wmi_update_freq_info(struct ath12k_base *ab, in ath12k_wmi_update_freq_info() argument
5061 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_update_freq_info()
5090 ath12k_wmi_all_phy_range_updated(struct ath12k_base *ab, in ath12k_wmi_all_phy_range_updated() argument
5093 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_all_phy_range_updated()
5107 static void ath12k_wmi_update_dbs_freq_info(struct ath12k_base *ab) in ath12k_wmi_update_dbs_freq_info() argument
5109 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_update_dbs_freq_info()
5154 ath12k_wmi_fill_upper_share_sbs_freq(struct ath12k_base *ab, in ath12k_wmi_fill_upper_share_sbs_freq() argument
5158 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_fill_upper_share_sbs_freq()
5185 ath12k_wmi_fill_lower_share_sbs_freq(struct ath12k_base *ab, in ath12k_wmi_fill_lower_share_sbs_freq() argument
5189 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_fill_lower_share_sbs_freq()
5232 ath12k_wmi_dump_freq_range_per_mac(struct ath12k_base *ab, in ath12k_wmi_dump_freq_range_per_mac() argument
5240 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_dump_freq_range_per_mac()
5250 static void ath12k_wmi_dump_freq_range(struct ath12k_base *ab) in ath12k_wmi_dump_freq_range() argument
5256 freq_range = ab->wmi_ab.hw_mode_info.freq_range_caps[i]; in ath12k_wmi_dump_freq_range()
5257 ath12k_wmi_dump_freq_range_per_mac(ab, freq_range, i); in ath12k_wmi_dump_freq_range()
5261 static int ath12k_wmi_modify_sbs_freq(struct ath12k_base *ab, u8 phy_id) in ath12k_wmi_modify_sbs_freq() argument
5263 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_modify_sbs_freq()
5277 ath12k_err(ab, "Invalid DBS/SBS mode with only 2.4Ghz"); in ath12k_wmi_modify_sbs_freq()
5278 ath12k_wmi_dump_freq_range_per_mac(ab, sbs_mac_range, ATH12K_HW_MODE_SBS); in ath12k_wmi_modify_sbs_freq()
5291 ath12k_dbg(ab, ATH12K_DBG_WMI, "high 5 GHz shared"); in ath12k_wmi_modify_sbs_freq()
5304 ath12k_dbg(ab, ATH12K_DBG_WMI, "low 5 GHz shared"); in ath12k_wmi_modify_sbs_freq()
5316 ath12k_warn(ab, "invalid SBS range with all 5 GHz shared"); in ath12k_wmi_modify_sbs_freq()
5323 static void ath12k_wmi_update_sbs_freq_info(struct ath12k_base *ab) in ath12k_wmi_update_sbs_freq_info() argument
5325 struct ath12k_hw_mode_info *hw_mode_info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_update_sbs_freq_info()
5336 sbs_range_sep = ab->wmi_ab.sbs_lower_band_end_freq; in ath12k_wmi_update_sbs_freq_info()
5338 ath12k_wmi_fill_upper_share_sbs_freq(ab, sbs_range_sep, in ath12k_wmi_update_sbs_freq_info()
5340 ath12k_wmi_fill_lower_share_sbs_freq(ab, sbs_range_sep, in ath12k_wmi_update_sbs_freq_info()
5354 ret = ath12k_wmi_modify_sbs_freq(ab, phy_id); in ath12k_wmi_update_sbs_freq_info()
5363 ath12k_wmi_update_mac_freq_info(struct ath12k_base *ab, in ath12k_wmi_update_mac_freq_info() argument
5369 ath12k_err(ab, "mac more than two not supported: %d", phy_id); in ath12k_wmi_update_mac_freq_info()
5373 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_update_mac_freq_info()
5376 ab->wmi_ab.sbs_lower_band_end_freq, in ath12k_wmi_update_mac_freq_info()
5385 ath12k_dbg(ab, ATH12K_DBG_WMI, "mac phy 1 is not supported"); in ath12k_wmi_update_mac_freq_info()
5388 ath12k_wmi_update_freq_info(ab, mac_cap, ATH12K_HW_MODE_SMM, phy_id); in ath12k_wmi_update_mac_freq_info()
5392 if (!ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_DBS)) in ath12k_wmi_update_mac_freq_info()
5393 ath12k_wmi_update_freq_info(ab, mac_cap, in ath12k_wmi_update_mac_freq_info()
5398 ath12k_wmi_update_freq_info(ab, mac_cap, ATH12K_HW_MODE_DBS, phy_id); in ath12k_wmi_update_mac_freq_info()
5399 if (ab->wmi_ab.sbs_lower_band_end_freq || in ath12k_wmi_update_mac_freq_info()
5402 ath12k_wmi_update_freq_info(ab, mac_cap, ATH12K_HW_MODE_SBS, in ath12k_wmi_update_mac_freq_info()
5405 if (ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_DBS)) in ath12k_wmi_update_mac_freq_info()
5406 ath12k_wmi_update_dbs_freq_info(ab); in ath12k_wmi_update_mac_freq_info()
5407 if (ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_SBS)) in ath12k_wmi_update_mac_freq_info()
5408 ath12k_wmi_update_sbs_freq_info(ab); in ath12k_wmi_update_mac_freq_info()
5412 ath12k_wmi_update_freq_info(ab, mac_cap, ATH12K_HW_MODE_SBS, phy_id); in ath12k_wmi_update_mac_freq_info()
5413 if (ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_SBS)) in ath12k_wmi_update_mac_freq_info()
5414 ath12k_wmi_update_sbs_freq_info(ab); in ath12k_wmi_update_mac_freq_info()
5422 static bool ath12k_wmi_sbs_range_present(struct ath12k_base *ab) in ath12k_wmi_sbs_range_present() argument
5424 if (ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_SBS) || in ath12k_wmi_sbs_range_present()
5425 (ab->wmi_ab.sbs_lower_band_end_freq && in ath12k_wmi_sbs_range_present()
5426 ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_SBS_LOWER_SHARE) && in ath12k_wmi_sbs_range_present()
5427 ath12k_wmi_all_phy_range_updated(ab, ATH12K_HW_MODE_SBS_UPPER_SHARE))) in ath12k_wmi_sbs_range_present()
5433 static int ath12k_wmi_update_hw_mode_list(struct ath12k_base *ab) in ath12k_wmi_update_hw_mode_list() argument
5435 struct ath12k_svc_ext_info *svc_ext_info = &ab->wmi_ab.svc_ext_info; in ath12k_wmi_update_hw_mode_list()
5436 struct ath12k_hw_mode_info *info = &ab->wmi_ab.hw_mode_info; in ath12k_wmi_update_hw_mode_list()
5443 ath12k_err(ab, "invalid number of hw modes"); in ath12k_wmi_update_hw_mode_list()
5447 ath12k_dbg(ab, ATH12K_DBG_WMI, "updated HW mode list: num modes %d", in ath12k_wmi_update_hw_mode_list()
5459 ath12k_wmi_update_mac_freq_info(ab, hw_config_type, tmp->phy_id, tmp); in ath12k_wmi_update_hw_mode_list()
5470 ath12k_wmi_update_mac_freq_info(ab, hw_config_type, in ath12k_wmi_update_hw_mode_list()
5477 if (ath12k_wmi_sbs_range_present(ab) && in ath12k_wmi_update_hw_mode_list()
5488 ath12k_wmi_dump_freq_range(ab); in ath12k_wmi_update_hw_mode_list()
5493 static int ath12k_wmi_svc_rdy_ext2_parse(struct ath12k_base *ab, in ath12k_wmi_svc_rdy_ext2_parse() argument
5498 struct ath12k_wmi_pdev *wmi_handle = &ab->wmi_ab.wmi[0]; in ath12k_wmi_svc_rdy_ext2_parse()
5507 ath12k_warn(ab, in ath12k_wmi_svc_rdy_ext2_parse()
5516 ret = ath12k_wmi_dma_ring_caps(ab, len, ptr, in ath12k_wmi_svc_rdy_ext2_parse()
5529 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_svc_rdy_ext2_parse()
5533 ath12k_warn(ab, "failed to parse extended MAC PHY capabilities WMI TLV: %d\n", in ath12k_wmi_svc_rdy_ext2_parse()
5549 ab->wmi_ab.sbs_lower_band_end_freq = in ath12k_wmi_svc_rdy_ext2_parse()
5552 ath12k_dbg(ab, ATH12K_DBG_WMI, "sbs_lower_band_end_freq %u\n", in ath12k_wmi_svc_rdy_ext2_parse()
5553 ab->wmi_ab.sbs_lower_band_end_freq); in ath12k_wmi_svc_rdy_ext2_parse()
5555 ret = ath12k_wmi_update_hw_mode_list(ab); in ath12k_wmi_svc_rdy_ext2_parse()
5557 ath12k_warn(ab, "failed to update hw mode list: %d\n", in ath12k_wmi_svc_rdy_ext2_parse()
5573 static int ath12k_service_ready_ext2_event(struct ath12k_base *ab, in ath12k_service_ready_ext2_event() argument
5579 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_service_ready_ext2_event()
5583 ath12k_warn(ab, "failed to parse ext2 event tlv %d\n", ret); in ath12k_service_ready_ext2_event()
5587 complete(&ab->wmi_ab.service_ready); in ath12k_service_ready_ext2_event()
5592 ath12k_wmi_free_dbring_caps(ab); in ath12k_service_ready_ext2_event()
5596 static int ath12k_pull_vdev_start_resp_tlv(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_vdev_start_resp_tlv() argument
5603 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_vdev_start_resp_tlv()
5606 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_vdev_start_resp_tlv()
5612 ath12k_warn(ab, "failed to fetch vdev start resp ev"); in ath12k_pull_vdev_start_resp_tlv()
5682 static int ath12k_pull_reg_chan_list_ext_update_ev(struct ath12k_base *ab, in ath12k_pull_reg_chan_list_ext_update_ev() argument
5696 ath12k_dbg(ab, ATH12K_DBG_WMI, "processing regulatory ext channel list\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5698 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_reg_chan_list_ext_update_ev()
5701 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_reg_chan_list_ext_update_ev()
5707 ath12k_warn(ab, "failed to fetch reg chan list ext update ev\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5736 …ath12k_warn(ab, "Num reg rules for 2G/5G exceeds max limit (num_2g_reg_rules: %d num_5g_reg_rules:… in ath12k_pull_reg_chan_list_ext_update_ev()
5746 …ath12k_warn(ab, "Num 6G reg rules for AP mode(%d) exceeds max limit (num_6g_reg_rules_ap: %d, max_… in ath12k_pull_reg_chan_list_ext_update_ev()
5771 ath12k_warn(ab, "Num 6g client reg rules exceeds max limit, for client(type: %d)\n", in ath12k_pull_reg_chan_list_ext_update_ev()
5779 ath12k_warn(ab, "No reg rules available\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5842 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5849 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5853 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5859 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5865 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5883 ath12k_warn(ab, "Unable to Allocate memory for 2g rules\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5901 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pull_reg_chan_list_ext_update_ev()
5917 ath12k_warn(ab, "Unable to Allocate memory for 5g rules\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5936 ath12k_warn(ab, "Unable to Allocate memory for 6g ap rules\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5951 ath12k_warn(ab, "Unable to Allocate memory for 6g client rules\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5980 ath12k_dbg(ab, ATH12K_DBG_WMI, "6g client_type: %d domain_code_6g_super_id: %d", in ath12k_pull_reg_chan_list_ext_update_ev()
5983 ath12k_dbg(ab, ATH12K_DBG_WMI, "processed regulatory ext channel list\n"); in ath12k_pull_reg_chan_list_ext_update_ev()
5989 static int ath12k_pull_peer_del_resp_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_peer_del_resp_ev() argument
5996 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_peer_del_resp_ev()
5999 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_peer_del_resp_ev()
6005 ath12k_warn(ab, "failed to fetch peer delete resp ev"); in ath12k_pull_peer_del_resp_ev()
6020 static int ath12k_pull_vdev_del_resp_ev(struct ath12k_base *ab, in ath12k_pull_vdev_del_resp_ev() argument
6028 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_vdev_del_resp_ev()
6031 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_vdev_del_resp_ev()
6037 ath12k_warn(ab, "failed to fetch vdev delete resp ev"); in ath12k_pull_vdev_del_resp_ev()
6048 static int ath12k_pull_bcn_tx_status_ev(struct ath12k_base *ab, in ath12k_pull_bcn_tx_status_ev() argument
6056 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_bcn_tx_status_ev()
6059 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_bcn_tx_status_ev()
6065 ath12k_warn(ab, "failed to fetch bcn tx status ev"); in ath12k_pull_bcn_tx_status_ev()
6077 static int ath12k_pull_vdev_stopped_param_tlv(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_vdev_stopped_param_tlv() argument
6084 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_vdev_stopped_param_tlv()
6087 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_vdev_stopped_param_tlv()
6093 ath12k_warn(ab, "failed to fetch vdev stop ev"); in ath12k_pull_vdev_stopped_param_tlv()
6104 static int ath12k_wmi_tlv_mgmt_rx_parse(struct ath12k_base *ab, in ath12k_wmi_tlv_mgmt_rx_parse() argument
6124 static int ath12k_pull_mgmt_rx_params_tlv(struct ath12k_base *ab, in ath12k_pull_mgmt_rx_params_tlv() argument
6133 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_pull_mgmt_rx_params_tlv()
6137 ath12k_warn(ab, "failed to parse mgmt rx tlv %d\n", ret); in ath12k_pull_mgmt_rx_params_tlv()
6145 ath12k_warn(ab, "failed to fetch mgmt rx hdr"); in ath12k_pull_mgmt_rx_params_tlv()
6165 ath12k_warn(ab, "invalid length in mgmt rx hdr ev"); in ath12k_pull_mgmt_rx_params_tlv()
6190 ath12k_warn(ar->ab, "received mgmt tx compl for invalid msdu_id: %d\n", in wmi_process_mgmt_tx_comp()
6200 dma_unmap_single(ar->ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE); in wmi_process_mgmt_tx_comp()
6231 static int ath12k_pull_mgmt_tx_compl_param_tlv(struct ath12k_base *ab, in ath12k_pull_mgmt_tx_compl_param_tlv() argument
6239 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_mgmt_tx_compl_param_tlv()
6242 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_mgmt_tx_compl_param_tlv()
6248 ath12k_warn(ab, "failed to fetch mgmt tx compl ev"); in ath12k_pull_mgmt_tx_compl_param_tlv()
6271 ath12k_warn(ar->ab, "received scan started event in an invalid scan state: %s (%d)\n", in ath12k_wmi_event_scan_started()
6294 ath12k_warn(ar->ab, "received scan start failed event in an invalid scan state: %s (%d)\n", in ath12k_wmi_event_scan_start_failed()
6320 ath12k_warn(ar->ab, "received scan completed event in an invalid scan state: %s (%d)\n", in ath12k_wmi_event_scan_completed()
6338 ath12k_warn(ar->ab, "received scan bss chan event in an invalid scan state: %s (%d)\n", in ath12k_wmi_event_scan_bss_chan()
6358 ath12k_warn(ar->ab, "received scan foreign chan event in an invalid scan state: %s (%d)\n", in ath12k_wmi_event_scan_foreign_chan()
6415 static int ath12k_pull_scan_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_scan_ev() argument
6422 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_scan_ev()
6425 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_scan_ev()
6431 ath12k_warn(ab, "failed to fetch scan ev"); in ath12k_pull_scan_ev()
6448 static int ath12k_pull_peer_sta_kickout_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_peer_sta_kickout_ev() argument
6455 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_peer_sta_kickout_ev()
6458 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_peer_sta_kickout_ev()
6464 ath12k_warn(ab, "failed to fetch peer sta kickout ev"); in ath12k_pull_peer_sta_kickout_ev()
6477 static int ath12k_pull_roam_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_roam_ev() argument
6484 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_roam_ev()
6487 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_roam_ev()
6493 ath12k_warn(ab, "failed to fetch roam ev"); in ath12k_pull_roam_ev()
6536 static int ath12k_pull_chan_info_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_chan_info_ev() argument
6543 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_chan_info_ev()
6546 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_chan_info_ev()
6552 ath12k_warn(ab, "failed to fetch chan info ev"); in ath12k_pull_chan_info_ev()
6575 ath12k_pull_pdev_bss_chan_info_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_pdev_bss_chan_info_ev() argument
6582 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_pdev_bss_chan_info_ev()
6585 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_pdev_bss_chan_info_ev()
6591 ath12k_warn(ab, "failed to fetch pdev bss chan info ev"); in ath12k_pull_pdev_bss_chan_info_ev()
6615 ath12k_pull_vdev_install_key_compl_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_vdev_install_key_compl_ev() argument
6622 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_vdev_install_key_compl_ev()
6625 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_vdev_install_key_compl_ev()
6631 ath12k_warn(ab, "failed to fetch vdev install key compl ev"); in ath12k_pull_vdev_install_key_compl_ev()
6646 static int ath12k_pull_peer_assoc_conf_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_peer_assoc_conf_ev() argument
6653 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_peer_assoc_conf_ev()
6656 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_peer_assoc_conf_ev()
6662 ath12k_warn(ab, "failed to fetch peer assoc conf ev"); in ath12k_pull_peer_assoc_conf_ev()
6675 ath12k_pull_pdev_temp_ev(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_pull_pdev_temp_ev() argument
6681 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pull_pdev_temp_ev()
6684 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pull_pdev_temp_ev()
6690 ath12k_warn(ab, "failed to fetch pdev temp ev"); in ath12k_pull_pdev_temp_ev()
6699 static void ath12k_wmi_op_ep_tx_credits(struct ath12k_base *ab) in ath12k_wmi_op_ep_tx_credits() argument
6702 wake_up(&ab->wmi_ab.tx_credits_wq); in ath12k_wmi_op_ep_tx_credits()
6705 static int ath12k_reg_11d_new_cc_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_reg_11d_new_cc_event() argument
6713 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_reg_11d_new_cc_event()
6716 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_reg_11d_new_cc_event()
6723 ath12k_warn(ab, "failed to fetch 11d new cc ev"); in ath12k_reg_11d_new_cc_event()
6727 spin_lock_bh(&ab->base_lock); in ath12k_reg_11d_new_cc_event()
6728 memcpy(&ab->new_alpha2, &ev->new_alpha2, REG_ALPHA2_LEN); in ath12k_reg_11d_new_cc_event()
6729 spin_unlock_bh(&ab->base_lock); in ath12k_reg_11d_new_cc_event()
6731 ath12k_dbg(ab, ATH12K_DBG_WMI, "wmi 11d new cc %c%c\n", in ath12k_reg_11d_new_cc_event()
6732 ab->new_alpha2[0], in ath12k_reg_11d_new_cc_event()
6733 ab->new_alpha2[1]); in ath12k_reg_11d_new_cc_event()
6737 for (i = 0; i < ab->num_radios; i++) { in ath12k_reg_11d_new_cc_event()
6738 pdev = &ab->pdevs[i]; in ath12k_reg_11d_new_cc_event()
6745 queue_work(ab->workqueue, &ab->update_11d_work); in ath12k_reg_11d_new_cc_event()
6750 static void ath12k_wmi_htc_tx_complete(struct ath12k_base *ab, in ath12k_wmi_htc_tx_complete() argument
6756 static int ath12k_reg_chan_list_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_reg_chan_list_event() argument
6769 ret = ath12k_pull_reg_chan_list_ext_update_ev(ab, skb, reg_info); in ath12k_reg_chan_list_event()
6771 ath12k_warn(ab, "failed to extract regulatory info from received event\n"); in ath12k_reg_chan_list_event()
6775 ret = ath12k_reg_validate_reg_info(ab, reg_info); in ath12k_reg_chan_list_event()
6777 ath12k_warn(ab, "failed to validate reg info %d\n", ret); in ath12k_reg_chan_list_event()
6792 if (ab->reg_info[pdev_idx]) { in ath12k_reg_chan_list_event()
6793 ath12k_reg_reset_reg_info(ab->reg_info[pdev_idx]); in ath12k_reg_chan_list_event()
6794 kfree(ab->reg_info[pdev_idx]); in ath12k_reg_chan_list_event()
6799 ab->reg_info[pdev_idx] = reg_info; in ath12k_reg_chan_list_event()
6801 ret = ath12k_reg_handle_chan_list(ab, reg_info, WMI_VDEV_TYPE_UNSPEC, in ath12k_reg_chan_list_event()
6804 ath12k_warn(ab, "failed to handle chan list %d\n", ret); in ath12k_reg_chan_list_event()
6831 ar = ab->pdevs[pdev_idx].ar; in ath12k_reg_chan_list_event()
6844 static int ath12k_wmi_rdy_parse(struct ath12k_base *ab, u16 tag, u16 len, in ath12k_wmi_rdy_parse() argument
6859 ab->wlan_init_status = le32_to_cpu(fixed_param.ready_event_min.status); in ath12k_wmi_rdy_parse()
6863 ether_addr_copy(ab->mac_addr, in ath12k_wmi_rdy_parse()
6865 ab->pktlog_defs_checksum = le32_to_cpu(fixed_param.pktlog_defs_checksum); in ath12k_wmi_rdy_parse()
6866 ab->wmi_ready = true; in ath12k_wmi_rdy_parse()
6872 if (!(ab->num_radios > 1 && num_mac_addr >= ab->num_radios)) in ath12k_wmi_rdy_parse()
6875 for (i = 0; i < ab->num_radios; i++) { in ath12k_wmi_rdy_parse()
6876 pdev = &ab->pdevs[i]; in ath12k_wmi_rdy_parse()
6879 ab->pdevs_macaddr_valid = true; in ath12k_wmi_rdy_parse()
6888 static int ath12k_ready_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_ready_event() argument
6893 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_ready_event()
6896 ath12k_warn(ab, "failed to parse tlv %d\n", ret); in ath12k_ready_event()
6900 complete(&ab->wmi_ab.unified_ready); in ath12k_ready_event()
6904 static void ath12k_peer_delete_resp_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_peer_delete_resp_event() argument
6909 if (ath12k_pull_peer_del_resp_ev(ab, skb, &peer_del_resp) != 0) { in ath12k_peer_delete_resp_event()
6910 ath12k_warn(ab, "failed to extract peer delete resp"); in ath12k_peer_delete_resp_event()
6915 ar = ath12k_mac_get_ar_by_vdev_id(ab, le32_to_cpu(peer_del_resp.vdev_id)); in ath12k_peer_delete_resp_event()
6917 ath12k_warn(ab, "invalid vdev id in peer delete resp ev %d", in ath12k_peer_delete_resp_event()
6925 ath12k_dbg(ab, ATH12K_DBG_WMI, "peer delete resp for vdev id %d addr %pM\n", in ath12k_peer_delete_resp_event()
6929 static void ath12k_vdev_delete_resp_event(struct ath12k_base *ab, in ath12k_vdev_delete_resp_event() argument
6935 if (ath12k_pull_vdev_del_resp_ev(ab, skb, &vdev_id) != 0) { in ath12k_vdev_delete_resp_event()
6936 ath12k_warn(ab, "failed to extract vdev delete resp"); in ath12k_vdev_delete_resp_event()
6941 ar = ath12k_mac_get_ar_by_vdev_id(ab, vdev_id); in ath12k_vdev_delete_resp_event()
6943 ath12k_warn(ab, "invalid vdev id in vdev delete resp ev %d", in ath12k_vdev_delete_resp_event()
6953 ath12k_dbg(ab, ATH12K_DBG_WMI, "vdev delete resp for vdev id %d\n", in ath12k_vdev_delete_resp_event()
6973 static void ath12k_vdev_start_resp_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_vdev_start_resp_event() argument
6979 if (ath12k_pull_vdev_start_resp_tlv(ab, skb, &vdev_start_resp) != 0) { in ath12k_vdev_start_resp_event()
6980 ath12k_warn(ab, "failed to extract vdev start resp"); in ath12k_vdev_start_resp_event()
6985 ar = ath12k_mac_get_ar_by_vdev_id(ab, le32_to_cpu(vdev_start_resp.vdev_id)); in ath12k_vdev_start_resp_event()
6987 ath12k_warn(ab, "invalid vdev id in vdev start resp ev %d", in ath12k_vdev_start_resp_event()
6997 ath12k_warn(ab, "vdev start resp error status %d (%s)\n", in ath12k_vdev_start_resp_event()
7008 ath12k_dbg(ab, ATH12K_DBG_WMI, "vdev start resp for vdev id %d", in ath12k_vdev_start_resp_event()
7012 static void ath12k_bcn_tx_status_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_bcn_tx_status_event() argument
7016 if (ath12k_pull_bcn_tx_status_ev(ab, skb, &vdev_id, &tx_status) != 0) { in ath12k_bcn_tx_status_event()
7017 ath12k_warn(ab, "failed to extract bcn tx status"); in ath12k_bcn_tx_status_event()
7022 static void ath12k_vdev_stopped_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_vdev_stopped_event() argument
7027 if (ath12k_pull_vdev_stopped_param_tlv(ab, skb, &vdev_id) != 0) { in ath12k_vdev_stopped_event()
7028 ath12k_warn(ab, "failed to extract vdev stopped event"); in ath12k_vdev_stopped_event()
7033 ar = ath12k_mac_get_ar_by_vdev_id(ab, vdev_id); in ath12k_vdev_stopped_event()
7035 ath12k_warn(ab, "invalid vdev id in vdev stopped ev %d", in ath12k_vdev_stopped_event()
7045 ath12k_dbg(ab, ATH12K_DBG_WMI, "vdev stopped for vdev id %d", vdev_id); in ath12k_vdev_stopped_event()
7048 static void ath12k_mgmt_rx_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_mgmt_rx_event() argument
7058 if (ath12k_pull_mgmt_rx_params_tlv(ab, skb, &rx_ev) != 0) { in ath12k_mgmt_rx_event()
7059 ath12k_warn(ab, "failed to extract mgmt rx event"); in ath12k_mgmt_rx_event()
7066 ath12k_dbg(ab, ATH12K_DBG_MGMT, "mgmt rx event status %08x\n", in ath12k_mgmt_rx_event()
7070 ar = ath12k_mac_get_ar_by_pdev_id(ab, rx_ev.pdev_id); in ath12k_mgmt_rx_event()
7073 ath12k_warn(ab, "invalid pdev_id %d in mgmt_rx_event\n", in ath12k_mgmt_rx_event()
7109 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_mgmt_rx_event()
7151 ath12k_dbg(ab, ATH12K_DBG_MGMT, in ath12k_mgmt_rx_event()
7156 ath12k_dbg(ab, ATH12K_DBG_MGMT, in ath12k_mgmt_rx_event()
7167 static void ath12k_mgmt_tx_compl_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_mgmt_tx_compl_event() argument
7172 if (ath12k_pull_mgmt_tx_compl_param_tlv(ab, skb, &tx_compl_param) != 0) { in ath12k_mgmt_tx_compl_event()
7173 ath12k_warn(ab, "failed to extract mgmt tx compl event"); in ath12k_mgmt_tx_compl_event()
7178 ar = ath12k_mac_get_ar_by_pdev_id(ab, le32_to_cpu(tx_compl_param.pdev_id)); in ath12k_mgmt_tx_compl_event()
7180 ath12k_warn(ab, "invalid pdev id %d in mgmt_tx_compl_event\n", in ath12k_mgmt_tx_compl_event()
7189 ath12k_dbg(ab, ATH12K_DBG_MGMT, in ath12k_mgmt_tx_compl_event()
7198 static struct ath12k *ath12k_get_ar_on_scan_state(struct ath12k_base *ab, in ath12k_get_ar_on_scan_state() argument
7206 for (i = 0; i < ab->num_radios; i++) { in ath12k_get_ar_on_scan_state()
7207 pdev = rcu_dereference(ab->pdevs_active[i]); in ath12k_get_ar_on_scan_state()
7224 static void ath12k_scan_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_scan_event() argument
7229 if (ath12k_pull_scan_ev(ab, skb, &scan_ev) != 0) { in ath12k_scan_event()
7230 ath12k_warn(ab, "failed to extract scan event"); in ath12k_scan_event()
7244 ar = ath12k_get_ar_on_scan_state(ab, le32_to_cpu(scan_ev.vdev_id), in ath12k_scan_event()
7247 ar = ath12k_get_ar_on_scan_state(ab, le32_to_cpu(scan_ev.vdev_id), in ath12k_scan_event()
7250 ar = ath12k_mac_get_ar_by_vdev_id(ab, le32_to_cpu(scan_ev.vdev_id)); in ath12k_scan_event()
7254 ath12k_warn(ab, "Received scan event for unknown vdev"); in ath12k_scan_event()
7261 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_scan_event()
7287 ath12k_warn(ab, "received scan start failure event\n"); in ath12k_scan_event()
7305 static void ath12k_peer_sta_kickout_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_peer_sta_kickout_event() argument
7314 if (ath12k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) { in ath12k_peer_sta_kickout_event()
7315 ath12k_warn(ab, "failed to extract peer sta kickout event"); in ath12k_peer_sta_kickout_event()
7321 spin_lock_bh(&ab->base_lock); in ath12k_peer_sta_kickout_event()
7323 peer = ath12k_peer_find_by_addr(ab, arg.mac_addr); in ath12k_peer_sta_kickout_event()
7326 ath12k_warn(ab, "peer not found %pM\n", in ath12k_peer_sta_kickout_event()
7331 arvif = ath12k_mac_get_arvif_by_vdev_id(ab, peer->vdev_id); in ath12k_peer_sta_kickout_event()
7333 ath12k_warn(ab, "invalid vdev id in peer sta kickout ev %d", in ath12k_peer_sta_kickout_event()
7345 ath12k_warn(ab, in ath12k_peer_sta_kickout_event()
7355 ath12k_warn(ab, "Spurious quick kickout for %sSTA %pM\n", in ath12k_peer_sta_kickout_event()
7360 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_peer_sta_kickout_event()
7376 spin_unlock_bh(&ab->base_lock); in ath12k_peer_sta_kickout_event()
7380 static void ath12k_roam_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_roam_event() argument
7388 if (ath12k_pull_roam_ev(ab, skb, &roam_ev) != 0) { in ath12k_roam_event()
7389 ath12k_warn(ab, "failed to extract roam event"); in ath12k_roam_event()
7397 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_roam_event()
7402 arvif = ath12k_mac_get_arvif_by_vdev_id(ab, vdev_id); in ath12k_roam_event()
7404 ath12k_warn(ab, "invalid vdev id in roam ev %d", vdev_id); in ath12k_roam_event()
7411 ath12k_warn(ab, "ignoring unknown roam event reason %d on vdev %i\n", in ath12k_roam_event()
7422 ath12k_warn(ab, "ignoring not implemented roam event reason %d on vdev %i\n", in ath12k_roam_event()
7428 static void ath12k_chan_info_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_chan_info_event() argument
7435 u32 cc_freq_hz = ab->cc_freq_hz; in ath12k_chan_info_event()
7437 if (ath12k_pull_chan_info_ev(ab, skb, &ch_info_ev) != 0) { in ath12k_chan_info_event()
7438 ath12k_warn(ab, "failed to extract chan info event"); in ath12k_chan_info_event()
7442 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_chan_info_event()
7450 ath12k_dbg(ab, ATH12K_DBG_WMI, "chan info report completed\n"); in ath12k_chan_info_event()
7455 ar = ath12k_mac_get_ar_by_vdev_id(ab, le32_to_cpu(ch_info_ev.vdev_id)); in ath12k_chan_info_event()
7457 ath12k_warn(ab, "invalid vdev id in chan info ev %d", in ath12k_chan_info_event()
7467 ath12k_warn(ab, "received chan info event without a scan request, ignoring\n"); in ath12k_chan_info_event()
7476 ath12k_warn(ab, "chan info: invalid frequency %d (idx %d out of bounds)\n", in ath12k_chan_info_event()
7503 ath12k_pdev_bss_chan_info_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_pdev_bss_chan_info_event() argument
7508 u32 cc_freq_hz = ab->cc_freq_hz; in ath12k_pdev_bss_chan_info_event()
7512 if (ath12k_pull_pdev_bss_chan_info_ev(ab, skb, &bss_ch_info_ev) != 0) { in ath12k_pdev_bss_chan_info_event()
7513 ath12k_warn(ab, "failed to extract pdev bss chan info event"); in ath12k_pdev_bss_chan_info_event()
7532 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pdev_bss_chan_info_event()
7539 ar = ath12k_mac_get_ar_by_pdev_id(ab, le32_to_cpu(bss_ch_info_ev.pdev_id)); in ath12k_pdev_bss_chan_info_event()
7542 ath12k_warn(ab, "invalid pdev id %d in bss_chan_info event\n", in ath12k_pdev_bss_chan_info_event()
7551 ath12k_warn(ab, "bss chan info: invalid frequency %d (idx %d out of bounds)\n", in ath12k_pdev_bss_chan_info_event()
7575 static void ath12k_vdev_install_key_compl_event(struct ath12k_base *ab, in ath12k_vdev_install_key_compl_event() argument
7581 if (ath12k_pull_vdev_install_key_compl_ev(ab, skb, &install_key_compl) != 0) { in ath12k_vdev_install_key_compl_event()
7582 ath12k_warn(ab, "failed to extract install key compl event"); in ath12k_vdev_install_key_compl_event()
7586 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_vdev_install_key_compl_event()
7592 ar = ath12k_mac_get_ar_by_vdev_id(ab, install_key_compl.vdev_id); in ath12k_vdev_install_key_compl_event()
7594 ath12k_warn(ab, "invalid vdev id in install key compl ev %d", in ath12k_vdev_install_key_compl_event()
7603 ath12k_warn(ab, "install key failed for %pM status %d\n", in ath12k_vdev_install_key_compl_event()
7612 static int ath12k_wmi_tlv_services_parser(struct ath12k_base *ab, in ath12k_wmi_tlv_services_parser() argument
7625 ath12k_warn(ab, "invalid length %d for the WMI services available tag 0x%x\n", in ath12k_wmi_tlv_services_parser()
7639 set_bit(j, ab->wmi_ab.svc_map); in ath12k_wmi_tlv_services_parser()
7643 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_services_parser()
7659 set_bit(j, ab->wmi_ab.svc_map); in ath12k_wmi_tlv_services_parser()
7661 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_services_parser()
7671 static int ath12k_service_available_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_service_available_event() argument
7675 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_service_available_event()
7681 static void ath12k_peer_assoc_conf_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_peer_assoc_conf_event() argument
7686 if (ath12k_pull_peer_assoc_conf_ev(ab, skb, &peer_assoc_conf) != 0) { in ath12k_peer_assoc_conf_event()
7687 ath12k_warn(ab, "failed to extract peer assoc conf event"); in ath12k_peer_assoc_conf_event()
7691 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_peer_assoc_conf_event()
7696 ar = ath12k_mac_get_ar_by_vdev_id(ab, peer_assoc_conf.vdev_id); in ath12k_peer_assoc_conf_event()
7699 ath12k_warn(ab, "invalid vdev id in peer assoc conf ev %d", in ath12k_peer_assoc_conf_event()
7979 ath12k_warn(ar->ab, "failed to get pdev stats\n"); in ath12k_wmi_fw_pdev_stats_dump()
7984 ar->ab->fw_soc_drop_count); in ath12k_wmi_fw_pdev_stats_dump()
8134 static int ath12k_wmi_tlv_fw_stats_data_parse(struct ath12k_base *ab, in ath12k_wmi_tlv_fw_stats_data_parse() argument
8150 ath12k_warn(ab, "failed to fetch update stats ev"); in ath12k_wmi_tlv_fw_stats_data_parse()
8160 ar = ath12k_mac_get_ar_by_pdev_id(ab, stats->pdev_id); in ath12k_wmi_tlv_fw_stats_data_parse()
8162 ath12k_warn(ab, "invalid pdev id %d in update stats event\n", in ath12k_wmi_tlv_fw_stats_data_parse()
8187 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_fw_stats_data_parse()
8191 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_fw_stats_data_parse()
8255 static int ath12k_wmi_tlv_rssi_chain_parse(struct ath12k_base *ab, in ath12k_wmi_tlv_rssi_chain_parse() argument
8272 ath12k_warn(ab, "failed to fetch update stats ev"); in ath12k_wmi_tlv_rssi_chain_parse()
8285 ar = ath12k_mac_get_ar_by_pdev_id(ab, stats->pdev_id); in ath12k_wmi_tlv_rssi_chain_parse()
8287 ath12k_warn(ab, "invalid pdev id %d in rssi chain parse\n", in ath12k_wmi_tlv_rssi_chain_parse()
8294 ath12k_warn(ab, "not found vif for vdev id %d\n", vdev_id); in ath12k_wmi_tlv_rssi_chain_parse()
8298 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_rssi_chain_parse()
8306 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_tlv_rssi_chain_parse()
8326 static int ath12k_wmi_tlv_fw_stats_parse(struct ath12k_base *ab, in ath12k_wmi_tlv_fw_stats_parse() argument
8338 ret = ath12k_wmi_tlv_fw_stats_data_parse(ab, parse, ptr, len); in ath12k_wmi_tlv_fw_stats_parse()
8347 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_tlv_fw_stats_parse()
8362 static int ath12k_wmi_pull_fw_stats(struct ath12k_base *ab, struct sk_buff *skb, in ath12k_wmi_pull_fw_stats() argument
8370 return ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_wmi_pull_fw_stats()
8378 struct ath12k_base *ab = ar->ab; in ath12k_wmi_fw_stats_process() local
8386 ath12k_warn(ab, "empty vdev stats"); in ath12k_wmi_fw_stats_process()
8393 for (i = 0; i < ab->num_radios; i++) { in ath12k_wmi_fw_stats_process()
8394 pdev = rcu_dereference(ab->pdevs_active[i]); in ath12k_wmi_fw_stats_process()
8415 ath12k_warn(ab, "empty beacon stats"); in ath12k_wmi_fw_stats_process()
8433 static void ath12k_update_stats_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_update_stats_event() argument
8443 ret = ath12k_wmi_pull_fw_stats(ab, skb, &stats); in ath12k_update_stats_event()
8445 ath12k_warn(ab, "failed to pull fw stats: %d\n", ret); in ath12k_update_stats_event()
8449 ath12k_dbg(ab, ATH12K_DBG_WMI, "event update stats"); in ath12k_update_stats_event()
8452 ar = ath12k_mac_get_ar_by_pdev_id(ab, stats.pdev_id); in ath12k_update_stats_event()
8455 ath12k_warn(ab, "failed to get ar for pdev_id %d: %d\n", in ath12k_update_stats_event()
8495 static void ath12k_pdev_ctl_failsafe_check_event(struct ath12k_base *ab, in ath12k_pdev_ctl_failsafe_check_event() argument
8502 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_pdev_ctl_failsafe_check_event()
8505 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_pdev_ctl_failsafe_check_event()
8511 ath12k_warn(ab, "failed to fetch pdev ctl failsafe check ev"); in ath12k_pdev_ctl_failsafe_check_event()
8516 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_pdev_ctl_failsafe_check_event()
8524 ath12k_warn(ab, "pdev ctl failsafe failure status %d", in ath12k_pdev_ctl_failsafe_check_event()
8531 ath12k_wmi_process_csa_switch_count_event(struct ath12k_base *ab, in ath12k_wmi_process_csa_switch_count_event() argument
8544 arvif = ath12k_mac_get_arvif_by_vdev_id(ab, vdev_ids[i]); in ath12k_wmi_process_csa_switch_count_event()
8547 ath12k_warn(ab, "Recvd csa status for unknown vdev %d", in ath12k_wmi_process_csa_switch_count_event()
8554 ath12k_warn(ab, "Invalid CSA switch count even link id: %d\n", in ath12k_wmi_process_csa_switch_count_event()
8561 ath12k_warn(ab, "unable to access bss link conf in process csa for vif %pM link %u\n", in ath12k_wmi_process_csa_switch_count_event()
8591 ath12k_wmi_pdev_csa_switch_count_status_event(struct ath12k_base *ab, in ath12k_wmi_pdev_csa_switch_count_status_event() argument
8599 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_pdev_csa_switch_count_status_event()
8602 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_wmi_pdev_csa_switch_count_status_event()
8610 ath12k_warn(ab, "failed to fetch pdev csa switch count ev"); in ath12k_wmi_pdev_csa_switch_count_status_event()
8615 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_csa_switch_count_status_event()
8620 ath12k_wmi_process_csa_switch_count_event(ab, ev, vdev_ids); in ath12k_wmi_pdev_csa_switch_count_status_event()
8626 ath12k_wmi_pdev_dfs_radar_detected_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_wmi_pdev_dfs_radar_detected_event() argument
8634 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_pdev_dfs_radar_detected_event()
8637 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_wmi_pdev_dfs_radar_detected_event()
8644 ath12k_warn(ab, "failed to fetch pdev dfs radar detected ev"); in ath12k_wmi_pdev_dfs_radar_detected_event()
8649 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_dfs_radar_detected_event()
8657 ar = ath12k_mac_get_ar_by_pdev_id(ab, le32_to_cpu(ev->pdev_id)); in ath12k_wmi_pdev_dfs_radar_detected_event()
8660 ath12k_warn(ab, "radar detected in invalid pdev %d\n", in ath12k_wmi_pdev_dfs_radar_detected_event()
8670 ath12k_warn(ab, "failed to find valid chanctx_conf in radar detected event\n"); in ath12k_wmi_pdev_dfs_radar_detected_event()
8674 ath12k_dbg(ar->ab, ATH12K_DBG_REG, "DFS Radar Detected in pdev %d\n", in ath12k_wmi_pdev_dfs_radar_detected_event()
8678 ath12k_info(ab, "DFS Radar detected, but ignored as requested\n"); in ath12k_wmi_pdev_dfs_radar_detected_event()
8688 static void ath12k_tm_wmi_event_segmented(struct ath12k_base *ab, u32 cmd_id, in ath12k_tm_wmi_event_segmented() argument
8696 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_tm_wmi_event_segmented()
8700 ath12k_warn(ab, "failed to parse ftm event tlv: %d\n", ret); in ath12k_tm_wmi_event_segmented()
8706 ath12k_warn(ab, "failed to fetch ftm msg\n"); in ath12k_tm_wmi_event_segmented()
8712 ath12k_tm_process_event(ab, cmd_id, ev, length); in ath12k_tm_wmi_event_segmented()
8718 ath12k_wmi_pdev_temperature_event(struct ath12k_base *ab, in ath12k_wmi_pdev_temperature_event() argument
8724 if (ath12k_pull_pdev_temp_ev(ab, skb, &ev) != 0) { in ath12k_wmi_pdev_temperature_event()
8725 ath12k_warn(ab, "failed to extract pdev temperature event"); in ath12k_wmi_pdev_temperature_event()
8729 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_pdev_temperature_event()
8734 ar = ath12k_mac_get_ar_by_pdev_id(ab, le32_to_cpu(ev.pdev_id)); in ath12k_wmi_pdev_temperature_event()
8736 ath12k_warn(ab, "invalid pdev id in pdev temperature ev %d", ev.pdev_id); in ath12k_wmi_pdev_temperature_event()
8744 static void ath12k_fils_discovery_event(struct ath12k_base *ab, in ath12k_fils_discovery_event() argument
8751 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_fils_discovery_event()
8754 ath12k_warn(ab, in ath12k_fils_discovery_event()
8762 ath12k_warn(ab, "failed to fetch FILS discovery event\n"); in ath12k_fils_discovery_event()
8767 ath12k_warn(ab, in ath12k_fils_discovery_event()
8774 static void ath12k_probe_resp_tx_status_event(struct ath12k_base *ab, in ath12k_probe_resp_tx_status_event() argument
8781 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_probe_resp_tx_status_event()
8784 ath12k_warn(ab, in ath12k_probe_resp_tx_status_event()
8792 ath12k_warn(ab, in ath12k_probe_resp_tx_status_event()
8799 ath12k_warn(ab, in ath12k_probe_resp_tx_status_event()
8806 static int ath12k_wmi_p2p_noa_event(struct ath12k_base *ab, in ath12k_wmi_p2p_noa_event() argument
8815 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_p2p_noa_event()
8818 ath12k_warn(ab, "failed to parse P2P NoA TLV: %d\n", ret); in ath12k_wmi_p2p_noa_event()
8832 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_p2p_noa_event()
8837 ar = ath12k_mac_get_ar_by_vdev_id(ab, vdev_id); in ath12k_wmi_p2p_noa_event()
8839 ath12k_warn(ab, "invalid vdev id %d in P2P NoA event\n", in ath12k_wmi_p2p_noa_event()
8856 static void ath12k_rfkill_state_change_event(struct ath12k_base *ab, in ath12k_rfkill_state_change_event() argument
8863 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_rfkill_state_change_event()
8866 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_rfkill_state_change_event()
8876 ath12k_dbg(ab, ATH12K_DBG_MAC, in ath12k_rfkill_state_change_event()
8882 spin_lock_bh(&ab->base_lock); in ath12k_rfkill_state_change_event()
8883 ab->rfkill_radio_on = (ev->radio_state == cpu_to_le32(WMI_RFKILL_RADIO_STATE_ON)); in ath12k_rfkill_state_change_event()
8884 spin_unlock_bh(&ab->base_lock); in ath12k_rfkill_state_change_event()
8886 queue_work(ab->workqueue, &ab->rfkill_work); in ath12k_rfkill_state_change_event()
8891 ath12k_wmi_diag_event(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_wmi_diag_event() argument
8893 trace_ath12k_wmi_diag(ab, skb->data, skb->len); in ath12k_wmi_diag_event()
8896 static void ath12k_wmi_twt_enable_event(struct ath12k_base *ab, in ath12k_wmi_twt_enable_event() argument
8903 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_twt_enable_event()
8906 ath12k_warn(ab, "failed to parse wmi twt enable status event tlv: %d\n", in ath12k_wmi_twt_enable_event()
8913 ath12k_warn(ab, "failed to fetch twt enable wmi event\n"); in ath12k_wmi_twt_enable_event()
8917 ath12k_dbg(ab, ATH12K_DBG_MAC, "wmi twt enable event pdev id %u status %u\n", in ath12k_wmi_twt_enable_event()
8925 static void ath12k_wmi_twt_disable_event(struct ath12k_base *ab, in ath12k_wmi_twt_disable_event() argument
8932 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_twt_disable_event()
8935 ath12k_warn(ab, "failed to parse wmi twt disable status event tlv: %d\n", in ath12k_wmi_twt_disable_event()
8942 ath12k_warn(ab, "failed to fetch twt disable wmi event\n"); in ath12k_wmi_twt_disable_event()
8946 ath12k_dbg(ab, ATH12K_DBG_MAC, "wmi twt disable event pdev id %d status %u\n", in ath12k_wmi_twt_disable_event()
8954 static int ath12k_wmi_wow_wakeup_host_parse(struct ath12k_base *ab, in ath12k_wmi_wow_wakeup_host_parse() argument
8967 ath12k_dbg(ab, ATH12K_DBG_WMI, "wow wakeup host reason %d %s\n", in ath12k_wmi_wow_wakeup_host_parse()
8977 ath12k_warn(ab, "invalid wo reason page fault buffer len %d\n", in ath12k_wmi_wow_wakeup_host_parse()
8981 ath12k_dbg(ab, ATH12K_DBG_WMI, "wow_reason_page_fault len %d\n", in ath12k_wmi_wow_wakeup_host_parse()
8983 ath12k_dbg_dump(ab, ATH12K_DBG_WMI, in ath12k_wmi_wow_wakeup_host_parse()
8997 static void ath12k_wmi_event_wow_wakeup_host(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_wmi_event_wow_wakeup_host() argument
9002 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_wmi_event_wow_wakeup_host()
9006 ath12k_warn(ab, "failed to parse wmi wow wakeup host event tlv: %d\n", in ath12k_wmi_event_wow_wakeup_host()
9011 complete(&ab->wow.wakeup_completed); in ath12k_wmi_event_wow_wakeup_host()
9014 static void ath12k_wmi_gtk_offload_status_event(struct ath12k_base *ab, in ath12k_wmi_gtk_offload_status_event() argument
9024 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_gtk_offload_status_event()
9027 ath12k_warn(ab, "failed to parse tlv: %d\n", ret); in ath12k_wmi_gtk_offload_status_event()
9033 ath12k_warn(ab, "failed to fetch gtk offload status ev"); in ath12k_wmi_gtk_offload_status_event()
9039 arvif = ath12k_mac_get_arvif_by_vdev_id(ab, le32_to_cpu(ev->vdev_id)); in ath12k_wmi_gtk_offload_status_event()
9042 ath12k_warn(ab, "failed to get arvif for vdev_id:%d\n", in ath12k_wmi_gtk_offload_status_event()
9050 ath12k_dbg(ab, ATH12K_DBG_WMI, "wmi gtk offload event refresh_cnt %d replay_ctr %llu\n", in ath12k_wmi_gtk_offload_status_event()
9064 static void ath12k_wmi_event_mlo_setup_complete(struct ath12k_base *ab, in ath12k_wmi_event_mlo_setup_complete() argument
9073 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_event_mlo_setup_complete()
9076 ath12k_warn(ab, "failed to parse mlo setup complete event tlv: %d\n", in ath12k_wmi_event_mlo_setup_complete()
9083 ath12k_warn(ab, "failed to fetch mlo setup complete event\n"); in ath12k_wmi_event_mlo_setup_complete()
9088 if (le32_to_cpu(ev->pdev_id) > ab->num_radios) in ath12k_wmi_event_mlo_setup_complete()
9091 for (i = 0; i < ab->num_radios; i++) { in ath12k_wmi_event_mlo_setup_complete()
9092 pdev = &ab->pdevs[i]; in ath12k_wmi_event_mlo_setup_complete()
9101 ath12k_warn(ab, "invalid pdev_id %d status %u in setup complete event\n", in ath12k_wmi_event_mlo_setup_complete()
9113 static void ath12k_wmi_event_teardown_complete(struct ath12k_base *ab, in ath12k_wmi_event_teardown_complete() argument
9120 tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); in ath12k_wmi_event_teardown_complete()
9123 ath12k_warn(ab, "failed to parse teardown complete event tlv: %d\n", ret); in ath12k_wmi_event_teardown_complete()
9129 ath12k_warn(ab, "failed to fetch teardown complete event\n"); in ath12k_wmi_event_teardown_complete()
9138 static int ath12k_wmi_tpc_stats_copy_buffer(struct ath12k_base *ab, in ath12k_wmi_tpc_stats_copy_buffer() argument
9192 static int ath12k_tpc_get_reg_pwr(struct ath12k_base *ab, in ath12k_tpc_get_reg_pwr() argument
9199 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_tpc_get_reg_pwr()
9215 ath12k_warn(ab, in ath12k_tpc_get_reg_pwr()
9232 static int ath12k_tpc_get_rate_array(struct ath12k_base *ab, in ath12k_tpc_get_rate_array() argument
9239 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_tpc_get_rate_array()
9253 ath12k_warn(ab, in ath12k_tpc_get_rate_array()
9268 static int ath12k_tpc_get_ctl_pwr_tbl(struct ath12k_base *ab, in ath12k_tpc_get_ctl_pwr_tbl() argument
9275 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_tpc_get_ctl_pwr_tbl()
9285 ath12k_warn(ab, in ath12k_tpc_get_ctl_pwr_tbl()
9293 ath12k_warn(ab, in ath12k_tpc_get_ctl_pwr_tbl()
9308 static int ath12k_wmi_tpc_stats_subtlv_parser(struct ath12k_base *ab, in ath12k_wmi_tpc_stats_subtlv_parser() argument
9320 ath12k_warn(ab, "tpc stats memory unavailable\n"); in ath12k_wmi_tpc_stats_subtlv_parser()
9332 ret = ath12k_tpc_get_reg_pwr(ab, tpc_stats, tpc_reg_pwr); in ath12k_wmi_tpc_stats_subtlv_parser()
9336 ret = ath12k_tpc_get_rate_array(ab, tpc_stats, tpc_rates_array); in ath12k_wmi_tpc_stats_subtlv_parser()
9340 ret = ath12k_tpc_get_ctl_pwr_tbl(ab, tpc_stats, tpc_ctl_pwr); in ath12k_wmi_tpc_stats_subtlv_parser()
9343 ath12k_warn(ab, in ath12k_wmi_tpc_stats_subtlv_parser()
9350 static int ath12k_wmi_tpc_stats_event_parser(struct ath12k_base *ab, in ath12k_wmi_tpc_stats_event_parser() argument
9368 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_tpc_stats_event_parser()
9375 ret = ath12k_wmi_tpc_stats_copy_buffer(ab, ptr, in ath12k_wmi_tpc_stats_event_parser()
9382 ret = ath12k_wmi_tpc_stats_copy_buffer(ab, ptr, in ath12k_wmi_tpc_stats_event_parser()
9387 ath12k_warn(ab, "Received invalid tag for tpc stats\n"); in ath12k_wmi_tpc_stats_event_parser()
9399 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "tpc stats mem free\n"); in ath12k_wmi_free_tpc_stats_mem()
9410 static void ath12k_wmi_process_tpc_stats(struct ath12k_base *ab, in ath12k_wmi_process_tpc_stats() argument
9423 ath12k_warn(ab, "No data present in tpc stats event\n"); in ath12k_wmi_process_tpc_stats()
9428 ath12k_warn(ab, "TPC stats event size invalid\n"); in ath12k_wmi_process_tpc_stats()
9437 ath12k_warn(ab, "TPC stats without fixed param tlv at start\n"); in ath12k_wmi_process_tpc_stats()
9443 ar = ath12k_mac_get_ar_by_pdev_id(ab, le32_to_cpu(fixed_param->pdev_id) + 1); in ath12k_wmi_process_tpc_stats()
9445 ath12k_warn(ab, "Failed to get ar for tpc stats\n"); in ath12k_wmi_process_tpc_stats()
9455 ath12k_warn(ab, "Freeing memory for tpc_stats\n"); in ath12k_wmi_process_tpc_stats()
9464 ath12k_warn(ab, in ath12k_wmi_process_tpc_stats()
9472 ath12k_warn(ab, in ath12k_wmi_process_tpc_stats()
9480 ath12k_warn(ab, "tpc stats memory unavailable\n"); in ath12k_wmi_process_tpc_stats()
9486 ath12k_warn(ab, in ath12k_wmi_process_tpc_stats()
9494 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_process_tpc_stats()
9497 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_wmi_process_tpc_stats()
9502 ath12k_warn(ab, "failed to parse tpc_stats tlv: %d\n", ret); in ath12k_wmi_process_tpc_stats()
9514 static void ath12k_wmi_process_tpc_stats(struct ath12k_base *ab, in ath12k_wmi_process_tpc_stats() argument
9521 ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser(struct ath12k_base *ab, in ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser() argument
9537 ath12k_warn(ab, in ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser()
9579 ath12k_warn(ab, "Invalid current bandwidth %d in RSSI dbm event", in ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser()
9605 ath12k_warn(ab, in ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser()
9616 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_rssi_dbm_conv_info_evt_subtlv_parser()
9624 ath12k_wmi_rssi_dbm_conv_info_event_parser(struct ath12k_base *ab, in ath12k_wmi_rssi_dbm_conv_info_event_parser() argument
9641 ret = ath12k_wmi_tlv_iter(ab, ptr, len, in ath12k_wmi_rssi_dbm_conv_info_event_parser()
9646 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_rssi_dbm_conv_info_event_parser()
9656 ath12k_wmi_rssi_dbm_conv_info_process_fixed_param(struct ath12k_base *ab, u8 *ptr, in ath12k_wmi_rssi_dbm_conv_info_process_fixed_param() argument
9664 ath12k_warn(ab, "invalid RSSI dbm conv event size %zu\n", len); in ath12k_wmi_rssi_dbm_conv_info_process_fixed_param()
9673 ath12k_warn(ab, "RSSI dbm conv event received without fixed param tlv\n"); in ath12k_wmi_rssi_dbm_conv_info_process_fixed_param()
9701 ath12k_wmi_rssi_dbm_conversion_params_info_event(struct ath12k_base *ab, in ath12k_wmi_rssi_dbm_conversion_params_info_event() argument
9710 ret = ath12k_wmi_rssi_dbm_conv_info_process_fixed_param(ab, skb->data, skb->len, in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9713 ath12k_warn(ab, "failed to parse fixed param in RSSI dbm conv event: %d\n", in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9719 ar = ath12k_mac_get_ar_by_pdev_id(ab, pdev_id); in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9724 ret = ath12k_wmi_tlv_iter(ab, skb->data, skb->len, in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9728 ath12k_warn(ab, "unable to parse RSSI dbm conversion event\n"); in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9737 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_rssi_dbm_conversion_params_info_event()
9743 static void ath12k_wmi_op_rx(struct ath12k_base *ab, struct sk_buff *skb) in ath12k_wmi_op_rx() argument
9757 ath12k_service_ready_event(ab, skb); in ath12k_wmi_op_rx()
9760 ath12k_service_ready_ext_event(ab, skb); in ath12k_wmi_op_rx()
9763 ath12k_service_ready_ext2_event(ab, skb); in ath12k_wmi_op_rx()
9766 ath12k_reg_chan_list_event(ab, skb); in ath12k_wmi_op_rx()
9769 ath12k_ready_event(ab, skb); in ath12k_wmi_op_rx()
9772 ath12k_peer_delete_resp_event(ab, skb); in ath12k_wmi_op_rx()
9775 ath12k_vdev_start_resp_event(ab, skb); in ath12k_wmi_op_rx()
9778 ath12k_bcn_tx_status_event(ab, skb); in ath12k_wmi_op_rx()
9781 ath12k_vdev_stopped_event(ab, skb); in ath12k_wmi_op_rx()
9784 ath12k_mgmt_rx_event(ab, skb); in ath12k_wmi_op_rx()
9788 ath12k_mgmt_tx_compl_event(ab, skb); in ath12k_wmi_op_rx()
9791 ath12k_scan_event(ab, skb); in ath12k_wmi_op_rx()
9794 ath12k_peer_sta_kickout_event(ab, skb); in ath12k_wmi_op_rx()
9797 ath12k_roam_event(ab, skb); in ath12k_wmi_op_rx()
9800 ath12k_chan_info_event(ab, skb); in ath12k_wmi_op_rx()
9803 ath12k_pdev_bss_chan_info_event(ab, skb); in ath12k_wmi_op_rx()
9806 ath12k_vdev_install_key_compl_event(ab, skb); in ath12k_wmi_op_rx()
9809 ath12k_service_available_event(ab, skb); in ath12k_wmi_op_rx()
9812 ath12k_peer_assoc_conf_event(ab, skb); in ath12k_wmi_op_rx()
9815 ath12k_update_stats_event(ab, skb); in ath12k_wmi_op_rx()
9818 ath12k_pdev_ctl_failsafe_check_event(ab, skb); in ath12k_wmi_op_rx()
9821 ath12k_wmi_pdev_csa_switch_count_status_event(ab, skb); in ath12k_wmi_op_rx()
9824 ath12k_wmi_pdev_temperature_event(ab, skb); in ath12k_wmi_op_rx()
9827 ath12k_wmi_pdev_dma_ring_buf_release_event(ab, skb); in ath12k_wmi_op_rx()
9830 ath12k_fils_discovery_event(ab, skb); in ath12k_wmi_op_rx()
9833 ath12k_probe_resp_tx_status_event(ab, skb); in ath12k_wmi_op_rx()
9836 ath12k_rfkill_state_change_event(ab, skb); in ath12k_wmi_op_rx()
9839 ath12k_wmi_twt_enable_event(ab, skb); in ath12k_wmi_op_rx()
9842 ath12k_wmi_twt_disable_event(ab, skb); in ath12k_wmi_op_rx()
9845 ath12k_wmi_p2p_noa_event(ab, skb); in ath12k_wmi_op_rx()
9848 ath12k_wmi_pdev_dfs_radar_detected_event(ab, skb); in ath12k_wmi_op_rx()
9851 ath12k_vdev_delete_resp_event(ab, skb); in ath12k_wmi_op_rx()
9854 ath12k_wmi_diag_event(ab, skb); in ath12k_wmi_op_rx()
9857 ath12k_wmi_event_wow_wakeup_host(ab, skb); in ath12k_wmi_op_rx()
9860 ath12k_wmi_gtk_offload_status_event(ab, skb); in ath12k_wmi_op_rx()
9863 ath12k_wmi_event_mlo_setup_complete(ab, skb); in ath12k_wmi_op_rx()
9866 ath12k_wmi_event_teardown_complete(ab, skb); in ath12k_wmi_op_rx()
9869 ath12k_wmi_process_tpc_stats(ab, skb); in ath12k_wmi_op_rx()
9872 ath12k_reg_11d_new_cc_event(ab, skb); in ath12k_wmi_op_rx()
9875 ath12k_wmi_rssi_dbm_conversion_params_info_event(ab, skb); in ath12k_wmi_op_rx()
9881 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_op_rx()
9891 if (test_bit(ATH12K_FLAG_FTM_SEGMENTED, &ab->dev_flags)) in ath12k_wmi_op_rx()
9892 ath12k_tm_wmi_event_segmented(ab, id, skb); in ath12k_wmi_op_rx()
9894 ath12k_tm_wmi_event_unsegmented(ab, id, skb); in ath12k_wmi_op_rx()
9897 ath12k_dbg(ab, ATH12K_DBG_WMI, "Unknown eventid: 0x%x\n", id); in ath12k_wmi_op_rx()
9905 static int ath12k_connect_pdev_htc_service(struct ath12k_base *ab, in ath12k_connect_pdev_htc_service() argument
9925 status = ath12k_htc_connect_service(&ab->htc, &conn_req, &conn_resp); in ath12k_connect_pdev_htc_service()
9927 ath12k_warn(ab, "failed to connect to WMI CONTROL service status: %d\n", in ath12k_connect_pdev_htc_service()
9932 ab->wmi_ab.wmi_endpoint_id[pdev_idx] = conn_resp.eid; in ath12k_connect_pdev_htc_service()
9933 ab->wmi_ab.wmi[pdev_idx].eid = conn_resp.eid; in ath12k_connect_pdev_htc_service()
9934 ab->wmi_ab.max_msg_len[pdev_idx] = conn_resp.max_msg_len; in ath12k_connect_pdev_htc_service()
9981 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_unit_test_cmd()
9989 ath12k_warn(ar->ab, "failed to send WMI_UNIT_TEST CMD :%d\n", in ath12k_wmi_send_unit_test_cmd()
10027 ath12k_dbg(ar->ab, ATH12K_DBG_REG, "Triggering Radar Simulation\n"); in ath12k_wmi_simulate_radar()
10089 ath12k_warn(ar->ab, in ath12k_wmi_send_tpc_stats_request()
10094 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "WMI get TPC STATS sent on pdev %d\n", in ath12k_wmi_send_tpc_stats_request()
10100 int ath12k_wmi_connect(struct ath12k_base *ab) in ath12k_wmi_connect() argument
10105 wmi_ep_count = ab->htc.wmi_ep_count; in ath12k_wmi_connect()
10106 if (wmi_ep_count > ab->hw_params->max_radios) in ath12k_wmi_connect()
10110 ath12k_connect_pdev_htc_service(ab, i); in ath12k_wmi_connect()
10115 static void ath12k_wmi_pdev_detach(struct ath12k_base *ab, u8 pdev_id) in ath12k_wmi_pdev_detach() argument
10123 int ath12k_wmi_pdev_attach(struct ath12k_base *ab, in ath12k_wmi_pdev_attach() argument
10128 if (pdev_id >= ab->hw_params->max_radios) in ath12k_wmi_pdev_attach()
10131 wmi_handle = &ab->wmi_ab.wmi[pdev_id]; in ath12k_wmi_pdev_attach()
10133 wmi_handle->wmi_ab = &ab->wmi_ab; in ath12k_wmi_pdev_attach()
10135 ab->wmi_ab.ab = ab; in ath12k_wmi_pdev_attach()
10141 int ath12k_wmi_attach(struct ath12k_base *ab) in ath12k_wmi_attach() argument
10145 ret = ath12k_wmi_pdev_attach(ab, 0); in ath12k_wmi_attach()
10149 ab->wmi_ab.ab = ab; in ath12k_wmi_attach()
10150 ab->wmi_ab.preferred_hw_mode = WMI_HOST_HW_MODE_MAX; in ath12k_wmi_attach()
10153 if (ab->hw_params->single_pdev_only) in ath12k_wmi_attach()
10154 ab->wmi_ab.preferred_hw_mode = WMI_HOST_HW_MODE_SINGLE; in ath12k_wmi_attach()
10157 init_completion(&ab->wmi_ab.service_ready); in ath12k_wmi_attach()
10158 init_completion(&ab->wmi_ab.unified_ready); in ath12k_wmi_attach()
10163 void ath12k_wmi_detach(struct ath12k_base *ab) in ath12k_wmi_detach() argument
10169 for (i = 0; i < ab->htc.wmi_ep_count; i++) in ath12k_wmi_detach()
10170 ath12k_wmi_pdev_detach(ab, i); in ath12k_wmi_detach()
10172 ath12k_wmi_free_dbring_caps(ab); in ath12k_wmi_detach()
10199 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_hw_data_filter_cmd()
10221 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv wow host wakeup ind\n"); in ath12k_wmi_wow_host_wakeup_ind()
10243 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv wow enable\n"); in ath12k_wmi_wow_enable()
10268 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv wow add wakeup event %s enable %d vdev_id %d\n", in ath12k_wmi_wow_add_wakeup_event()
10355 …ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv wow add pattern vdev_id %d pattern_id %d pattern_offse… in ath12k_wmi_wow_add_pattern()
10358 ath12k_dbg_dump(ar->ab, ATH12K_DBG_WMI, NULL, "wow pattern: ", in ath12k_wmi_wow_add_pattern()
10360 ath12k_dbg_dump(ar->ab, ATH12K_DBG_WMI, NULL, "wow bitmask: ", in ath12k_wmi_wow_add_pattern()
10384 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv wow del pattern vdev_id %d pattern_id %d\n", in ath12k_wmi_wow_del_pattern()
10490 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi tlv start pno config vdev_id %d\n", in ath12k_wmi_op_gen_config_pno_start()
10514 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_op_gen_config_pno_stop()
10586 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_fill_ns_offload()
10624 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "wmi arp offload address %pI4", in ath12k_wmi_fill_arp_offload()
10715 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "offload gtk rekey vdev: %d %d\n", in ath12k_wmi_gtk_rekey_offload()
10737 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "get gtk rekey vdev_id: %d\n", in ath12k_wmi_gtk_rekey_getinfo()
10773 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_sta_keepalive()
10815 ath12k_warn(ar->ab, "failed to submit WMI_MLO_SETUP_CMDID command: %d\n", in ath12k_wmi_mlo_setup()
10843 ath12k_warn(ar->ab, "failed to submit WMI_MLO_READY_CMDID command: %d\n", in ath12k_wmi_mlo_ready()
10872 ath12k_warn(ar->ab, "failed to submit WMI MLO teardown command: %d\n", in ath12k_wmi_mlo_teardown()
10884 ar->ab->wmi_ab.svc_map) && ar->supports_6ghz; in ath12k_wmi_supports_6ghz_cc_ext()
10916 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, in ath12k_wmi_send_vdev_set_tpc_power()
10933 ath12k_dbg(ar->ab, ATH12K_DBG_WMI, "tpc chan freq %d TX power %d\n", in ath12k_wmi_send_vdev_set_tpc_power()
10939 ath12k_warn(ar->ab, "failed to send WMI_VDEV_SET_TPC_POWER_CMDID\n"); in ath12k_wmi_send_vdev_set_tpc_power()
10948 ath12k_wmi_fill_disallowed_bmap(struct ath12k_base *ab, in ath12k_wmi_fill_disallowed_bmap() argument
10957 ath12k_warn(ab, "invalid num_disallow_mode_comb: %d", in ath12k_wmi_fill_disallowed_bmap()
10978 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_fill_disallowed_bmap()
10989 int ath12k_wmi_send_mlo_link_set_active_cmd(struct ath12k_base *ab, in ath12k_wmi_send_mlo_link_set_active_cmd() argument
10995 struct ath12k_wmi_base *wmi_ab = &ab->wmi_ab; in ath12k_wmi_send_mlo_link_set_active_cmd()
11007 ath12k_warn(ab, "Invalid num_vdev_bitmap and num_link_entry"); in ath12k_wmi_send_mlo_link_set_active_cmd()
11026 ath12k_warn(ab, "Invalid force mode: %u", arg->force_mode); in ath12k_wmi_send_mlo_link_set_active_cmd()
11048 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_send_mlo_link_set_active_cmd()
11077 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_send_mlo_link_set_active_cmd()
11099 ath12k_dbg(ab, ATH12K_DBG_WMI, "entry %d vdev_id_bitmap 0x%x", in ath12k_wmi_send_mlo_link_set_active_cmd()
11118 ath12k_dbg(ab, ATH12K_DBG_WMI, in ath12k_wmi_send_mlo_link_set_active_cmd()
11148 ret = ath12k_wmi_fill_disallowed_bmap(ab, buf_ptr, arg); in ath12k_wmi_send_mlo_link_set_active_cmd()
11154 ath12k_warn(ab, in ath12k_wmi_send_mlo_link_set_active_cmd()
11159 ath12k_dbg(ab, ATH12K_DBG_WMI, "WMI mlo link set active cmd"); in ath12k_wmi_send_mlo_link_set_active_cmd()