Page MenuHomeFreeBSD

D57256.diff
No OneTemporary

D57256.diff

diff --git a/share/man/man9/iflibdd.9 b/share/man/man9/iflibdd.9
--- a/share/man/man9/iflibdd.9
+++ b/share/man/man9/iflibdd.9
@@ -207,6 +207,9 @@
the hardware receive queues.
nrxqs is the number of queues per qset.
nrxqsets is the number of qsets.
+The qset count is not guaranteed to be a power of two, so reduce an
+RSS bucket to a queue with a modulo, not an AND mask, or some queues
+are starved.
.It Fn ifdi_queues_free
Mandatory function that frees the allocated queues and associated transmit
buffers.
diff --git a/sys/net/rss_config.c b/sys/net/rss_config.c
--- a/sys/net/rss_config.c
+++ b/sys/net/rss_config.c
@@ -366,6 +366,10 @@
* NIC drivers can then iterate over the 128 slot RSS
* indirection table and fetch which RSS bucket to
* map it to. This will typically be a CPU queue
+ *
+ * Note: a NIC's RX queue count is not guaranteed to be a power of
+ * two, so reduce the returned bucket to a queue with a modulo, not
+ * an AND mask, or some queues are starved.
*/
u_int
rss_get_indirection_to_bucket(u_int index)

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 16, 11:15 PM (14 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35151305
Default Alt Text
D57256.diff (1 KB)

Event Timeline