浏览代码

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 <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Yossi Etigin 16 年之前
父节点
当前提交
84adeee9aa
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/infiniband/core/cma.c

+ 4 - 0
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_FLOW_LABEL |
 		    IB_SA_MCMEMBER_REC_TRAFFIC_CLASS;
 		    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,
 	mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device,
 						id_priv->id.port_num, &rec,
 						id_priv->id.port_num, &rec,
 						comp_mask, GFP_KERNEL,
 						comp_mask, GFP_KERNEL,