Michael S. Tsirkin wrote:
void ipoib_mcast_join_task(void *dev_ptr)
@@ -553,7 +539,8 @@ void ipoib_mcast_join_task(void *dev_ptr
                spin_unlock_irq(&priv->lock);
        }

-       if (!test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) {
+       if (!test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags) &&
+           !test_bit(IPOIB_MCAST_FLAG_BUSY, &priv->broadcast->flags)) {
                ipoib_mcast_join(dev, priv->broadcast, 0);
                return;
        }

The change above needs to be:

        if (!test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) {
if (!test_bit(IPOIB_MCAST_FLAG_BUSY, &priv->broadcast->flags))
                        ipoib_mcast_join(dev, priv->broadcast, 0);
                return;
        }

Or additional join requests will start before we've finished joining the broadcast group.

- Sean


Hmm, but this seems like 2.6.17 material.
It should have the same effect with or without multicast group patch. Right?

I'm not sure if the code has the same effect with or without the rest of the multicast changes. In theory, it seems like adding this change would work, but I don't know that it's necessary. The original code keyed entirely off of the ATTACHED flag.

I added a check for the BUSY flag to prevent issuing multiple join requests for the broadcast group, which is necessary for proper interaction with ib_multicast, since every join request must be followed by a call to free.

- Sean
_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to