wifi: mt76: mt7925: update the power-saving flow
Subsystems (3)
PATCH v3 6/6 wifi: mt76: mt7925: update the power-saving flow
From: Sean Wang <[email protected]>
After joining MLO, ensure that all links are setup before enabling power-saving.
Fixes 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
Signed-off-by Sean Wang <[email protected]>
---
v2, v3: generate the patch based on the latest mt76 tree
--- .../net/wireless/mediatek/mt76/mt7925/init.c | 1 + .../net/wireless/mediatek/mt76/mt7925/main.c | 65 ++++++++++++++++--- .../wireless/mediatek/mt76/mt7925/mt7925.h | 1 + drivers/net/wireless/mediatek/mt76/mt792x.h | 9 +++ 4 files changed, 67 insertions(+), 9 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7925/init.c +1 -0
@@ -244,6 +244,7 @@ int mt7925_register_device(struct mt792x_dev *dev) dev->mt76.tx_worker.fn = mt792x_tx_worker;INIT_DELAYED_WORK (&dev->pm.ps_work, mt792x_pm_power_save_work); +INIT_DELAYED_WORK (&dev->mlo_pm_work, mt7925_mlo_pm_work);INIT_WORK (&dev->pm.wake_work, mt792x_pm_wake_work);spin_lock_init (&dev->pm.wake.lock);mutex_init (&dev->pm.mutex);
drivers/net/wireless/mediatek/mt76/mt7925/main.c +56 -9
108 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +1 -0
@@ -268,6 +268,7 @@ int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev,int mt7925_mcu_uni_rx_ba (struct mt792x_dev *dev,struct ieee80211_ampdu_params *params,bool enable); +void mt7925_mlo_pm_work (struct work_struct *work);void mt7925_scan_work (struct work_struct *work);void mt7925_roc_work (struct work_struct *work); int mt7925_mcu_uni_bss_ps(struct mt792x_dev *dev,
drivers/net/wireless/mediatek/mt76/mt792x.h +9 -0
@@ -81,6 +81,13 @@ enum mt792x_reg_power_type { MT_AP_VLP, }; +enum mt792x_mlo_pm_state { + MT792x_MLO_LINK_DISASSOC, + MT792x_MLO_LINK_ASSOC, + MT792x_MLO_CHANGED_PS_PENDING, + MT792x_MLO_CHANGED_PS, +}; + DECLARE_EWMA(avg_signal, 10, 8)struct mt792x_link_sta {
@@ -134,6 +141,7 @@ struct mt792x_vif {struct mt792x_phy *phy;u16 valid_links;u8 deflink_id; +enum mt792x_mlo_pm_state mlo_pm_state;struct work_struct csa_work;struct timer_list csa_timer;
@@ -239,6 +247,7 @@ struct mt792x_dev {const struct mt792x_irq_map *irq_map;struct work_struct ipv6_ns_work; +struct delayed_work mlo_pm_work;/* IPv6 addresses for WoWLAN */ struct sk_buff_head ipv6_ns_list;
Signature · 1 line
2.25.1