Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-2.6-block.git] / net / bridge / br_device.c
index 8fe8b71b487add263a711d39e52f683675708dd6..3e2da2cb72db1725f064ec21d3ce6ab8765532c1 100644 (file)
@@ -88,18 +88,11 @@ out:
 static int br_dev_init(struct net_device *dev)
 {
        struct net_bridge *br = netdev_priv(dev);
-       int i;
 
-       br->stats = alloc_percpu(struct pcpu_sw_netstats);
+       br->stats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
        if (!br->stats)
                return -ENOMEM;
 
-       for_each_possible_cpu(i) {
-               struct pcpu_sw_netstats *br_dev_stats;
-               br_dev_stats = per_cpu_ptr(br->stats, i);
-               u64_stats_init(&br_dev_stats->syncp);
-       }
-
        return 0;
 }
 
@@ -143,9 +136,9 @@ static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev,
                const struct pcpu_sw_netstats *bstats
                        = per_cpu_ptr(br->stats, cpu);
                do {
-                       start = u64_stats_fetch_begin_bh(&bstats->syncp);
+                       start = u64_stats_fetch_begin_irq(&bstats->syncp);
                        memcpy(&tmp, bstats, sizeof(tmp));
-               } while (u64_stats_fetch_retry_bh(&bstats->syncp, start));
+               } while (u64_stats_fetch_retry_irq(&bstats->syncp, start));
                sum.tx_bytes   += tmp.tx_bytes;
                sum.tx_packets += tmp.tx_packets;
                sum.rx_bytes   += tmp.rx_bytes;
@@ -225,16 +218,16 @@ static void br_netpoll_cleanup(struct net_device *dev)
                br_netpoll_disable(p);
 }
 
-static int __br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
+static int __br_netpoll_enable(struct net_bridge_port *p)
 {
        struct netpoll *np;
        int err;
 
-       np = kzalloc(sizeof(*p->np), gfp);
+       np = kzalloc(sizeof(*p->np), GFP_KERNEL);
        if (!np)
                return -ENOMEM;
 
-       err = __netpoll_setup(np, p->dev, gfp);
+       err = __netpoll_setup(np, p->dev);
        if (err) {
                kfree(np);
                return err;
@@ -244,16 +237,15 @@ static int __br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
        return err;
 }
 
-int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
+int br_netpoll_enable(struct net_bridge_port *p)
 {
        if (!p->br->dev->npinfo)
                return 0;
 
-       return __br_netpoll_enable(p, gfp);
+       return __br_netpoll_enable(p);
 }
 
-static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni,
-                           gfp_t gfp)
+static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni)
 {
        struct net_bridge *br = netdev_priv(dev);
        struct net_bridge_port *p;
@@ -262,7 +254,7 @@ static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni,
        list_for_each_entry(p, &br->port_list, list) {
                if (!p->dev)
                        continue;
-               err = __br_netpoll_enable(p, gfp);
+               err = __br_netpoll_enable(p);
                if (err)
                        goto fail;
        }
@@ -374,7 +366,7 @@ void br_dev_setup(struct net_device *dev)
        br->bridge_id.prio[0] = 0x80;
        br->bridge_id.prio[1] = 0x00;
 
-       memcpy(br->group_addr, eth_reserved_addr_base, ETH_ALEN);
+       ether_addr_copy(br->group_addr, eth_reserved_addr_base);
 
        br->stp_enabled = BR_NO_STP;
        br->group_fwd_mask = BR_GROUPFWD_DEFAULT;