[openib-general] Fwd: IPoIB Multicast
Michael S. Tsirkin
mst at mellanox.co.il
Mon Sep 18 20:15:34 PDT 2006
Quoting r. Roland Dreier <rdreier at cisco.com>:
Subject: Re: Fwd: IPoIB Multicast
Here's a patch that tries to fix this. I only tried it with the Cisco
embedded SM, so someone should probably check that this doesn't break
under OpenSM.
Look OK?
- R.
We've been testing the following which looks exactly equivalent.
I'll look at the regression results in the morning and will let you know.
Please note this fixes an actual issue for us: on a mixed
1x/4x or SDP/DDR network, if a group is created with the wrong
parameters, some nodes are unable to join.
-----------------------------------------------------------
IB/ipoib: make multicast group creation spec compliant
IPoIB spec says:
The MGID MUST use the same P_Key, Q_Key, SL, MTU and HopLimit as
those used in the broadcast-GID. For the rest of attributes too,
the values used in the broadcast-GID SHOULD be used.
IPoIB currently violates this rule, which breaks multicast
on heterogenious networks.
Signed-off-by: Eli Cohen <eli at mellanox.co.il>
Signed-off-by: Michael S. Tsirkin <mst at mellanox.co.il>
---
Index: openib-1.1/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===================================================================
--- openib-1.1.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-17 12:23:25.000000000 +0300
+++ openib-1.1/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-17 16:31:08.000000000 +0300
@@ -472,15 +472,25 @@ static void ipoib_mcast_join(struct net_
if (create) {
comp_mask |=
- IB_SA_MCMEMBER_REC_QKEY |
- IB_SA_MCMEMBER_REC_SL |
- IB_SA_MCMEMBER_REC_FLOW_LABEL |
- IB_SA_MCMEMBER_REC_TRAFFIC_CLASS;
+ IB_SA_MCMEMBER_REC_QKEY |
+ IB_SA_MCMEMBER_REC_SL |
+ IB_SA_MCMEMBER_REC_FLOW_LABEL |
+ IB_SA_MCMEMBER_REC_TRAFFIC_CLASS |
+ IB_SA_MCMEMBER_REC_RATE_SELECTOR |
+ IB_SA_MCMEMBER_REC_RATE |
+ IB_SA_MCMEMBER_REC_HOP_LIMIT |
+ IB_SA_MCMEMBER_REC_MTU_SELECTOR |
+ IB_SA_MCMEMBER_REC_MTU;
rec.qkey = priv->broadcast->mcmember.qkey;
rec.sl = priv->broadcast->mcmember.sl;
rec.flow_label = priv->broadcast->mcmember.flow_label;
rec.traffic_class = priv->broadcast->mcmember.traffic_class;
+ rec.rate_selector = IB_SA_EQ;
+ rec.rate = priv->broadcast->mcmember.rate;
+ rec.hop_limit = priv->broadcast->mcmember.hop_limit;
+ rec.mtu_selector = IB_SA_EQ;
+ rec.mtu = priv->broadcast->mcmember.mtu;
}
init_completion(&mcast->done);
--
MST
More information about the general
mailing list