On Mon, Mar 23, 2020 at 07:15:12PM -0400, Dennis Dalessandro wrote: > @@ -240,13 +241,11 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast, > priv->broadcast->mcmember.flow_label = mcmember->flow_label; > priv->broadcast->mcmember.hop_limit = mcmember->hop_limit; > /* assume if the admin and the mcast are the same both can be changed */ > + mtu = rdma_mtu_enum_to_int(priv->ca, priv->port, > + priv->broadcast->mcmember.mtu); > if (priv->mcast_mtu == priv->admin_mtu) > - priv->admin_mtu = > - priv->mcast_mtu = > - IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); > - else > - priv->mcast_mtu = > - IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); > + priv->admin_mtu = IPOIB_UD_MTU(mtu); > + priv->mcast_mtu = IPOIB_UD_MTU(mtu); Er, how did this ever work? Does the OPA SM not use the 6 & 7 values for the mtu in the path record? Why is it being changed now? > +/** > + * rdma_mtu_from_attr - Return the mtu of the port from the port attribute. > + * @device: Device > + * @port_num: Port number > + * @attr: port attribute > + * > + * Return the MTU size supported by the port as an integer value. > + */ > +static inline int rdma_mtu_from_attr(struct ib_device *device, u8 port, > + struct ib_port_attr *attr) > +{ > + if (rdma_core_cap_opa_port(device, port)) > + return attr->phys_mtu; Why not just always set this? Jason