Another snippet from my patch.
– cfhsi->wq = create_singlethread_workqueue(cfhsi->ndev->name);
+ cfhsi->wq = alloc_ordered_workqueue(cfhsi->ndev->name, WQ_MEM_RECLAIM);
An ordered workqueue has been used since workitems &cfhsi->wake_up_work
and &cfhsi->wake_down_work cannot be run concurrently.
Since the work items are being used on a packet tx/rx path, WQ_MEM_RECLAIM has been set to guarantee forward progress under memory pressure.
Used when the queued work items require strict execution ordering…