git: ccceb1729a6b - main - Revert "ena: Reinit RSS components during queue count change flow"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 02 Nov 2026 18:42:23 UTC
The branch main has been updated by akiyano:
URL: https://cgit.FreeBSD.org/src/commit/?id=ccceb1729a6bd82b8b293bc5ea61b863179a268e
commit ccceb1729a6bd82b8b293bc5ea61b863179a268e
Author: Arthur Kiyanovski <akiyano@amazon.com>
AuthorDate: 2026-10-30 01:38:44 +0000
Commit: Arthur Kiyanovski <akiyano@FreeBSD.org>
CommitDate: 2026-11-02 18:31:51 +0000
Revert "ena: Reinit RSS components during queue count change flow"
This reverts commit 2a27dd0076c5.
Changing the IO queue count destroys the RSS table, and if this is done
while the device is down a new table is not rebuilt until the next
ena_up(). That leaves 2 problems in the meantime:
1. A stale copy of the destroyed table is still returned via sysctl.
2. Reading the destroyed key, or writing the table, panics.
That commit addressed 1 by creating a new RSS table, so that sysctl
returns a fresh default table with the new number of queues. It did not
set out to fix 2, but the rebuild hid it by accident.
The rebuilt table is the default round-robin one, wired to no queues and
unusable: a write still fails, because programming the device needs the
IO queues that only exist after ena_up(). ena_up() builds that same
table anyway.
Rebuilding also programs the device while no IO queues exist. When the
queue count grows this fails with EINVAL; when it shrinks it succeeds
and points the device at completion queues that ena_down() destroyed.
The following commit addresses both issues properly.
Reviewed by: cperciva
MFC after: 3 days
Sponsored by: Amazon, Inc.
Differential Revision: https://reviews.freebsd.org/D61056
---
sys/dev/ena/ena.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
index 63743cbc9db2..74594fdb1496 100644
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -1437,11 +1437,6 @@ ena_update_io_queue_nb(struct ena_adapter *adapter, uint32_t new_num)
ENA_REGS_RESET_OS_TRIGGER);
}
}
- } else {
- /* Reconfigure RSS to reflect the new queue count.
- * When dev_was_up, this happens through ena_up().
- */
- rc = ena_rss_configure(adapter);
}
return (rc);