From: Sunil Kumar Kori <sk...@marvell.com> This patch adds RSS key for CNXK platforms. CNXK platform uses 48 bytes long key for hash calculations.
For the same patch also updates help mesaages to provide range information for supporting NICs/platforms. Also CNXK uses reta size as 64 so to get correct offset to retrieve queue index, user must pass reta_size option as 64 i.e. -t 64. Examples: $ ./dpdk-rss-flows.py -k cnxk 8 28.0.0.0/24 40.0.0.0/24 -t 64 SRC_IP DST_IP QUEUE 28.0.0.1 40.0.0.1 7 28.0.0.1 40.0.0.2 2 28.0.0.1 40.0.0.3 4 28.0.0.1 40.0.0.7 1 28.0.0.1 40.0.0.8 3 28.0.0.1 40.0.0.9 5 28.0.0.1 40.0.0.10 0 28.0.0.1 40.0.0.11 6 Signed-off-by: Sunil Kumar Kori <sk...@marvell.com> Change-Id: I631639d74c0bf91759f8aa188836019b4990caf2 --- usertools/dpdk-rss-flows.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/usertools/dpdk-rss-flows.py b/usertools/dpdk-rss-flows.py index 73821eb471..b6edd7a2e0 100755 --- a/usertools/dpdk-rss-flows.py +++ b/usertools/dpdk-rss-flows.py @@ -188,11 +188,24 @@ def balanced_traffic( 0x81, 0x15, 0x03, 0x66, ) ) +# rss_key_default, see drivers/net/cnxk/cnxk_flow.c +# Marvell's cnxk NICs take 48 bytes keys +RSS_KEY_CNXK = bytes( + ( + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, + ) +) # fmt: on DEFAULT_DRIVER_KEYS = { "intel": RSS_KEY_INTEL, "mlx": RSS_KEY_MLX, "i40e": RSS_KEY_I40E, + "cnxk": RSS_KEY_CNXK, } @@ -202,7 +215,7 @@ def rss_key(value): try: key = binascii.unhexlify(value) if len(key) not in (40, 52): - raise argparse.ArgumentTypeError("The key must be 40 or 52 bytes long") + raise argparse.ArgumentTypeError("The key must be 40 to 52 bytes long") return key except (TypeError, ValueError) as e: raise argparse.ArgumentTypeError(str(e)) from e @@ -299,7 +312,7 @@ def parse_args(): default=RSS_KEY_INTEL, type=rss_key, help=""" - The random 40-bytes key used to compute the RSS hash. This option + The random 40 to 52 bytes key used to compute the RSS hash. This option supports either a well-known name or the hex value of the key (well-known names: "intel", "mlx", default: "intel"). """, -- 2.25.1