Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
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 <[EMAIL PROTECTED]>
Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]>
---
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
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general