Hello, Harry. Understood about size of packets. It's a bit confusing, because in all other drivers undersized packet is an error. Maybe we should add another one size bin for virtio - 60 to 63 bytes?
I already checked about multicast/broadcast counters - broadcast packets are counted twice: vq->multicast += is_multicast_ether_addr(ea); vq->broadcast += is_broadcast_ether_addr(ea); I think it should be something like: if (is_multicast_ether_addr(ea)) { if (is_broadcast_ether_addr(ea)) { vq->broadcast++; } else { vq->multicast++; } } Best regards, Igor > 26 ????. 2016 ?., ? 17:29, Van Haaren, Harry <harry.van.haaren at intel.com> > ???????(?): > >> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Igor Ryzhov >> I found some problem with virtio xstats counters. >> >> Example: >> >> rx_good_packets: 3 >> rx_good_bytes: 180 >> rx_errors: 0 >> >> rx_q0_good_packets: 3 >> rx_q0_good_bytes: 180 >> rx_q0_errors: 0 >> >> rx_q0_multicast_packets: 3 >> rx_q0_broadcast_packets: 1 >> rx_q0_undersize_packets: 3 > >> It means that undersize packets are counted as good packets instead of >> errors. > > Are you sending 64 byte packets? There are no 4 bytes of CRC on virtual > interfaces, so 60 bytes per packet is OK. > >> Or maybe >> size of packet is calculated wrong. >> I don't have time now to check it more deeply - I can do it sometime later, >> but maybe >> someone want to help. > > Are the packets multicast or broadcast? > It looks like one of the counters there is wrong. > >> PS. Is it a common practice to count broadcast packets twice - in broadcast >> and multicast >> counters? > > No packet should be counted twice - it must be put into one bucket of mutli, > broad or unicast. > > -Harry