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 <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
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;
}
}
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);
}