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.