All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jianfeng Tan <jianfeng.tan@intel.com>
To: dev@dpdk.org
Subject: [PATCH v3 12/12] examples/l3fwd: add option to parse ptype
Date: Thu, 25 Feb 2016 15:54:02 +0800	[thread overview]
Message-ID: <1456386842-112571-13-git-send-email-jianfeng.tan@intel.com> (raw)
In-Reply-To: <1456386842-112571-1-git-send-email-jianfeng.tan@intel.com>

As a example to use ptype info, l3fwd needs firstly to use
rte_eth_dev_get_ptype_info() API to check if device and/or PMD driver will
parse and fill the needed packet type; if not, use the newly added option,
--parse-ptype, to analyze it in the callback softly.

Under the mode of EXACT_MATCH, ip packets with extensions or ip packets
which are neither tcp nor udp cannot work well because it needs the 5
tuples to caculate hash.

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
 doc/guides/sample_app_ug/l3_forward.rst |   6 +-
 examples/l3fwd/main.c                   | 122 ++++++++++++++++++++++++++++++++
 2 files changed, 127 insertions(+), 1 deletion(-)

diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 4ce734b..e0c22e3 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -93,7 +93,7 @@ The application has a number of command line options:
 
 .. code-block:: console
 
-    ./build/l3fwd [EAL options] -- -p PORTMASK [-P]  --config(port,queue,lcore)[,(port,queue,lcore)] [--enable-jumbo [--max-pkt-len PKTLEN]]  [--no-numa][--hash-entry-num][--ipv6]
+    ./build/l3fwd [EAL options] -- -p PORTMASK [-P]  --config(port,queue,lcore)[,(port,queue,lcore)] [--enable-jumbo [--max-pkt-len PKTLEN]]  [--no-numa][--hash-entry-num][--ipv6] [--parse-ptype]
 
 where,
 
@@ -114,6 +114,8 @@ where,
 
 *   --ipv6: optional, set it if running ipv6 packets
 
+*   --parse-ptype: optional, set it if use software way to analyze packet type
+
 For example, consider a dual processor socket platform where cores 0-7 and 16-23 appear on socket 0, while cores 8-15 and 24-31 appear on socket 1.
 Let's say that the programmer wants to use memory from both NUMA nodes, the platform has only two ports, one connected to each NUMA node,
 and the programmer wants to use two cores from each processor socket to do the packet processing.
@@ -334,6 +336,8 @@ The key code snippet of simple_ipv4_fwd_4pkts() is shown below:
 
 The simple_ipv6_fwd_4pkts() function is similar to the simple_ipv4_fwd_4pkts() function.
 
+Known issue: IP packets with extensions or IP packets which are not TCP/UDP cannot work well with this mode.
+
 Packet Forwarding for LPM-based Lookups
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 410f72d..3c43a90 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -178,6 +178,8 @@ static __m128i val_eth[RTE_MAX_ETHPORTS];
 static uint32_t enabled_port_mask = 0;
 static int promiscuous_on = 0; /**< Ports set in promiscuous mode off by default. */
 static int numa_on = 1; /**< NUMA is enabled by default. */
+static int parse_ptype; /**< Parse packet type using rx callback, and */
+			/**< disabled by default */
 
 #if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH)
 static int ipv6 = 0; /**< ipv6 is false by default. */
@@ -2029,6 +2031,7 @@ parse_eth_dest(const char *optarg)
 #define CMD_LINE_OPT_IPV6 "ipv6"
 #define CMD_LINE_OPT_ENABLE_JUMBO "enable-jumbo"
 #define CMD_LINE_OPT_HASH_ENTRY_NUM "hash-entry-num"
+#define CMD_LINE_OPT_PARSE_PTYPE "parse-ptype"
 
 /* Parse the argument given in the command line of the application */
 static int
@@ -2045,6 +2048,7 @@ parse_args(int argc, char **argv)
 		{CMD_LINE_OPT_IPV6, 0, 0, 0},
 		{CMD_LINE_OPT_ENABLE_JUMBO, 0, 0, 0},
 		{CMD_LINE_OPT_HASH_ENTRY_NUM, 1, 0, 0},
+		{CMD_LINE_OPT_PARSE_PTYPE, 0, 0, 0},
 		{NULL, 0, 0, 0}
 	};
 
@@ -2132,6 +2136,13 @@ parse_args(int argc, char **argv)
 				}
 			}
 #endif
+			if (!strncmp(lgopts[option_index].name,
+				     CMD_LINE_OPT_PARSE_PTYPE,
+				     sizeof(CMD_LINE_OPT_PARSE_PTYPE))) {
+				printf("soft parse-ptype is enabled\n");
+				parse_ptype = 1;
+			}
+
 			break;
 
 		default:
@@ -2580,6 +2591,105 @@ signal_handler(int signum)
 	}
 }
 
+static int
+check_packet_type_ok(int portid)
+{
+	int i, ret;
+	uint32_t *ptypes;
+	int ptype_l3_ipv4 = 0, ptype_l3_ipv6 = 0;
+
+	ret = rte_eth_dev_get_ptype_info(portid, RTE_PTYPE_L3_MASK, &ptypes);
+	if (ret <= 0)
+		return 0;
+
+	for (i = 0; i < ret; ++i) {
+		if (ptypes[i] & RTE_PTYPE_L3_IPV4)
+			ptype_l3_ipv4 = 1;
+		if (ptypes[i] & RTE_PTYPE_L3_IPV6)
+			ptype_l3_ipv6 = 1;
+	}
+	free(ptypes);
+
+	if (ptype_l3_ipv4 == 0)
+		printf("port %d cannot parse RTE_PTYPE_L3_IPV4\n", portid);
+
+	if (ptype_l3_ipv6 == 0)
+		printf("port %d cannot parse RTE_PTYPE_L3_IPV6\n", portid);
+
+	if (ptype_l3_ipv4 && ptype_l3_ipv6)
+		return 1;
+
+	return 0;
+}
+static inline void
+parse_packet_type(struct rte_mbuf *m)
+{
+	struct ether_hdr *eth_hdr;
+	uint32_t packet_type = 0;
+	uint16_t ethertype;
+
+	eth_hdr = rte_pktmbuf_mtod(m, struct ether_hdr *);
+	ethertype = rte_be_to_cpu_16(eth_hdr->ether_type);
+	switch (ethertype) {
+	case ETHER_TYPE_IPv4:
+#if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH)
+		{
+			int hdr_len;
+			struct ipv4_hdr *hdr;
+
+			hdr = (struct ipv4_hdr *)((uint8_t *)eth_hdr +
+						sizeof(struct ether_hdr));
+			hdr_len = (hdr->version_ihl & IPV4_HDR_IHL_MASK)
+				* IPV4_IHL_MULTIPLIER;
+			/* Exact match uses 5 tuples to calculate hash, so
+			 * adequate packets should not only have no ip header
+			 * extension but also be TCP/UDP packet
+			 */
+			if (hdr_len == sizeof(struct ipv4_hdr) &&
+			    (hdr->next_proto_id == 6 ||
+			     hdr->next_proto_id == 17))
+				packet_type |= RTE_PTYPE_L3_IPV4;
+		}
+#elif (APP_LOOKUP_METHOD == APP_LOOKUP_LPM)
+		packet_type |= RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
+#endif
+		break;
+	case ETHER_TYPE_IPv6:
+#if (APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH)
+		{
+			struct ipv6_hdr *hdr;
+
+			hdr = (struct ipv6_hdr *)((uint8_t *)eth_hdr +
+						  sizeof(struct ether_hdr));
+			if (hdr->proto == 6 || hdr->proto == 17)
+				packet_type |= RTE_PTYPE_L3_IPV4;
+		}
+
+#elif (APP_LOOKUP_METHOD == APP_LOOKUP_LPM)
+		packet_type |= RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
+#endif
+		break;
+	default:
+		break;
+	}
+
+	m->packet_type |= packet_type;
+}
+
+static uint16_t
+cb_parse_packet_type(uint8_t port __rte_unused,
+		     uint16_t queue __rte_unused,
+		     struct rte_mbuf *pkts[],
+		     uint16_t nb_pkts,
+		     uint16_t max_pkts __rte_unused,
+		     void *user_param __rte_unused)
+{
+	unsigned i;
+
+	for (i = 0; i < nb_pkts; ++i)
+		parse_packet_type(pkts[i]);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -2697,6 +2807,11 @@ main(int argc, char **argv)
 				rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup: err=%d, "
 					"port=%d\n", ret, portid);
 
+			if (!check_packet_type_ok(portid) && !parse_ptype)
+				rte_exit(EXIT_FAILURE,
+					 "port %d cannot parse packet type, please add --%s\n",
+					 portid, CMD_LINE_OPT_PARSE_PTYPE);
+
 			qconf = &lcore_conf[lcore_id];
 			qconf->tx_queue_id[portid] = queueid;
 			queueid++;
@@ -2730,6 +2845,13 @@ main(int argc, char **argv)
 			if (ret < 0)
 				rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup: err=%d,"
 						"port=%d\n", ret, portid);
+			if (parse_ptype &&
+			    !rte_eth_add_rx_callback(portid, queueid,
+						     cb_parse_packet_type,
+						     NULL))
+				rte_exit(EXIT_FAILURE,
+					 "Failed to add rx callback: port=%d\n",
+					 portid);
 		}
 	}
 
-- 
2.1.4

  parent reply	other threads:[~2016-02-25 14:54 UTC|newest]

Thread overview: 202+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-31  6:53 [PATCH 00/12] Add API to get packet type info Jianfeng Tan
2015-12-31  6:53 ` [PATCH 01/12] ethdev: add API to query what/if packet type is set Jianfeng Tan
2016-01-04 11:38   ` Adrien Mazarguil
2016-01-04 14:36     ` Ananyev, Konstantin
2016-01-05 16:14       ` Nélio Laranjeiro
2016-01-05 16:50         ` Ananyev, Konstantin
2016-01-06 10:00           ` Adrien Mazarguil
2016-01-06 14:29             ` Ananyev, Konstantin
2016-01-06 15:44               ` Adrien Mazarguil
2016-01-06 16:44                 ` Ananyev, Konstantin
2016-01-06 17:22                   ` Adrien Mazarguil
2016-01-07 10:24                     ` Ananyev, Konstantin
2016-01-07 13:32                       ` Adrien Mazarguil
2016-01-11  7:39                         ` Tan, Jianfeng
2016-01-11 10:26                           ` Ananyev, Konstantin
2015-12-31  6:53 ` [PATCH 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-01-06  7:11   ` Rahul Lakkireddy
2016-01-06  8:23     ` Tan, Jianfeng
2015-12-31  6:53 ` [PATCH 03/12] pmd/e1000: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 04/12] pmd/enic: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 05/12] pmd/fm10k: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 06/12] pmd/i40e: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 07/12] pmd/ixgbe: " Jianfeng Tan
2016-01-04 18:12   ` Ananyev, Konstantin
2016-01-05  1:25     ` Tan, Jianfeng
2015-12-31  6:53 ` [PATCH 08/12] pmd/mlx4: " Jianfeng Tan
2016-01-04 11:11   ` Adrien Mazarguil
2016-01-05  3:08     ` Tan, Jianfeng
2016-01-05 16:18       ` Adrien Mazarguil
2016-01-11  5:07         ` Tan, Jianfeng
2015-12-31  6:53 ` [PATCH 09/12] pmd/mlx5: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 10/12] pmd/nfp: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 11/12] pmd/vmxnet3: " Jianfeng Tan
2015-12-31  6:53 ` [PATCH 12/12] examples/l3fwd: add option to parse ptype Jianfeng Tan
2016-01-04 18:32   ` Ananyev, Konstantin
2016-01-05  2:44     ` Tan, Jianfeng
2016-01-05 16:49       ` Ananyev, Konstantin
2016-01-07  1:20         ` Tan, Jianfeng
2016-01-07  9:44           ` Ananyev, Konstantin
2016-01-13  1:52 ` [PATCH 00/12] Add API to get packet type info Qiu, Michael
2016-01-15  5:45 ` [PATCH v2 " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-01-15 13:58     ` Adrien Mazarguil
2016-01-15 15:11       ` Ananyev, Konstantin
2016-01-15 15:33         ` Adrien Mazarguil
2016-01-15 15:03     ` Ananyev, Konstantin
2016-02-25  6:53       ` Tan, Jianfeng
2016-02-25 11:17         ` Ananyev, Konstantin
2016-02-25 14:57           ` Tan, Jianfeng
2016-01-15  5:45   ` [PATCH v2 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 03/12] pmd/e1000: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 04/12] pmd/enic: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 05/12] pmd/fm10k: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 06/12] pmd/i40e: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 07/12] pmd/ixgbe: " Jianfeng Tan
2016-01-15 14:50     ` Ananyev, Konstantin
2016-02-25  6:43       ` Tan, Jianfeng
2016-02-25 11:10         ` Ananyev, Konstantin
2016-01-15  5:45   ` [PATCH v2 08/12] pmd/mlx4: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 09/12] pmd/mlx5: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 10/12] pmd/nfp: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-01-15  5:45   ` [PATCH v2 12/12] examples/l3fwd: add option to parse ptype Jianfeng Tan
2016-01-15 14:47     ` Ananyev, Konstantin
2016-02-25 10:41       ` Tan, Jianfeng
2016-02-25 10:57         ` Ananyev, Konstantin
2016-02-23 17:31   ` [PATCH v2 00/12] Add API to get packet type info Bruce Richardson
2016-02-25  7:53 ` [PATCH v3 " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-25 15:46     ` Ananyev, Konstantin
2016-02-25 16:36       ` Tan, Jianfeng
2016-02-25 17:16         ` Ananyev, Konstantin
2016-02-26  1:42           ` Tan, Jianfeng
2016-02-25  7:53   ` [PATCH v3 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 03/12] pmd/e1000: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 04/12] pmd/enic: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 05/12] pmd/fm10k: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 06/12] pmd/i40e: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 07/12] pmd/ixgbe: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 08/12] pmd/mlx4: " Jianfeng Tan
2016-02-25  7:53   ` [PATCH v3 09/12] pmd/mlx5: " Jianfeng Tan
2016-02-25  7:54   ` [PATCH v3 10/12] pmd/nfp: " Jianfeng Tan
2016-02-25  7:54   ` [PATCH v3 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-02-25  7:54   ` Jianfeng Tan [this message]
2016-02-26  0:04 ` [PATCH v4 00/12] Add API to get packet type info Jianfeng Tan
2016-02-26  0:04   ` [PATCH v4 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-26  0:09 ` [PATCH v4 00/12] Add API to get packet type info Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 03/12] pmd/e1000: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 04/12] pmd/enic: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 05/12] pmd/fm10k: " Jianfeng Tan
2016-03-02 20:11     ` Chen, Jing D
2016-03-03  6:03       ` Tan, Jianfeng
2016-03-03 15:47         ` Ananyev, Konstantin
2016-02-26  0:09   ` [PATCH v4 06/12] pmd/i40e: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 07/12] pmd/ixgbe: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 08/12] pmd/mlx4: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 09/12] pmd/mlx5: " Jianfeng Tan
2016-02-26  8:26     ` Adrien Mazarguil
2016-02-26  8:36       ` Tan, Jianfeng
2016-02-26  0:09   ` [PATCH v4 10/12] pmd/nfp: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-02-26  0:09   ` [PATCH v4 12/12] examples/l3fwd: add option to parse ptype Jianfeng Tan
2016-02-26 13:14     ` Ananyev, Konstantin
2016-02-26 14:21       ` Tan, Jianfeng
2016-02-26 14:27         ` Ananyev, Konstantin
2016-02-26  7:34 ` [PATCH v5 00/11] Add API to get packet type info Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 01/11] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-29 11:34     ` Panu Matilainen
2016-02-29 16:41       ` Tan, Jianfeng
2016-03-01  6:29         ` Panu Matilainen
2016-03-01  7:59           ` Thomas Monjalon
2016-03-01  8:00           ` Tan, Jianfeng
2016-02-26  7:34   ` [PATCH v5 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 03/11] pmd/e1000: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 04/11] pmd/enic: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 05/11] pmd/fm10k: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 06/11] pmd/i40e: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 07/11] pmd/ixgbe: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 08/11] pmd/mlx4: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 09/11] pmd/mlx5: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 10/11] pmd/nfp: " Jianfeng Tan
2016-02-26  7:34   ` [PATCH v5 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-02-29 16:54   ` [PATCH v5 00/11] Add API to get packet type info Ananyev, Konstantin
2016-02-29 17:01     ` Adrien Mazarguil
2016-02-29 20:30 ` [PATCH v6 " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 01/11] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 03/11] pmd/e1000: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 04/11] pmd/enic: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 05/11] pmd/fm10k: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 06/11] pmd/i40e: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 07/11] pmd/ixgbe: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 08/11] pmd/mlx4: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 09/11] pmd/mlx5: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 10/11] pmd/nfp: " Jianfeng Tan
2016-02-29 20:30   ` [PATCH v6 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-03-01  1:23 ` [PATCH] examples/l3fwd: fix using packet type blindly Jianfeng Tan
2016-03-01 13:51   ` Ananyev, Konstantin
2016-03-01 14:17     ` Tan, Jianfeng
2016-03-01 14:30       ` Ananyev, Konstantin
2016-03-04  8:38   ` [PATCH v2] " Jianfeng Tan
2016-03-07 18:51     ` Ananyev, Konstantin
2016-03-08 17:11       ` Tan, Jianfeng
2016-03-10  5:50   ` [PATCH v3 0/2] " Jianfeng Tan
2016-03-10  5:50     ` [PATCH v3 1/2] " Jianfeng Tan
2016-03-10  5:50     ` [PATCH v3 2/2] config: enable vector driver by default Jianfeng Tan
2016-03-10 14:26     ` [PATCH v3 0/2] examples/l3fwd: fix using packet type blindly Ananyev, Konstantin
2016-03-25  0:47   ` [PATCH v4 0/3] packet type Jianfeng Tan
2016-03-25  0:47     ` [PATCH v4 1/3] ethdev: refine API to query supported packet types Jianfeng Tan
2016-03-25  3:15       ` [PATCH 0/2] ethdev: refine new API to query supported ptypes Jianfeng Tan
2016-03-25  3:15         ` [PATCH 1/2] " Jianfeng Tan
2016-03-25  3:15         ` [PATCH 2/2] doc: update which PMDs can parse packet type Jianfeng Tan
2016-03-25 14:21           ` Bruce Richardson
2016-03-25 16:10             ` Tan, Jianfeng
2016-04-01 15:55               ` Thomas Monjalon
2016-03-25 10:57         ` [PATCH 0/2] ethdev: refine new API to query supported ptypes Ananyev, Konstantin
2016-04-06  3:51         ` [PATCH v2] " Jianfeng Tan
2016-04-06 14:32           ` Thomas Monjalon
2016-03-25 10:01       ` [PATCH v4 1/3] ethdev: refine API to query supported packet types Tan, Jianfeng
2016-03-25 10:13       ` Bruce Richardson
2016-03-25  0:47     ` [PATCH v4 2/3] examples/l3fwd: fix using packet type blindly Jianfeng Tan
2016-03-25 18:24       ` Thomas Monjalon
2016-03-25  0:47     ` [PATCH v4 3/3] config: enable vector driver by default Jianfeng Tan
2016-03-25 18:34     ` [PATCH v4 0/3] packet type Thomas Monjalon
2016-03-09 19:31 ` [PATCH v7 00/11] Add API to get packet type info Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 01/11] ethdev: add API to query packet type filling info Jianfeng Tan
2016-03-10 14:28     ` Bruce Richardson
2016-03-14  9:44     ` Thomas Monjalon
2016-03-14  9:48       ` Bruce Richardson
2016-03-09 19:31   ` [PATCH v7 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 03/11] pmd/e1000: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 04/11] pmd/enic: " Jianfeng Tan
2016-03-10 14:50     ` Bruce Richardson
2016-03-10 14:51       ` Bruce Richardson
2016-03-10 18:23         ` Tan, Jianfeng
2016-03-09 19:31   ` [PATCH v7 05/11] pmd/fm10k: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 06/11] pmd/i40e: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 07/11] pmd/ixgbe: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 08/11] pmd/mlx4: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 09/11] pmd/mlx5: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 10/11] pmd/nfp: " Jianfeng Tan
2016-03-09 19:31   ` [PATCH v7 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-03-10 14:55   ` [PATCH v7 00/11] Add API to get packet type info Bruce Richardson
2016-03-14  7:42 ` [PATCH v8 00/11] Add API to get supported packet types Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 01/11] ethdev: add API to query " Jianfeng Tan
2016-03-14 17:14     ` Ferruh Yigit
2016-03-14 20:50       ` [PATCH v9 " Jianfeng Tan
2016-03-18  9:17         ` Tan, Jianfeng
2016-03-15  1:42       ` [PATCH v8 " Tan, Jianfeng
2016-03-14  7:42   ` [PATCH v8 02/11] cxgbe: add dev_supported_ptypes_get implementation Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 03/11] e1000: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 04/11] enic: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 05/11] fm10k: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 06/11] i40e: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 07/11] ixgbe: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 08/11] mlx4: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 09/11] mlx5: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 10/11] nfp: " Jianfeng Tan
2016-03-14  7:42   ` [PATCH v8 11/11] vmxnet3: " Jianfeng Tan
2016-03-18 16:21   ` [PATCH v8 00/11] Add API to get supported packet types Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456386842-112571-13-git-send-email-jianfeng.tan@intel.com \
    --to=jianfeng.tan@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.