diff options
author | Michael Brown | 2010-11-20 06:03:06 +0100 |
---|---|---|
committer | Michael Brown | 2010-11-20 17:51:05 +0100 |
commit | 3633bb246cf0ba420322a507989ec6031375075e (patch) | |
tree | 587dc7b86aaa45022e118437f785b06adec93671 /src/usr/lotest.c | |
parent | [pxe] Use network device receive queue freezing (diff) | |
download | ipxe-3633bb246cf0ba420322a507989ec6031375075e.tar.gz ipxe-3633bb246cf0ba420322a507989ec6031375075e.tar.xz ipxe-3633bb246cf0ba420322a507989ec6031375075e.zip |
[lotest] Use network device receive queue freezing
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/usr/lotest.c')
-rw-r--r-- | src/usr/lotest.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/usr/lotest.c b/src/usr/lotest.c index 407f6844..6c87923c 100644 --- a/src/usr/lotest.c +++ b/src/usr/lotest.c @@ -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 ); |