From: Simon Horman Date: Wed, 16 Oct 2013 10:17:01 +0000 (+0900) Subject: netdev-dummy: Count rx packets regardless of source X-Git-Tag: sliver-openvswitch-2.0.90-1~7^2~67 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=b5799021ba92444cdb8ba0a85168a0175a72ee84;hp=48a5f330e33b1d115e15587472b32e476a0b9563;p=sliver-openvswitch.git netdev-dummy: Count rx packets regardless of source This alters the way rx packets are accounted for by counting them when they are processed by netdev_dummy_rx_recv(), which seems to be a common path used by all received packets. Previously accounting was done earlier, in netdev_dummy_receive(), however this does not appear to count packets that are received via a socket. This resolves packet counting errors reported by the following OFtest tests: port_stats.MultiFlowStats port_stats.SingleFlowStats pktact.WildcardPriorityWithDelete pktact.WildcardPriority Signed-off-by: Simon Horman Signed-off-by: Ben Pfaff --- diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index e40c0995c..fe54576f4 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -470,6 +470,11 @@ netdev_dummy_rx_recv(struct netdev_rx *rx_, void *buffer, size_t size) if (packet->size <= size) { memcpy(buffer, packet->data, packet->size); retval = packet->size; + + ovs_mutex_lock(&netdev->mutex); + netdev->stats.rx_packets++; + netdev->stats.rx_bytes += packet->size; + ovs_mutex_unlock(&netdev->mutex); } else { retval = -EMSGSIZE; } @@ -870,8 +875,6 @@ netdev_dummy_receive(struct unixctl_conn *conn, } ovs_mutex_lock(&dummy_dev->mutex); - dummy_dev->stats.rx_packets++; - dummy_dev->stats.rx_bytes += packet->size; netdev_dummy_queue_packet(dummy_dev, packet); ovs_mutex_unlock(&dummy_dev->mutex); }