app/testpmd: extend flow director input set commands
This patch extends commands for changing a flow director filter's input set. It adds tos, protocol and ttl as filter's input fields, and removes the words selection from flex payloads. Signed-off-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com>
This commit is contained in:
parent
92cf7f8ec0
commit
28d62131a1
@ -669,6 +669,7 @@ static void cmd_help_long_parsed(void *parsed_result,
|
|||||||
"flow_director_filter (port_id) mode IP (add|del|update)"
|
"flow_director_filter (port_id) mode IP (add|del|update)"
|
||||||
" flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)"
|
" flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)"
|
||||||
" src (src_ip_address) dst (dst_ip_address)"
|
" src (src_ip_address) dst (dst_ip_address)"
|
||||||
|
" tos (tos_value) proto (proto_value) ttl (ttl_value)"
|
||||||
" vlan (vlan_value) flexbytes (flexbytes_value)"
|
" vlan (vlan_value) flexbytes (flexbytes_value)"
|
||||||
" (drop|fwd) pf|vf(vf_id) queue (queue_id)"
|
" (drop|fwd) pf|vf(vf_id) queue (queue_id)"
|
||||||
" fd_id (fd_id_value)\n"
|
" fd_id (fd_id_value)\n"
|
||||||
@ -678,6 +679,7 @@ static void cmd_help_long_parsed(void *parsed_result,
|
|||||||
" flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp)"
|
" flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp)"
|
||||||
" src (src_ip_address) (src_port)"
|
" src (src_ip_address) (src_port)"
|
||||||
" dst (dst_ip_address) (dst_port)"
|
" dst (dst_ip_address) (dst_port)"
|
||||||
|
" tos (tos_value) ttl (ttl_value)"
|
||||||
" vlan (vlan_value) flexbytes (flexbytes_value)"
|
" vlan (vlan_value) flexbytes (flexbytes_value)"
|
||||||
" (drop|fwd) pf|vf(vf_id) queue (queue_id)"
|
" (drop|fwd) pf|vf(vf_id) queue (queue_id)"
|
||||||
" fd_id (fd_id_value)\n"
|
" fd_id (fd_id_value)\n"
|
||||||
@ -687,7 +689,9 @@ static void cmd_help_long_parsed(void *parsed_result,
|
|||||||
" flow (ipv4-sctp|ipv6-sctp)"
|
" flow (ipv4-sctp|ipv6-sctp)"
|
||||||
" src (src_ip_address) (src_port)"
|
" src (src_ip_address) (src_port)"
|
||||||
" dst (dst_ip_address) (dst_port)"
|
" dst (dst_ip_address) (dst_port)"
|
||||||
" tag (verification_tag) vlan (vlan_value)"
|
" tag (verification_tag) "
|
||||||
|
" tos (tos_value) ttl (ttl_value)"
|
||||||
|
" vlan (vlan_value)"
|
||||||
" flexbytes (flexbytes_value) (drop|fwd)"
|
" flexbytes (flexbytes_value) (drop|fwd)"
|
||||||
" pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)\n"
|
" pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)\n"
|
||||||
" Add/Del a SCTP type flow director filter.\n\n"
|
" Add/Del a SCTP type flow director filter.\n\n"
|
||||||
@ -767,14 +771,15 @@ static void cmd_help_long_parsed(void *parsed_result,
|
|||||||
"fld-8th|none) (select|add)\n"
|
"fld-8th|none) (select|add)\n"
|
||||||
" Set the input set for hash.\n\n"
|
" Set the input set for hash.\n\n"
|
||||||
|
|
||||||
"set_fdir_input_set (port_id) (ipv4|ipv4-frag|"
|
"set_fdir_input_set (port_id) "
|
||||||
"ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|"
|
"(ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
|
||||||
"ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|"
|
"ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|"
|
||||||
"l2_payload) (src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|"
|
"l2_payload) (ethertype|src-ipv4|dst-ipv4|src-ipv6|"
|
||||||
"udp-src-port|udp-dst-port|tcp-src-port|tcp-dst-port|"
|
"dst-ipv6|ipv4-tos|ipv4-proto|ipv4-ttl|ipv6-tc|"
|
||||||
"sctp-src-port|sctp-dst-port|sctp-veri-tag|fld-1st|"
|
"ipv6-next-header|ipv6-hop-limits|udp-src-port|"
|
||||||
"fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th|"
|
"udp-dst-port|tcp-src-port|tcp-dst-port|"
|
||||||
"fld-8th|none) (select|add)\n"
|
"sctp-src-port|sctp-dst-port|sctp-veri-tag|none)"
|
||||||
|
" (select|add)\n"
|
||||||
" Set the input set for FDir.\n\n"
|
" Set the input set for FDir.\n\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -8027,6 +8032,12 @@ struct cmd_flow_director_result {
|
|||||||
uint16_t port_dst;
|
uint16_t port_dst;
|
||||||
cmdline_fixed_string_t verify_tag;
|
cmdline_fixed_string_t verify_tag;
|
||||||
uint32_t verify_tag_value;
|
uint32_t verify_tag_value;
|
||||||
|
cmdline_ipaddr_t tos;
|
||||||
|
uint8_t tos_value;
|
||||||
|
cmdline_ipaddr_t proto;
|
||||||
|
uint8_t proto_value;
|
||||||
|
cmdline_ipaddr_t ttl;
|
||||||
|
uint8_t ttl_value;
|
||||||
cmdline_fixed_string_t vlan;
|
cmdline_fixed_string_t vlan;
|
||||||
uint16_t vlan_value;
|
uint16_t vlan_value;
|
||||||
cmdline_fixed_string_t flexbytes;
|
cmdline_fixed_string_t flexbytes;
|
||||||
@ -8206,12 +8217,15 @@ cmd_flow_director_filter_parsed(void *parsed_result,
|
|||||||
switch (entry.input.flow_type) {
|
switch (entry.input.flow_type) {
|
||||||
case RTE_ETH_FLOW_FRAG_IPV4:
|
case RTE_ETH_FLOW_FRAG_IPV4:
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV4_OTHER:
|
case RTE_ETH_FLOW_NONFRAG_IPV4_OTHER:
|
||||||
|
entry.input.flow.ip4_flow.proto = res->proto_value;
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV4_UDP:
|
case RTE_ETH_FLOW_NONFRAG_IPV4_UDP:
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV4_TCP:
|
case RTE_ETH_FLOW_NONFRAG_IPV4_TCP:
|
||||||
IPV4_ADDR_TO_UINT(res->ip_dst,
|
IPV4_ADDR_TO_UINT(res->ip_dst,
|
||||||
entry.input.flow.ip4_flow.dst_ip);
|
entry.input.flow.ip4_flow.dst_ip);
|
||||||
IPV4_ADDR_TO_UINT(res->ip_src,
|
IPV4_ADDR_TO_UINT(res->ip_src,
|
||||||
entry.input.flow.ip4_flow.src_ip);
|
entry.input.flow.ip4_flow.src_ip);
|
||||||
|
entry.input.flow.ip4_flow.tos = res->tos_value;
|
||||||
|
entry.input.flow.ip4_flow.ttl = res->ttl_value;
|
||||||
/* need convert to big endian. */
|
/* need convert to big endian. */
|
||||||
entry.input.flow.udp4_flow.dst_port =
|
entry.input.flow.udp4_flow.dst_port =
|
||||||
rte_cpu_to_be_16(res->port_dst);
|
rte_cpu_to_be_16(res->port_dst);
|
||||||
@ -8223,6 +8237,8 @@ cmd_flow_director_filter_parsed(void *parsed_result,
|
|||||||
entry.input.flow.sctp4_flow.ip.dst_ip);
|
entry.input.flow.sctp4_flow.ip.dst_ip);
|
||||||
IPV4_ADDR_TO_UINT(res->ip_src,
|
IPV4_ADDR_TO_UINT(res->ip_src,
|
||||||
entry.input.flow.sctp4_flow.ip.src_ip);
|
entry.input.flow.sctp4_flow.ip.src_ip);
|
||||||
|
entry.input.flow.ip4_flow.tos = res->tos_value;
|
||||||
|
entry.input.flow.ip4_flow.ttl = res->ttl_value;
|
||||||
/* need convert to big endian. */
|
/* need convert to big endian. */
|
||||||
entry.input.flow.sctp4_flow.dst_port =
|
entry.input.flow.sctp4_flow.dst_port =
|
||||||
rte_cpu_to_be_16(res->port_dst);
|
rte_cpu_to_be_16(res->port_dst);
|
||||||
@ -8233,12 +8249,15 @@ cmd_flow_director_filter_parsed(void *parsed_result,
|
|||||||
break;
|
break;
|
||||||
case RTE_ETH_FLOW_FRAG_IPV6:
|
case RTE_ETH_FLOW_FRAG_IPV6:
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV6_OTHER:
|
case RTE_ETH_FLOW_NONFRAG_IPV6_OTHER:
|
||||||
|
entry.input.flow.ipv6_flow.proto = res->proto_value;
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV6_UDP:
|
case RTE_ETH_FLOW_NONFRAG_IPV6_UDP:
|
||||||
case RTE_ETH_FLOW_NONFRAG_IPV6_TCP:
|
case RTE_ETH_FLOW_NONFRAG_IPV6_TCP:
|
||||||
IPV6_ADDR_TO_ARRAY(res->ip_dst,
|
IPV6_ADDR_TO_ARRAY(res->ip_dst,
|
||||||
entry.input.flow.ipv6_flow.dst_ip);
|
entry.input.flow.ipv6_flow.dst_ip);
|
||||||
IPV6_ADDR_TO_ARRAY(res->ip_src,
|
IPV6_ADDR_TO_ARRAY(res->ip_src,
|
||||||
entry.input.flow.ipv6_flow.src_ip);
|
entry.input.flow.ipv6_flow.src_ip);
|
||||||
|
entry.input.flow.ipv6_flow.tc = res->tos_value;
|
||||||
|
entry.input.flow.ipv6_flow.hop_limits = res->ttl_value;
|
||||||
/* need convert to big endian. */
|
/* need convert to big endian. */
|
||||||
entry.input.flow.udp6_flow.dst_port =
|
entry.input.flow.udp6_flow.dst_port =
|
||||||
rte_cpu_to_be_16(res->port_dst);
|
rte_cpu_to_be_16(res->port_dst);
|
||||||
@ -8250,6 +8269,8 @@ cmd_flow_director_filter_parsed(void *parsed_result,
|
|||||||
entry.input.flow.sctp6_flow.ip.dst_ip);
|
entry.input.flow.sctp6_flow.ip.dst_ip);
|
||||||
IPV6_ADDR_TO_ARRAY(res->ip_src,
|
IPV6_ADDR_TO_ARRAY(res->ip_src,
|
||||||
entry.input.flow.sctp6_flow.ip.src_ip);
|
entry.input.flow.sctp6_flow.ip.src_ip);
|
||||||
|
entry.input.flow.ipv6_flow.tc = res->tos_value;
|
||||||
|
entry.input.flow.ipv6_flow.hop_limits = res->ttl_value;
|
||||||
/* need convert to big endian. */
|
/* need convert to big endian. */
|
||||||
entry.input.flow.sctp6_flow.dst_port =
|
entry.input.flow.sctp6_flow.dst_port =
|
||||||
rte_cpu_to_be_16(res->port_dst);
|
rte_cpu_to_be_16(res->port_dst);
|
||||||
@ -8377,6 +8398,24 @@ cmdline_parse_token_string_t cmd_flow_director_verify_tag =
|
|||||||
cmdline_parse_token_num_t cmd_flow_director_verify_tag_value =
|
cmdline_parse_token_num_t cmd_flow_director_verify_tag_value =
|
||||||
TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
|
TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
|
||||||
verify_tag_value, UINT32);
|
verify_tag_value, UINT32);
|
||||||
|
cmdline_parse_token_string_t cmd_flow_director_tos =
|
||||||
|
TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
tos, "tos");
|
||||||
|
cmdline_parse_token_num_t cmd_flow_director_tos_value =
|
||||||
|
TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
tos_value, UINT8);
|
||||||
|
cmdline_parse_token_string_t cmd_flow_director_proto =
|
||||||
|
TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
proto, "proto");
|
||||||
|
cmdline_parse_token_num_t cmd_flow_director_proto_value =
|
||||||
|
TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
proto_value, UINT8);
|
||||||
|
cmdline_parse_token_string_t cmd_flow_director_ttl =
|
||||||
|
TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
ttl, "ttl");
|
||||||
|
cmdline_parse_token_num_t cmd_flow_director_ttl_value =
|
||||||
|
TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
|
||||||
|
ttl_value, UINT8);
|
||||||
cmdline_parse_token_string_t cmd_flow_director_vlan =
|
cmdline_parse_token_string_t cmd_flow_director_vlan =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
|
||||||
vlan, "vlan");
|
vlan, "vlan");
|
||||||
@ -8455,6 +8494,12 @@ cmdline_parse_inst_t cmd_add_del_ip_flow_director = {
|
|||||||
(void *)&cmd_flow_director_ip_src,
|
(void *)&cmd_flow_director_ip_src,
|
||||||
(void *)&cmd_flow_director_dst,
|
(void *)&cmd_flow_director_dst,
|
||||||
(void *)&cmd_flow_director_ip_dst,
|
(void *)&cmd_flow_director_ip_dst,
|
||||||
|
(void *)&cmd_flow_director_tos,
|
||||||
|
(void *)&cmd_flow_director_tos_value,
|
||||||
|
(void *)&cmd_flow_director_proto,
|
||||||
|
(void *)&cmd_flow_director_proto_value,
|
||||||
|
(void *)&cmd_flow_director_ttl,
|
||||||
|
(void *)&cmd_flow_director_ttl_value,
|
||||||
(void *)&cmd_flow_director_vlan,
|
(void *)&cmd_flow_director_vlan,
|
||||||
(void *)&cmd_flow_director_vlan_value,
|
(void *)&cmd_flow_director_vlan_value,
|
||||||
(void *)&cmd_flow_director_flexbytes,
|
(void *)&cmd_flow_director_flexbytes,
|
||||||
@ -8487,6 +8532,10 @@ cmdline_parse_inst_t cmd_add_del_udp_flow_director = {
|
|||||||
(void *)&cmd_flow_director_dst,
|
(void *)&cmd_flow_director_dst,
|
||||||
(void *)&cmd_flow_director_ip_dst,
|
(void *)&cmd_flow_director_ip_dst,
|
||||||
(void *)&cmd_flow_director_port_dst,
|
(void *)&cmd_flow_director_port_dst,
|
||||||
|
(void *)&cmd_flow_director_tos,
|
||||||
|
(void *)&cmd_flow_director_tos_value,
|
||||||
|
(void *)&cmd_flow_director_ttl,
|
||||||
|
(void *)&cmd_flow_director_ttl_value,
|
||||||
(void *)&cmd_flow_director_vlan,
|
(void *)&cmd_flow_director_vlan,
|
||||||
(void *)&cmd_flow_director_vlan_value,
|
(void *)&cmd_flow_director_vlan_value,
|
||||||
(void *)&cmd_flow_director_flexbytes,
|
(void *)&cmd_flow_director_flexbytes,
|
||||||
@ -8521,6 +8570,10 @@ cmdline_parse_inst_t cmd_add_del_sctp_flow_director = {
|
|||||||
(void *)&cmd_flow_director_port_dst,
|
(void *)&cmd_flow_director_port_dst,
|
||||||
(void *)&cmd_flow_director_verify_tag,
|
(void *)&cmd_flow_director_verify_tag,
|
||||||
(void *)&cmd_flow_director_verify_tag_value,
|
(void *)&cmd_flow_director_verify_tag_value,
|
||||||
|
(void *)&cmd_flow_director_tos,
|
||||||
|
(void *)&cmd_flow_director_tos_value,
|
||||||
|
(void *)&cmd_flow_director_ttl,
|
||||||
|
(void *)&cmd_flow_director_ttl_value,
|
||||||
(void *)&cmd_flow_director_vlan,
|
(void *)&cmd_flow_director_vlan,
|
||||||
(void *)&cmd_flow_director_vlan_value,
|
(void *)&cmd_flow_director_vlan_value,
|
||||||
(void *)&cmd_flow_director_flexbytes,
|
(void *)&cmd_flow_director_flexbytes,
|
||||||
@ -9447,16 +9500,19 @@ str2inset(char *string)
|
|||||||
char str[32];
|
char str[32];
|
||||||
enum rte_eth_input_set_field inset;
|
enum rte_eth_input_set_field inset;
|
||||||
} inset_table[] = {
|
} inset_table[] = {
|
||||||
|
{"ethertype", RTE_ETH_INPUT_SET_L2_ETHERTYPE},
|
||||||
{"ovlan", RTE_ETH_INPUT_SET_L2_OUTER_VLAN},
|
{"ovlan", RTE_ETH_INPUT_SET_L2_OUTER_VLAN},
|
||||||
{"ivlan", RTE_ETH_INPUT_SET_L2_INNER_VLAN},
|
{"ivlan", RTE_ETH_INPUT_SET_L2_INNER_VLAN},
|
||||||
{"src-ipv4", RTE_ETH_INPUT_SET_L3_SRC_IP4},
|
{"src-ipv4", RTE_ETH_INPUT_SET_L3_SRC_IP4},
|
||||||
{"dst-ipv4", RTE_ETH_INPUT_SET_L3_DST_IP4},
|
{"dst-ipv4", RTE_ETH_INPUT_SET_L3_DST_IP4},
|
||||||
{"ipv4-tos", RTE_ETH_INPUT_SET_L3_IP4_TOS},
|
{"ipv4-tos", RTE_ETH_INPUT_SET_L3_IP4_TOS},
|
||||||
{"ipv4-proto", RTE_ETH_INPUT_SET_L3_IP4_PROTO},
|
{"ipv4-proto", RTE_ETH_INPUT_SET_L3_IP4_PROTO},
|
||||||
|
{"ipv4-ttl", RTE_ETH_INPUT_SET_L3_IP4_TTL},
|
||||||
{"src-ipv6", RTE_ETH_INPUT_SET_L3_SRC_IP6},
|
{"src-ipv6", RTE_ETH_INPUT_SET_L3_SRC_IP6},
|
||||||
{"dst-ipv6", RTE_ETH_INPUT_SET_L3_DST_IP6},
|
{"dst-ipv6", RTE_ETH_INPUT_SET_L3_DST_IP6},
|
||||||
{"ipv6-tc", RTE_ETH_INPUT_SET_L3_IP6_TC},
|
{"ipv6-tc", RTE_ETH_INPUT_SET_L3_IP6_TC},
|
||||||
{"ipv6-next-header", RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER},
|
{"ipv6-next-header", RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER},
|
||||||
|
{"ipv6-hop-limits", RTE_ETH_INPUT_SET_L3_IP6_HOP_LIMITS},
|
||||||
{"udp-src-port", RTE_ETH_INPUT_SET_L4_UDP_SRC_PORT},
|
{"udp-src-port", RTE_ETH_INPUT_SET_L4_UDP_SRC_PORT},
|
||||||
{"udp-dst-port", RTE_ETH_INPUT_SET_L4_UDP_DST_PORT},
|
{"udp-dst-port", RTE_ETH_INPUT_SET_L4_UDP_DST_PORT},
|
||||||
{"tcp-src-port", RTE_ETH_INPUT_SET_L4_TCP_SRC_PORT},
|
{"tcp-src-port", RTE_ETH_INPUT_SET_L4_TCP_SRC_PORT},
|
||||||
@ -9515,7 +9571,7 @@ cmdline_parse_token_num_t cmd_set_hash_input_set_port_id =
|
|||||||
cmdline_parse_token_string_t cmd_set_hash_input_set_flow_type =
|
cmdline_parse_token_string_t cmd_set_hash_input_set_flow_type =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_input_set_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_input_set_result,
|
||||||
flow_type,
|
flow_type,
|
||||||
"ipv4#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#ipv4-other#ipv6#"
|
"ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#ipv4-other#"
|
||||||
"ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp#ipv6-other#l2_payload");
|
"ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp#ipv6-other#l2_payload");
|
||||||
cmdline_parse_token_string_t cmd_set_hash_input_set_field =
|
cmdline_parse_token_string_t cmd_set_hash_input_set_field =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_input_set_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_input_set_result,
|
||||||
@ -9534,8 +9590,8 @@ cmdline_parse_inst_t cmd_set_hash_input_set = {
|
|||||||
.f = cmd_set_hash_input_set_parsed,
|
.f = cmd_set_hash_input_set_parsed,
|
||||||
.data = NULL,
|
.data = NULL,
|
||||||
.help_str = "set_hash_input_set <port_id> "
|
.help_str = "set_hash_input_set <port_id> "
|
||||||
"ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|"
|
"ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
|
||||||
"ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload "
|
"ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload "
|
||||||
"ovlan|ivlan|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos|ipv4-proto|"
|
"ovlan|ivlan|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos|ipv4-proto|"
|
||||||
"ipv6-tc|ipv6-next-header|udp-src-port|udp-dst-port|tcp-src-port|"
|
"ipv6-tc|ipv6-next-header|udp-src-port|udp-dst-port|tcp-src-port|"
|
||||||
"tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag|udp-key|"
|
"tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag|udp-key|"
|
||||||
@ -9590,15 +9646,16 @@ cmdline_parse_token_num_t cmd_set_fdir_input_set_port_id =
|
|||||||
cmdline_parse_token_string_t cmd_set_fdir_input_set_flow_type =
|
cmdline_parse_token_string_t cmd_set_fdir_input_set_flow_type =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
||||||
flow_type,
|
flow_type,
|
||||||
"ipv4#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#ipv4-other#ipv6#"
|
"ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#ipv4-other#"
|
||||||
"ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp#ipv6-other#l2_payload");
|
"ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp#ipv6-other#l2_payload");
|
||||||
cmdline_parse_token_string_t cmd_set_fdir_input_set_field =
|
cmdline_parse_token_string_t cmd_set_fdir_input_set_field =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
||||||
inset_field,
|
inset_field,
|
||||||
"src-ipv4#dst-ipv4#src-ipv6#dst-ipv6#udp-src-port#udp-dst-port#"
|
"ethertype#src-ipv4#dst-ipv4#src-ipv6#dst-ipv6#"
|
||||||
|
"ipv4-tos#ipv4-proto#ipv4-ttl#ipv6-tc#ipv6-next-header#"
|
||||||
|
"ipv6-hop-limits#udp-src-port#udp-dst-port#"
|
||||||
"tcp-src-port#tcp-dst-port#sctp-src-port#sctp-dst-port#"
|
"tcp-src-port#tcp-dst-port#sctp-src-port#sctp-dst-port#"
|
||||||
"sctp-veri-tag#fld-1st#fld-2nd#fld-3rd#fld-4th#fld-5th#fld-6th#"
|
"sctp-veri-tag#none");
|
||||||
"fld-7th#fld-8th#none");
|
|
||||||
cmdline_parse_token_string_t cmd_set_fdir_input_set_select =
|
cmdline_parse_token_string_t cmd_set_fdir_input_set_select =
|
||||||
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result,
|
||||||
select, "select#add");
|
select, "select#add");
|
||||||
@ -9607,12 +9664,13 @@ cmdline_parse_inst_t cmd_set_fdir_input_set = {
|
|||||||
.f = cmd_set_fdir_input_set_parsed,
|
.f = cmd_set_fdir_input_set_parsed,
|
||||||
.data = NULL,
|
.data = NULL,
|
||||||
.help_str = "set_fdir_input_set <port_id> "
|
.help_str = "set_fdir_input_set <port_id> "
|
||||||
"ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|"
|
"ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
|
||||||
"ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload "
|
"ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload "
|
||||||
"src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|udp-src-port|udp-dst-port|"
|
"ethertype|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|"
|
||||||
"tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag|"
|
"ipv4-tos|ipv4-proto|ipv4-ttl|ipv6-tc|ipv6-next-header|"
|
||||||
"fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|"
|
"ipv6-hop-limits|udp-src-port|udp-dst-port|"
|
||||||
"fld-7th|fld-8th|none select|add",
|
"tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|"
|
||||||
|
"sctp-veri-tag|none select|add",
|
||||||
.tokens = {
|
.tokens = {
|
||||||
(void *)&cmd_set_fdir_input_set_cmd,
|
(void *)&cmd_set_fdir_input_set_cmd,
|
||||||
(void *)&cmd_set_fdir_input_set_port_id,
|
(void *)&cmd_set_fdir_input_set_port_id,
|
||||||
|
@ -1739,8 +1739,9 @@ Different NICs may have different capabilities, command show port fdir (port_id)
|
|||||||
# Commands to add flow director filters of different flow types::
|
# Commands to add flow director filters of different flow types::
|
||||||
|
|
||||||
flow_director_filter (port_id) mode IP (add|del|update) \
|
flow_director_filter (port_id) mode IP (add|del|update) \
|
||||||
flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)
|
flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag) \
|
||||||
src (src_ip_address) dst (dst_ip_address) \
|
src (src_ip_address) dst (dst_ip_address) \
|
||||||
|
tos (tos_value) proto (proto_value) ttl (ttl_value) \
|
||||||
vlan (vlan_value) flexbytes (flexbytes_value) \
|
vlan (vlan_value) flexbytes (flexbytes_value) \
|
||||||
(drop|fwd) pf|vf(vf_id) queue (queue_id) \
|
(drop|fwd) pf|vf(vf_id) queue (queue_id) \
|
||||||
fd_id (fd_id_value)
|
fd_id (fd_id_value)
|
||||||
@ -1749,6 +1750,7 @@ Different NICs may have different capabilities, command show port fdir (port_id)
|
|||||||
flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) \
|
flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) \
|
||||||
src (src_ip_address) (src_port) \
|
src (src_ip_address) (src_port) \
|
||||||
dst (dst_ip_address) (dst_port) \
|
dst (dst_ip_address) (dst_port) \
|
||||||
|
tos (tos_value) ttl (ttl_value) \
|
||||||
vlan (vlan_value) flexbytes (flexbytes_value) \
|
vlan (vlan_value) flexbytes (flexbytes_value) \
|
||||||
(drop|fwd) queue pf|vf(vf_id) (queue_id) \
|
(drop|fwd) queue pf|vf(vf_id) (queue_id) \
|
||||||
fd_id (fd_id_value)
|
fd_id (fd_id_value)
|
||||||
@ -1756,7 +1758,8 @@ Different NICs may have different capabilities, command show port fdir (port_id)
|
|||||||
flow_director_filter (port_id) mode IP (add|del|update) \
|
flow_director_filter (port_id) mode IP (add|del|update) \
|
||||||
flow (ipv4-sctp|ipv6-sctp) \
|
flow (ipv4-sctp|ipv6-sctp) \
|
||||||
src (src_ip_address) (src_port) \
|
src (src_ip_address) (src_port) \
|
||||||
dst (dst_ip_address) (dst_port)
|
dst (dst_ip_address) (dst_port) \
|
||||||
|
tos (tos_value) ttl (ttl_value) \
|
||||||
tag (verification_tag) vlan (vlan_value) \
|
tag (verification_tag) vlan (vlan_value) \
|
||||||
flexbytes (flexbytes_value) (drop|fwd) \
|
flexbytes (flexbytes_value) (drop|fwd) \
|
||||||
pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)
|
pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)
|
||||||
@ -1780,12 +1783,14 @@ Different NICs may have different capabilities, command show port fdir (port_id)
|
|||||||
For example, to add an ipv4-udp flow type filter::
|
For example, to add an ipv4-udp flow type filter::
|
||||||
|
|
||||||
testpmd> flow_director_filter 0 add flow ipv4-udp src 2.2.2.3 32 \
|
testpmd> flow_director_filter 0 add flow ipv4-udp src 2.2.2.3 32 \
|
||||||
dst 2.2.2.5 33 vlan 0x1 flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
|
dst 2.2.2.5 33 tos 2 ttl 40 vlan 0x1 flexbytes (0x88,0x48) \
|
||||||
|
fwd pf queue 1 fd_id 1
|
||||||
|
|
||||||
For example, add an ipv4-other flow type filter::
|
For example, add an ipv4-other flow type filter::
|
||||||
|
|
||||||
testpmd> flow_director_filter 0 add flow ipv4-other src 2.2.2.3 \
|
testpmd> flow_director_filter 0 add flow ipv4-other src 2.2.2.3 \
|
||||||
dst 2.2.2.5 vlan 0x1 flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
|
dst 2.2.2.5 tos 2 proto 20 ttl 40 vlan 0x1 \
|
||||||
|
flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
|
||||||
|
|
||||||
flush_flow_director
|
flush_flow_director
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
@ -1902,33 +1907,36 @@ set_hash_input_set
|
|||||||
|
|
||||||
Set the input set for hash::
|
Set the input set for hash::
|
||||||
|
|
||||||
set_hash_input_set (port_id) (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
|
set_hash_input_set (port_id) (ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
|
||||||
ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
|
ipv4-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
|
||||||
l2_payload) (ovlan|ivlan|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos| \
|
l2_payload) (ovlan|ivlan|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos| \
|
||||||
ipv4-proto|ipv6-tc|ipv6-next-header|udp-src-port|udp-dst-port| \
|
ipv4-proto|ipv6-tc|ipv6-next-header|udp-src-port|udp-dst-port| \
|
||||||
tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag| \
|
tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag| \
|
||||||
udp-key|gre-key|fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th| \
|
udp-key|gre-key|fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th| \
|
||||||
fld-8th|none) (select|add)
|
fld-8th|none) (select|add)
|
||||||
|
|
||||||
For example, to add source IP to hash input set for flow type of ipv4 on port 0::
|
For example, to add source IP to hash input set for flow type of ipv4-udp on port 0::
|
||||||
|
|
||||||
testpmd> set_hash_input_set 0 ipv4 src-ipv4 add
|
testpmd> set_hash_input_set 0 ipv4-udp src-ipv4 add
|
||||||
|
|
||||||
set_fdir_input_set
|
set_fdir_input_set
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Set the input set for Fdir::
|
The Flow Director filters can match the different fields for different type of packet, i.e. specific input set
|
||||||
|
on per flow type and the flexible payload. This command can be used to change input set for each flow type.
|
||||||
|
|
||||||
set_fdir_input_set (port_id) (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
|
Set the input set for flow director::
|
||||||
ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload)
|
|
||||||
(src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|udp-src-port|udp-dst-port| \
|
|
||||||
tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|sctp-veri-tag| \
|
|
||||||
fld-1st|fld-2nd|fld-3rd|fld-4th|fld-5th|fld-6th|fld-7th|fld-8th|none) \
|
|
||||||
(select|add)
|
|
||||||
|
|
||||||
For example to add source IP to FD input set for flow type of ipv4 on port 0::
|
set_fdir_input_set (port_id) (ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \
|
||||||
|
ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \
|
||||||
|
l2_payload) (ethertype|src-ipv4|dst-ipv4|src-ipv6|dst-ipv6|ipv4-tos| \
|
||||||
|
ipv4-proto|ipv4-ttl|ipv6-tc|ipv6-next-header|ipv6-hop-limits| \
|
||||||
|
tudp-src-port|udp-dst-port|cp-src-port|tcp-dst-port|sctp-src-port| \
|
||||||
|
sctp-dst-port|sctp-veri-tag|none) (select|add)
|
||||||
|
|
||||||
testpmd> set_fdir_input_set 0 ipv4 src-ipv4 add
|
For example to add source IP to FD input set for flow type of ipv4-udp on port 0::
|
||||||
|
|
||||||
|
testpmd> set_fdir_input_set 0 ipv4-udp src-ipv4 add
|
||||||
|
|
||||||
global_config
|
global_config
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
Loading…
Reference in New Issue
Block a user