[openib-general] IPv6 All Router Multicast Group

Hal Rosenstock hnrose at earthlink.net
Fri Dec 10 07:38:08 PST 2004


Hi again Roland,

In looking at the code, this IPv6 group (all routers) (0xff12:601b:ffff:0:0:0:0:2) is going through
the send only path in ipoib_multicast.c::ipoib_mcast_send where:

 
	spin_lock_irqsave(&priv->lock, flags);
	mcast = __ipoib_mcast_find(dev, mgid);
	if (!mcast) {
		/* Let's create a new send only group now */
		ipoib_dbg_mcast(priv, "setting up send only multicast group for "
				IPOIB_GID_FMT "\n", IPOIB_GID_ARG(*mgid));

		mcast = ipoib_mcast_alloc(dev, 0);
		if (!mcast) {
			ipoib_warn(priv, "unable to allocate memory for "
				   "multicast structure\n");
			dev_kfree_skb_any(skb);
			goto out;
		}

		set_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags);
		mcast->mcmember.mgid = *mgid;
		__ipoib_mcast_add(dev, mcast);
		list_add_tail(&mcast->list, &priv->multicast_list);
	}

	if (!mcast->ah) {
		if (skb_queue_len(&mcast->pkt_queue) < IPOIB_MAX_MCAST_QUEUE)
			skb_queue_tail(&mcast->pkt_queue, skb);
		else
			dev_kfree_skb_any(skb);

		if (mcast->query)
			ipoib_dbg_mcast(priv, "no address vector, "
					"but multicast join already started\n");
		else if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags))
			ipoib_mcast_sendonly_join(mcast);
Although the sendonly_join code has been changed to do a full member rather than send only join,
it does not fall back to create the group if it does not already exist. One wouldn't expect a send only
join to create the group if it didn't already exist.

Any idea on why this group is send only ? Don't end nodes need to both send and receive on the 
all routers group ?

-- Hal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20041210/f36963f5/attachment.html>


More information about the general mailing list