dwc_eth_qos: Remove deprecated create_singlethread_workqueue
authorBhaktipriya Shridhar <bhaktipriya96@gmail.com>
Sat, 16 Jul 2016 08:23:28 +0000 (13:53 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Jul 2016 05:27:39 +0000 (22:27 -0700)
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>
drivers/net/ethernet/synopsys/dwc_eth_qos.c

index fc1ea80..9f159a7 100644 (file)
@@ -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);