net: Introduce skb_tunnel_rx() helper

skb rxhash should be cleared when a skb is handled by a tunnel before
being delivered again, so that correct packet steering can take place.

There are other cleanups and accounting that we can factorize in a new
helper, skb_tunnel_rx()

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2010-05-17 22:36:55 -07:00 committed by David S. Miller
parent de213e5eed
commit d19d56ddc8
7 changed files with 34 additions and 34 deletions

View file

@ -226,6 +226,26 @@ static inline void skb_dst_force(struct sk_buff *skb)
}
}
/**
* skb_tunnel_rx - prepare skb for rx reinsert
* @skb: buffer
* @dev: tunnel device
*
* After decapsulation, packet is going to re-enter (netif_rx()) our stack,
* so make some cleanups, and perform accounting.
*/
static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev)
{
skb->dev = dev;
/* TODO : stats should be SMP safe */
dev->stats.rx_packets++;
dev->stats.rx_bytes += skb->len;
skb->rxhash = 0;
skb_dst_drop(skb);
nf_reset(skb);
}
/* Children define the path of the packet through the
* Linux networking. Thus, destinations are stackable.
*/