Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
authorLinus Torvalds <torvalds@g5.osdl.org>
Tue, 20 Jun 2006 02:01:59 +0000 (19:01 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 20 Jun 2006 02:01:59 +0000 (19:01 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (46 commits)
  IB/uverbs: Don't serialize with ib_uverbs_idr_mutex
  IB/mthca: Make all device methods truly reentrant
  IB/mthca: Fix memory leak on modify_qp error paths
  IB/uverbs: Factor out common idr code
  IB/uverbs: Don't decrement usecnt on error paths
  IB/uverbs: Release lock on error path
  IB/cm: Use address handle helpers
  IB/sa: Add ib_init_ah_from_path()
  IB: Add ib_init_ah_from_wc()
  IB/ucm: Get rid of duplicate P_Key parameter
  IB/srp: Factor out common request reset code
  IB/srp: Support SRP rev. 10 targets
  [SCSI] srp.h: Add I/O Class values
  IB/fmr: Use device's max_map_map_per_fmr attribute in FMR pool.
  IB/mthca: Fill in max_map_per_fmr device attribute
  IB/ipath: Add client reregister event generation
  IB/mthca: Add client reregister event generation
  IB: Move struct port_info from ipath to <rdma/ib_smi.h>
  IPoIB: Handle client reregister events
  IB: Add client reregister event type
  ...

1  2 
drivers/infiniband/ulp/ipoib/ipoib_multicast.c

index 1d917edcf9ba99ea3e2de4e33700ba4e05893c53,ec41c8f46c7278f00818eddd30ea7c69b1a00bd1..216471fa01cc48fed536e16acf817d9b88383886
@@@ -154,7 -154,7 +154,7 @@@ static struct ipoib_mcast *ipoib_mcast_
        return mcast;
  }
  
- static struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, union ib_gid *mgid)
+ static struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid)
  {
        struct ipoib_dev_priv *priv = netdev_priv(dev);
        struct rb_node *n = priv->multicast_tree.rb_node;
  
                mcast = rb_entry(n, struct ipoib_mcast, rb_node);
  
-               ret = memcmp(mgid->raw, mcast->mcmember.mgid.raw,
+               ret = memcmp(mgid, mcast->mcmember.mgid.raw,
                             sizeof (union ib_gid));
                if (ret < 0)
                        n = n->rb_left;
@@@ -694,8 -694,7 +694,7 @@@ static int ipoib_mcast_leave(struct net
        return 0;
  }
  
- void ipoib_mcast_send(struct net_device *dev, union ib_gid *mgid,
-                     struct sk_buff *skb)
+ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
  {
        struct ipoib_dev_priv *priv = netdev_priv(dev);
        struct ipoib_mcast *mcast;
        if (!mcast) {
                /* Let's create a new send only group now */
                ipoib_dbg_mcast(priv, "setting up send only multicast group for "
-                               IPOIB_GID_FMT "\n", IPOIB_GID_ARG(*mgid));
+                               IPOIB_GID_FMT "\n", IPOIB_GID_RAW_ARG(mgid));
  
                mcast = ipoib_mcast_alloc(dev, 0);
                if (!mcast) {
                }
  
                set_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags);
-               mcast->mcmember.mgid = *mgid;
+               memcpy(mcast->mcmember.mgid.raw, mgid, sizeof (union ib_gid));
                __ipoib_mcast_add(dev, mcast);
                list_add_tail(&mcast->list, &priv->multicast_list);
        }
@@@ -821,8 -820,7 +820,8 @@@ void ipoib_mcast_restart_task(void *dev
  
        ipoib_mcast_stop_thread(dev, 0);
  
 -      spin_lock_irqsave(&dev->xmit_lock, flags);
 +      local_irq_save(flags);
 +      netif_tx_lock(dev);
        spin_lock(&priv->lock);
  
        /*
        }
  
        spin_unlock(&priv->lock);
 -      spin_unlock_irqrestore(&dev->xmit_lock, flags);
 +      netif_tx_unlock(dev);
 +      local_irq_restore(flags);
  
        /* We have to cancel outside of the spinlock */
        list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {