Re: [PATCH net-next v5 1/5] net/smc: Make smc_tcp_listen_work() independent

Karsten Graul
2022-02-08T17:06:36Z

On 08/02/2022 13:53, D. Wythe wrote:
> +static struct workqueue_struct *smc_tcp_ls_wq; /* wq for tcp listen work */
> struct workqueue_struct *smc_hs_wq; /* wq for handshake work */
> struct workqueue_struct *smc_close_wq; /* wq for close work */
>
> @@ -2227,7 +2228,7 @@ static void smc_clcsock_data_ready(struct sock *listen_clcsock)
> lsmc->clcsk_data_ready(listen_clcsock);
> if (lsmc->sk.sk_state == SMC_LISTEN) {
> sock_hold(&lsmc->sk); /* sock_put in smc_tcp_listen_work() */
> - if (!queue_work(smc_hs_wq, &lsmc->tcp_listen_work))
> + if (!queue_work(smc_tcp_ls_wq, &lsmc->tcp_listen_work))
> sock_put(&lsmc->sk);

It works well this way, but given the fact that there is one tcp_listen worker per
listen socket and these workers finish relatively quickly, wouldn't it be okay to
use the system_wq instead of using an own queue? But I have no strong opinion about that...