Wen Gong <wgong@xxxxxxxxxxxxxx> writes: > On 2020-04-09 22:53, Kalle Valo wrote: >> Wen Gong <wgong@xxxxxxxxxxxxxx> writes: >> >>> + ar->workqueue_tx_complete = >>> + create_singlethread_workqueue("ath10k_tx_complete_wq"); >>> + if (!ar->workqueue_tx_complete) >>> + goto err_free_aux_wq; >> >> We already have three threads: >> >> ath/ath10k/core.c: ar->workqueue = >> create_singlethread_workqueue("ath10k_wq"); >> ath/ath10k/core.c: ar->workqueue_aux = >> create_singlethread_workqueue("ath10k_aux_wq"); >> ath/ath10k/sdio.c: ar_sdio->workqueue = >> create_singlethread_workqueue("ath10k_sdio_wq"); >> >> Do we really need a fourth one? For example, why can't we use >> ar->workqueue_aux? > > For tcp test, it has 4 thread work meanwhile: > tx_bundle_skbs(ar->workqueue), > rx_indication(ar->workqueue_aux), > sdio_async_tx_request(ar_sdio->workqueue), > tx_bundle_complete(ar->workqueue_tx_complete) > > It has 4+ cpu/core in system, if reduced to 3 threads, then tcp > throughput will drop. only when it only has 1/2/3 cpu/core in system, > then reduced to 3 threads will not drop. How much does it drop? Please add the justification (with numbers) for the new thread to the commit log, so that the reason is properly documented. -- https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches