[PATCH 3/5] IB/ipoib: Make sendonly multicast joins create the mcast group
Andy Whitcroft
apw at canonical.com
Tue Feb 9 18:01:41 UTC 2016
On Fri, Feb 05, 2016 at 02:11:45PM -0700, tim.gardner at canonical.com wrote:
> From: Doug Ledford <dledford at redhat.com>
>
> BugLink: http://bugs.launchpad.net/bugs/1542444
>
> Since IPoIB should, as much as possible, emulate how multicast
> sends work on Ethernet for regular TCP/IP apps, there should be
> no requirement to subscribe to a multicast group before your
> sends are properly sent. However, due to the difference in how
> multicast is handled on InfiniBand, we must join the appropriate
> multicast group before we can send to it. Previously we tried
> not to trigger the auto-create feature of the subnet manager when
> doing this because we didn't have tracking of these sendonly
> groups and the auto-creation might never get undone. The previous
> patch added timing to these sendonly joins and allows us to
> leave them after a reasonable idle expiration time. So supply
> all of the information needed to auto-create group.
>
> Signed-off-by: Doug Ledford <dledford at redhat.com>
> (back ported from commit c3852ab0e606212de523c1fb1e15adbf9f431619)
> Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
>
> Conflicts:
> drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> ---
> drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> index 4990572..180d10e 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> @@ -500,6 +500,24 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast,
> rec.sl = priv->broadcast->mcmember.sl;
> rec.flow_label = priv->broadcast->mcmember.flow_label;
> rec.hop_limit = priv->broadcast->mcmember.hop_limit;
> +
> + /*
> + * Send-only IB Multicast joins do not work at the core
> + * IB layer yet, so we can't use them here. However,
> + * we are emulating an Ethernet multicast send, which
> + * does not require a multicast subscription and will
> + * still send properly. The most appropriate thing to
> + * do is to create the group if it doesn't exist as that
> + * most closely emulates the behavior, from a user space
> + * application perspecitive, of Ethernet multicast
> + * operation. For now, we do a full join, maybe later
> + * when the core IB layers support send only joins we
> + * will use them.
> + */
> +#if 0
> + if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags))
> + rec.join_state = 4;
> +#endif
> }
>
> multicast = ib_sa_join_multicast(&ipoib_sa_client, priv->ca, priv->port,
This patch seems to only add code which is commented out ? I am not
sure this makes sense to me.
-apw
More information about the kernel-team
mailing list