]> git.baikalelectronics.ru Git - kernel.git/commit
bonding: remap muticast addresses without using dev_close() and dev_open()
authorMoni Shoua <monis@voltaire.com>
Tue, 15 Sep 2009 09:37:40 +0000 (02:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Sep 2009 09:37:40 +0000 (02:37 -0700)
commitd7155e0379841e0817412bd7766e27b3913ccf20
tree5249219d68627421e4717c4e8f03f8b4bbad2e92
parent71e328b8207e72c059bc743f060ff948f8bdaeef
bonding: remap muticast addresses without using dev_close() and dev_open()

This patch fixes commit 3e239f541fa433a73603a14670a06c1216729d15. The approach
there is to call dev_close()/dev_open() whenever the device type is changed in
order to remap the device IP multicast addresses to HW multicast addresses.
This approach suffers from 2 drawbacks:

*. It assumes tha the device is UP when calling dev_close(), or otherwise
   dev_close() has no affect. It is worth to mention that initscripts (Redhat)
   and sysconfig (Suse) doesn't act the same in this matter.
*. dev_close() has other side affects, like deleting entries from the routing
   table, which might be unnecessary.

The fix here is to directly remap the IP multicast addresses to HW multicast
addresses for a bonding device that changes its type, and nothing else.

Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Moni Shoua <monis@voltaire.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
include/linux/igmp.h
include/linux/netdevice.h
include/linux/notifier.h
include/net/addrconf.h
net/core/dev.c
net/ipv4/devinet.c
net/ipv4/igmp.c
net/ipv6/addrconf.c
net/ipv6/mcast.c