diff options
author | Pavan Chebbi <pavan.chebbi@broadcom.com> | 2024-02-05 14:32:00 -0800 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-02-09 12:37:42 -0800 |
commit | 5de1fce3369564ca6b9eed339838c51ec6290270 (patch) | |
tree | 8f945da1f2ea54381aa90e9ef0ab6d758f1dd124 /drivers/net/ethernet/broadcom/bnxt/bnxt.c | |
parent | 44af4b622a3d0a7c509f77ccb0689d3ca18da5cc (diff) | |
download | linux-5de1fce3369564ca6b9eed339838c51ec6290270.tar.gz linux-5de1fce3369564ca6b9eed339838c51ec6290270.tar.bz2 linux-5de1fce3369564ca6b9eed339838c51ec6290270.zip |
bnxt_en: Add support for user configured RSS key
Store the user configured or generated Toeplitz key in
bp->rss_hash_key. The key stays constant across ifdown/ifup
unless updated by the user.
Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://lore.kernel.org/r/20240205223202.25341-12-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnxt/bnxt.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index d6fd37347f5a..b66002171e36 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -4246,9 +4246,23 @@ static void bnxt_init_vnics(struct bnxt *bp) u8 *key = (void *)vnic->rss_hash_key; int k; + if (!bp->rss_hash_key_valid && + !bp->rss_hash_key_updated) { + get_random_bytes(bp->rss_hash_key, + HW_HASH_KEY_SIZE); + bp->rss_hash_key_updated = true; + } + + memcpy(vnic->rss_hash_key, bp->rss_hash_key, + HW_HASH_KEY_SIZE); + + if (!bp->rss_hash_key_updated) + continue; + + bp->rss_hash_key_updated = false; + bp->rss_hash_key_valid = true; + bp->toeplitz_prefix = 0; - get_random_bytes(vnic->rss_hash_key, - HW_HASH_KEY_SIZE); for (k = 0; k < 8; k++) { bp->toeplitz_prefix <<= 8; bp->toeplitz_prefix |= key[k]; |