X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdpdk%2Fdevice%2Fformat.c;h=c4b2ae776268d64e7ae5eee54e8a3bf381379f2d;hb=9303b1089;hp=3d6e80ff2fbfbcadff83f3403575d35936cae0a1;hpb=ce32770251e4494803f2ab01d7b07801618b7bf0;p=vpp.git diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index 3d6e80ff2fb..c4b2ae77626 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -44,42 +44,23 @@ _ (tx_bytes_ok, q_obytes) \ _ (rx_errors, q_errors) -#define foreach_dpdk_rss_hf \ - _(ETH_RSS_FRAG_IPV4, "ipv4-frag") \ - _(ETH_RSS_NONFRAG_IPV4_TCP, "ipv4-tcp") \ - _(ETH_RSS_NONFRAG_IPV4_UDP, "ipv4-udp") \ - _(ETH_RSS_NONFRAG_IPV4_SCTP, "ipv4-sctp") \ - _(ETH_RSS_NONFRAG_IPV4_OTHER, "ipv4-other") \ - _(ETH_RSS_IPV4, "ipv4") \ - _(ETH_RSS_IPV6_TCP_EX, "ipv6-tcp-ex") \ - _(ETH_RSS_IPV6_UDP_EX, "ipv6-udp-ex") \ - _(ETH_RSS_FRAG_IPV6, "ipv6-frag") \ - _(ETH_RSS_NONFRAG_IPV6_TCP, "ipv6-tcp") \ - _(ETH_RSS_NONFRAG_IPV6_UDP, "ipv6-udp") \ - _(ETH_RSS_NONFRAG_IPV6_SCTP, "ipv6-sctp") \ - _(ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other") \ - _(ETH_RSS_IPV6_EX, "ipv6-ex") \ - _(ETH_RSS_IPV6, "ipv6") \ - _(ETH_RSS_L2_PAYLOAD, "l2-payload") \ - _(ETH_RSS_PORT, "port") \ - _(ETH_RSS_VXLAN, "vxlan") \ - _(ETH_RSS_GENEVE, "geneve") \ - _(ETH_RSS_NVGRE, "nvgre") - -#define foreach_dpdk_pkt_rx_offload_flag \ - _ (PKT_RX_VLAN, "RX packet is a 802.1q VLAN packet") \ - _ (PKT_RX_RSS_HASH, "RX packet with RSS hash result") \ - _ (PKT_RX_FDIR, "RX packet with FDIR infos") \ - _ (PKT_RX_L4_CKSUM_BAD, "L4 cksum of RX pkt. is not OK") \ - _ (PKT_RX_IP_CKSUM_BAD, "IP cksum of RX pkt. is not OK") \ - _ (PKT_RX_EIP_CKSUM_BAD, "External IP header checksum error") \ - _ (PKT_RX_VLAN_STRIPPED, "RX packet VLAN tag stripped") \ - _ (PKT_RX_IP_CKSUM_GOOD, "IP cksum of RX pkt. is valid") \ - _ (PKT_RX_L4_CKSUM_GOOD, "L4 cksum of RX pkt. is valid") \ - _ (PKT_RX_IEEE1588_PTP, "RX IEEE1588 L2 Ethernet PT Packet") \ - _ (PKT_RX_IEEE1588_TMST, "RX IEEE1588 L2/L4 timestamped packet") \ - _ (PKT_RX_QINQ_STRIPPED, "RX packet QinQ tags stripped") \ - _ (PKT_RX_TIMESTAMP, "Timestamp field is valid") +#if RTE_VERSION < RTE_VERSION_NUM(21, 5, 0, 0) +#define PKT_RX_OUTER_IP_CKSUM_BAD PKT_RX_EIP_CKSUM_BAD +#endif + +#define foreach_dpdk_pkt_rx_offload_flag \ + _ (PKT_RX_VLAN, "RX packet is a 802.1q VLAN packet") \ + _ (PKT_RX_RSS_HASH, "RX packet with RSS hash result") \ + _ (PKT_RX_FDIR, "RX packet with FDIR infos") \ + _ (PKT_RX_L4_CKSUM_BAD, "L4 cksum of RX pkt. is not OK") \ + _ (PKT_RX_IP_CKSUM_BAD, "IP cksum of RX pkt. is not OK") \ + _ (PKT_RX_OUTER_IP_CKSUM_BAD, "External IP header checksum error") \ + _ (PKT_RX_VLAN_STRIPPED, "RX packet VLAN tag stripped") \ + _ (PKT_RX_IP_CKSUM_GOOD, "IP cksum of RX pkt. is valid") \ + _ (PKT_RX_L4_CKSUM_GOOD, "L4 cksum of RX pkt. is valid") \ + _ (PKT_RX_IEEE1588_PTP, "RX IEEE1588 L2 Ethernet PT Packet") \ + _ (PKT_RX_IEEE1588_TMST, "RX IEEE1588 L2/L4 timestamped packet") \ + _ (PKT_RX_QINQ_STRIPPED, "RX packet QinQ tags stripped") #define foreach_dpdk_pkt_type \ _ (L2, ETHER, "Ethernet packet") \ @@ -132,6 +113,9 @@ foreach_dpdk_pkt_rx_offload_flag \ foreach_dpdk_pkt_tx_offload_flag +#define foreach_dpdk_pkt_dyn_rx_offload_flag \ + _ (RX_TIMESTAMP, 0, "Timestamp field is valid") + u8 * format_dpdk_device_name (u8 * s, va_list * args) { @@ -402,7 +386,7 @@ format_dpdk_link_status (u8 * s, va_list * args) return s; } -#define _(v, str) \ +#define _(n, v, str) \ if (bitmap & v) { \ if (format_get_indent (s) > 72) \ s = format(s,"\n%U", format_white_space, indent); \ @@ -732,12 +716,10 @@ format_dpdk_device (u8 * s, va_list * args) xstat = vec_elt_at_index(xd->xstats, i); if (verbose == 2 || (verbose && xstat->value)) { - /* format_c_identifier doesn't like c strings inside vector */ - u8 * name = format(0,"%s", xstat_names[i].name); - xs = format(xs, "\n%U%-38U%16Lu", + xs = format(xs, "\n%U%-38s%16Lu", format_white_space, indent + 4, - format_c_identifier, name, xstat->value); - vec_free(name); + xstat_names[i].name, + xstat->value); } } /* *INDENT-ON* */ @@ -862,6 +844,8 @@ format_dpdk_pkt_offload_flags (u8 * s, va_list * va) { u64 *ol_flags = va_arg (*va, u64 *); u32 indent = format_get_indent (s) + 2; + u64 rx_dynflag; + int rx_dynflag_offset; if (!*ol_flags) return s; @@ -876,6 +860,22 @@ format_dpdk_pkt_offload_flags (u8 * s, va_list * va) } foreach_dpdk_pkt_offload_flag +#undef _ +#define _(F, P, S) \ + { \ + rx_dynflag_offset = rte_mbuf_dynflag_lookup(RTE_MBUF_DYNFLAG_##F##_NAME, \ + P); \ + if (rx_dynflag_offset >= 0) \ + { \ + rx_dynflag = (u64) 1 << rx_dynflag_offset; \ + if (*ol_flags & rx_dynflag) \ + { \ + s = format (s, "\n%U%s %s", format_white_space, indent, \ + #F, S); \ + } \ + } \ + } + foreach_dpdk_pkt_dyn_rx_offload_flag #undef _ return s; } @@ -915,7 +915,7 @@ format_dpdk_rte_mbuf (u8 * s, va_list * va) mb->port, mb->nb_segs, mb->pkt_len, format_white_space, indent, mb->buf_len, mb->data_len, mb->ol_flags, mb->data_off, - mb->buf_physaddr, format_white_space, indent, mb->packet_type, + mb->buf_iova, format_white_space, indent, mb->packet_type, mb->l2_len, mb->l3_len, mb->outer_l2_len, mb->outer_l3_len, format_white_space, indent, mb->hash.rss, mb->hash.fdir.hi, mb->hash.fdir.lo); @@ -947,7 +947,7 @@ unformat_rss_fn (unformat_input_t * input, uword * rss_fn) if (0) ; #undef _ -#define _(f, s) \ +#define _(n, f, s) \ else if (unformat (input, s)) \ *rss_fn |= f;