From: "Tan, Jianfeng" <jianfeng.tan@intel.com>
To: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] examples/l3fwd: fix using packet type blindly
Date: Tue, 1 Mar 2016 22:17:26 +0800 [thread overview]
Message-ID: <56D5A476.6070500@intel.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB97725836B0C99C@irsmsx105.ger.corp.intel.com>
Hi Konstantin,
On 3/1/2016 9:51 PM, Ananyev, Konstantin wrote:
> Hi Jianfeng,
>
>> -----Original Message-----
>> From: Tan, Jianfeng
>> Sent: Tuesday, March 01, 2016 1:24 AM
>> To: dev@dpdk.org
>> Cc: Zhang, Helin; Ananyev, Konstantin; nelio.laranjeiro@6wind.com; adrien.mazarguil@6wind.com; rahul.lakkireddy@chelsio.com;
>> pmatilai@redhat.com; Tan, Jianfeng
>> Subject: [PATCH] examples/l3fwd: fix using packet type blindly
>>
>> 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
>> its 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.
>>
>> As the mode of EXACT_MATCH uses the 5 tuples to caculate
>> hash, so we narrow down its scope to:
>> a. ip packets with no extensions, and
>> b. L4 payload should be either tcp or udp.
[...]
>> +
>> + if (ptype_l3_ipv4_ext == 0)
>> + printf("port %d cannot parse RTE_PTYPE_L3_IPV4_EXT\n", portid);
>> + if (ptype_l3_ipv6_ext == 0)
>> + printf("port %d cannot parse RTE_PTYPE_L3_IPV6_EXT\n", portid);
>> + if (ptype_l3_ipv4_ext && ptype_l3_ipv6_ext)
>> + return 1;
> Why return here?
> You'll miss L4 ptype checks below.
Oops, should be: if (!ptype_l3_ipv4_ext || !ptype_l3_ipv6_ext) return 0;
and continue check L4 ptype.
>> +
>> + if (ptype_l4_tcp == 0)
>> + printf("port %d cannot parse RTE_PTYPE_L4_TCP\n", portid);
>> + if (ptype_l4_udp == 0)
>> + printf("port %d cannot parse RTE_PTYPE_L4_UDP\n", portid);
>> + if (ptype_l4_tcp || ptype_l4_udp)
>> + return 1;
>> +
>> + return 0;
>> +}
>> +
>> +void
>> +em_parse_ptype(struct rte_mbuf *m)
>> +{
>> + struct ether_hdr *eth_hdr;
>> + uint32_t packet_type = 0;
>> + uint16_t ethertype;
>> + void *l4;
>> + int hdr_len;
>> + struct ipv4_hdr *ipv4_hdr;
>> + struct ipv6_hdr *ipv6_hdr;
>> +
>> + eth_hdr = rte_pktmbuf_mtod(m, struct ether_hdr *);
>> + ethertype = rte_be_to_cpu_16(eth_hdr->ether_type);
>> + l4 = (uint8_t *)eth_hdr + sizeof(struct ether_hdr);
> Just curious why l4? It looks like l3 :)
Yes, it's typo, should be l3. Thanks for pointing it out.
>> + switch (ethertype) {
>> + case ETHER_TYPE_IPv4:
>> + ipv4_hdr = (struct ipv4_hdr *)l4;
>> + hdr_len = (ipv4_hdr->version_ihl & IPV4_HDR_IHL_MASK) *
>> + IPV4_IHL_MULTIPLIER;
>> + if (hdr_len == sizeof(struct ipv4_hdr) &&
>> + (ipv4_hdr->next_proto_id == IPPROTO_TCP ||
>> + ipv4_hdr->next_proto_id == IPPROTO_UDP))
>> + packet_type |= RTE_PTYPE_L3_IPV4;
> I think it needs to be something like:
> If (hdr_len == sizeof(struct ipv4_hdr)) {
> packet_type = RTE_PTYPE_L3_IPV4;
> if (ipv4_hdr->next_proto_id == IPPROTO_TCP)
> packet_type |= RTE_PTYPE_L4_TCP;
> else if ipv4_hdr->next_proto_id == IPPROTO_UDP)
> packet_type |= RTE_PTYPE_L4_TCP;
> }
>
> And then inside em forward check ptype to be sure that is IPV4 with no options and UDP/TCP packet.
> Same for IPv6.
Got it, I'll change it and add this check in em forward function.
>> + break;
>> + case ETHER_TYPE_IPv6:
>> + ipv6_hdr = (struct ipv6_hdr *)l4;
>> + if (ipv6_hdr->proto == IPPROTO_TCP ||
>> + ipv6_hdr->proto == IPPROTO_UDP)
>> + packet_type |= RTE_PTYPE_L3_IPV6;
>> + break;
>> + }
>> +
>> + m->packet_type |= packet_type;
>> +}
>> +
>> /* main processing loop */
>> int
>> em_main_loop(__attribute__((unused)) void *dummy)
>> diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c
>> index e0ed3c4..981227a 100644
>> --- a/examples/l3fwd/l3fwd_lpm.c
>> +++ b/examples/l3fwd/l3fwd_lpm.c
>> @@ -280,6 +280,63 @@ setup_lpm(const int socketid)
>> }
>> }
>>
>> +int
>> +lpm_check_ptype(int portid)
>> +{
>> + int i, ret;
>> + int ptype_l3_ipv4 = 0, ptype_l3_ipv6 = 0;
>> +
>> + ret = rte_eth_dev_get_ptype_info(portid, RTE_PTYPE_L3_MASK, NULL, 0);
>> + if (ret <= 0)
>> + return 0;
>> +
>> + uint32_t ptypes[ret];
>> +
>> + ret = rte_eth_dev_get_ptype_info(portid, RTE_PTYPE_L3_MASK,
>> + ptypes, ret);
>> + 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;
>> + }
>> +
>> + 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;
>> +
>> +}
>> +
>> +void
>> +lpm_parse_ptype(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:
>> + packet_type |= RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
>> + break;
>> + case ETHER_TYPE_IPv6:
>> + packet_type |= RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
>> + break;
>> + default:
>> + break;
>> + }
>> +
>> + m->packet_type |= packet_type;
> Might be safer:
> m->packet_type = packet_type;
Your previous comment on this says that the assignment will write off
some ptype info PMDs have filled. But for l3fwd, I think it does not
care other ptype info.
[...]
> +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)
> + l3fwd_lkp.parse_ptype(pkts[i]);
>
> No need to create callback chains.
> That way you have extra call per packet.
> Just 2 callbaclks: cb_lpm_parse_ptype & cb_em_parse_ptype,
> and then register one depending on which mode are we in.
> Would be simpler and faster, I believe.
Yes, I was considering it too. In addition, shall I use vector
instruction here to accelerate it?
Thanks,
Jianfeng
>
> Konstantin
>
next prev parent reply other threads:[~2016-03-01 14:17 UTC|newest]
Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-31 6:53 [dpdk-dev] [PATCH 00/12] Add API to get packet type info Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH 03/12] pmd/e1000: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [PATCH 04/12] pmd/enic: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [PATCH 05/12] pmd/fm10k: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [PATCH 06/12] pmd/i40e: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH 09/12] pmd/mlx5: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [PATCH 10/12] pmd/nfp: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [PATCH 11/12] pmd/vmxnet3: " Jianfeng Tan
2015-12-31 6:53 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH 00/12] Add API to get packet type info Qiu, Michael
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v2 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 03/12] pmd/e1000: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 04/12] pmd/enic: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 05/12] pmd/fm10k: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 06/12] pmd/i40e: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v2 08/12] pmd/mlx4: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 09/12] pmd/mlx5: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 10/12] pmd/nfp: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [PATCH v2 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-01-15 5:45 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v2 00/12] Add API to get packet type info Bruce Richardson
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v3 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 03/12] pmd/e1000: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 04/12] pmd/enic: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 05/12] pmd/fm10k: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 06/12] pmd/i40e: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 07/12] pmd/ixgbe: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 08/12] pmd/mlx4: " Jianfeng Tan
2016-02-25 7:53 ` [dpdk-dev] [PATCH v3 09/12] pmd/mlx5: " Jianfeng Tan
2016-02-25 7:54 ` [dpdk-dev] [PATCH v3 10/12] pmd/nfp: " Jianfeng Tan
2016-02-25 7:54 ` [dpdk-dev] [PATCH v3 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-02-25 7:54 ` [dpdk-dev] [PATCH v3 12/12] examples/l3fwd: add option to parse ptype Jianfeng Tan
2016-02-26 0:04 ` [dpdk-dev] [PATCH v4 00/12] Add API to get packet type info Jianfeng Tan
2016-02-26 0:04 ` [dpdk-dev] [PATCH v4 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 00/12] Add API to get packet type info Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 01/12] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 02/12] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 03/12] pmd/e1000: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 04/12] pmd/enic: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 06/12] pmd/i40e: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 07/12] pmd/ixgbe: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 08/12] pmd/mlx4: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 10/12] pmd/nfp: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [PATCH v4 11/12] pmd/vmxnet3: " Jianfeng Tan
2016-02-26 0:09 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v5 00/11] Add API to get packet type info Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v5 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 03/11] pmd/e1000: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 04/11] pmd/enic: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 05/11] pmd/fm10k: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 06/11] pmd/i40e: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 07/11] pmd/ixgbe: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 08/11] pmd/mlx4: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 09/11] pmd/mlx5: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 10/11] pmd/nfp: " Jianfeng Tan
2016-02-26 7:34 ` [dpdk-dev] [PATCH v5 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-02-29 16:54 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v6 " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 01/11] ethdev: add API to query packet type filling info Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 03/11] pmd/e1000: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 04/11] pmd/enic: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 05/11] pmd/fm10k: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 06/11] pmd/i40e: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 07/11] pmd/ixgbe: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 08/11] pmd/mlx4: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 09/11] pmd/mlx5: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 10/11] pmd/nfp: " Jianfeng Tan
2016-02-29 20:30 ` [dpdk-dev] [PATCH v6 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-03-01 1:23 ` [dpdk-dev] [PATCH] examples/l3fwd: fix using packet type blindly Jianfeng Tan
2016-03-01 13:51 ` Ananyev, Konstantin
2016-03-01 14:17 ` Tan, Jianfeng [this message]
2016-03-01 14:30 ` Ananyev, Konstantin
2016-03-04 8:38 ` [dpdk-dev] [PATCH v2] " Jianfeng Tan
2016-03-07 18:51 ` Ananyev, Konstantin
2016-03-08 17:11 ` Tan, Jianfeng
2016-03-10 5:50 ` [dpdk-dev] [PATCH v3 0/2] " Jianfeng Tan
2016-03-10 5:50 ` [dpdk-dev] [PATCH v3 1/2] " Jianfeng Tan
2016-03-10 5:50 ` [dpdk-dev] [PATCH v3 2/2] config: enable vector driver by default Jianfeng Tan
2016-03-10 14:26 ` [dpdk-dev] [PATCH v3 0/2] examples/l3fwd: fix using packet type blindly Ananyev, Konstantin
2016-03-25 0:47 ` [dpdk-dev] [PATCH v4 0/3] packet type Jianfeng Tan
2016-03-25 0:47 ` [dpdk-dev] [PATCH v4 1/3] ethdev: refine API to query supported packet types Jianfeng Tan
2016-03-25 3:15 ` [dpdk-dev] [PATCH 0/2] ethdev: refine new API to query supported ptypes Jianfeng Tan
2016-03-25 3:15 ` [dpdk-dev] [PATCH 1/2] " Jianfeng Tan
2016-03-25 3:15 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH 0/2] ethdev: refine new API to query supported ptypes Ananyev, Konstantin
2016-04-06 3:51 ` [dpdk-dev] [PATCH v2] " Jianfeng Tan
2016-04-06 14:32 ` Thomas Monjalon
2016-03-25 10:01 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 3/3] config: enable vector driver by default Jianfeng Tan
2016-03-25 18:34 ` [dpdk-dev] [PATCH v4 0/3] packet type Thomas Monjalon
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 00/11] Add API to get packet type info Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v7 02/11] pmd/cxgbe: add dev_ptype_info_get implementation Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 03/11] pmd/e1000: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v7 05/11] pmd/fm10k: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 06/11] pmd/i40e: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 07/11] pmd/ixgbe: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 08/11] pmd/mlx4: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 09/11] pmd/mlx5: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 10/11] pmd/nfp: " Jianfeng Tan
2016-03-09 19:31 ` [dpdk-dev] [PATCH v7 11/11] pmd/vmxnet3: " Jianfeng Tan
2016-03-10 14:55 ` [dpdk-dev] [PATCH v7 00/11] Add API to get packet type info Bruce Richardson
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 00/11] Add API to get supported packet types Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 01/11] ethdev: add API to query " Jianfeng Tan
2016-03-14 17:14 ` Ferruh Yigit
2016-03-14 20:50 ` [dpdk-dev] [PATCH v9 " Jianfeng Tan
2016-03-18 9:17 ` Tan, Jianfeng
2016-03-15 1:42 ` [dpdk-dev] [PATCH v8 " Tan, Jianfeng
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 02/11] cxgbe: add dev_supported_ptypes_get implementation Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 03/11] e1000: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 04/11] enic: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 05/11] fm10k: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 06/11] i40e: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 07/11] ixgbe: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 08/11] mlx4: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 09/11] mlx5: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 10/11] nfp: " Jianfeng Tan
2016-03-14 7:42 ` [dpdk-dev] [PATCH v8 11/11] vmxnet3: " Jianfeng Tan
2016-03-18 16:21 ` [dpdk-dev] [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=56D5A476.6070500@intel.com \
--to=jianfeng.tan@intel.com \
--cc=dev@dpdk.org \
--cc=konstantin.ananyev@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).