[dpdk-dev] [PATCH 2/4] ethdev: expose extended error stats

Thomas Monjalon thomas.monjalon at 6wind.com
Wed Jun 17 15:58:13 CEST 2015


2015-06-05 18:35, Maryam Tahhan:
> Extend rte_eth_xstats_get to retrieve additional stats from the device
> driver as well the top level extended stats. Add additional drop
> counters to the extended stats.
> 
> Signed-off-by: Maryam Tahhan <maryam.tahhan at intel.com>
[..]
Patch 1/4 doesn't compile without patch 2/4.

> --- a/lib/librte_ether/rte_ethdev.c
> +++ b/lib/librte_ether/rte_ethdev.c
> @@ -129,6 +129,8 @@ static const struct rte_eth_xstats_name_off rte_stats_strings[] = {
>  	{"rx_crc_errors", offsetof(struct rte_eth_stats, ibadcrc)},
>  	{"rx_bad_length_errors", offsetof(struct rte_eth_stats, ibadlen)},
>  	{"rx_errors", offsetof(struct rte_eth_stats, ierrors)},
> +	{"rx_mac_err", offsetof(struct rte_eth_stats, imacerr)},
> +	{"rx_phy_err", offsetof(struct rte_eth_stats, iphyerr)},
>  	{"alloc_rx_buff_failed", offsetof(struct rte_eth_stats, rx_nombuf)},
>  	{"fdir_match", offsetof(struct rte_eth_stats, fdirmatch)},
>  	{"fdir_miss", offsetof(struct rte_eth_stats, fdirmiss)},
> @@ -136,6 +138,8 @@ static const struct rte_eth_xstats_name_off rte_stats_strings[] = {
>  	{"rx_flow_control_xon", offsetof(struct rte_eth_stats, rx_pause_xon)},
>  	{"tx_flow_control_xoff", offsetof(struct rte_eth_stats, tx_pause_xoff)},
>  	{"rx_flow_control_xoff", offsetof(struct rte_eth_stats, rx_pause_xoff)},
> +	{"tx_drops", offsetof(struct rte_eth_stats, odrop)},
> +	{"rx_drops", offsetof(struct rte_eth_stats, idrop)},
>  };
[...]
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -224,6 +224,10 @@ struct rte_eth_stats {
> 
>         /**< Total number of good bytes received from loopback,VF Only */
>         uint64_t olbbytes;
>         /**< Total number of good bytes transmitted to loopback,VF Only */
> 
> +       uint64_t imacerr;   /**< Total of RX packets with MAC Errors. */
> +       uint64_t iphyerr;   /**< Total of RX packets with PHY Errors. */
> +       uint64_t idrop;  /**< Total number of dropped received packets. */
> +       uint64_t odrop;  /**< Total number of dropped transmitted packets. */
>  };

You are extending the generic stats. This is not the idea behind xstats.
The xstats are specific to the driver.
Furthermore we should migrate some "not really generic stats" to xstats
in order to keep only the really basic and common stats in rte_eth_stats.
By the way, in order to avoid duplicated code when getting generic stats
through xstats API, we need to change the implementation of
rte_eth_xstats_get() to add generic stats automatically, even if the
driver provide some xstats.


More information about the dev mailing list