mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	Synchronize the ath11k backports with the current ath-next tree. All of the changes are various bugfixes, there is no new major feature. Notable bugfixes are: * WCN6855 board name fixes * One MSI vector booting is working again This is rather important for most of the older platforms. * DFS CAC state in virtual interfaces was fixed * TX power during CAC reporting Signed-off-by: Robert Marko <robimarko@gmail.com>
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 69fcb525905600a151997cd16367bb92c34a2b14 Mon Sep 17 00:00:00 2001
 | |
| From: Aditya Kumar Singh <quic_adisi@quicinc.com>
 | |
| Date: Tue, 3 Oct 2023 17:26:54 +0300
 | |
| Subject: [PATCH] wifi: ath11k: fix CAC running state during virtual interface
 | |
|  start
 | |
| 
 | |
| Currently channel definition's primary channel's DFS CAC time
 | |
| as well as primary channel's state i.e usable are used to set
 | |
| the CAC_RUNNING flag for the ath11k radio structure. However,
 | |
| this is wrong since certain channel definition are possbile
 | |
| where primary channel may not be a DFS channel but, secondary
 | |
| channel is a DFS channel. For example - channel 36 with 160 MHz
 | |
| bandwidth.
 | |
| In such cases, the flag will not be set which is wrong.
 | |
| 
 | |
| Fix this issue by using cfg80211_chandef_dfs_usable() function
 | |
| from cfg80211 which return trues if at least one channel is in
 | |
| usable state.
 | |
| 
 | |
| While at it, modify the CAC running debug log message to print
 | |
| the CAC time as well in milli-seconds.
 | |
| 
 | |
| Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
 | |
| 
 | |
| Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
 | |
| Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
 | |
| Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
 | |
| Link: https://lore.kernel.org/r/20230912051857.2284-3-quic_adisi@quicinc.com
 | |
| ---
 | |
|  drivers/net/wireless/ath/ath11k/mac.c | 19 +++++++++++--------
 | |
|  1 file changed, 11 insertions(+), 8 deletions(-)
 | |
| 
 | |
| --- a/drivers/net/wireless/ath/ath11k/mac.c
 | |
| +++ b/drivers/net/wireless/ath/ath11k/mac.c
 | |
| @@ -5,6 +5,7 @@
 | |
|   */
 | |
|  
 | |
|  #include <net/mac80211.h>
 | |
| +#include <net/cfg80211.h>
 | |
|  #include <linux/etherdevice.h>
 | |
|  #include <linux/bitfield.h>
 | |
|  #include <linux/inetdevice.h>
 | |
| @@ -7196,6 +7197,7 @@ ath11k_mac_vdev_start_restart(struct ath
 | |
|  	struct wmi_vdev_start_req_arg arg = {};
 | |
|  	const struct cfg80211_chan_def *chandef = &ctx->def;
 | |
|  	int ret = 0;
 | |
| +	unsigned int dfs_cac_time;
 | |
|  
 | |
|  	lockdep_assert_held(&ar->conf_mutex);
 | |
|  
 | |
| @@ -7275,20 +7277,21 @@ ath11k_mac_vdev_start_restart(struct ath
 | |
|  	ath11k_dbg(ab, ATH11K_DBG_MAC,  "vdev %pM started, vdev_id %d\n",
 | |
|  		   arvif->vif->addr, arvif->vdev_id);
 | |
|  
 | |
| -	/* Enable CAC Flag in the driver by checking the channel DFS cac time,
 | |
| -	 * i.e dfs_cac_ms value which will be valid only for radar channels
 | |
| -	 * and state as NL80211_DFS_USABLE which indicates CAC needs to be
 | |
| +	/* Enable CAC Flag in the driver by checking the all sub-channel's DFS
 | |
| +	 * state as NL80211_DFS_USABLE which indicates CAC needs to be
 | |
|  	 * done before channel usage. This flags is used to drop rx packets.
 | |
|  	 * during CAC.
 | |
|  	 */
 | |
|  	/* TODO Set the flag for other interface types as required */
 | |
| -	if (arvif->vdev_type == WMI_VDEV_TYPE_AP &&
 | |
| -	    chandef->chan->dfs_cac_ms &&
 | |
| -	    chandef->chan->dfs_state == NL80211_DFS_USABLE) {
 | |
| +	if (arvif->vdev_type == WMI_VDEV_TYPE_AP && ctx->radar_enabled &&
 | |
| +	    cfg80211_chandef_dfs_usable(ar->hw->wiphy, chandef)) {
 | |
|  		set_bit(ATH11K_CAC_RUNNING, &ar->dev_flags);
 | |
| +		dfs_cac_time = cfg80211_chandef_dfs_cac_time(ar->hw->wiphy,
 | |
| +							     chandef);
 | |
|  		ath11k_dbg(ab, ATH11K_DBG_MAC,
 | |
| -			   "CAC Started in chan_freq %d for vdev %d\n",
 | |
| -			   arg.channel.freq, arg.vdev_id);
 | |
| +			   "cac started dfs_cac_time %u center_freq %d center_freq1 %d for vdev %d\n",
 | |
| +			   dfs_cac_time, arg.channel.freq, chandef->center_freq1,
 | |
| +			   arg.vdev_id);
 | |
|  	}
 | |
|  
 | |
|  	ret = ath11k_mac_set_txbf_conf(arvif);
 |