From: "Tan, Jianfeng" <jianfeng.tan@intel.com>
To: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [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 [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 ` [PATCH v3 12/12] examples/l3fwd: add option to parse ptype Jianfeng Tan
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 [this message]
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=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 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.