I did an experiment and this experiment gave me an unexpected result
( for me). I would like to get any clue or hint on this.
[ ubuntu kernel version 3.11 ]
i wrote an userpace program to create two tap devices( tap77 and tap88
) and will epoll on these fds. if a packet is received on tap77 fd,
it will be read() and write to tap88 fd and vice versa. Basically
this program will send pkts from tap88 to tap77 and vice versa. when
i sent 10 icmp packets (using ping ); i got rtt min/avg/max/mdev
=.825/1.006/2.052/.310 ms.
I modified tun_net_xmit() function in tun.c and created another
driver and ran the above test.
tun_net_xmit() {
skb_orphan(skb);
if( skb->dev == tap77_dev ) skb->dev= tap88_dev
else if (skb->dev == tap88_dev ) skb->dev = tap77_dev;
skb_reset_mac_header(skb);
skb_reset_network_header(skb);
skb_reset_transport_header(skb);
netif_rx_ni(skb);
}
i got rtt min/avg/max/mdev = .778/1.023/2.662/.549.
With the modified driver, Although we avoided 2 packet copies and 2
system call, it did not result in performance
improvement ( it did decrease by a small delta ).
Thanks,
Ratheesh
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit
http://communities.intel.com/community/wired