Message ID | 9337f7947e1f0921ffb6b4af541d29af9a0a9394.1622112237.git.deren.wu@mediatek.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Felix Fietkau |
Headers | show |
Series | mt76: mt7921: update statistic in active mode only | expand |
> From: Deren Wu <deren.wu@mediatek.com> > > wakeup chip every 250ms may cause huge power consumption > > try to update statistic counter only if in active status only, > and it would lead fewer power cost > > Signed-off-by: Deren Wu <deren.wu@mediatek.com> > --- > drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > Hi Deren, in order to be acceptable we need even patch 2/2. I guess it would be better to squash them in oreder to not break it. Regards, Lorenzo > diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c > index e29d4fdab572..212832b34674 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c > @@ -1459,13 +1459,15 @@ void mt7921_pm_power_save_work(struct work_struct *work) > { > struct mt7921_dev *dev; > unsigned long delta; > + struct mt76_phy *mphy; > > dev = (struct mt7921_dev *)container_of(work, struct mt7921_dev, > pm.ps_work.work); > + mphy = dev->phy.mt76; > > delta = dev->pm.idle_timeout; > - if (test_bit(MT76_HW_SCANNING, &dev->mphy.state) || > - test_bit(MT76_HW_SCHED_SCANNING, &dev->mphy.state)) > + if (test_bit(MT76_HW_SCANNING, &mphy->state) || > + test_bit(MT76_HW_SCHED_SCANNING, &mphy->state)) > goto out; > > if (time_is_after_jiffies(dev->pm.last_activity + delta)) { > @@ -1473,8 +1475,10 @@ void mt7921_pm_power_save_work(struct work_struct *work) > goto out; > } > > - if (!mt7921_mcu_fw_pmctrl(dev)) > + if (!mt7921_mcu_fw_pmctrl(dev)) { > + cancel_delayed_work_sync(&mphy->mac_work); > return; > + } > out: > queue_delayed_work(dev->mt76.wq, &dev->pm.ps_work, delta); > } > -- > 2.18.0 >
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c index e29d4fdab572..212832b34674 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c @@ -1459,13 +1459,15 @@ void mt7921_pm_power_save_work(struct work_struct *work) { struct mt7921_dev *dev; unsigned long delta; + struct mt76_phy *mphy; dev = (struct mt7921_dev *)container_of(work, struct mt7921_dev, pm.ps_work.work); + mphy = dev->phy.mt76; delta = dev->pm.idle_timeout; - if (test_bit(MT76_HW_SCANNING, &dev->mphy.state) || - test_bit(MT76_HW_SCHED_SCANNING, &dev->mphy.state)) + if (test_bit(MT76_HW_SCANNING, &mphy->state) || + test_bit(MT76_HW_SCHED_SCANNING, &mphy->state)) goto out; if (time_is_after_jiffies(dev->pm.last_activity + delta)) { @@ -1473,8 +1475,10 @@ void mt7921_pm_power_save_work(struct work_struct *work) goto out; } - if (!mt7921_mcu_fw_pmctrl(dev)) + if (!mt7921_mcu_fw_pmctrl(dev)) { + cancel_delayed_work_sync(&mphy->mac_work); return; + } out: queue_delayed_work(dev->mt76.wq, &dev->pm.ps_work, delta); }