X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Frxonly.c;h=a93d80612721313c27f376ace6c06b4696b2f7ad;hb=fb8fd96d4251f615a0e7acdb3af8b4546f900b4d;hp=c69b34497e13cc4b25ec3bfd54e33637e73259ca;hpb=b37b528d957c3c37744c430838faa93fb458b206;p=dpdk.git diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c index c69b34497e..a93d806127 100644 --- a/app/test-pmd/rxonly.c +++ b/app/test-pmd/rxonly.c @@ -1,34 +1,5 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2014 Intel Corporation */ #include @@ -49,15 +20,12 @@ #include #include #include -#include #include #include #include #include #include #include -#include -#include #include #include #include @@ -67,6 +35,8 @@ #include #include #include +#include +#include #include "testpmd.h" @@ -92,14 +62,15 @@ pkt_burst_receive(struct fwd_stream *fs) uint16_t nb_rx; uint16_t i, packet_type; uint16_t is_encapsulation; + char buf[256]; + struct rte_net_hdr_lens hdr_lens; + uint32_t sw_packet_type; #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES uint64_t start_tsc; uint64_t end_tsc; uint64_t core_cycles; -#endif -#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES start_tsc = rte_rdtsc(); #endif @@ -121,7 +92,7 @@ pkt_burst_receive(struct fwd_stream *fs) */ if (verbose_level > 0) printf("port %u/queue %u: received %u packets\n", - (unsigned) fs->rx_port, + fs->rx_port, (unsigned) fs->rx_queue, (unsigned) nb_rx); for (i = 0; i < nb_rx; i++) { @@ -144,7 +115,8 @@ pkt_burst_receive(struct fwd_stream *fs) if (ol_flags & PKT_RX_RSS_HASH) { printf(" - RSS hash=0x%x", (unsigned) mb->hash.rss); printf(" - RSS queue=0x%x",(unsigned) fs->rx_queue); - } else if (ol_flags & PKT_RX_FDIR) { + } + if (ol_flags & PKT_RX_FDIR) { printf(" - FDIR matched "); if (ol_flags & PKT_RX_FDIR_ID) printf("ID=0x%x", @@ -156,180 +128,35 @@ pkt_burst_receive(struct fwd_stream *fs) printf("hash=0x%x ID=0x%x ", mb->hash.fdir.hash, mb->hash.fdir.id); } + if (ol_flags & PKT_RX_TIMESTAMP) + printf(" - timestamp %"PRIu64" ", mb->timestamp); if (ol_flags & PKT_RX_VLAN_STRIPPED) printf(" - VLAN tci=0x%x", mb->vlan_tci); if (ol_flags & PKT_RX_QINQ_STRIPPED) printf(" - QinQ VLAN tci=0x%x, VLAN tci outer=0x%x", mb->vlan_tci, mb->vlan_tci_outer); if (mb->packet_type) { - uint32_t ptype; - - /* (outer) L2 packet type */ - ptype = mb->packet_type & RTE_PTYPE_L2_MASK; - switch (ptype) { - case RTE_PTYPE_L2_ETHER: - printf(" - (outer) L2 type: ETHER"); - break; - case RTE_PTYPE_L2_ETHER_TIMESYNC: - printf(" - (outer) L2 type: ETHER_Timesync"); - break; - case RTE_PTYPE_L2_ETHER_ARP: - printf(" - (outer) L2 type: ETHER_ARP"); - break; - case RTE_PTYPE_L2_ETHER_LLDP: - printf(" - (outer) L2 type: ETHER_LLDP"); - break; - default: - printf(" - (outer) L2 type: Unknown"); - break; - } - - /* (outer) L3 packet type */ - ptype = mb->packet_type & RTE_PTYPE_L3_MASK; - switch (ptype) { - case RTE_PTYPE_L3_IPV4: - printf(" - (outer) L3 type: IPV4"); - break; - case RTE_PTYPE_L3_IPV4_EXT: - printf(" - (outer) L3 type: IPV4_EXT"); - break; - case RTE_PTYPE_L3_IPV6: - printf(" - (outer) L3 type: IPV6"); - break; - case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN: - printf(" - (outer) L3 type: IPV4_EXT_UNKNOWN"); - break; - case RTE_PTYPE_L3_IPV6_EXT: - printf(" - (outer) L3 type: IPV6_EXT"); - break; - case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN: - printf(" - (outer) L3 type: IPV6_EXT_UNKNOWN"); - break; - default: - printf(" - (outer) L3 type: Unknown"); - break; - } - - /* (outer) L4 packet type */ - ptype = mb->packet_type & RTE_PTYPE_L4_MASK; - switch (ptype) { - case RTE_PTYPE_L4_TCP: - printf(" - (outer) L4 type: TCP"); - break; - case RTE_PTYPE_L4_UDP: - printf(" - (outer) L4 type: UDP"); - break; - case RTE_PTYPE_L4_FRAG: - printf(" - (outer) L4 type: L4_FRAG"); - break; - case RTE_PTYPE_L4_SCTP: - printf(" - (outer) L4 type: SCTP"); - break; - case RTE_PTYPE_L4_ICMP: - printf(" - (outer) L4 type: ICMP"); - break; - case RTE_PTYPE_L4_NONFRAG: - printf(" - (outer) L4 type: L4_NONFRAG"); - break; - default: - printf(" - (outer) L4 type: Unknown"); - break; - } - - /* packet tunnel type */ - ptype = mb->packet_type & RTE_PTYPE_TUNNEL_MASK; - switch (ptype) { - case RTE_PTYPE_TUNNEL_IP: - printf(" - Tunnel type: IP"); - break; - case RTE_PTYPE_TUNNEL_GRE: - printf(" - Tunnel type: GRE"); - break; - case RTE_PTYPE_TUNNEL_VXLAN: - printf(" - Tunnel type: VXLAN"); - break; - case RTE_PTYPE_TUNNEL_NVGRE: - printf(" - Tunnel type: NVGRE"); - break; - case RTE_PTYPE_TUNNEL_GENEVE: - printf(" - Tunnel type: GENEVE"); - break; - case RTE_PTYPE_TUNNEL_GRENAT: - printf(" - Tunnel type: GRENAT"); - break; - default: - printf(" - Tunnel type: Unknown"); - break; - } - - /* inner L2 packet type */ - ptype = mb->packet_type & RTE_PTYPE_INNER_L2_MASK; - switch (ptype) { - case RTE_PTYPE_INNER_L2_ETHER: - printf(" - Inner L2 type: ETHER"); - break; - case RTE_PTYPE_INNER_L2_ETHER_VLAN: - printf(" - Inner L2 type: ETHER_VLAN"); - break; - default: - printf(" - Inner L2 type: Unknown"); - break; - } - - /* inner L3 packet type */ - ptype = mb->packet_type & RTE_PTYPE_INNER_L3_MASK; - switch (ptype) { - case RTE_PTYPE_INNER_L3_IPV4: - printf(" - Inner L3 type: IPV4"); - break; - case RTE_PTYPE_INNER_L3_IPV4_EXT: - printf(" - Inner L3 type: IPV4_EXT"); - break; - case RTE_PTYPE_INNER_L3_IPV6: - printf(" - Inner L3 type: IPV6"); - break; - case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN: - printf(" - Inner L3 type: IPV4_EXT_UNKNOWN"); - break; - case RTE_PTYPE_INNER_L3_IPV6_EXT: - printf(" - Inner L3 type: IPV6_EXT"); - break; - case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN: - printf(" - Inner L3 type: IPV6_EXT_UNKNOWN"); - break; - default: - printf(" - Inner L3 type: Unknown"); - break; - } - - /* inner L4 packet type */ - ptype = mb->packet_type & RTE_PTYPE_INNER_L4_MASK; - switch (ptype) { - case RTE_PTYPE_INNER_L4_TCP: - printf(" - Inner L4 type: TCP"); - break; - case RTE_PTYPE_INNER_L4_UDP: - printf(" - Inner L4 type: UDP"); - break; - case RTE_PTYPE_INNER_L4_FRAG: - printf(" - Inner L4 type: L4_FRAG"); - break; - case RTE_PTYPE_INNER_L4_SCTP: - printf(" - Inner L4 type: SCTP"); - break; - case RTE_PTYPE_INNER_L4_ICMP: - printf(" - Inner L4 type: ICMP"); - break; - case RTE_PTYPE_INNER_L4_NONFRAG: - printf(" - Inner L4 type: L4_NONFRAG"); - break; - default: - printf(" - Inner L4 type: Unknown"); - break; - } - printf("\n"); - } else - printf("Unknown packet type\n"); + rte_get_ptype_name(mb->packet_type, buf, sizeof(buf)); + printf(" - hw ptype: %s", buf); + } + sw_packet_type = rte_net_get_ptype(mb, &hdr_lens, + RTE_PTYPE_ALL_MASK); + rte_get_ptype_name(sw_packet_type, buf, sizeof(buf)); + printf(" - sw ptype: %s", buf); + if (sw_packet_type & RTE_PTYPE_L2_MASK) + printf(" - l2_len=%d", hdr_lens.l2_len); + if (sw_packet_type & RTE_PTYPE_L3_MASK) + printf(" - l3_len=%d", hdr_lens.l3_len); + if (sw_packet_type & RTE_PTYPE_L4_MASK) + printf(" - l4_len=%d", hdr_lens.l4_len); + if (sw_packet_type & RTE_PTYPE_TUNNEL_MASK) + printf(" - tunnel_len=%d", hdr_lens.tunnel_len); + if (sw_packet_type & RTE_PTYPE_INNER_L2_MASK) + printf(" - inner_l2_len=%d", hdr_lens.inner_l2_len); + if (sw_packet_type & RTE_PTYPE_INNER_L3_MASK) + printf(" - inner_l3_len=%d", hdr_lens.inner_l3_len); + if (sw_packet_type & RTE_PTYPE_INNER_L4_MASK) + printf(" - inner_l4_len=%d", hdr_lens.inner_l4_len); if (is_encapsulation) { struct ipv4_hdr *ipv4_hdr; struct ipv6_hdr *ipv6_hdr; @@ -373,19 +200,8 @@ pkt_burst_receive(struct fwd_stream *fs) } printf(" - Receive queue=0x%x", (unsigned) fs->rx_queue); printf("\n"); - if (ol_flags != 0) { - unsigned rxf; - const char *name; - - for (rxf = 0; rxf < sizeof(mb->ol_flags) * 8; rxf++) { - if ((ol_flags & (1ULL << rxf)) == 0) - continue; - name = rte_get_rx_ol_flag_name(1ULL << rxf); - if (name == NULL) - continue; - printf(" %s\n", name); - } - } + rte_get_rx_ol_flag_list(mb->ol_flags, buf, sizeof(buf)); + printf(" ol_flags: %s\n", buf); rte_pktmbuf_free(mb); }