Search Linux Wireless

Re: [PATCH 1/2] wifi: ath11k: supports 2 station interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri May 10, 2024 at 3:04 PM CEST, Carl Huang wrote:

<snip>

> > Kalle, looks we're not able to fix it before Sunday as I don't have 
> > WCN6750 setup to verify the fix. The fix could be to define a dedicated 
> > function ath11k_init_wmi_config_wcn6750() for WCN6750. I'll send the 
> > patch out so others like Luca can have a try.
> > 
> Sorry, I have problem to run "git send-email" as it prompts "5.7.60 
> SMTP; Client does not have permissions to send as this sender".
>
> The patch looks like:
>
>  From 19bb7f1377a5e3c5d42ab2bedbaf9e976c1068b4 Mon Sep 17 00:00:00 2001
> From: Carl Huang <quic_cjhuang@xxxxxxxxxxx>
> Date: Fri, 10 May 2024 19:40:37 +0800
> Subject: [PATCH] wifi:ath11k: fix WCN6750 firmware crash
>
> WCN6750 firmware crashed because of vdev_number changed to 3 from 4
> in commit f019f4dff2e4("wifi: ath11k: support 2 station interfaces").
>
> Fix it by defining a separate function ath11k_init_wmi_config_wcn6750()
> for WCN6750 to initialize its' specific parameters.
>
> Fixes: f019f4dff2e4 ("wifi: ath11k: support 2 station interfaces")
> Tested-on: WCN6855 hw2.0 PCI 
> WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>
> Signed-off-by: Carl Huang <quic_cjhuang@xxxxxxxxxxx>

This seems to work fine also.

Tested-on: wcn6750 hw1.0 AHB WLAN.MSL.1.0.1-01371-QCAMSLSWPLZ-1

Regards
Luca

> ---
>   drivers/net/wireless/ath/ath11k/hw.c | 49 +++++++++++++++++++++++++++-
>   1 file changed, 48 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/hw.c 
> b/drivers/net/wireless/ath/ath11k/hw.c
> index caa6dc12a790..df8822ac3be1 100644
> --- a/drivers/net/wireless/ath/ath11k/hw.c
> +++ b/drivers/net/wireless/ath/ath11k/hw.c
> @@ -102,6 +102,53 @@ static void ath11k_init_wmi_config_qca6390(struct 
> ath11k_base *ab,
>   	config->flag1 |= WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64;
>   }
>
> +static void ath11k_init_wmi_config_wcn6750(struct ath11k_base *ab,
> +					   struct target_resource_config *config)
> +{
> +	config->num_vdevs = 4;
> +	config->num_peers = 16;
> +	config->num_tids = 32;
> +
> +	config->num_offload_peers = 3;
> +	config->num_offload_reorder_buffs = 3;
> +	config->num_peer_keys = TARGET_NUM_PEER_KEYS;
> +	config->ast_skid_limit = TARGET_AST_SKID_LIMIT;
> +	config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
> +	config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
> +	config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI;
> +	config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI;
> +	config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI;
> +	config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI;
> +	config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI;
> +	config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS;
> +	config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV;
> +	config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV;
> +	config->roam_offload_max_ap_profiles = 
> TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES;
> +	config->num_mcast_groups = 0;
> +	config->num_mcast_table_elems = 0;
> +	config->mcast2ucast_mode = 0;
> +	config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE;
> +	config->num_wds_entries = 0;
> +	config->dma_burst_size = 0;
> +	config->rx_skip_defrag_timeout_dup_detection_check = 0;
> +	config->vow_config = TARGET_VOW_CONFIG;
> +	config->gtk_offload_max_vdev = 2;
> +	config->num_msdu_desc = 0x400;
> +	config->beacon_tx_offload_max_vdev = 2;
> +	config->rx_batchmode = TARGET_RX_BATCHMODE;
> +
> +	config->peer_map_unmap_v2_support = 0;
> +	config->use_pdev_id = 1;
> +	config->max_frag_entries = 0xa;
> +	config->num_tdls_vdevs = 0x1;
> +	config->num_tdls_conn_table_entries = 8;
> +	config->beacon_tx_offload_max_vdev = 0x2;
> +	config->num_multicast_filter_entries = 0x20;
> +	config->num_wow_filters = 0x16;
> +	config->num_keep_alive_pattern = 0;
> +	config->flag1 |= WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64;
> +}
> +
>   static void ath11k_hw_ipq8074_reo_setup(struct ath11k_base *ab)
>   {
>   	u32 reo_base = HAL_SEQ_WCSS_UMAC_REO_REG;
> @@ -1102,7 +1149,7 @@ const struct ath11k_hw_ops wcn6855_ops = {
>
>   const struct ath11k_hw_ops wcn6750_ops = {
>   	.get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id,
> -	.wmi_init_config = ath11k_init_wmi_config_qca6390,
> +	.wmi_init_config = ath11k_init_wmi_config_wcn6750,
>   	.mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_qca6390,
>   	.mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_qca6390,
>   	.tx_mesh_enable = ath11k_hw_qcn9074_tx_mesh_enable,






[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux