|
@@ -147,15 +147,6 @@ static struct rtnl_link_ops ipip_link_ops __read_mostly;
|
|
#define for_each_ip_tunnel_rcu(start) \
|
|
#define for_each_ip_tunnel_rcu(start) \
|
|
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
|
|
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
|
|
|
|
|
|
-/* often modified stats are per cpu, other are shared (netdev->stats) */
|
|
|
|
-struct pcpu_tstats {
|
|
|
|
- u64 rx_packets;
|
|
|
|
- u64 rx_bytes;
|
|
|
|
- u64 tx_packets;
|
|
|
|
- u64 tx_bytes;
|
|
|
|
- struct u64_stats_sync syncp;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev,
|
|
static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev,
|
|
struct rtnl_link_stats64 *tot)
|
|
struct rtnl_link_stats64 *tot)
|
|
{
|
|
{
|
|
@@ -465,7 +456,6 @@ drop:
|
|
static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
{
|
|
{
|
|
struct ip_tunnel *tunnel = netdev_priv(dev);
|
|
struct ip_tunnel *tunnel = netdev_priv(dev);
|
|
- struct pcpu_tstats *tstats;
|
|
|
|
const struct iphdr *tiph = &tunnel->parms.iph;
|
|
const struct iphdr *tiph = &tunnel->parms.iph;
|
|
u8 tos = tunnel->parms.iph.tos;
|
|
u8 tos = tunnel->parms.iph.tos;
|
|
__be16 df = tiph->frag_off;
|
|
__be16 df = tiph->frag_off;
|
|
@@ -592,9 +582,7 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
if ((iph->ttl = tiph->ttl) == 0)
|
|
if ((iph->ttl = tiph->ttl) == 0)
|
|
iph->ttl = old_iph->ttl;
|
|
iph->ttl = old_iph->ttl;
|
|
|
|
|
|
- nf_reset(skb);
|
|
|
|
- tstats = this_cpu_ptr(dev->tstats);
|
|
|
|
- __IPTUNNEL_XMIT(tstats, &dev->stats);
|
|
|
|
|
|
+ iptunnel_xmit(skb, dev);
|
|
return NETDEV_TX_OK;
|
|
return NETDEV_TX_OK;
|
|
|
|
|
|
tx_error_icmp:
|
|
tx_error_icmp:
|