Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorDavid S. Miller <davem@davemloft.net>
Fri, 7 Nov 2008 06:43:03 +0000 (22:43 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Nov 2008 06:43:03 +0000 (22:43 -0800)
Conflicts:

drivers/net/wireless/ath5k/base.c
net/8021q/vlan_core.c

31 files changed:
1  2 
MAINTAINERS
drivers/net/3c509.c
drivers/net/Kconfig
drivers/net/bnx2x_main.c
drivers/net/cris/eth_v10.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/irda/ks959-sir.c
drivers/net/irda/ksdazzle-sir.c
drivers/net/mv643xx_eth.c
drivers/net/niu.c
drivers/net/smc911x.c
drivers/net/smc91x.c
drivers/net/tun.c
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/zd1211rw/zd_usb.c
fs/cifs/connect.c
net/8021q/vlan_core.c
net/core/dev.c
net/core/skbuff.c
net/ipv4/tcp.c
net/ipv4/udp.c
net/ipv6/addrconf.c
net/ipv6/udp.c
net/rfkill/rfkill.c
net/socket.c
net/unix/af_unix.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_user.c
security/selinux/hooks.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 7ac5f2847da507899a72717934eb7d67922aaa7a,cfd4d052d666ea8cbda45b37c541cb2592dad3a0..6f368e8cdf17766bf5fee052a6070157dad27c56
@@@ -2949,14 -2942,13 +2949,16 @@@ static void ath5k_configure_filter(stru
                sc->opmode != NL80211_IFTYPE_MESH_POINT &&
                test_bit(ATH_STAT_PROMISC, sc->status))
                rfilt |= AR5K_RX_FILTER_PROM;
-       if (sc->opmode == NL80211_IFTYPE_ADHOC)
+       if (sc->opmode == NL80211_IFTYPE_STATION ||
+               sc->opmode == NL80211_IFTYPE_ADHOC) {
                rfilt |= AR5K_RX_FILTER_BEACON;
+       }
 +      if (sc->opmode == NL80211_IFTYPE_MESH_POINT)
 +              rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
 +                      AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;
  
        /* Set filters */
 -      ath5k_hw_set_rx_filter(ah,rfilt);
 +      ath5k_hw_set_rx_filter(ah, rfilt);
  
        /* Set multicast bits */
        ath5k_hw_set_mcast_filter(ah, mfilt[0], mfilt[1]);
Simple merge
index 118adef476c3a57203434d81f81714645283c121,68ced4bf158c7558977e3c4a44ef4567157e80d5..dd86a1dc4cd00f597ceb58cccefe2625bb1541fa
@@@ -15,18 -24,32 +24,30 @@@ int __vlan_hwaccel_rx(struct sk_buff *s
        }
  
        skb->vlan_tci = vlan_tci;
+       cb->dev = vlan_group_get_device(grp, vlan_tci & VLAN_VID_MASK);
+       return (polling ? netif_receive_skb(skb) : netif_rx(skb));
+ }
+ EXPORT_SYMBOL(__vlan_hwaccel_rx);
+ int vlan_hwaccel_do_receive(struct sk_buff *skb)
+ {
+       struct vlan_hwaccel_cb *cb = vlan_hwaccel_cb(skb);
+       struct net_device *dev = cb->dev;
+       struct net_device_stats *stats;
        netif_nit_deliver(skb);
  
-       skb->dev = vlan_group_get_device(grp, vlan_tci & VLAN_VID_MASK);
-       if (skb->dev == NULL) {
-               dev_kfree_skb_any(skb);
-               /* Not NET_RX_DROP, this is not being dropped
-                * due to congestion. */
-               return NET_RX_SUCCESS;
+       if (dev == NULL) {
+               kfree_skb(skb);
+               return -1;
        }
+       skb->dev = dev;
+       skb->priority = vlan_get_ingress_priority(dev, skb->vlan_tci);
        skb->vlan_tci = 0;
  
-       stats = &skb->dev->stats;
 -      dev->last_rx = jiffies;
 -
+       stats = &dev->stats;
        stats->rx_packets++;
        stats->rx_bytes += skb->len;
  
diff --cc net/core/dev.c
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
diff --cc net/ipv4/udp.c
index 7e4d9c87115321eb53d0864b2d500d0abba0fd30,cf02701ced48091d9eecb6765fe80934a3dc73c8..54badc9a019d03edb0180150b62a560d37f9c30f
@@@ -1122,16 -1072,15 +1123,16 @@@ drop
  static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
                                    struct udphdr  *uh,
                                    __be32 saddr, __be32 daddr,
 -                                  struct hlist_head udptable[])
 +                                  struct udp_table *udptable)
  {
        struct sock *sk;
 +      struct udp_hslot *hslot = &udptable->hash[udp_hashfn(net, ntohs(uh->dest))];
        int dif;
  
 -      read_lock(&udp_hash_lock);
 -      sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]);
 +      spin_lock(&hslot->lock);
 +      sk = sk_head(&hslot->head);
        dif = skb->dev->ifindex;
-       sk = udp_v4_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif);
+       sk = udp_v4_mcast_next(net, sk, uh->dest, daddr, uh->source, saddr, dif);
        if (sk) {
                struct sock *sknext = NULL;
  
Simple merge
diff --cc net/ipv6/udp.c
index 32d914db6c4fa90e5d773fc405242ee349e83ce4,8b48512ebf6ac98ce279a7ca69daa6639970f1e3..8dafa36b1ba539bcb7405e82e25e017c2dc248ec
@@@ -405,13 -392,12 +419,13 @@@ static int __udp6_lib_mcast_deliver(str
  {
        struct sock *sk, *sk2;
        const struct udphdr *uh = udp_hdr(skb);
 +      struct udp_hslot *hslot = &udptable->hash[udp_hashfn(net, ntohs(uh->dest))];
        int dif;
  
 -      read_lock(&udp_hash_lock);
 -      sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]);
 +      spin_lock(&hslot->lock);
 +      sk = sk_head(&hslot->head);
        dif = inet6_iif(skb);
-       sk = udp_v6_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif);
+       sk = udp_v6_mcast_next(net, sk, uh->dest, daddr, uh->source, saddr, dif);
        if (!sk) {
                kfree_skb(skb);
                goto out;
Simple merge
diff --cc net/socket.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge