]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[lotest] Use network device receive queue freezing
authorMichael Brown <mcb30@ipxe.org>
Sat, 20 Nov 2010 05:03:06 +0000 (05:03 +0000)
committerMichael Brown <mcb30@ipxe.org>
Sat, 20 Nov 2010 16:51:05 +0000 (16:51 +0000)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/usr/lotest.c

index 407f68443d225350f25213c98280f67611e90b08..6c87923c03a5dd809f58915126bb59d53562bd69 100644 (file)
@@ -119,6 +119,11 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
        ifstat ( sender );
        ifstat ( receiver );
 
+       /* Freeze receive queue processing on the receiver, so that we
+        * can extract all received packets.
+        */
+       netdev_rx_freeze ( receiver );
+
        /* Perform loopback test */
        for ( successes = 0 ; ; successes++ ) {
 
@@ -155,8 +160,7 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
                                goto done;
                        }
                        /* Poll network devices */
-                       netdev_poll ( sender );
-                       netdev_poll ( receiver );
+                       net_poll();
                } while ( ( iobuf = netdev_rx_dequeue ( receiver ) ) == NULL );
 
                /* Check received packet */
@@ -203,6 +207,7 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
  done:
        printf ( "\n");
        free_iob ( iobuf );
+       netdev_rx_unfreeze ( receiver );
 
        /* Dump final statistics */
        ifstat ( sender );