[ovs-dev] [PATCH] netdev-dummy: Count rx packets regardless of source

Ben Pfaff blp at nicira.com
Wed Oct 16 16:09:15 UTC 2013


On Wed, Oct 16, 2013 at 07:17:01PM +0900, 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
> 	pktact.WildcardPriorityWithDelete
> 	pktact.WildcardPriority
> 
> Signed-off-by: Simon Horman <horms at verge.net.au>

Hey, thanks a lot!

This yielded compile-time errors:

    ../lib/netdev-dummy.c:471:60: error: incompatible pointer types passing 'struct netdev_dummy *' to parameter of type 'const struct netdev *' [-Werror,-Wincompatible-pointer-types]
            struct netdev_dummy *dummy_dev = netdev_dummy_cast(netdev);
                                                               ^~~~~~
    ../lib/netdev-dummy.c:107:40: note: passing argument to parameter 'netdev' here
    netdev_dummy_cast(const struct netdev *netdev)
                                           ^
I fixed them:

diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index 061ad0c..fe54576 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -468,15 +468,13 @@ 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);
 
+        ovs_mutex_lock(&netdev->mutex);
+        netdev->stats.rx_packets++;
+        netdev->stats.rx_bytes += packet->size;
+        ovs_mutex_unlock(&netdev->mutex);
     } else {
         retval = -EMSGSIZE;
     }

and I applied it to master with that change.



More information about the dev mailing list