Hi,

The following refers to code in ipoib_mcast_send()
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/infiniband/ulp/ipoib/ipoib_multicast.c;h=2628339e3a9973b01402250f8e6bf73be5d37c04;hb=HEAD#l642


Some background before the question:

I am testing bonding with IPoIB now and I see that sometimes grat. ARP are not being sent when one of the slaves gets down and another takes its place as an active slave (Grat. arps are necessary for reasonable failover). A short research shows that the bonding module sets the multicast list for the new active slave and this causes multicast task restart. When grat. arp arrives to ipoib_mcast_send() it finds that the flag IPOIB_MCAST_STARTED is not set and the packet is dropped. This doesn't happen all the times. Sometimes the grat. arp arrives to ipoib_mcast_send() when IPOIB_MCAST_STARTED is set and packet is sent.

Now, my question is:

This code is found in the begging of ipoib_mcast_send().

if (!test_bit(IPOIB_MCAST_STARTED, &priv->flags) ||
        !priv->broadcast                                     ||
        !test_bit(IPOIB_MCAST_FLAG_ATTACHED,&priv->broadcast->flags)){
                ++dev->stats.tx_dropped;
                dev_kfree_skb_any(skb);
                goto unlock;
}

I wonder, why isn't it possible to
1. Not to drop the packet (at least for the case when IPOIB_MCAST_STARTED is cleared).
2. look for/create mcast structure (already in code)
3. put skb in &mcast->pkt_queue (enhabce the condition !mcast->ah)


thanks
 MoniS




_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

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

Reply via email to