From: Damjan Marion Date: Mon, 15 Sep 2025 17:36:24 +0000 (+0200) Subject: octeon: add support for changing RSS key X-Git-Tag: v26.02-rc0~24 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F02%2F43702%2F2;p=vpp.git octeon: add support for changing RSS key Change-Id: I855c394262b275d1f98d9bce1a3cd4a2411d88f7 Type: improvement Signed-off-by: Damjan Marion --- diff --git a/src/plugins/dev_octeon/init.c b/src/plugins/dev_octeon/init.c index acacd9a841c..b7dc20b7195 100644 --- a/src/plugins/dev_octeon/init.c +++ b/src/plugins/dev_octeon/init.c @@ -220,6 +220,16 @@ oct_init_nix (vlib_main_t *vm, vnet_dev_t *dev) .tx_offloads = { .ip4_cksum = 1, }, + + }, + .default_rss_key = { + .key = { + 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, 0xad, 0x0b, 0xed, 0xfe, + 0xad, 0x0b, 0xed, 0xfe, 0x13, 0x57, 0x9b, 0xef, 0x24, 0x68, 0xac, 0x0e, + 0x91, 0x72, 0x53, 0x11, 0x82, 0x64, 0x20, 0x44, 0x12, 0xef, 0x34, 0xcd, + 0x56, 0xbc, 0x78, 0x9a, 0x9a, 0x78, 0xbc, 0x56, 0xcd, 0x34, 0xef, 0x12, + }, + .length = 48, }, .ops = { .init = oct_port_init, diff --git a/src/plugins/dev_octeon/port.c b/src/plugins/dev_octeon/port.c index 091cea5c02e..a9d170e90dc 100644 --- a/src/plugins/dev_octeon/port.c +++ b/src/plugins/dev_octeon/port.c @@ -18,13 +18,6 @@ VLIB_REGISTER_LOG_CLASS (oct_log, static) = { .subclass_name = "port", }; -static const u8 default_rss_key[] = { - 0xfe, 0xed, 0x0b, 0xad, 0xfe, 0xed, 0x0b, 0xad, 0xad, 0x0b, 0xed, 0xfe, - 0xad, 0x0b, 0xed, 0xfe, 0x13, 0x57, 0x9b, 0xef, 0x24, 0x68, 0xac, 0x0e, - 0x91, 0x72, 0x53, 0x11, 0x82, 0x64, 0x20, 0x44, 0x12, 0xef, 0x34, 0xcd, - 0x56, 0xbc, 0x78, 0x9a, 0x9a, 0x78, 0xbc, 0x56, 0xcd, 0x34, 0xef, 0x12 -}; - static const u64 rxq_cfg = ROC_NIX_LF_RX_CFG_DIS_APAD | ROC_NIX_LF_RX_CFG_IP6_UDP_OPT | ROC_NIX_LF_RX_CFG_L2_LEN_ERR | ROC_NIX_LF_RX_CFG_DROP_RE | @@ -190,7 +183,7 @@ oct_port_init (vlib_main_t *vm, vnet_dev_port_t *port) return oct_roc_err (dev, rrv, "roc_nix_rss_default_setup() failed"); } - roc_nix_rss_key_set (nix, default_rss_key); + roc_nix_rss_key_set (nix, port->rss_key.key); cp->npc.roc_nix = nix; cp->npc.flow_prealloc_size = OCT_FLOW_PREALLOC_SIZE; @@ -674,6 +667,19 @@ oct_op_config_max_rx_len (vlib_main_t *vm, vnet_dev_port_t *port, return rv; } +vnet_dev_rv_t +oct_op_config_set_rss_key (vlib_main_t *vm, vnet_dev_port_t *port, + vnet_dev_rss_key_t *k) +{ + vnet_dev_t *dev = port->dev; + oct_device_t *cd = vnet_dev_get_data (dev); + vnet_dev_rv_t rv = VNET_DEV_OK; + + roc_nix_rss_key_set (cd->nix, k->key); + + return rv; +} + vnet_dev_rv_t oct_port_cfg_change_validate (vlib_main_t *vm, vnet_dev_port_t *port, vnet_dev_port_cfg_change_req_t *req) @@ -693,6 +699,7 @@ oct_port_cfg_change_validate (vlib_main_t *vm, vnet_dev_port_t *port, case VNET_DEV_PORT_CFG_CHANGE_PRIMARY_HW_ADDR: case VNET_DEV_PORT_CFG_ADD_SECONDARY_HW_ADDR: case VNET_DEV_PORT_CFG_REMOVE_SECONDARY_HW_ADDR: + case VNET_DEV_PORT_CFG_SET_RSS_KEY: break; case VNET_DEV_PORT_CFG_ADD_RX_FLOW: @@ -738,6 +745,10 @@ oct_port_cfg_change (vlib_main_t *vm, vnet_dev_port_t *port, rv = oct_op_config_max_rx_len (vm, port, req->max_rx_frame_size); break; + case VNET_DEV_PORT_CFG_SET_RSS_KEY: + rv = oct_op_config_set_rss_key (vm, port, &req->rss_key); + break; + case VNET_DEV_PORT_CFG_ADD_RX_FLOW: case VNET_DEV_PORT_CFG_DEL_RX_FLOW: case VNET_DEV_PORT_CFG_GET_RX_FLOW_COUNTER: