[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