From: sashiko-bot@kernel.org
To: "Long Li" <longli@microsoft.com>
Cc: linux-hyperv@vger.kernel.org
Subject: Re: [PATCH net-next v2 02/13] net: mana: swap queue sets in mana_set_channels
Date: Fri, 14 Aug 2026 05:05:15 +0000 [thread overview]
Message-ID: <20260814050515.D0C531F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260813050418.2906468-3-longli@microsoft.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] mana_set_channels silently drops user-configured RSS indirection tables
--
--- Patch [2]: [PATCH net-next v2 02/13] net: mana: swap queue sets in mana_set_channels ---
commit 20d58255702f027247917ff013e18e0c18e9845c
Author: Long Li <longli@microsoft.com>
Subject: net: mana: swap queue sets in mana_set_channels
This converts the channel count path away from detach/attach. It builds
the new queue set while the current one keeps serving traffic, then swaps
it in and retires the old one.
> diff --git a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> index 04b7a5c0fdabc..b12291555eaeb 100644
> --- a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> +++ b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
[ ... ]
> @@ -659,42 +659,88 @@ static int mana_set_channels(struct net_device *ndev,
> apc->channel_changing = true;
> mutex_unlock(&apc->vport_mutex);
>
> - err = mana_pre_alloc_rxbufs(apc, ndev->mtu, new_count);
> - if (err) {
> - netdev_err(ndev, "Insufficient memory for new allocations");
> + scratch = mana_qset_scratch_alloc(apc);
> + if (!scratch) {
> + err = -ENOMEM;
> goto clear_flag;
> }
>
> - err = mana_detach(ndev, false);
> - if (err) {
> - netdev_err(ndev, "mana_detach failed: %d\n", err);
> - goto out;
> - }
> + err = mana_alloc_qset(scratch, new_count, apc->rx_queue_size,
> + apc->tx_queue_size, apc->priv_flags, &newq);
[Severity: Medium]
Does this silently drop a user-configured RSS indirection table?
By using mana_alloc_qset() here in mana_set_channels(), a custom RSS
indirection table configured via ethtool will be lost. When mana_alloc_qset()
is called, it unconditionally initializes the table with default values in
drivers/net/ethernet/microsoft/mana/mana_en.c:
mana_alloc_qset() {
...
mana_rss_table_init(scratch);
...
mana_qset_snapshot(scratch, out);
}
Because out->rxfh_indir_lost is explicitly set to false, the old indirection
table is freed without preserving the entries, and no ethtool_rxfh_indir_lost()
notification is sent.
Will this cause the interface to silently revert to a default hashing
distribution after a channel count change instead of preserving it?
> + if (err)
> + goto free_scratch; /* current qset untouched, nothing to undo */
>
> - apc->num_queues = new_count;
> - err = mana_attach(ndev);
> + err = mana_publish_qset(apc, &newq, &oldq);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813050418.2906468-1-longli@microsoft.com?part=2
next prev parent reply other threads:[~2026-08-14 5:05 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 5:04 [PATCH net-next v2 00/13] net: mana: reconfigure by replacing the queue set Long Li
2026-08-13 5:04 ` [PATCH net-next v2 01/13] net: mana: add queue-set allocation and teardown helpers Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 02/13] net: mana: swap queue sets in mana_set_channels Long Li
2026-08-14 5:05 ` sashiko-bot [this message]
2026-08-13 5:04 ` [PATCH net-next v2 03/13] net: mana: swap queue sets in mana_set_ringparam Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 04/13] net: mana: swap queue sets in mana_set_priv_flags Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 05/13] net: mana: swap queue sets in mana_change_mtu Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 06/13] net: mana: swap queue sets in mana_xdp_set Long Li
2026-08-13 5:04 ` [PATCH net-next v2 07/13] net: mana: do not bail out of mana_detach on dealloc failure Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 08/13] net: mana: keep per-queue statistics in the port context Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 09/13] net: mana: share the EQ pool across a queue-set swap Long Li
2026-08-13 5:04 ` [PATCH net-next v2 10/13] net: mana: release EQs left idle by a channel-count reduction Long Li
2026-08-13 5:04 ` [PATCH net-next v2 11/13] net: mana: keep a user-configured RSS table across a queue rebuild Long Li
2026-08-14 5:05 ` sashiko-bot
2026-08-13 5:04 ` [PATCH net-next v2 12/13] net: mana: keep the surviving queues when the channel count is reduced Long Li
2026-08-13 5:04 ` [PATCH net-next v2 13/13] net: mana: keep the existing queues when the channel count is raised Long Li
-- strict thread matches above, loose matches on Subject: below --
2026-08-11 6:34 [PATCH net-next v2 00/13] net: mana: reconfigure by replacing the queue set Long Li
2026-08-11 6:34 ` [PATCH net-next v2 02/13] net: mana: swap queue sets in mana_set_channels Long Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260814050515.D0C531F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.