From patchwork Mon Mar 21 06:18:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingjing Wu X-Patchwork-Id: 11618 X-Patchwork-Delegate: bruce.richardson@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id E16D05688; Mon, 21 Mar 2016 07:19:25 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id C9B125320 for ; Mon, 21 Mar 2016 07:19:13 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP; 20 Mar 2016 23:19:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,370,1455004800"; d="scan'208";a="915370461" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga001.jf.intel.com with ESMTP; 20 Mar 2016 23:19:13 -0700 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id u2L6JAKg027470; Mon, 21 Mar 2016 14:19:10 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id u2L6J7pQ012029; Mon, 21 Mar 2016 14:19:09 +0800 Received: (from wujingji@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id u2L6J7Cf012025; Mon, 21 Mar 2016 14:19:07 +0800 From: Jingjing Wu To: dev@dpdk.org Cc: jingjing.wu@intel.com, helin.zhang@intel.com Date: Mon, 21 Mar 2016 14:18:49 +0800 Message-Id: <1458541132-11953-7-git-send-email-jingjing.wu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1458541132-11953-1-git-send-email-jingjing.wu@intel.com> References: <1457580346-18550-1-git-send-email-jingjing.wu@intel.com> <1458541132-11953-1-git-send-email-jingjing.wu@intel.com> Subject: [dpdk-dev] [PATCH v5 6/9] testpmd: extend input set related commands X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch extended commands for filter's input set changing. It added tos, protocol and ttl as filter's input fields, and remove the words selection from flex payloads for flow director. Signed-off-by: Jingjing Wu Acked-by: Helin Zhang --- app/test-pmd/cmdline.c | 100 ++++++++++++++++++++++------ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 42 +++++++----- 2 files changed, 104 insertions(+), 38 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 9d52b8c..6d1b9f0 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -669,6 +669,7 @@ static void cmd_help_long_parsed(void *parsed_result, "flow_director_filter (port_id) mode IP (add|del|update)" " flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)" " src (src_ip_address) dst (dst_ip_address)" + " tos (tos_value) proto (proto_value) ttl (ttl_value)" " vlan (vlan_value) flexbytes (flexbytes_value)" " (drop|fwd) pf|vf(vf_id) queue (queue_id)" " 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)" " src (src_ip_address) (src_port)" " dst (dst_ip_address) (dst_port)" + " tos (tos_value) ttl (ttl_value)" " vlan (vlan_value) flexbytes (flexbytes_value)" " (drop|fwd) pf|vf(vf_id) queue (queue_id)" " fd_id (fd_id_value)\n" @@ -687,7 +689,9 @@ static void cmd_help_long_parsed(void *parsed_result, " flow (ipv4-sctp|ipv6-sctp)" " src (src_ip_address) (src_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)" " pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)\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" " Set the input set for hash.\n\n" - "set_fdir_input_set (port_id) (ipv4|ipv4-frag|" - "ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|" + "set_fdir_input_set (port_id) " + "(ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|" "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)\n" + "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|udp-src-port|" + "udp-dst-port|tcp-src-port|tcp-dst-port|" + "sctp-src-port|sctp-dst-port|sctp-veri-tag|none)" + " (select|add)\n" " Set the input set for FDir.\n\n" ); } @@ -8027,6 +8032,12 @@ struct cmd_flow_director_result { uint16_t port_dst; cmdline_fixed_string_t verify_tag; 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; uint16_t vlan_value; cmdline_fixed_string_t flexbytes; @@ -8206,12 +8217,15 @@ cmd_flow_director_filter_parsed(void *parsed_result, switch (entry.input.flow_type) { case RTE_ETH_FLOW_FRAG_IPV4: 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_TCP: IPV4_ADDR_TO_UINT(res->ip_dst, entry.input.flow.ip4_flow.dst_ip); IPV4_ADDR_TO_UINT(res->ip_src, 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. */ entry.input.flow.udp4_flow.dst_port = 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); IPV4_ADDR_TO_UINT(res->ip_src, 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. */ entry.input.flow.sctp4_flow.dst_port = rte_cpu_to_be_16(res->port_dst); @@ -8233,12 +8249,15 @@ cmd_flow_director_filter_parsed(void *parsed_result, break; case RTE_ETH_FLOW_FRAG_IPV6: 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_TCP: IPV6_ADDR_TO_ARRAY(res->ip_dst, entry.input.flow.ipv6_flow.dst_ip); IPV6_ADDR_TO_ARRAY(res->ip_src, 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. */ entry.input.flow.udp6_flow.dst_port = 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); IPV6_ADDR_TO_ARRAY(res->ip_src, 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. */ entry.input.flow.sctp6_flow.dst_port = 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 = TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result, 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 = TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result, 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_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_value, (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_ip_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_value, (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_verify_tag, (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_value, (void *)&cmd_flow_director_flexbytes, @@ -9447,16 +9500,19 @@ str2inset(char *string) char str[32]; enum rte_eth_input_set_field inset; } inset_table[] = { + {"ethertype", RTE_ETH_INPUT_SET_L2_ETHERTYPE}, {"ovlan", RTE_ETH_INPUT_SET_L2_OUTER_VLAN}, {"ivlan", RTE_ETH_INPUT_SET_L2_INNER_VLAN}, {"src-ipv4", RTE_ETH_INPUT_SET_L3_SRC_IP4}, {"dst-ipv4", RTE_ETH_INPUT_SET_L3_DST_IP4}, {"ipv4-tos", RTE_ETH_INPUT_SET_L3_IP4_TOS}, {"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}, {"dst-ipv6", RTE_ETH_INPUT_SET_L3_DST_IP6}, {"ipv6-tc", RTE_ETH_INPUT_SET_L3_IP6_TC}, {"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-dst-port", RTE_ETH_INPUT_SET_L4_UDP_DST_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 = TOKEN_STRING_INITIALIZER(struct cmd_set_hash_input_set_result, 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"); cmdline_parse_token_string_t cmd_set_hash_input_set_field = 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, .data = NULL, .help_str = "set_hash_input_set " - "ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|" - "ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload " + "ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|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|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|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 = TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result, 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"); cmdline_parse_token_string_t cmd_set_fdir_input_set_field = TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result, 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#" - "sctp-veri-tag#fld-1st#fld-2nd#fld-3rd#fld-4th#fld-5th#fld-6th#" - "fld-7th#fld-8th#none"); + "sctp-veri-tag#none"); cmdline_parse_token_string_t cmd_set_fdir_input_set_select = TOKEN_STRING_INITIALIZER(struct cmd_set_fdir_input_set_result, select, "select#add"); @@ -9607,12 +9664,13 @@ cmdline_parse_inst_t cmd_set_fdir_input_set = { .f = cmd_set_fdir_input_set_parsed, .data = NULL, .help_str = "set_fdir_input_set " - "ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|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", + "ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|" + "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|udp-src-port|udp-dst-port|" + "tcp-src-port|tcp-dst-port|sctp-src-port|sctp-dst-port|" + "sctp-veri-tag|none select|add", .tokens = { (void *)&cmd_set_fdir_input_set_cmd, (void *)&cmd_set_fdir_input_set_port_id, diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index efaf2b5..52a4f11 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -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:: 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) \ + tos (tos_value) proto (proto_value) ttl (ttl_value) \ vlan (vlan_value) flexbytes (flexbytes_value) \ (drop|fwd) pf|vf(vf_id) queue (queue_id) \ 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) \ src (src_ip_address) (src_port) \ dst (dst_ip_address) (dst_port) \ + tos (tos_value) ttl (ttl_value) \ vlan (vlan_value) flexbytes (flexbytes_value) \ (drop|fwd) queue pf|vf(vf_id) (queue_id) \ 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 (ipv4-sctp|ipv6-sctp) \ 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) \ flexbytes (flexbytes_value) (drop|fwd) \ 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:: 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:: 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 ~~~~~~~~~~~~~~~~~~~ @@ -1902,33 +1907,36 @@ set_hash_input_set Set the input set for hash:: - set_hash_input_set (port_id) (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \ - ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other| \ + set_hash_input_set (port_id) (ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp| \ + 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| \ 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| \ udp-key|gre-key|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 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 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| \ - 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) +Set the input set for flow director:: + + 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) -For example to add source IP to FD input set for flow type of ipv4 on port 0:: +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 src-ipv4 add + testpmd> set_fdir_input_set 0 ipv4-udp src-ipv4 add global_config ~~~~~~~~~~~~~