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 2024/5/10 20:03, Carl Huang wrote:


On 2024/5/10 18:18, Kalle Valo wrote:
"Luca Weiss" <luca.weiss@xxxxxxxxxxxxx> writes:

On Fri Jul 14, 2023 at 4:38 AM CEST, Carl Huang wrote:
Add hardware parameter support_dual_stations to indicate
whether 2 station interfaces are supported. For chips which
support this feature, limit total number of AP interface and
mesh point to 1. The max interfaces are 3 for such chips.

The chips affected are:
  QCA6390 hw2.0
  WCN6855 hw2.0
  WCN6855 hw2.1
Other chips are not affected.

For affected chips, remove radar_detect_widths because now
num_different_channels is set to 2. radar_detect_widths can
be set only when num_different_channels is 1. See mac80211
function wiphy_verify_combinations for details.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Hi Carl,

Unfortunately this commit breaks wifi on a QCM6490 smartphone
(qcm6490-fairphone-fp5) and makes the board crash.

Reverting this commit (plus for conflict resolution 5dc9d1a55e95 ("wifi:
ath11k: add support for QCA2066") and 24395ec11707 ("wifi: ath11k:
provide address list if chip supports 2 stations")) makes wifi work
again.

Thanks for the report. So the broken commit is:

f019f4dff2e4 wifi: ath11k: support 2 station interfaces

This went into v6.9-rc1 so I'm guessing that WCN6750 support will be
fully broken in v6.9? Not good. And most likely Linus will release v6.9
on Sunday so it's too late to get a fix included in the final release.

Carl, can you fix this ASAP? Or should we just revert the broken
commits?

Adding this to our regression tracking:

#regzbot introduced: f019f4dff2e4 ^
#regzbot title: ath11k: WCN6750 firmware crashes during initialisation

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>
---
 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,
--
2.34.1


Hi Luca, could you help apply this patch and retest?

Hi Kalle, could you help send this patch if Luca verifies it works?







[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