X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Frxonly.c;h=57df0146843a2da5676a81d72c4a1945cd3fa48d;hb=7e9b4e58d5e086608a8eb539ecc3aee49e0c8ac4;hp=b1fc5bfcc33718123de005e06dca45485f48f89f;hpb=f03723017a2a5ea421df821eb0ff9a0bfcacff4f;p=dpdk.git diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c index b1fc5bfcc3..57df014684 100644 --- a/app/test-pmd/rxonly.c +++ b/app/test-pmd/rxonly.c @@ -56,7 +56,6 @@ #include #include #include -#include #include #include #include @@ -66,6 +65,8 @@ #include #include #include +#include +#include #include "testpmd.h" @@ -91,14 +92,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 @@ -120,7 +122,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++) { @@ -143,7 +145,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", @@ -161,177 +164,27 @@ pkt_burst_receive(struct fwd_stream *fs) 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; - case RTE_PTYPE_L2_ETHER_NSH: - printf(" - (outer) L2 type: ETHER_NSH"); - 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; @@ -375,19 +228,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); }