Subject: Re: [net-next,v4,1/2] net/rds: Add per cp work queue

From: Jakub Kicinski <[email-masked]>
Date: Thu, 8 Jan 2026 18:51:43 -0800

This is an automated AI-generated review of your patch.

For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
commit 0d0b74852d11c82ac7d91c72b33c5dccb75934c5
Author: Allison Henderson <[email-masked]>

    net/rds: Add per cp work queue

This patch adds cp_wq to struct rds_conn_path and substitutes rds_wq with
cp->cp_wq throughout the RDS codebase to enable per-connection workqueue
management.

> diff --git a/net/rds/ib_send.c b/net/rds/ib_send.c
> index 4190b90ff3b1..e35bbb6ffb68 100644
> --- a/net/rds/ib_send.c
> +++ b/net/rds/ib_send.c
> @@ -419,7 +419,7 @@ void rds_ib_send_add_credits(struct rds_connection *conn, unsigned int credits)
>
>  	atomic_add(IB_SET_SEND_CREDITS(credits), &ic->i_credits);
>  	if (test_and_clear_bit(RDS_LL_SEND_FULL, &conn->c_flags))
> -		queue_delayed_work(rds_wq, &conn->c_send_w, 0);
> +		queue_delayed_work(conn->c_path->cp_wq, &conn->c_send_w, 0);
>
>  	WARN_ON(IB_GET_SEND_CREDITS(credits) >= 16384);

This substitution in rds_ib_send_add_credits() looks correct, but was the
similar call site in rds_ib_send_cqe_handler() in the same file
intentionally left unchanged? That function still uses:

    queue_delayed_work(rds_wq, &conn->c_send_w, 0);

Both functions have access to conn->c_path->cp_wq, so the inconsistency
seems unintentional. If some call sites should remain on the global rds_wq
while others use the per-connection workqueue, it would help to understand
the reasoning.

Similarly, rds_cong_queue_updates() in net/rds/cong.c still uses:

    queue_delayed_work(rds_wq, &cp->cp_send_w, 0);

even though it already has cp available. Should this also be updated to
use cp->cp_wq for consistency with the other substitutions?