On Wed, Sep 28, 2016 at 09:26:47PM +0800, Zhiyong Yang wrote: > The patch moves all stats counters to a new defined struct vhost_stats > as follows, in order to manage all stats counters in a unified way and > simplify the subsequent function implementation(vhost_dev_xstats_reset). > > Signed-off-by: Zhiyong Yang <zhiyong.yang at intel.com> > --- > > Changes in v4: > A queue can be only used as TX or RX, So, we can use pkts instead of > rx_pkts and tx_pkts, the same to rx_bytes and tx_bytes. > before modification: > struct vhost_stats { > uint64_t rx_pkts; > uint64_t tx_pkts; > uint64_t missed_pkts; > uint64_t rx_bytes; > uint64_t tx_bytes; > }; > New struct vhost_stats definition as follows: > struct vhost_stats { > uint64_t pkts; > uint64_t bytes; > uint64_t missed_pkts; > }; > > drivers/net/vhost/rte_eth_vhost.c | 36 +++++++++++++++++++++--------------- > 1 file changed, 21 insertions(+), 15 deletions(-) > > diff --git a/drivers/net/vhost/rte_eth_vhost.c > b/drivers/net/vhost/rte_eth_vhost.c > index 7539cd4..d99d4ee 100644 > --- a/drivers/net/vhost/rte_eth_vhost.c > +++ b/drivers/net/vhost/rte_eth_vhost.c > @@ -72,6 +72,12 @@ static struct ether_addr base_eth_addr = { > } > }; > > +struct vhost_stats { > + uint64_t pkts; > + uint64_t bytes; > + uint64_t missed_pkts; > +}; > + > struct vhost_queue { > int vid; > rte_atomic32_t allow_queuing; > @@ -145,11 +151,11 @@ eth_vhost_rx(void *q, struct rte_mbuf **bufs, uint16_t > nb_bufs) > nb_rx = rte_vhost_dequeue_burst(r->vid, > r->virtqueue_id, r->mb_pool, bufs, nb_bufs); > > - r->rx_pkts += nb_rx; > + r->stats.pkts += nb_rx;
My robot caught a build error: /yeti/vm/ubuntu-initrd-16.04-x86_64-build/dpdk/drivers/net/vhost/rte_eth_vhost.c:154:5: error: no member named 'stats' in 'struct vhost_queue' r->stats.pkts += nb_rx; ~ ^ --yliu