Hi, I'm trying to do some hardware testing, testing two ethernet NICs I have configured in the same linux server.

I've configured the NICs as so:

eth5 Link encap:Ethernet HWaddr 00:07:43:01:20:EC
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:31 Memory:dfff0000-dfff0fff

eth6 Link encap:Ethernet HWaddr 00:07:43:01:20:ED
inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:31 Memory:dfff0000-dfff0fff

I'd like to analyze packets I send from one NIC to the other. I don't have another hardware test box capable of handling these prototype NICs.

However, it seems like the linux kernel is loopbacking packets I send from one interface to the other without ever going out to the NIC.

For instance when I ping through one interface sending to the other:

chris@sdp[38]:~% ping -I eth5 192.168.0.10
PING 192.168.0.10 (192.168.0.10) from 192.168.0.10 eth5: 56(84) bytes of data.
64 bytes from 192.168.0.10: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 192.168.0.10: icmp_seq=2 ttl=64 time=0.018 ms
64 bytes from 192.168.0.10: icmp_seq=3 ttl=64 time=0.022 ms

The counters for both interfaces stay as 0. These seem to get routed through the kernel, and never make it out to the NIC:

RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

Is there any way to disable this kernel loopback so that packets are forced to go through the ethernet NIC, even though the destination is ultimately the other NIC in the same machine?

I'm willing to tweak/rebuild the kernel if there's a easy way to accomplish this.

Thanks!