Snippet from my patch:
– lp->txtimeout_handler_wq = create_singlethread_workqueue(DRIVER_NAME);
+ lp->txtimeout_handler_wq = alloc_workqueue(DRIVER_NAME,
+ WQ_MEM_RECLAIM, 0);
- A dedicated workqueue has been used since the work item viz lp->txtimeout_reinit is involved in packet TX/RX path .
- 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.
Used when the work items are on a memory reclaim path.