Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorDavid S. Miller <davem@davemloft.net>
Tue, 3 Aug 2010 05:22:46 +0000 (22:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Aug 2010 05:22:46 +0000 (22:22 -0700)
Conflicts:
drivers/net/e1000e/hw.h
net/bridge/br_device.c
net/bridge/br_input.c

1  2 
drivers/net/e1000e/hw.h
net/bridge/br_device.c
net/bridge/br_fdb.c
net/bridge/br_input.c
net/bridge/br_stp_bpdu.c
net/ipv4/tcp.c
net/sched/act_nat.c

@@@ -312,8 -308,8 +312,8 @@@ enum e1e_registers 
  #define E1000_KMRNCTRLSTA_INBAND_PARAM        0x9    /* Kumeran InBand Parameters */
  #define E1000_KMRNCTRLSTA_DIAG_NELPBK 0x1000 /* Nearend Loopback mode */
  #define E1000_KMRNCTRLSTA_K1_CONFIG   0x7
- #define E1000_KMRNCTRLSTA_K1_ENABLE   0x140E
+ #define E1000_KMRNCTRLSTA_K1_ENABLE   0x0002
 -#define E1000_KMRNCTRLSTA_K1_DISABLE  0x1400
 +#define E1000_KMRNCTRLSTA_HD_CTRL     0x0002
  
  #define IFE_PHY_EXTENDED_STATUS_CONTROL       0x10
  #define IFE_PHY_SPECIAL_CONTROL               0x11 /* 100BaseTx PHY Special Control */
@@@ -48,13 -46,12 +48,16 @@@ netdev_tx_t br_dev_xmit(struct sk_buff 
        skb_reset_mac_header(skb);
        skb_pull(skb, ETH_HLEN);
  
+       rcu_read_lock();
        if (is_multicast_ether_addr(dest)) {
-               if (br_multicast_rcv(br, NULL, skb))
 +              if (unlikely(netpoll_tx_running(dev))) {
 +                      br_flood_deliver(br, skb);
 +                      goto out;
 +              }
+               if (br_multicast_rcv(br, NULL, skb)) {
+                       kfree_skb(skb);
                        goto out;
+               }
  
                mdst = br_mdb_get(br, skb);
                if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb))
Simple merge
@@@ -110,12 -108,13 +110,12 @@@ drop
        goto out;
  }
  
- /* note: already called with rcu_read_lock (preempt_disabled) */
+ /* note: already called with rcu_read_lock */
  static int br_handle_local_finish(struct sk_buff *skb)
  {
 -      struct net_bridge_port *p = rcu_dereference(skb->dev->br_port);
 +      struct net_bridge_port *p = br_port_get_rcu(skb->dev);
  
 -      if (p)
 -              br_fdb_update(p->br, p, eth_hdr(skb)->h_source);
 +      br_fdb_update(p->br, p, eth_hdr(skb)->h_source);
        return 0;        /* process further */
  }
  
@@@ -132,13 -131,12 +132,12 @@@ static inline int is_link_local(const u
  }
  
  /*
 - * Called via br_handle_frame_hook.
   * Return NULL if skb is handled
-  * note: already called with rcu_read_lock (preempt_disabled) from
-  * netif_receive_skb
+  * note: already called with rcu_read_lock
   */
 -struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
 +struct sk_buff *br_handle_frame(struct sk_buff *skb)
  {
 +      struct net_bridge_port *p;
        const unsigned char *dest = eth_hdr(skb)->h_dest;
        int (*rhook)(struct sk_buff *skb);
  
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge