flow: enable RSS queue group action for 5G enhancement

Enable the flow action for RSS queue group. Packets can be distributed
among queues in group based on specific fields. Queues must be continous
in the group. This feature is to support 5G enhancement requirement.

Type: feature

Signed-off-by: Ting Xu <ting.xu@intel.com>
Change-Id: I74fdc617659bcb61f00b3b1934c95ab1c73bb8f3
This commit is contained in:
Ting Xu
2022-03-25 03:45:07 +00:00
committed by Damjan Marion
parent d82f471a05
commit b95e6d4e75
3 changed files with 45 additions and 1 deletions

View File

@ -252,6 +252,10 @@ typedef struct
/* queue for VNET_FLOW_ACTION_REDIRECT_TO_QUEUE */
u32 redirect_queue;
/* start queue index and queue numbers for RSS queue group */
u32 queue_index;
u32 queue_num;
/* buffer offset for VNET_FLOW_ACTION_BUFFER_ADVANCE */
i32 buffer_advance;

View File

@ -364,6 +364,7 @@ test_flow (vlib_main_t * vm, unformat_input_t * input,
int rv;
u32 teid = 0, session_id = 0, spi = 0;
u32 vni = 0;
u32 queue_start = 0, queue_end = 0;
vnet_flow_type_t type = VNET_FLOW_TYPE_UNKNOWN;
ip4_address_and_mask_t ip4s = { };
ip4_address_and_mask_t ip4d = { };
@ -522,6 +523,21 @@ test_flow (vlib_main_t * vm, unformat_input_t * input,
#undef _
flow.actions |= VNET_FLOW_ACTION_RSS;
}
else if (unformat (line_input, "rss queues"))
{
if (unformat (line_input, "%d to %d", &queue_start, &queue_end))
;
else
{
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, line_input);
}
flow.queue_index = queue_start;
flow.queue_num = queue_end - queue_start + 1;
flow.actions |= VNET_FLOW_ACTION_RSS;
}
else if (unformat (line_input, "%U", unformat_vnet_hw_interface, vnm,
&hw_if_index))
;
@ -728,7 +744,8 @@ VLIB_CLI_COMMAND (test_flow_command, static) = {
"[spec <spec string>] [mask <mask string>]"
"[next-node <node>] [mark <id>] [buffer-advance <len>] "
"[redirect-to-queue <queue>] [drop] "
"[rss function <name>] [rss types <flow type>]",
"[rss function <name>] [rss types <flow type>]"
"[rss queues <queue_start> to <queue_end>]",
.function = test_flow,
};
/* *INDENT-ON* */