mirror of https://github.com/ipxe/ipxe.git
[lotest] Use network device receive queue freezing
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1/head
parent
69d1e6cf57
commit
3633bb246c
|
@ -119,6 +119,11 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
|
||||||
ifstat ( sender );
|
ifstat ( sender );
|
||||||
ifstat ( receiver );
|
ifstat ( receiver );
|
||||||
|
|
||||||
|
/* Freeze receive queue processing on the receiver, so that we
|
||||||
|
* can extract all received packets.
|
||||||
|
*/
|
||||||
|
netdev_rx_freeze ( receiver );
|
||||||
|
|
||||||
/* Perform loopback test */
|
/* Perform loopback test */
|
||||||
for ( successes = 0 ; ; successes++ ) {
|
for ( successes = 0 ; ; successes++ ) {
|
||||||
|
|
||||||
|
@ -155,8 +160,7 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
/* Poll network devices */
|
/* Poll network devices */
|
||||||
netdev_poll ( sender );
|
net_poll();
|
||||||
netdev_poll ( receiver );
|
|
||||||
} while ( ( iobuf = netdev_rx_dequeue ( receiver ) ) == NULL );
|
} while ( ( iobuf = netdev_rx_dequeue ( receiver ) ) == NULL );
|
||||||
|
|
||||||
/* Check received packet */
|
/* Check received packet */
|
||||||
|
@ -203,6 +207,7 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
|
||||||
done:
|
done:
|
||||||
printf ( "\n");
|
printf ( "\n");
|
||||||
free_iob ( iobuf );
|
free_iob ( iobuf );
|
||||||
|
netdev_rx_unfreeze ( receiver );
|
||||||
|
|
||||||
/* Dump final statistics */
|
/* Dump final statistics */
|
||||||
ifstat ( sender );
|
ifstat ( sender );
|
||||||
|
|
Loading…
Reference in New Issue