[ovs-dev] [PATCH] netdev-dummy: Count rx packets regardless of source
Lori Jakab
lojakab at cisco.com
Wed Oct 16 11:32:55 UTC 2013
On 10/16/13 1:17 PM, Simon Horman wrote:
> 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
I confirm that the above OFtests are passed on my (similar) setup as
well with the below patch.
> pktact.WildcardPriorityWithDelete
> pktact.WildcardPriority
These tests didn't fail on my setup, but the following two which did,
are now "ok":
counters.RxBytPerPort
counters.RxPktPerPort
>
> Signed-off-by: Simon Horman <horms at verge.net.au>
> ---
> lib/netdev-dummy.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
> index e40c099..061ad0c 100644
> --- a/lib/netdev-dummy.c
> +++ b/lib/netdev-dummy.c
> @@ -468,8 +468,15 @@ netdev_dummy_rx_recv(struct netdev_rx *rx_, void *buffer, size_t size)
> }
>
> if (packet->size <= size) {
> + struct netdev_dummy *dummy_dev = netdev_dummy_cast(netdev);
> +
> memcpy(buffer, packet->data, packet->size);
> retval = packet->size;
> + ovs_mutex_lock(&dummy_dev->mutex);
> + dummy_dev->stats.rx_packets++;
> + dummy_dev->stats.rx_bytes += packet->size;
> + ovs_mutex_unlock(&dummy_dev->mutex);
> +
> } else {
> retval = -EMSGSIZE;
> }
> @@ -870,8 +877,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);
> }
More information about the dev
mailing list