Re: [PATCH net-next v4 1/2] net: libwx: support multiple RSS for every pool
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-09-16 01:01:35
On Fri, 12 Sep 2025 14:23:56 +0800 Jiawen Wu wrote:
Subject: [PATCH net-next v4 1/2] net: libwx: support multiple RSS for every pool
"support multiple RSS" needs an object. Multiple RSS keys? Multiple contexts? Multiple tables?
-static void wx_store_reta(struct wx *wx)
+u32 wx_rss_indir_tbl_entries(struct wx *wx)
{
+ if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
+ return 64;
+ else
+ return 128;
+}Is WX_FLAG_SRIOV_ENABLED set only when VFs are created? What if the user set a table with 128 entries? The RSS table can't shrink once intentionally set to a specific size.
quoted hunk ↗ jump to hunk
+void wx_store_reta(struct wx *wx) +{ + u32 reta_entries = wx_rss_indir_tbl_entries(wx); u8 *indir_tbl = wx->rss_indir_tbl; u32 reta = 0; u32 i;@@ -2007,36 +2016,55 @@ static void wx_store_reta(struct wx *wx) /* Fill out the redirection table as follows: * - 8 bit wide entries containing 4 bit RSS index */ - for (i = 0; i < WX_MAX_RETA_ENTRIES; i++) { + for (i = 0; i < reta_entries; i++) { reta |= indir_tbl[i] << (i & 0x3) * 8; if ((i & 3) == 3) { - wr32(wx, WX_RDB_RSSTBL(i >> 2), reta); + if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) && + test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) + wr32(wx, WX_RDB_VMRSSTBL(i >> 2, wx->num_vfs), reta);
Do we need to reprogram the RSS when number of VFs change, now?
+ else
+ wr32(wx, WX_RDB_RSSTBL(i >> 2), reta);
reta = 0;
}
}
}
+void wx_store_rsskey(struct wx *wx)
+{
+ u32 random_key_size = WX_RSS_KEY_SIZE / 4;They key is just initialized to a random value, it doesn't have to be random. Just "key_size" is better.
+ u32 i;
+
+ if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) &&
+ test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
+ for (i = 0; i < random_key_size; i++)
+ wr32(wx, WX_RDB_VMRSSRK(i, wx->num_vfs),
+ *(wx->rss_key + i));Prefer normal array indexing: wx->rss_key[i]
+ } else {
+ for (i = 0; i < random_key_size; i++)
+ wr32(wx, WX_RDB_RSSRK(i), wx->rss_key[i]);
+ }
+}- u32 rss_field = 0;
completely unclear to me why moving rss_field to struct wx is part of this patch. It looks unrelated / prep for the next patch. -- pw-bot: cr