br_device.c (93d8bf9fb8f39d6d3e461db60f883d9f81006159) br_device.c (b00589af3b04736376f24625ab0b394642e89e29)
1/*
2 * Device handling code
3 * Linux ethernet bridge
4 *
5 * Authors:
6 * Lennert Buytenhek <buytenh@gnu.org>
7 *
8 * This program is free software; you can redistribute it and/or

--- 56 unchanged lines hidden (view full) ---

65 goto out;
66 }
67 if (br_multicast_rcv(br, NULL, skb)) {
68 kfree_skb(skb);
69 goto out;
70 }
71
72 mdst = br_mdb_get(br, skb, vid);
1/*
2 * Device handling code
3 * Linux ethernet bridge
4 *
5 * Authors:
6 * Lennert Buytenhek <buytenh@gnu.org>
7 *
8 * This program is free software; you can redistribute it and/or

--- 56 unchanged lines hidden (view full) ---

65 goto out;
66 }
67 if (br_multicast_rcv(br, NULL, skb)) {
68 kfree_skb(skb);
69 goto out;
70 }
71
72 mdst = br_mdb_get(br, skb, vid);
73 if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb))
73 if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) &&
74 br_multicast_querier_exists(br))
74 br_multicast_deliver(mdst, skb);
75 else
76 br_flood_deliver(br, skb, false);
77 } else if ((dst = __br_fdb_get(br, dest, vid)) != NULL)
78 br_deliver(dst->dst, skb);
79 else
80 br_flood_deliver(br, skb, true);
81

--- 157 unchanged lines hidden (view full) ---

239fail:
240 br_netpoll_cleanup(dev);
241 goto out;
242}
243
244int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
245{
246 struct netpoll *np;
75 br_multicast_deliver(mdst, skb);
76 else
77 br_flood_deliver(br, skb, false);
78 } else if ((dst = __br_fdb_get(br, dest, vid)) != NULL)
79 br_deliver(dst->dst, skb);
80 else
81 br_flood_deliver(br, skb, true);
82

--- 157 unchanged lines hidden (view full) ---

240fail:
241 br_netpoll_cleanup(dev);
242 goto out;
243}
244
245int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
246{
247 struct netpoll *np;
247 int err;
248 int err = 0;
248
249
249 if (!p->br->dev->npinfo)
250 return 0;
251
252 np = kzalloc(sizeof(*p->np), gfp);
250 np = kzalloc(sizeof(*p->np), gfp);
251 err = -ENOMEM;
253 if (!np)
252 if (!np)
254 return -ENOMEM;
253 goto out;
255
256 err = __netpoll_setup(np, p->dev, gfp);
257 if (err) {
258 kfree(np);
254
255 err = __netpoll_setup(np, p->dev, gfp);
256 if (err) {
257 kfree(np);
259 return err;
258 goto out;
260 }
261
262 p->np = np;
259 }
260
261 p->np = np;
262
263out:
263 return err;
264}
265
266void br_netpoll_disable(struct net_bridge_port *p)
267{
268 struct netpoll *np = p->np;
269
270 if (!np)

--- 109 unchanged lines hidden ---
264 return err;
265}
266
267void br_netpoll_disable(struct net_bridge_port *p)
268{
269 struct netpoll *np = p->np;
270
271 if (!np)

--- 109 unchanged lines hidden ---