From: Yossi Etigin Date: Wed, 1 Apr 2009 20:55:32 +0000 (-0700) Subject: RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=84adeee9aaa0d81712de1e0ea74caed3398e4a1d;p=deliverable%2Flinux.git RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups When joining an IPoIB multicast group, use the same rate as in the broadcast group. Otherwise, if the RDMA CM creates this group before IPoIB does, it might get a different rate. This will cause IPoIB to fail joining to the same group later on, because IPoIB uses strict rate selection. Signed-off-by: Yossi Etigin Signed-off-by: Roland Dreier --- diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 2a2e50871b40..3f9c03a36571 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -2713,6 +2713,10 @@ static int cma_join_ib_multicast(struct rdma_id_private *id_priv, IB_SA_MCMEMBER_REC_FLOW_LABEL | IB_SA_MCMEMBER_REC_TRAFFIC_CLASS; + if (id_priv->id.ps == RDMA_PS_IPOIB) + comp_mask |= IB_SA_MCMEMBER_REC_RATE | + IB_SA_MCMEMBER_REC_RATE_SELECTOR; + mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, id_priv->id.port_num, &rec, comp_mask, GFP_KERNEL,