[ewg] ib/ipoib: don't drop multicast sends when it can be avoided
Olga Shern
olgas at voltaire.com
Wed Apr 30 06:45:48 PDT 2008
Hi Vlad,
Please apply the attached patch.
It was applied already in the upstream kernel:
http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Froland%2Finfiniband.git;
a=commitdiff_plain;h=b3e2749bf32f61e7beb259eb7cfb066d2ec6ad65
Patch's description:
When set_multicast_list() is called the multicast task is restarted
and the IPOIB_MCAST_STARTED bit is cleared. As a result for some
window of time, multicast packets are not transmitted nor queued but
rather dropped by ipoib_mcast_send(). These dropped packets are
painful in two cases:
- bonding fail-over which both calls set_multicast_list() on the new
active slave and sends Gratuitous ARP through that slave.
- IP_DROP_MEMBERSHIP code which both calls set_multicast_list() on the
device and issues IGMP leave.
In both these cases, depending on the scheduling of the IPoIB
multicast task, the packets would be dropped. As a result, in the
bonding case, the failover would not be detected by the peers until
their neighbour is renewed the neighbour (which takes a few tens of
seconds). In the IGMP case, the IP router doesn't get an IGMP leave
and would only learn on that from further probes on the group (also a
delay of at least a few tens of seconds).
Fix this by allowing transmission (or queuing) depending on the
IPOIB_FLAG_OPER_UP flag instead of the IPOIB_MCAST_STARTED flag.
Thanks
Olga
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ewg/attachments/20080430/d631e636/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ipoib_0350_mcast_send.patch
Type: application/octet-stream
Size: 2231 bytes
Desc: ipoib_0350_mcast_send.patch
URL: <http://lists.openfabrics.org/pipermail/ewg/attachments/20080430/d631e636/attachment.obj>
More information about the ewg
mailing list