When changing the interface hardware address, it also works: ip link set eth0 addr XX:XX:XX:XX:XX:XX.
It also works when using virtio_net.
It has been tested with e1000e, where it fails when setting the interface up.
When changing the address, __dev_xmit_skb will call sch_direct_xmit and the packet will reach the network. When setting the interface up, __dev_xmit_skb will call dev_qdisc_enqueue and the packet will not reach the network. Interface tx_packets stats will also not change. This indicates a possible issue with the qdisc code when the interface has just been setup. Notice that the code is called from the NETDEV_UP notifier.
When changing the interface hardware address, it also works: ip link set eth0 addr XX:XX:XX:XX:XX:XX.
It also works when using virtio_net.
It has been tested with e1000e, where it fails when setting the interface up.
When changing the address, __dev_xmit_skb will call sch_direct_xmit and the packet will reach the network. When setting the interface up, __dev_xmit_skb will call dev_qdisc_enqueue and the packet will not reach the network. Interface tx_packets stats will also not change. This indicates a possible issue with the qdisc code when the interface has just been setup. Notice that the code is called from the NETDEV_UP notifier.
Cascardo.