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
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to