diff options
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r-- | net/bridge/br_device.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index 32b8f9f7f79..dac6a214746 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c | |||
@@ -38,16 +38,17 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) | |||
38 | } | 38 | } |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | u64_stats_update_begin(&brstats->syncp); | ||
42 | brstats->tx_packets++; | ||
43 | brstats->tx_bytes += skb->len; | ||
44 | u64_stats_update_end(&brstats->syncp); | ||
45 | |||
46 | BR_INPUT_SKB_CB(skb)->brdev = dev; | 41 | BR_INPUT_SKB_CB(skb)->brdev = dev; |
47 | 42 | ||
48 | skb_reset_mac_header(skb); | 43 | skb_reset_mac_header(skb); |
49 | skb_pull(skb, ETH_HLEN); | 44 | skb_pull(skb, ETH_HLEN); |
50 | 45 | ||
46 | u64_stats_update_begin(&brstats->syncp); | ||
47 | brstats->tx_packets++; | ||
48 | /* Exclude ETH_HLEN from byte stats for consistency with Rx chain */ | ||
49 | brstats->tx_bytes += skb->len; | ||
50 | u64_stats_update_end(&brstats->syncp); | ||
51 | |||
51 | rcu_read_lock(); | 52 | rcu_read_lock(); |
52 | if (is_broadcast_ether_addr(dest)) | 53 | if (is_broadcast_ether_addr(dest)) |
53 | br_flood_deliver(br, skb); | 54 | br_flood_deliver(br, skb); |
@@ -91,7 +92,6 @@ static int br_dev_open(struct net_device *dev) | |||
91 | { | 92 | { |
92 | struct net_bridge *br = netdev_priv(dev); | 93 | struct net_bridge *br = netdev_priv(dev); |
93 | 94 | ||
94 | netif_carrier_off(dev); | ||
95 | netdev_update_features(dev); | 95 | netdev_update_features(dev); |
96 | netif_start_queue(dev); | 96 | netif_start_queue(dev); |
97 | br_stp_enable_bridge(br); | 97 | br_stp_enable_bridge(br); |
@@ -108,8 +108,6 @@ static int br_dev_stop(struct net_device *dev) | |||
108 | { | 108 | { |
109 | struct net_bridge *br = netdev_priv(dev); | 109 | struct net_bridge *br = netdev_priv(dev); |
110 | 110 | ||
111 | netif_carrier_off(dev); | ||
112 | |||
113 | br_stp_disable_bridge(br); | 111 | br_stp_disable_bridge(br); |
114 | br_multicast_stop(br); | 112 | br_multicast_stop(br); |
115 | 113 | ||