Thread (12 messages) 12 messages, 3 authors, 2008-10-07

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help