1a7202704SKiran Venkatappa // SPDX-License-Identifier: BSD-3-Clause-Clear 2a7202704SKiran Venkatappa /* 3a7202704SKiran Venkatappa * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 4a7202704SKiran Venkatappa * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 5a7202704SKiran Venkatappa */ 6a7202704SKiran Venkatappa 7a7202704SKiran Venkatappa #include "../core.h" 8a7202704SKiran Venkatappa #include "wmi.h" 9a7202704SKiran Venkatappa 10bce3b73dSKiran Venkatappa void ath12k_wifi7_wmi_init_qcn9274(struct ath12k_base *ab, 11a7202704SKiran Venkatappa struct ath12k_wmi_resource_config_arg *config) 12a7202704SKiran Venkatappa { 13a7202704SKiran Venkatappa config->num_vdevs = ab->num_radios * TARGET_NUM_VDEVS(ab); 14a7202704SKiran Venkatappa config->num_peers = ab->num_radios * 15a7202704SKiran Venkatappa ath12k_core_get_max_peers_per_radio(ab); 16a7202704SKiran Venkatappa config->num_offload_peers = TARGET_NUM_OFFLD_PEERS; 17a7202704SKiran Venkatappa config->num_offload_reorder_buffs = TARGET_NUM_OFFLD_REORDER_BUFFS; 18a7202704SKiran Venkatappa config->num_peer_keys = TARGET_NUM_PEER_KEYS; 19a7202704SKiran Venkatappa config->ast_skid_limit = TARGET_AST_SKID_LIMIT; 20a7202704SKiran Venkatappa config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 21a7202704SKiran Venkatappa config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 22a7202704SKiran Venkatappa config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI; 23a7202704SKiran Venkatappa config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI; 24a7202704SKiran Venkatappa config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI; 25a7202704SKiran Venkatappa config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI; 26a7202704SKiran Venkatappa 27a7202704SKiran Venkatappa if (test_bit(ATH12K_FLAG_RAW_MODE, &ab->dev_flags)) 28a7202704SKiran Venkatappa config->rx_decap_mode = TARGET_DECAP_MODE_RAW; 29a7202704SKiran Venkatappa else 30a7202704SKiran Venkatappa config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI; 31a7202704SKiran Venkatappa 32a7202704SKiran Venkatappa config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS; 33a7202704SKiran Venkatappa config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV; 34a7202704SKiran Venkatappa config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV; 35a7202704SKiran Venkatappa config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES; 36a7202704SKiran Venkatappa config->num_mcast_groups = TARGET_NUM_MCAST_GROUPS; 37a7202704SKiran Venkatappa config->num_mcast_table_elems = TARGET_NUM_MCAST_TABLE_ELEMS; 38a7202704SKiran Venkatappa config->mcast2ucast_mode = TARGET_MCAST2UCAST_MODE; 39a7202704SKiran Venkatappa config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE; 40a7202704SKiran Venkatappa config->num_wds_entries = TARGET_NUM_WDS_ENTRIES; 41a7202704SKiran Venkatappa config->dma_burst_size = TARGET_DMA_BURST_SIZE; 42a7202704SKiran Venkatappa config->rx_skip_defrag_timeout_dup_detection_check = 43a7202704SKiran Venkatappa TARGET_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK; 44a7202704SKiran Venkatappa config->vow_config = TARGET_VOW_CONFIG; 45a7202704SKiran Venkatappa config->gtk_offload_max_vdev = TARGET_GTK_OFFLOAD_MAX_VDEV; 46a7202704SKiran Venkatappa config->num_msdu_desc = TARGET_NUM_MSDU_DESC; 47a7202704SKiran Venkatappa config->beacon_tx_offload_max_vdev = ab->num_radios * TARGET_MAX_BCN_OFFLD; 48a7202704SKiran Venkatappa config->rx_batchmode = TARGET_RX_BATCHMODE; 49a7202704SKiran Venkatappa /* Indicates host supports peer map v3 and unmap v2 support */ 50a7202704SKiran Venkatappa config->peer_map_unmap_version = 0x32; 51a7202704SKiran Venkatappa config->twt_ap_pdev_count = ab->num_radios; 52a7202704SKiran Venkatappa config->twt_ap_sta_count = 1000; 53a7202704SKiran Venkatappa config->ema_max_vap_cnt = ab->num_radios; 54a7202704SKiran Venkatappa config->ema_max_profile_period = TARGET_EMA_MAX_PROFILE_PERIOD; 55a7202704SKiran Venkatappa config->beacon_tx_offload_max_vdev += config->ema_max_vap_cnt; 56a7202704SKiran Venkatappa 57a7202704SKiran Venkatappa if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map)) 58a7202704SKiran Venkatappa config->peer_metadata_ver = ATH12K_PEER_METADATA_V1B; 59a7202704SKiran Venkatappa } 60a7202704SKiran Venkatappa 61bce3b73dSKiran Venkatappa void ath12k_wifi7_wmi_init_wcn7850(struct ath12k_base *ab, 62a7202704SKiran Venkatappa struct ath12k_wmi_resource_config_arg *config) 63a7202704SKiran Venkatappa { 64a7202704SKiran Venkatappa config->num_vdevs = 4; 65a7202704SKiran Venkatappa config->num_peers = 16; 66a7202704SKiran Venkatappa config->num_tids = 32; 67a7202704SKiran Venkatappa 68a7202704SKiran Venkatappa config->num_offload_peers = 3; 69a7202704SKiran Venkatappa config->num_offload_reorder_buffs = 3; 70a7202704SKiran Venkatappa config->num_peer_keys = TARGET_NUM_PEER_KEYS; 71a7202704SKiran Venkatappa config->ast_skid_limit = TARGET_AST_SKID_LIMIT; 72a7202704SKiran Venkatappa config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 73a7202704SKiran Venkatappa config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 74a7202704SKiran Venkatappa config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI; 75a7202704SKiran Venkatappa config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI; 76a7202704SKiran Venkatappa config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI; 77a7202704SKiran Venkatappa config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI; 78a7202704SKiran Venkatappa config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI; 79a7202704SKiran Venkatappa config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS; 80a7202704SKiran Venkatappa config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV; 81a7202704SKiran Venkatappa config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV; 82a7202704SKiran Venkatappa config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES; 83a7202704SKiran Venkatappa config->num_mcast_groups = 0; 84a7202704SKiran Venkatappa config->num_mcast_table_elems = 0; 85a7202704SKiran Venkatappa config->mcast2ucast_mode = 0; 86a7202704SKiran Venkatappa config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE; 87a7202704SKiran Venkatappa config->num_wds_entries = 0; 88a7202704SKiran Venkatappa config->dma_burst_size = 0; 89a7202704SKiran Venkatappa config->rx_skip_defrag_timeout_dup_detection_check = 0; 90a7202704SKiran Venkatappa config->vow_config = TARGET_VOW_CONFIG; 91a7202704SKiran Venkatappa config->gtk_offload_max_vdev = 2; 92a7202704SKiran Venkatappa config->num_msdu_desc = 0x400; 93a7202704SKiran Venkatappa config->beacon_tx_offload_max_vdev = 2; 94a7202704SKiran Venkatappa config->rx_batchmode = TARGET_RX_BATCHMODE; 95a7202704SKiran Venkatappa 96a7202704SKiran Venkatappa config->peer_map_unmap_version = 0x1; 97a7202704SKiran Venkatappa config->use_pdev_id = 1; 98a7202704SKiran Venkatappa config->max_frag_entries = 0xa; 99a7202704SKiran Venkatappa config->num_tdls_vdevs = 0x1; 100a7202704SKiran Venkatappa config->num_tdls_conn_table_entries = 8; 101a7202704SKiran Venkatappa config->beacon_tx_offload_max_vdev = 0x2; 102a7202704SKiran Venkatappa config->num_multicast_filter_entries = 0x20; 103a7202704SKiran Venkatappa config->num_wow_filters = 0x16; 104a7202704SKiran Venkatappa config->num_keep_alive_pattern = 0; 105*d6c5d412SBaochen Qiang 106*d6c5d412SBaochen Qiang if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map)) 107*d6c5d412SBaochen Qiang config->peer_metadata_ver = ATH12K_PEER_METADATA_V1A; 108*d6c5d412SBaochen Qiang else 109*d6c5d412SBaochen Qiang config->peer_metadata_ver = ab->wmi_ab.dp_peer_meta_data_ver; 110a7202704SKiran Venkatappa } 111