Re: Bisect'ed BUG in VLAN promisc mode (6c78dcbd47)
From: Patrick McHardy <hidden>
Date: 2008-09-26 20:10:58
Patrick McHardy wrote:
Jesper Dangaard Brouer wrote:quoted
On Fri, 2008-09-26 at 21:28 +0200, Patrick McHardy wrote:quoted
Actually - one question: you're saying you're using different MAC addresses on the VLAN devices, so I guess thats why you're expecting the underlying device to still be in promiscous mode after you set eth1.1025 down. For devices that support multiple unicast addresses in hardware, we don't put the device in promiscous mode anymore. So the question is: is something actually not working, or did you just notice that the real device is no longer in promiscous mode?It stopped working! In the test setup I do have a machine connected to eth1.1013, where I have a ping running, that stop working...Found it in the bugreport :) OK, I'll try to reproduce it now.
Found it without reproduing, but unfortunately I also have to leave now, will look at it later again. Anyways, the problem appears to be that the promiscous count is decremented twice for the VLAN device, once in vlan_stop() because the device is still in promiscous mode, once when af_packet takes the VLAN device out of promisc in the NETDEV_UNREGISTER notifier chain, which triggers the VLAN ->change_rx_mode callback and removes another promiscous count from the real device. I think the correct fix would be to not invoke ->change_rx_flags while the device is down, similar to ->set_multicast_list and ->set_rx_mode, but I need to check the other drivers first.