RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups
authorYossi Etigin <yosefe@Voltaire.COM>
Wed, 1 Apr 2009 20:55:32 +0000 (13:55 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 1 Apr 2009 20:55:32 +0000 (13:55 -0700)
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 <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/core/cma.c

index 2a2e50871b4063beb3c3ab8c4ae73ead5797e060..3f9c03a365716ef14242a0985e4e2d0cd15a84a8 100644 (file)
@@ -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,