From patchwork Wed Oct 21 22:08:37 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 55228 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n9LM8eV5004497 for ; Wed, 21 Oct 2009 22:08:40 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755226AbZJUWIe (ORCPT ); Wed, 21 Oct 2009 18:08:34 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755260AbZJUWIe (ORCPT ); Wed, 21 Oct 2009 18:08:34 -0400 Received: from 139-142-54-143.atc.vaillant.ca ([139.142.54.143]:60138 "EHLO quartz.edm.orcorp.ca" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1755226AbZJUWIe (ORCPT ); Wed, 21 Oct 2009 18:08:34 -0400 Received: from [10.0.0.11] (helo=jggl.edm.orcorp.ca) by quartz.edm.orcorp.ca with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.68) (envelope-from ) id 1N0jME-0006Qg-0s; Wed, 21 Oct 2009 16:08:38 -0600 Received: from jgg by jggl.edm.orcorp.ca with local (Exim 4.69) (envelope-from ) id 1N0jMD-0002HA-Uy; Wed, 21 Oct 2009 16:08:37 -0600 Date: Wed, 21 Oct 2009 16:08:37 -0600 From: Jason Gunthorpe To: stuarts Cc: linux-rdma@vger.kernel.org Subject: Re: Multicast joins failing on 1.5-rc1? (OFED BACKPORT BUG) Message-ID: <20091021220837.GP14520@obsidianresearch.com> References: <20091021202346.GO14520@obsidianresearch.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Broken-Reverse-DNS: no host name found for IP address 10.0.0.11 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -814,6 +814,13 @@ void ipoib_mcast_restart_task(struct work_struct *work) for (mclist = dev->mc_list; mclist; mclist = mclist->next) { union ib_gid mgid; + /* Work around broken ip_ib_mc_map */ + if (mclist->dmi_addrlen == INFINIBAND_ALEN) { + mclist->dmi_addr[5] = 0x10 | (dev->broadcast[5] & 0xF); + mclist->dmi_addr[8] = dev->broadcast[8]; + mclist->dmi_addr[9] = dev->broadcast[9]; + } + if (!ipoib_mcast_addr_is_valid(mclist->dmi_addr, mclist->dmi_addrlen, dev->broadcast))