diff options
Diffstat (limited to 'net/core')
| -rw-r--r-- | net/core/dev.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index cd0981977f5c..c6e29ea65bd9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -2476,6 +2476,23 @@ static DEFINE_PER_CPU(int, xmit_recursion); | |||
| 2476 | #define RECURSION_LIMIT 10 | 2476 | #define RECURSION_LIMIT 10 |
| 2477 | 2477 | ||
| 2478 | /** | 2478 | /** |
| 2479 | * dev_loopback_xmit - loop back @skb | ||
| 2480 | * @skb: buffer to transmit | ||
| 2481 | */ | ||
| 2482 | int dev_loopback_xmit(struct sk_buff *skb) | ||
| 2483 | { | ||
| 2484 | skb_reset_mac_header(skb); | ||
| 2485 | __skb_pull(skb, skb_network_offset(skb)); | ||
| 2486 | skb->pkt_type = PACKET_LOOPBACK; | ||
| 2487 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 2488 | WARN_ON(!skb_dst(skb)); | ||
| 2489 | skb_dst_force(skb); | ||
| 2490 | netif_rx_ni(skb); | ||
| 2491 | return 0; | ||
| 2492 | } | ||
| 2493 | EXPORT_SYMBOL(dev_loopback_xmit); | ||
| 2494 | |||
| 2495 | /** | ||
| 2479 | * dev_queue_xmit - transmit a buffer | 2496 | * dev_queue_xmit - transmit a buffer |
| 2480 | * @skb: buffer to transmit | 2497 | * @skb: buffer to transmit |
| 2481 | * | 2498 | * |
