@ -27,6 +27,7 @@
# include "qemu/osdep.h"
# include "libqtest-single.h"
# include "libqos/pci-pc.h"
# include "net/eth.h"
# include "qemu/sockets.h"
# include "qemu/iov.h"
# include "qemu/module.h"
@ -35,9 +36,13 @@
# include "libqos/e1000e.h"
# include "hw/net/e1000_regs.h"
static const struct eth_header packet = {
. h_dest = E1000E_ADDRESS ,
. h_source = E1000E_ADDRESS ,
} ;
static void e1000e_send_verify ( QE1000E * d , int * test_sockets , QGuestAllocator * alloc )
{
static const char test [ ] = " TEST " ;
struct e1000_tx_desc descr ;
char buffer [ 64 ] ;
int ret ;
@ -45,7 +50,7 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
/* Prepare test data buffer */
uint64_t data = guest_alloc ( alloc , sizeof ( buffer ) ) ;
memwrite ( data , tes t, sizeof ( tes t) ) ;
memwrite ( data , & packe t, sizeof ( packe t) ) ;
/* Prepare TX descriptor */
memset ( & descr , 0 , sizeof ( descr ) ) ;
@ -71,7 +76,7 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
g_assert_cmpint ( ret , = = , sizeof ( recv_len ) ) ;
ret = recv ( test_sockets [ 0 ] , buffer , sizeof ( buffer ) , 0 ) ;
g_assert_cmpint ( ret , = = , sizeof ( buffer ) ) ;
g_assert_cmpstr ( buffer , = = , test ) ;
g_assert_false ( memcmp ( buffer , & packet , sizeof ( packet ) ) ) ;
/* Free test data buffer */
guest_free ( alloc , data ) ;
@ -81,15 +86,15 @@ static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator
{
union e1000_rx_desc_extended descr ;
char test [ ] = " TEST " ;
int len = htonl ( sizeof ( tes t) ) ;
struct eth_header test_iov = packet ;
int len = htonl ( sizeof ( packe t) ) ;
struct iovec iov [ ] = {
{
. iov_base = & len ,
. iov_len = sizeof ( len ) ,
} , {
. iov_base = test ,
. iov_len = sizeof ( tes t) ,
. iov_base = & test_iov ,
. iov_len = sizeof ( packe t) ,
} ,
} ;
@ -97,8 +102,8 @@ static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator
int ret ;
/* Send a dummy packet to device's socket*/
ret = iov_send ( test_sockets [ 0 ] , iov , 2 , 0 , sizeof ( len ) + sizeof ( tes t) ) ;
g_assert_cmpint ( ret , = = , sizeof ( tes t) + sizeof ( len ) ) ;
ret = iov_send ( test_sockets [ 0 ] , iov , 2 , 0 , sizeof ( len ) + sizeof ( packe t) ) ;
g_assert_cmpint ( ret , = = , sizeof ( packe t) + sizeof ( len ) ) ;
/* Prepare test data buffer */
uint64_t data = guest_alloc ( alloc , sizeof ( buffer ) ) ;
@ -119,7 +124,7 @@ static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator
/* Check data sent to the backend */
memread ( data , buffer , sizeof ( buffer ) ) ;
g_assert_cmpstr ( buffer , = = , test ) ;
g_assert_false ( memcmp ( buffer , & packet , sizeof ( packet ) ) ) ;
/* Free test data buffer */
guest_free ( alloc , data ) ;