net: Allow ethtool to set interface in loopback mode.
authorMahesh Bandewar <maheshb@google.com>
Wed, 4 May 2011 15:30:11 +0000 (15:30 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 8 May 2011 22:59:12 +0000 (15:59 -0700)
commiteed2a12f1ed9aabf0676f4d0db34aad51976c5c6
treea86d3ff7c6a9840131d38af3dfc907c255bfbd99
parent47a0200d535f08ac8f784a709c48995ca0b10288
net: Allow ethtool to set interface in loopback mode.

This patch enables ethtool to set the loopback mode on a given interface.
By configuring the interface in loopback mode in conjunction with a policy
route / rule, a userland application can stress the egress / ingress path
exposing the flows of the change in progress and potentially help developer(s)
understand the impact of those changes without even sending a packet out
on the network.

Following set of commands illustrates one such example -
    a) ip -4 addr add 192.168.1.1/24 dev eth1
    b) ip -4 rule add from all iif eth1 lookup 250
    c) ip -4 route add local 0/0 dev lo proto kernel scope host table 250
    d) arp -Ds 192.168.1.100 eth1
    e) arp -Ds 192.168.1.200 eth1
    f) sysctl -w net.ipv4.ip_nonlocal_bind=1
    g) sysctl -w net.ipv4.conf.all.accept_local=1
    # Assuming that the machine has 8 cores
    h) taskset 000f netserver -L 192.168.1.200
    i) taskset 00f0 netperf -t TCP_CRR -L 192.168.1.100 -H 192.168.1.200 -l 30

Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Acked-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/loopback.c
include/linux/netdevice.h
net/core/ethtool.c