mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
mt76: sdio: do not run mt76_txq_schedule directly
In order to support runtime-pm for sdio, do not run mt76_txq_schedule directly, but schedule tx_worker instead Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
1153668eef
commit
aac5104bf6
1 changed files with 11 additions and 5 deletions
|
@ -184,9 +184,6 @@ static int mt76s_process_tx_queue(struct mt76_dev *dev, struct mt76_queue *q)
|
|||
if (!q->queued)
|
||||
wake_up(&dev->tx_wait);
|
||||
|
||||
if (!mcu)
|
||||
mt76_txq_schedule(&dev->phy, q->qid);
|
||||
|
||||
return nframes;
|
||||
}
|
||||
|
||||
|
@ -195,19 +192,28 @@ static void mt76s_status_worker(struct mt76_worker *w)
|
|||
struct mt76_sdio *sdio = container_of(w, struct mt76_sdio,
|
||||
status_worker);
|
||||
struct mt76_dev *dev = container_of(sdio, struct mt76_dev, sdio);
|
||||
bool resched = false;
|
||||
int i, nframes;
|
||||
|
||||
do {
|
||||
int ndata_frames = 0;
|
||||
|
||||
nframes = mt76s_process_tx_queue(dev, dev->q_mcu[MT_MCUQ_WM]);
|
||||
|
||||
for (i = 0; i <= MT_TXQ_PSD; i++)
|
||||
nframes += mt76s_process_tx_queue(dev,
|
||||
dev->phy.q_tx[i]);
|
||||
ndata_frames += mt76s_process_tx_queue(dev,
|
||||
dev->phy.q_tx[i]);
|
||||
nframes += ndata_frames;
|
||||
if (ndata_frames > 0)
|
||||
resched = true;
|
||||
|
||||
if (dev->drv->tx_status_data &&
|
||||
!test_and_set_bit(MT76_READING_STATS, &dev->phy.state))
|
||||
queue_work(dev->wq, &dev->sdio.stat_work);
|
||||
} while (nframes > 0);
|
||||
|
||||
if (resched)
|
||||
mt76_worker_schedule(&dev->sdio.txrx_worker);
|
||||
}
|
||||
|
||||
static void mt76s_tx_status_data(struct work_struct *work)
|
||||
|
|
Loading…
Reference in a new issue