macvlan.c (1136fa0c07de570dc17858745af8be169d1440ba) | macvlan.c (566214f44697c0191b9b6673e3c73116c9b7817f) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2007 Patrick McHardy <kaber@trash.net> 4 * 5 * The code this is based on carried the following copyright notice: 6 * --- 7 * (C) Copyright 2001-2006 8 * Alex Zeffertt, Cambridge Broadband Ltd, ajz@cambridgebroadband.com --- 271 unchanged lines hidden (view full) --- 280 if (!test_bit(hash, vlan->mc_filter)) 281 continue; 282 283 err = NET_RX_DROP; 284 nskb = skb_clone(skb, GFP_ATOMIC); 285 if (likely(nskb)) 286 err = macvlan_broadcast_one(nskb, vlan, eth, 287 mode == MACVLAN_MODE_BRIDGE) ?: | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) 2007 Patrick McHardy <kaber@trash.net> 4 * 5 * The code this is based on carried the following copyright notice: 6 * --- 7 * (C) Copyright 2001-2006 8 * Alex Zeffertt, Cambridge Broadband Ltd, ajz@cambridgebroadband.com --- 271 unchanged lines hidden (view full) --- 280 if (!test_bit(hash, vlan->mc_filter)) 281 continue; 282 283 err = NET_RX_DROP; 284 nskb = skb_clone(skb, GFP_ATOMIC); 285 if (likely(nskb)) 286 err = macvlan_broadcast_one(nskb, vlan, eth, 287 mode == MACVLAN_MODE_BRIDGE) ?: |
288 netif_rx_ni(nskb); | 288 netif_rx(nskb); |
289 macvlan_count_rx(vlan, skb->len + ETH_HLEN, 290 err == NET_RX_SUCCESS, true); 291 } 292} 293 294static void macvlan_process_broadcast(struct work_struct *w) 295{ 296 struct macvlan_port *port = container_of(w, struct macvlan_port, --- 108 unchanged lines hidden (view full) --- 405 return; 406 407 len = nskb->len + ETH_HLEN; 408 nskb->dev = dev; 409 410 if (ether_addr_equal_64bits(eth_hdr(skb)->h_dest, dev->dev_addr)) 411 nskb->pkt_type = PACKET_HOST; 412 | 289 macvlan_count_rx(vlan, skb->len + ETH_HLEN, 290 err == NET_RX_SUCCESS, true); 291 } 292} 293 294static void macvlan_process_broadcast(struct work_struct *w) 295{ 296 struct macvlan_port *port = container_of(w, struct macvlan_port, --- 108 unchanged lines hidden (view full) --- 405 return; 406 407 len = nskb->len + ETH_HLEN; 408 nskb->dev = dev; 409 410 if (ether_addr_equal_64bits(eth_hdr(skb)->h_dest, dev->dev_addr)) 411 nskb->pkt_type = PACKET_HOST; 412 |
413 ret = netif_rx(nskb); | 413 ret = __netif_rx(nskb); |
414 macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, false); 415} 416 417static bool macvlan_forward_source(struct sk_buff *skb, 418 struct macvlan_port *port, 419 const unsigned char *addr) 420{ 421 struct macvlan_source_entry *entry; --- 41 unchanged lines hidden (view full) --- 463 if (macvlan_forward_source(skb, port, eth->h_source)) 464 return RX_HANDLER_CONSUMED; 465 src = macvlan_hash_lookup(port, eth->h_source); 466 if (src && src->mode != MACVLAN_MODE_VEPA && 467 src->mode != MACVLAN_MODE_BRIDGE) { 468 /* forward to original port. */ 469 vlan = src; 470 ret = macvlan_broadcast_one(skb, vlan, eth, 0) ?: | 414 macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, false); 415} 416 417static bool macvlan_forward_source(struct sk_buff *skb, 418 struct macvlan_port *port, 419 const unsigned char *addr) 420{ 421 struct macvlan_source_entry *entry; --- 41 unchanged lines hidden (view full) --- 463 if (macvlan_forward_source(skb, port, eth->h_source)) 464 return RX_HANDLER_CONSUMED; 465 src = macvlan_hash_lookup(port, eth->h_source); 466 if (src && src->mode != MACVLAN_MODE_VEPA && 467 src->mode != MACVLAN_MODE_BRIDGE) { 468 /* forward to original port. */ 469 vlan = src; 470 ret = macvlan_broadcast_one(skb, vlan, eth, 0) ?: |
471 netif_rx(skb); | 471 __netif_rx(skb); |
472 handle_res = RX_HANDLER_CONSUMED; 473 goto out; 474 } 475 476 hash = mc_hash(NULL, eth->h_dest); 477 if (test_bit(hash, port->mc_filter)) 478 macvlan_broadcast_enqueue(port, src, skb); 479 --- 1349 unchanged lines hidden --- | 472 handle_res = RX_HANDLER_CONSUMED; 473 goto out; 474 } 475 476 hash = mc_hash(NULL, eth->h_dest); 477 if (test_bit(hash, port->mc_filter)) 478 macvlan_broadcast_enqueue(port, src, skb); 479 --- 1349 unchanged lines hidden --- |