mt76: mt7921: allow chip reset during device restart
Disable chip full reset just during device probing but allow it during hw restart. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
a27238a048
commit
61a1f99dd1
3 changed files with 14 additions and 5 deletions
|
@ -236,7 +236,13 @@ int mt7921_register_device(struct mt7921_dev *dev)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return mt76_connac_mcu_set_deep_sleep(&dev->mt76, dev->pm.ds_enable);
|
ret = mt76_connac_mcu_set_deep_sleep(&dev->mt76, dev->pm.ds_enable);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
dev->hw_init_done = true;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mt7921_unregister_device(struct mt7921_dev *dev)
|
void mt7921_unregister_device(struct mt7921_dev *dev)
|
||||||
|
|
|
@ -1390,11 +1390,13 @@ void mt7921_reset(struct mt76_dev *mdev)
|
||||||
{
|
{
|
||||||
struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
|
struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
|
||||||
|
|
||||||
if (!test_bit(MT76_STATE_RUNNING, &dev->mphy.state))
|
if (!dev->hw_init_done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!dev->hw_full_reset)
|
if (dev->hw_full_reset)
|
||||||
queue_work(dev->mt76.wq, &dev->reset_work);
|
return;
|
||||||
|
|
||||||
|
queue_work(dev->mt76.wq, &dev->reset_work);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -160,7 +160,8 @@ struct mt7921_dev {
|
||||||
u16 chainmask;
|
u16 chainmask;
|
||||||
|
|
||||||
struct work_struct reset_work;
|
struct work_struct reset_work;
|
||||||
bool hw_full_reset;
|
bool hw_full_reset:1;
|
||||||
|
bool hw_init_done:1;
|
||||||
|
|
||||||
struct list_head sta_poll_list;
|
struct list_head sta_poll_list;
|
||||||
spinlock_t sta_poll_lock;
|
spinlock_t sta_poll_lock;
|
||||||
|
|
Loading…
Add table
Reference in a new issue