• Rusty Russell's avatar
    virtio_net: pass well-formed sgs to virtqueue_add_*() · a5835440
    Rusty Russell authored
    This is the only driver which doesn't hand virtqueue_add_inbuf and
    virtqueue_add_outbuf a well-formed, well-terminated sg.  Fix it,
    so we can make virtio_add_* simpler.
    
    pktgen results:
    	modprobe pktgen
    	echo 'add_device eth0' > /proc/net/pktgen/kpktgend_0
    	echo nowait 1 > /proc/net/pktgen/eth0
    	echo count 1000000 > /proc/net/pktgen/eth0
    	echo clone_skb 100000 > /proc/net/pktgen/eth0
    	echo dst_mac 4e:14:25:a9:30:ac > /proc/net/pktgen/eth0
    	echo dst 192.168.1.2 > /proc/net/pktgen/eth0
    	for i in `seq 20`; do echo start > /proc/net/pktgen/pgctrl; tail -n1 /proc/net/pktgen/eth0; done
    
    Before:
      746547-793084(786421+/-9.6e+03)pps 346-367(364.4+/-4.4)Mb/sec (346397808-367990976(3.649e+08+/-4.5e+06)bps) errors: 0
    
    After:
      767390-792966(785159+/-6.5e+03)pps 356-367(363.75+/-2.9)Mb/sec (356068960-367936224(3.64314e+08+/-3e+06)bps) errors: 0
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a5835440
virtio_net.c 50.3 KB