aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp
diff options
context:
space:
mode:
authorRolf Manderscheid <rvm@obsidianresearch.com>2007-12-10 15:38:41 -0500
committerRoland Dreier <rolandd@cisco.com>2008-01-25 17:15:37 -0500
commita9e527e3f9f4510e9f3450ca3bc51bc3ef2854fd (patch)
tree519458581cf3b8dd7c7a6d19c29572efb3405df1 /drivers/infiniband/ulp
parent755807a296f77ca7c31dc000afdfe1e5172bbf72 (diff)
IPoIB: improve IPv4/IPv6 to IB mcast mapping functions
An IPoIB subnet on an IB fabric that spans multiple IB subnets can't use link-local scope in multicast GIDs. The existing routines that map IP/IPv6 multicast addresses into IB link-level addresses hard-code the scope to link-local, and they also leave the partition key field uninitialised. This patch adds a parameter (the link-level broadcast address) to the mapping routines, allowing them to initialise both the scope and the P_Key appropriately, and fixes up the call sites. The next step will be to add a way to configure the scope for an IPoIB interface. Signed-off-by: Rolf Manderscheid <rvm@obsidianresearch.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/ulp')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 858ada17f980..2628339e3a99 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -788,10 +788,6 @@ void ipoib_mcast_restart_task(struct work_struct *work)
788 788
789 memcpy(mgid.raw, mclist->dmi_addr + 4, sizeof mgid); 789 memcpy(mgid.raw, mclist->dmi_addr + 4, sizeof mgid);
790 790
791 /* Add in the P_Key */
792 mgid.raw[4] = (priv->pkey >> 8) & 0xff;
793 mgid.raw[5] = priv->pkey & 0xff;
794
795 mcast = __ipoib_mcast_find(dev, &mgid); 791 mcast = __ipoib_mcast_find(dev, &mgid);
796 if (!mcast || test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { 792 if (!mcast || test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
797 struct ipoib_mcast *nmcast; 793 struct ipoib_mcast *nmcast;