X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdpdk%2Fdevice%2Fformat.c;h=0db58d8ec2f60b918e67108f0c9213a65c1d3b6c;hb=2347278d9530690e0cec815652f5749def673404;hp=acc26abbaa4b0c406e38d54367bec2cacfc9b529;hpb=e70577cec18148cfc15263cbaea9f501796f5682;p=vpp.git diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index acc26abbaa4..0db58d8ec2f 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -195,9 +195,6 @@ format_dpdk_device_name (u8 * s, va_list * args) device_name = "HundredGigabitEthernet"; break; - case VNET_DPDK_PORT_TYPE_ETH_BOND: - return format (s, "BondEthernet%d", xd->bond_instance_num); - case VNET_DPDK_PORT_TYPE_ETH_SWITCH: device_name = "EthernetSwitch"; break; @@ -329,10 +326,6 @@ format_dpdk_device_type (u8 * s, va_list * args) dev_type = "af_packet"; break; - case VNET_DPDK_PMD_BOND: - dev_type = "Ethernet Bonding"; - break; - case VNET_DPDK_PMD_DPAA2: dev_type = "NXP DPAA2 Mac"; break; @@ -369,6 +362,10 @@ format_dpdk_device_type (u8 * s, va_list * args) dev_type = "Microsoft Hyper-V Netvsc"; break; + case VNET_DPDK_PMD_BNXT: + dev_type = "Broadcom NetXtreme E/S-Series"; + break; + default: case VNET_DPDK_PMD_UNKNOWN: dev_type = "### UNKNOWN ###"; @@ -547,6 +544,20 @@ ptr2sname (void *p) return info.dli_sname; } +static u8 * +format_switch_info (u8 * s, va_list * args) +{ + struct rte_eth_switch_info *si = + va_arg (*args, struct rte_eth_switch_info *); + + if (si->name) + s = format (s, "name %s ", si->name); + + s = format (s, "domain id %d port id %d", si->domain_id, si->port_id); + + return s; +} + u8 * format_dpdk_device (u8 * s, va_list * args) { @@ -567,6 +578,9 @@ format_dpdk_device (u8 * s, va_list * args) format_white_space, indent + 2, format_dpdk_link_status, xd); s = format (s, "%Uflags: %U\n", format_white_space, indent + 2, format_dpdk_device_flags, xd); + if (di.device->devargs && di.device->devargs->args) + s = format (s, "%UDevargs: %s\n", + format_white_space, indent + 2, di.device->devargs->args); s = format (s, "%Urx: queues %d (max %d), desc %d " "(min %d max %d align %d)\n", format_white_space, indent + 2, xd->rx_q_used, di.max_rx_queues, @@ -609,8 +623,18 @@ format_dpdk_device (u8 * s, va_list * args) vec_free (s2); } - s = format (s, "%Umodule: %U\n", format_white_space, indent + 2, - format_dpdk_device_module_info, xd); + if (di.switch_info.domain_id != RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID) + { + s = + format (s, "%Uswitch info: %U\n", format_white_space, indent + 2, + format_switch_info, &di.switch_info); + } + + if (1 < verbose) + { + s = format (s, "%Umodule: %U\n", format_white_space, indent + 2, + format_dpdk_device_module_info, xd); + } s = format (s, "%Umax rx packet len: %d\n", format_white_space, indent + 2, di.max_rx_pktlen); @@ -653,11 +677,11 @@ format_dpdk_device (u8 * s, va_list * args) /* $$$ MIB counters */ { #define _(N, V) \ - if ((xd->stats.V - xd->last_cleared_stats.V) != 0) { \ + if (xd->stats.V != 0) { \ s = format (s, "\n%U%-40U%16Lu", \ format_white_space, indent + 2, \ format_c_identifier, #N, \ - xd->stats.V - xd->last_cleared_stats.V); \ + xd->stats.V); \ } \ foreach_dpdk_counter @@ -666,35 +690,32 @@ format_dpdk_device (u8 * s, va_list * args) u8 *xs = 0; u32 i = 0; - struct rte_eth_xstat *xstat, *last_xstat; + struct rte_eth_xstat *xstat; struct rte_eth_xstat_name *xstat_names = 0; - int len = rte_eth_xstats_get_names (xd->port_id, NULL, 0); + int len = vec_len (xd->xstats); vec_validate (xstat_names, len - 1); - rte_eth_xstats_get_names (xd->port_id, xstat_names, len); + int ret = rte_eth_xstats_get_names (xd->port_id, xstat_names, len); - ASSERT (vec_len (xd->xstats) == vec_len (xd->last_cleared_xstats)); - - /* *INDENT-OFF* */ - vec_foreach_index(i, xd->xstats) + if (ret >= 0 && ret <= len) { - u64 delta = 0; - xstat = vec_elt_at_index(xd->xstats, i); - last_xstat = vec_elt_at_index(xd->last_cleared_xstats, i); - - delta = xstat->value - last_xstat->value; - if (verbose == 2 || (verbose && delta)) + /* *INDENT-OFF* */ + vec_foreach_index(i, xd->xstats) { - /* 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", - format_white_space, indent + 4, - format_c_identifier, name, delta); - vec_free(name); + 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", + format_white_space, indent + 4, + format_c_identifier, name, xstat->value); + vec_free(name); + } } - } - /* *INDENT-ON* */ + /* *INDENT-ON* */ - vec_free (xstat_names); + vec_free (xstat_names); + } if (xs) { @@ -913,25 +934,6 @@ unformat_rss_fn (unformat_input_t * input, uword * rss_fn) return 0; } -clib_error_t * -unformat_hqos (unformat_input_t * input, dpdk_device_config_hqos_t * hqos) -{ - clib_error_t *error = 0; - - while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) - { - if (unformat (input, "hqos-thread %u", &hqos->hqos_thread)) - hqos->hqos_thread_valid = 1; - else - { - error = clib_error_return (0, "unknown input `%U'", - format_unformat_error, input); - break; - } - } - - return error; -} /* * fd.io coding-style-patch-verification: ON