aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/synopsys
diff options
context:
space:
mode:
authorBhaktipriya Shridhar <bhaktipriya96@gmail.com>2016-07-16 13:53:28 +0530
committerDavid S. Miller <davem@davemloft.net>2016-07-17 22:27:39 -0700
commitbd25997d77730d0c6679883a899899a939c704b3 (patch)
tree37f131e7c32bdaf5ba47da51f3a725b468358b35 /drivers/net/ethernet/synopsys
parentbpf: bpf_event_entry_gen's alloc needs to be in atomic context (diff)
downloadlinux-dev-bd25997d77730d0c6679883a899899a939c704b3.tar.xz
linux-dev-bd25997d77730d0c6679883a899899a939c704b3.zip
dwc_eth_qos: Remove deprecated create_singlethread_workqueue
alloc_workqueue replaces deprecated create_singlethread_workqueue(). A dedicated workqueue has been used since the workitem viz lp->txtimeout_reinit is involved in reinitialization if a TX timeout occurs, which is necessary to guarantee forward progress in packet processing. As a network device can be used during memory reclaim, the workqueue needs forward progress guarantee under memory pressure. WQ_MEM_RECLAIM has been set to ensure this. Since there is only a single work item, explicit concurrency limit is unnecessary here. Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/synopsys')
-rw-r--r--drivers/net/ethernet/synopsys/dwc_eth_qos.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/synopsys/dwc_eth_qos.c b/drivers/net/ethernet/synopsys/dwc_eth_qos.c
index fc1ea8083f1f..9f159a775af3 100644
--- a/drivers/net/ethernet/synopsys/dwc_eth_qos.c
+++ b/drivers/net/ethernet/synopsys/dwc_eth_qos.c
@@ -2910,7 +2910,8 @@ static int dwceqos_probe(struct platform_device *pdev)
(unsigned long)ndev);
tasklet_disable(&lp->tx_bdreclaim_tasklet);
- lp->txtimeout_handler_wq = create_singlethread_workqueue(DRIVER_NAME);
+ lp->txtimeout_handler_wq = alloc_workqueue(DRIVER_NAME,
+ WQ_MEM_RECLAIM, 0);
INIT_WORK(&lp->txtimeout_reinit, dwceqos_reinit_for_txtimeout);
platform_set_drvdata(pdev, ndev);