FAILED: patch "[PATCH] mt76: mt7921: fix command timeout in AP stop period" failed to apply to 5.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 9d958b60ebc2434f2b7eae83d77849e22d1059eb Mon Sep 17 00:00:00 2001
From: Deren Wu <[email protected]>
Date: Wed, 8 Jun 2022 20:53:26 +0800
Subject: [PATCH] mt76: mt7921: fix command timeout in AP stop period
Due to AP stop improperly, mt7921 driver would face random command timeout by chip fw problem. Migrate AP start/stop process to .start_ap/.stop_ap and congiure BSS network settings in both hooks.
The new flow is shown below.
* AP start
.start_ap()
configure BSS network resource
set BSS to connected state
.bss_info_changed()
enable fw beacon offload
* AP stop
.bss_info_changed()
disable fw beacon offload (skip this command)
.stop_ap()
set BSS to disconnected state (beacon offload disabled automatically) destroy BSS network resource
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +2 -0
@@ -1404,6 +1404,8 @@ int mt76_connac_mcu_uni_add_bss(struct mt76_phy *phy,else conn_type =CONNECTION_INFRA_AP ; basic_req.basic.conn_type =cpu_to_le32 (conn_type); +/* Fully active/deactivate BSS network in AP mode only */ + basic_req.basic.active = enable;break ;case NL80211_IFTYPE_STATION :if (vif->p2p)
drivers/net/wireless/mediatek/mt76/mt7921/main.c +40 -9
67 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +1 -4
@@ -745,7 +745,7 @@ mt7921_mcu_uni_bss_bcnft(struct mt7921_dev *dev, struct ieee80211_vif *vif, &bcnft_req, sizeof(bcnft_req), true); } -static int +int mt7921_mcu_set_bss_pm (struct mt7921_dev *dev,struct ieee80211_vif *vif,bool enable) {
@@ -774,9 +774,6 @@ mt7921_mcu_set_bss_pm(struct mt7921_dev *dev, struct ieee80211_vif *vif, };int err; -if (vif->type !=NL80211_IFTYPE_STATION ) -return 0 ; - err =mt76_mcu_send_msg (&dev->mt76,MCU_CE_CMD (SET_BSS_ABORT ), &req_hdr,sizeof (req_hdr), false);if (err <0 || !enable)
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +2 -0
@@ -284,6 +284,8 @@ int mt7921_wpdma_reset(struct mt7921_dev *dev, bool force);int mt7921_wpdma_reinit_cond (struct mt7921_dev *dev);void mt7921_dma_cleanup (struct mt7921_dev *dev);int mt7921_run_firmware (struct mt7921_dev *dev); +int mt7921_mcu_set_bss_pm (struct mt7921_dev *dev,struct ieee80211_vif *vif, +bool enable);int mt7921_mcu_sta_update (struct mt7921_dev *dev,struct ieee80211_sta *sta,struct ieee80211_vif *vif,bool enable,enum mt76_sta_info_state state);