]> Pileus Git - ~andy/linux/blobdiff - net/bridge/br_input.c
bridge: Fix the way to find old local fdb entries in br_fdb_changeaddr
[~andy/linux] / net / bridge / br_input.c
index 7e73c32e205d10517595395ed2bed91ab48868b9..28d54462742278f388caf3f4a96e13b212b35688 100644 (file)
@@ -28,7 +28,7 @@ static int br_pass_frame_up(struct sk_buff *skb)
 {
        struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev;
        struct net_bridge *br = netdev_priv(brdev);
-       struct br_cpu_netstats *brstats = this_cpu_ptr(br->stats);
+       struct pcpu_sw_netstats *brstats = this_cpu_ptr(br->stats);
 
        u64_stats_update_begin(&brstats->syncp);
        brstats->rx_packets++;
@@ -77,7 +77,7 @@ int br_handle_frame_finish(struct sk_buff *skb)
        /* insert into forwarding database after filtering to avoid spoofing */
        br = p->br;
        if (p->flags & BR_LEARNING)
-               br_fdb_update(br, p, eth_hdr(skb)->h_source, vid);
+               br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false);
 
        if (!is_broadcast_ether_addr(dest) && is_multicast_ether_addr(dest) &&
            br_multicast_rcv(br, p, skb, vid))
@@ -148,7 +148,7 @@ static int br_handle_local_finish(struct sk_buff *skb)
 
        br_vlan_get_tag(skb, &vid);
        if (p->flags & BR_LEARNING)
-               br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid);
+               br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, false);
        return 0;        /* process further */
 }