[ofa-general] A question regarding multicast send
Moni Shoua
monis at voltaire.com
Mon Mar 3 06:53:28 PST 2008
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
More information about the general
mailing list