Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Tue, 21 Mar 2006 17:31:48 +0000 (09:31 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 21 Mar 2006 17:31:48 +0000 (09:31 -0800)
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (235 commits)
  [NETFILTER]: Add H.323 conntrack/NAT helper
  [TG3]: Don't mark tg3_test_registers() as returning const.
  [IPV6]: Cleanups for net/ipv6/addrconf.c (kzalloc, early exit) v2
  [IPV6]: Nearly complete kzalloc cleanup for net/ipv6
  [IPV6]: Cleanup of net/ipv6/reassambly.c
  [BRIDGE]: Remove duplicate const from is_link_local() argument type.
  [DECNET]: net/decnet/dn_route.c: fix inconsequent NULL checking
  [TG3]: make drivers/net/tg3.c:tg3_request_irq() static
  [BRIDGE]: use LLC to send STP
  [LLC]: llc_mac_hdr_init const arguments
  [BRIDGE]: allow show/store of group multicast address
  [BRIDGE]: use llc for receiving STP packets
  [BRIDGE]: stp timer to jiffies cleanup
  [BRIDGE]: forwarding remove unneeded preempt and bh diasables
  [BRIDGE]: netfilter inline cleanup
  [BRIDGE]: netfilter VLAN macro cleanup
  [BRIDGE]: netfilter dont use __constant_htons
  [BRIDGE]: netfilter whitespace
  [BRIDGE]: optimize frame pass up
  [BRIDGE]: use kzalloc
  ...

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

index 0ebacd558ff6508919631d214283b8e49fb38897,9d9cecd4753b469f61ed08fa8e4b5a83ac2f8f95..37da8d3dc388d7e781544b28bd334850be33c2ac
@@@ -133,13 -133,7 +133,13 @@@ static int ipoib_stop(struct net_devic
  
        netif_stop_queue(dev);
  
 -      ipoib_ib_dev_down(dev);
 +      /*
 +       * Now flush workqueue to make sure a scheduled task doesn't
 +       * bring our internal state back up.
 +       */
 +      flush_workqueue(ipoib_workqueue);
 +
 +      ipoib_ib_dev_down(dev, 1);
        ipoib_ib_dev_stop(dev);
  
        if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) {
@@@ -253,7 -247,6 +253,6 @@@ static void path_free(struct net_devic
                if (neigh->ah)
                        ipoib_put_ah(neigh->ah);
                *to_ipoib_neigh(neigh->neighbour) = NULL;
-               neigh->neighbour->ops->destructor = NULL;
                kfree(neigh);
        }
  
@@@ -519,7 -512,12 +518,7 @@@ static void neigh_add_path(struct sk_bu
                           be32_to_cpup((__be32 *) skb->dst->neighbour->ha));
        } else {
                neigh->ah  = NULL;
 -              if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
 -                      __skb_queue_tail(&neigh->queue, skb);
 -              } else {
 -                      ++priv->stats.tx_dropped;
 -                      dev_kfree_skb_any(skb);
 -              }
 +              __skb_queue_tail(&neigh->queue, skb);
  
                if (!path->query && path_rec_start(dev, path))
                        goto err;
  err:
        *to_ipoib_neigh(skb->dst->neighbour) = NULL;
        list_del(&neigh->list);
-       neigh->neighbour->ops->destructor = NULL;
        kfree(neigh);
  
        ++priv->stats.tx_dropped;
@@@ -770,21 -767,9 +768,9 @@@ static void ipoib_neigh_destructor(stru
                ipoib_put_ah(ah);
  }
  
- static int ipoib_neigh_setup(struct neighbour *neigh)
- {
-       /*
-        * Is this kosher?  I can't find anybody in the kernel that
-        * sets neigh->destructor, so we should be able to set it here
-        * without trouble.
-        */
-       neigh->ops->destructor = ipoib_neigh_destructor;
-       return 0;
- }
  static int ipoib_neigh_setup_dev(struct net_device *dev, struct neigh_parms *parms)
  {
-       parms->neigh_setup = ipoib_neigh_setup;
+       parms->neigh_destructor = ipoib_neigh_destructor;
  
        return 0;
  }