Patch "ath11k: Don't check arvif->is_started before sending management frames" has been added to the 5.15-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    ath11k: Don't check arvif->is_started before sending management frames

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ath11k-don-t-check-arvif-is_started-before-sending-m.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit bdc095b162f40898669dcc815478176cd9d2c663
Author: Baochen Qiang <quic_bqiang@xxxxxxxxxxx>
Date:   Mon May 9 14:57:31 2022 +0300

    ath11k: Don't check arvif->is_started before sending management frames
    
    [ Upstream commit 355333a217541916576351446b5832fec7930566 ]
    
    Commit 66307ca04057 ("ath11k: fix mgmt_tx_wmi cmd sent to FW for
    deleted vdev") wants both of below two conditions are true before
    sending management frames:
    
    1: ar->allocated_vdev_map & (1LL << arvif->vdev_id)
    2: arvif->is_started
    
    Actually the second one is not necessary because with the first one
    we can make sure the vdev is present.
    
    Also use ar->conf_mutex to synchronize vdev delete and mgmt. TX.
    
    This issue is found in case of Passpoint scenario where ath11k
    needs to send action frames before vdev is started.
    
    Fix it by removing the second condition.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
    
    Fixes: 66307ca04057 ("ath11k: fix mgmt_tx_wmi cmd sent to FW for deleted vdev")
    Signed-off-by: Baochen Qiang <quic_bqiang@xxxxxxxxxxx>
    Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220506013614.1580274-3-quic_bqiang@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index bf64ab6e8484..f85fd341557e 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -4266,8 +4266,8 @@ static void ath11k_mgmt_over_wmi_tx_work(struct work_struct *work)
 		}
 
 		arvif = ath11k_vif_to_arvif(skb_cb->vif);
-		if (ar->allocated_vdev_map & (1LL << arvif->vdev_id) &&
-		    arvif->is_started) {
+		mutex_lock(&ar->conf_mutex);
+		if (ar->allocated_vdev_map & (1LL << arvif->vdev_id)) {
 			ret = ath11k_mac_mgmt_tx_wmi(ar, arvif, skb);
 			if (ret) {
 				ath11k_warn(ar->ab, "failed to tx mgmt frame, vdev_id %d :%d\n",
@@ -4283,6 +4283,7 @@ static void ath11k_mgmt_over_wmi_tx_work(struct work_struct *work)
 				    arvif->is_started);
 			ieee80211_free_txskb(ar->hw, skb);
 		}
+		mutex_unlock(&ar->conf_mutex);
 	}
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux