mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-12-10 08:26:55 +00:00
libertas: Remove create_workqueue
alloc_workqueue replaces deprecated create_workqueue(). In if_sdio.c, the workqueue card->workqueue has workitem &card->packet_worker, which is mapped to if_sdio_host_to_card_worker. The workitem is involved in sending packets to firmware. Forward progress under memory pressure is a requirement here. In if_spi.c, the workqueue card->workqueue has workitem &card->packet_worker, which is mapped to if_spi_host_to_card_worker. The workitem is involved in sending command packets from the host. Forward progress under memory pressure is a requirement here. Dedicated workqueues have been used in both cases since the workitems on the workqueues are involved in normal device operation with WQ_MEM_RECLAIM set to gurantee forward progress under memory pressure. Since there are only a fixed number of work items, explicit concurrency limit is unnecessary. flush_workqueue is unnecessary since destroy_workqueue() itself calls drain_workqueue() which flushes repeatedly till the workqueue becomes empty. Hence the calls to flush_workqueue() before destroy_workqueue() have been dropped. Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
2a73445102
commit
f9f905b00b
@ -1228,7 +1228,7 @@ static int if_sdio_probe(struct sdio_func *func,
|
|||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_init(&card->lock);
|
spin_lock_init(&card->lock);
|
||||||
card->workqueue = create_workqueue("libertas_sdio");
|
card->workqueue = alloc_workqueue("libertas_sdio", WQ_MEM_RECLAIM, 0);
|
||||||
INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker);
|
INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker);
|
||||||
init_waitqueue_head(&card->pwron_waitq);
|
init_waitqueue_head(&card->pwron_waitq);
|
||||||
|
|
||||||
@ -1326,7 +1326,6 @@ static void if_sdio_remove(struct sdio_func *func)
|
|||||||
lbs_stop_card(card->priv);
|
lbs_stop_card(card->priv);
|
||||||
lbs_remove_card(card->priv);
|
lbs_remove_card(card->priv);
|
||||||
|
|
||||||
flush_workqueue(card->workqueue);
|
|
||||||
destroy_workqueue(card->workqueue);
|
destroy_workqueue(card->workqueue);
|
||||||
|
|
||||||
while (card->packets) {
|
while (card->packets) {
|
||||||
|
|||||||
@ -1180,7 +1180,7 @@ static int if_spi_probe(struct spi_device *spi)
|
|||||||
priv->fw_ready = 1;
|
priv->fw_ready = 1;
|
||||||
|
|
||||||
/* Initialize interrupt handling stuff. */
|
/* Initialize interrupt handling stuff. */
|
||||||
card->workqueue = create_workqueue("libertas_spi");
|
card->workqueue = alloc_workqueue("libertas_spi", WQ_MEM_RECLAIM, 0);
|
||||||
INIT_WORK(&card->packet_work, if_spi_host_to_card_worker);
|
INIT_WORK(&card->packet_work, if_spi_host_to_card_worker);
|
||||||
INIT_WORK(&card->resume_work, if_spi_resume_worker);
|
INIT_WORK(&card->resume_work, if_spi_resume_worker);
|
||||||
|
|
||||||
@ -1208,7 +1208,6 @@ static int if_spi_probe(struct spi_device *spi)
|
|||||||
release_irq:
|
release_irq:
|
||||||
free_irq(spi->irq, card);
|
free_irq(spi->irq, card);
|
||||||
terminate_workqueue:
|
terminate_workqueue:
|
||||||
flush_workqueue(card->workqueue);
|
|
||||||
destroy_workqueue(card->workqueue);
|
destroy_workqueue(card->workqueue);
|
||||||
lbs_remove_card(priv); /* will call free_netdev */
|
lbs_remove_card(priv); /* will call free_netdev */
|
||||||
free_card:
|
free_card:
|
||||||
@ -1235,7 +1234,6 @@ static int libertas_spi_remove(struct spi_device *spi)
|
|||||||
lbs_remove_card(priv); /* will call free_netdev */
|
lbs_remove_card(priv); /* will call free_netdev */
|
||||||
|
|
||||||
free_irq(spi->irq, card);
|
free_irq(spi->irq, card);
|
||||||
flush_workqueue(card->workqueue);
|
|
||||||
destroy_workqueue(card->workqueue);
|
destroy_workqueue(card->workqueue);
|
||||||
if (card->pdata->teardown)
|
if (card->pdata->teardown)
|
||||||
card->pdata->teardown(spi);
|
card->pdata->teardown(spi);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user