Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
David S. Miller [Fri, 28 Mar 2008 01:48:56 +0000 (18:48 -0700)]
Conflicts:

drivers/net/usb/rndis_host.c
drivers/net/wireless/b43/dma.c
net/ipv6/ndisc.c

34 files changed:
1  2 
MAINTAINERS
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_main.c
drivers/net/ixgb/ixgb_main.c
drivers/net/s2io.c
drivers/net/smc91x.h
drivers/net/usb/dm9601.c
drivers/net/usb/rndis_host.c
drivers/net/wireless/b43/dma.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl4965-base.c
drivers/net/wireless/rt2x00/rt73usb.c
include/linux/netdevice.h
include/net/neighbour.h
include/net/xfrm.h
net/8021q/vlan_dev.c
net/core/dev.c
net/core/neighbour.c
net/ipv4/icmp.c
net/ipv4/netfilter/ip_queue.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
net/ipv6/ndisc.c
net/ipv6/netfilter/ip6_queue.c
net/ipv6/xfrm6_state.c
net/irda/irnet/irnet.h
net/key/af_key.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nfnetlink_queue.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -283,8 -283,7 +283,8 @@@ generic_rndis_bind(struct usbnet *dev, 
                struct rndis_set_c      *set_c;
                struct rndis_halt       *halt;
        } u;
-       u32                     tmp;
 -      u32                     tmp, phym_unspec, *phym;
++      u32                     tmp, phym_unspec;
 +      __le32                  *phym;
        int                     reply_len;
        unsigned char           *bp;
  
@@@ -1307,38 -1344,7 +1314,39 @@@ out_unlock
        return err;
  }
  
 +static void b43_fill_txstatus_report(struct b43_dmaring *ring,
 +                                  struct ieee80211_tx_status *report,
 +                                  const struct b43_txstatus *status)
 +{
 +      bool frame_failed = 0;
 +
 +      if (status->acked) {
 +              /* The frame was ACKed. */
 +              report->flags |= IEEE80211_TX_STATUS_ACK;
 +      } else {
 +              /* The frame was not ACKed... */
 +              if (!(report->control.flags & IEEE80211_TXCTL_NO_ACK)) {
 +                      /* ...but we expected an ACK. */
 +                      frame_failed = 1;
 +                      report->excessive_retries = 1;
 +              }
 +      }
 +      if (status->frame_count == 0) {
 +              /* The frame was not transmitted at all. */
 +              report->retry_count = 0;
 +      } else {
 +              report->retry_count = status->frame_count - 1;
 +#ifdef CONFIG_B43_DEBUG
 +              if (frame_failed)
 +                      ring->nr_failed_tx_packets++;
 +              else
 +                      ring->nr_succeed_tx_packets++;
 +              ring->nr_total_packet_tries += status->frame_count;
 +#endif /* DEBUG */
 +      }
 +}
 +
+ /* Called with IRQs disabled. */
  void b43_dma_handle_txstatus(struct b43_wldev *dev,
                             const struct b43_txstatus *status)
  {
Simple merge
Simple merge
@@@ -5862,10 -6210,9 +5861,11 @@@ static void iwl3945_alive_start(struct 
        iwl3945_reg_txpower_periodic(priv);
  
        IWL_DEBUG_INFO("ALIVE processing complete.\n");
+       set_bit(STATUS_READY, &priv->status);
        wake_up_interruptible(&priv->wait_command_queue);
  
 +      iwl3945_led_register(priv);
 +
        if (priv->error_recovering)
                iwl3945_error_recovery(priv);
  
@@@ -5717,10 -6632,9 +5716,11 @@@ static void iwl4965_alive_start(struct 
        iwl4965_rf_kill_ct_config(priv);
  
        IWL_DEBUG_INFO("ALIVE processing complete.\n");
+       set_bit(STATUS_READY, &priv->status);
        wake_up_interruptible(&priv->wait_command_queue);
  
 +      iwl_leds_register(priv);
 +
        if (priv->error_recovering)
                iwl4965_error_recovery(priv);
  
@@@ -8186,9 -9282,9 +8186,9 @@@ static int iwl4965_pci_probe(struct pci
        return err;
  }
  
- static void iwl4965_pci_remove(struct pci_dev *pdev)
+ static void __devexit iwl4965_pci_remove(struct pci_dev *pdev)
  {
 -      struct iwl4965_priv *priv = pci_get_drvdata(pdev);
 +      struct iwl_priv *priv = pci_get_drvdata(pdev);
        struct list_head *p, *q;
        int i;
  
Simple merge
Simple merge
@@@ -233,18 -218,12 +233,22 @@@ extern unsigned long            neigh_rand_reach_
  extern void                   pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p,
                                               struct sk_buff *skb);
  extern struct pneigh_entry    *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat);
+ extern struct pneigh_entry    *__pneigh_lookup(struct neigh_table *tbl,
+                                                struct net *net,
+                                                const void *key,
+                                                struct net_device *dev);
  extern int                    pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev);
  
 +static inline
 +struct net                    *pneigh_net(const struct pneigh_entry *pneigh)
 +{
 +#ifdef CONFIG_NET_NS
 +      return pneigh->net;
 +#else
 +      return &init_net;
 +#endif
 +}
 +
  extern void neigh_app_ns(struct neighbour *n);
  extern void neigh_for_each(struct neigh_table *tbl, void (*cb)(struct neighbour *, void *), void *cookie);
  extern void __neigh_for_each_release(struct neigh_table *tbl, int (*cb)(struct neighbour *));
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
@@@ -466,6 -466,28 +466,28 @@@ out_neigh_release
        goto out;
  }
  
+ struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl,
+               struct net *net, const void *pkey, struct net_device *dev)
+ {
+       struct pneigh_entry *n;
+       int key_len = tbl->key_len;
+       u32 hash_val = *(u32 *)(pkey + key_len - 4);
+       hash_val ^= (hash_val >> 16);
+       hash_val ^= hash_val >> 8;
+       hash_val ^= hash_val >> 4;
+       hash_val &= PNEIGH_HASHMASK;
+       for (n = tbl->phash_buckets[hash_val]; n; n = n->next) {
+               if (!memcmp(n->key, pkey, key_len) &&
 -                  (n->net == net) &&
++                  (pneigh_net(n) == net) &&
+                   (n->dev == dev || !n->dev))
+                       break;
+       }
+       return n;
+ }
  struct pneigh_entry * pneigh_lookup(struct neigh_table *tbl,
                                    struct net *net, const void *pkey,
                                    struct net_device *dev, int creat)
diff --cc net/ipv4/icmp.c
Simple merge
Simple merge
Simple merge
@@@ -661,6 -676,20 +661,20 @@@ static void ndisc_solicit(struct neighb
        }
  }
  
+ static struct pneigh_entry *pndisc_check_router(struct net_device *dev,
+               struct in6_addr *addr, int *is_router)
+ {
+       struct pneigh_entry *n;
+       read_lock_bh(&nd_tbl.lock);
 -      n = __pneigh_lookup(&nd_tbl, &init_net, addr, dev);
++      n = __pneigh_lookup(&nd_tbl, dev_net(dev), addr, dev);
+       if (n != NULL)
+               *is_router = (n->flags & NTF_ROUTER);
+       read_unlock_bh(&nd_tbl.lock);
+       return n;
+ }
  static void ndisc_recv_ns(struct sk_buff *skb)
  {
        struct nd_msg *msg = (struct nd_msg *)skb_transport_header(skb);
                        return;
                }
  
 -              if (ipv6_chk_acast_addr(dev, &msg->target) ||
 +              if (ipv6_chk_acast_addr(dev_net(dev), dev, &msg->target) ||
                    (idev->cnf.forwarding &&
                     (ipv6_devconf.proxy_ndp || idev->cnf.proxy_ndp) &&
-                    (pneigh = pneigh_lookup(&nd_tbl, dev_net(dev),
-                                            &msg->target, dev, 0)) != NULL)) {
+                    (pneigh = pndisc_check_router(dev, &msg->target,
+                                                 &is_router)) != NULL)) {
                        if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) &&
                            skb->pkt_type != PACKET_HOST &&
                            inc != 0 &&
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge